From 472d1b52d38454d3550f14ae83077025ec77e42d Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Wed, 10 Apr 2024 18:36:16 +0300 Subject: [PATCH] ci: Add a simple build job based on debian The gstreamer-rs repos use debian based images already, which we can later base on this one. Additionally it's good to have another distro target so we avoid weird fedoraisms when possible. It will also be simpler to keep it up to date, as we don't need to run the test suite against this build as well. Part-of: --- .gitlab-ci.yml | 50 +++- .gitlab-image-tags.yml | 4 +- ci/docker/debian/deps.txt | 283 ++++++++++++++++++ ci/docker/debian/install-deps.sh | 10 + ci/docker/debian/prepare.sh | 13 + ci/docker/fedora/prepare.sh | 4 +- .../create-subprojects-cache.sh | 0 ci/{docker/fedora => scripts}/install-rust.sh | 0 8 files changed, 354 insertions(+), 10 deletions(-) create mode 100644 ci/docker/debian/deps.txt create mode 100644 ci/docker/debian/install-deps.sh create mode 100644 ci/docker/debian/prepare.sh rename ci/{docker/fedora => scripts}/create-subprojects-cache.sh (100%) rename ci/{docker/fedora => scripts}/install-rust.sh (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1d41e397a8..f10d2f7159 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -33,6 +33,7 @@ variables: value: "" FEDORA_AMD64_SUFFIX: 'amd64/fedora' + DEBIAN_AMD64_SUFFIX: 'amd64/debian' INDENT_AMD64_SUFFIX: 'amd64/gst-indent' COMMITLINT_AMD64_SUFFIX: 'amd64/commitlint' WINDOWS_AMD64_SUFFIX: 'amd64/windows' @@ -124,6 +125,7 @@ trigger: .fedora image: variables: + CCACHE_DIR: '/cache/gstreamer/gstreamer/ccache/' FDO_BASE_IMAGE: 'registry.fedoraproject.org/fedora-toolbox:34' FDO_DISTRIBUTION_VERSION: '34' FDO_REPO_SUFFIX: "$FEDORA_AMD64_SUFFIX" @@ -140,6 +142,25 @@ fedora amd64 docker: # (which has faster network connectivity to the registry). tags: [ 'placeholder-job' ] +.debian image: + variables: + CCACHE_DIR: '/cache/gstreamer/gstreamer/ccache_debian/' + FDO_BASE_IMAGE: "quay.io/toolbx-images/debian-toolbox:12" + FDO_DISTRIBUTION_VERSION: '12' + FDO_REPO_SUFFIX: "$DEBIAN_AMD64_SUFFIX" + FDO_DISTRIBUTION_TAG: "$DEBIAN_TAG-$GST_UPSTREAM_BRANCH" + FDO_DISTRIBUTION_EXEC: 'GIT_BRANCH=$CI_COMMIT_REF_NAME GIT_URL=$CI_REPOSITORY_URL bash ci/docker/debian/prepare.sh' + +debian amd64 docker: + extends: + - '.debian image' + - '.fdo.container-build@debian' + stage: 'preparation' + needs: [] + # Note: assumption is that placeholder jobs run on a packet runner + # (which has faster network connectivity to the registry). + tags: [ 'placeholder-job' ] + .gst-indent image: tags: [ 'placeholder-job' ] variables: @@ -264,7 +285,6 @@ commitlint: CCACHE_COMPILERCHECK: 'content' CCACHE_COMPRESS: 'true' CCACHE_BASEDIR: '/cache/gstreamer/gstreamer' - CCACHE_DIR: '/cache/gstreamer/gstreamer/ccache/' # shared across everything really CCACHE_MAXSIZE: '10G' @@ -329,15 +349,10 @@ commitlint: - changes: - subprojects/gstreamer-vaapi/**/* -.build fedora x86_64: +.build simple: extends: - - '.fedora image' - - '.fdo.suffixed-image@fedora' - '.build' - '.build_ccache_vars' - needs: - - "trigger" - - "fedora amd64 docker" variables: GST_WERROR: "true" MESON_ARGS: "${SIMPLE_BUILD}" @@ -350,6 +365,15 @@ commitlint: - meson install --destdir $CI_PROJECT_DIR/destdir -C build - rm -rf $CI_PROJECT_DIR/destdir +.build fedora x86_64: + extends: + - '.fedora image' + - '.fdo.suffixed-image@fedora' + - '.build simple' + needs: + - "trigger" + - "fedora amd64 docker" + build fedora gcc: extends: '.build fedora x86_64' variables: @@ -405,6 +429,18 @@ build fedora clang: -Dgstreamer-sharp:tests=disabled --force-fallback-for=glib +build debian x86_64: + extends: + - '.debian image' + - '.fdo.suffixed-image@debian' + - '.build simple' + needs: + - "trigger" + - "debian amd64 docker" + variables: + BUILD_TYPE: "--default-library=shared" + BUILD_GST_DEBUG: "-Dgstreamer:gst_debug=true" + .build windows: image: $WINDOWS_IMAGE stage: 'build' diff --git a/.gitlab-image-tags.yml b/.gitlab-image-tags.yml index c0e92542a8..9609fd1870 100644 --- a/.gitlab-image-tags.yml +++ b/.gitlab-image-tags.yml @@ -5,7 +5,9 @@ variables: # If you are hacking on them or need a them to rebuild, its enough # to change any part of the string of the image you want. ### - FEDORA_TAG: '2024-04-10.0' + FEDORA_TAG: '2024-04-16.0' + + DEBIAN_TAG: '2024-04-22.0' INDENT_TAG: '2023-08-24.3' diff --git a/ci/docker/debian/deps.txt b/ci/docker/debian/deps.txt new file mode 100644 index 0000000000..73a91cea86 --- /dev/null +++ b/ci/docker/debian/deps.txt @@ -0,0 +1,283 @@ +apertium-regtest +appstream-util +autopoint +bash-completion +bat +bison +bubblewrap +busybox +ccache +clang +clang-tools +cmake +coinor-libcgl-dev +curl +desktop-file-utils +docutils-common +doxygen +dwz +elfutils +emscripten +ffmpeg +flex +flite1-dev +g++ +gcc +gdb +gettext +git +git-lfs +glslc +googletest +graphviz +gtk-doc-tools +guile-cairo-dev +iproute2 +iso-codes +itstool +ladspa-sdk +liba52-0.7.4-dev +libaa1-dev +liballeggl4-dev +libaom-dev +libasound2-dev +libass-dev +libatk1.0-dev +libavahi-client-dev +libavahi-common-dev +libavc1394-dev +libavcodec-dev +libavdevice-dev +libavfilter-dev +libavformat-dev +libavif-dev +libavutil-dev +libbluetooth-dev +libboost-system-dev +libbs2b-dev +libcaca-dev +libcairo2-dev +libcamera-dev +libcanberra-dev +libcap-dev +libcdio-dev +libcdparanoia-dev +libchromaprint-dev +libclang-dev +libcoap3-dev +libcurl4-openssl-dev +libdbus-glib2.0-cil-dev +libdca-dev +libde265-dev +libdirectfb-dev +libdrm-dev +libdrumstick-dev +libdv4-dev +libdvdnav-dev +libdvdread-dev +libdw-dev +libebur128-dev +libegl-dev +libespeak-ng-dev +libespeak-ng-libespeak-dev +libevdev-dev +libevent-dev +libexempi-dev +libexif-dev +libfaad-dev +libfftw3-bin +libfftw3-dev +libflac-dev +libfluidsynth-dev +libframe-dev +libfreeaptx-dev +libftgl-dev +libgbm-dev +libgdk-pixbuf-2.0-dev +libgeocode-glib-dev +libgirepository1.0-dev +libgl-dev +libgl1-mesa-dev +libgles-dev +libglib2.0-dev +libglib2.0-doc +libglx-dev +libgme-dev +libgnutls28-dev +libgraphene-1.0-dev +libgridsite-dev +libgsl-dev +libgsm1-dev +libgssdp-1.6-dev +libgtest-dev +libgtk-3-dev +libgtk-4-dev +libgtkmm-3.0-dev +libgudev-1.0-dev +libgupnp-igd-1.0-dev +libiec61883-dev +libinput-dev +libiptcdata0-dev +libjack-jackd2-dev +libjpeg62-turbo-dev +libjson-glib-dev +libjwt-gnutls-dev +libkate-dev +liblc3-dev +liblcms2-dev +libldacbt-abr-dev +libldacbt-enc-dev +liblilv-dev +liblogg4-dev +libltc-dev +liblttng-ust-dev +liblxi-dev +libmfx-dev +libmjpegtools-dev +libmodplug-dev +libmono-cil-dev +libmp3lame-dev +libmpcdec-dev +libmpeg2-4-dev +libmpeg3-dev +libmpg123-dev +libneon27-dev +libngtcp2-crypto-gnutls-dev +libnice-dev +libnx-x11-dev +libogg-dev +libopenal-dev +libopencore-amrnb-dev +libopencore-amrwb-dev +libopencv-dev +libopenexr-dev +libopengl-dev +libopenh264-dev +libopenjp2-7-dev +libopenmpt-dev +libopenni2-dev +libopus-dev +libpango1.0-dev +libpng-dev +libpolkit-gobject-1-dev +libpulse-dev +libpython3-all-dev +libqrencode-dev +libqt5waylandclient5-dev +libqt5x11extras5-dev +libraw1394-dev +librsvg2-dev +librtmp-dev +librust-wayland-protocols-dev +libsbc-dev +libsdl2-dev +libshaderc1 +libshout-dev +libsidplay1-dev +libsigc++-2.0-dev +libsndfile1-dev +libsndifsdl2-dev +libsoundtouch-dev +libsoup-3.0-dev +libsoup2.4-dev +libspandsp-dev +libspeex-dev +libsphinxbase-dev +libspice-client-glib-2.0-dev +libsrt-openssl-dev +libsrtp2-dev +libssh2-1-dev +libssl-dev +libsvtav1-dev +libsvtav1dec-dev +libsvtav1enc-dev +libsysprof-4-dev +libtag1-dev +libtaoframework-openal-cil-dev +libtaoframework-opengl-cil-dev +libtheora-dev +libtwolame-dev +libudev-dev +libunwind-dev +liburcu-dev +libusb-1.0-0-dev +libv4l-dev +libva-dev +libvisual-0.4-dev +libvo-aacenc-dev +libvo-amrwbenc-dev +libvorbis-dev +libvpx-dev +libvulkan-dev +libwacom-dev +libwavpack-dev +libwayland-dev +libwebp-dev +libwebrtc-audio-processing-dev +libwildmidi-dev +libwpe-1.0-dev +libwpebackend-fdo-1.0-dev +libwpewebkit-1.1-dev +libx11-dev +libx11-xcb-dev +libx264-dev +libx265-dev +libxcb-dri3-dev +libxcb-glx0-dev +libxcb-xfixes0-dev +libxcb-xv0-dev +libxcb1-dev +libxdamage-dev +libxext-dev +libxfixes-dev +libxi-dev +libxkbcommon-dev +libxkbcommon-x11-dev +libxml2-dev +libxmlsec1-dev +libxrandr-dev +libxslt1-dev +libxtst-dev +libxv-dev +libxvidcore-dev +libyajl-dev +libyaml-dev +libz-mingw-w64-dev +libzbar-dev +libzita-convolver-dev +libzvbi-dev +libzxing-dev +libzxingcore-dev +llvm-dev +lua-zlib-dev +make +modemmanager-dev +mono-complete +mono-devel +nasm +nettle-dev +ninja-build +patch +python-gi-dev +python3-all-dev +python3-cairo-dev +python3-dev +python3-pip +qconf +qt5-qmake +qtbase5-dev +qtbase5-private-dev +qtdeclarative5-dev +qtdeclarative5-dev-tools +qttools5-dev-tools +sudo +svt-av1 +valgrind +wayland-protocols +x11-xserver-utils +xdg-utils +xfonts-jmk +xfonts-kaname +xvfb +yasm +zlib1g-dev diff --git a/ci/docker/debian/install-deps.sh b/ci/docker/debian/install-deps.sh new file mode 100644 index 0000000000..de5c728a51 --- /dev/null +++ b/ci/docker/debian/install-deps.sh @@ -0,0 +1,10 @@ +#! /bin/bash + +set -eux + +apt update -y && apt full-upgrade -y +apt install -y $(<./ci/docker/debian/deps.txt) + +pip3 install --break-system-packages meson==1.2.3 hotdoc==0.16 python-gitlab tomli junitparser + +apt clean all diff --git a/ci/docker/debian/prepare.sh b/ci/docker/debian/prepare.sh new file mode 100644 index 0000000000..c364fb980f --- /dev/null +++ b/ci/docker/debian/prepare.sh @@ -0,0 +1,13 @@ +#! /bin/bash + +set -eux + +bash ./ci/docker/debian/install-deps.sh + +bash ./ci/scripts/install-rust.sh + +# Configure git for various usage +git config --global user.email "gstreamer@gstreamer.net" +git config --global user.name "Gstbuild Runner" + +bash ./ci/scripts/create-subprojects-cache.sh diff --git a/ci/docker/fedora/prepare.sh b/ci/docker/fedora/prepare.sh index 8fa3fa6799..cdb5c91b04 100644 --- a/ci/docker/fedora/prepare.sh +++ b/ci/docker/fedora/prepare.sh @@ -12,8 +12,8 @@ bash ./ci/docker/fedora/install-gdk-pixbuf.sh bash ./ci/docker/fedora/install-wayland-protocols.sh -bash ./ci/docker/fedora/install-rust.sh +bash ./ci/scripts/install-rust.sh bash ./ci/docker/fedora/virtme-fluster-setup.sh -bash ./ci/docker/fedora/create-subprojects-cache.sh +bash ./ci/scripts/create-subprojects-cache.sh diff --git a/ci/docker/fedora/create-subprojects-cache.sh b/ci/scripts/create-subprojects-cache.sh similarity index 100% rename from ci/docker/fedora/create-subprojects-cache.sh rename to ci/scripts/create-subprojects-cache.sh diff --git a/ci/docker/fedora/install-rust.sh b/ci/scripts/install-rust.sh similarity index 100% rename from ci/docker/fedora/install-rust.sh rename to ci/scripts/install-rust.sh