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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6656>
This commit is contained in:
Jordan Petridis 2024-04-10 18:36:16 +03:00 committed by GStreamer Marge Bot
parent d2c8593b2e
commit 472d1b52d3
8 changed files with 354 additions and 10 deletions

View file

@ -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'

View file

@ -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'

283
ci/docker/debian/deps.txt Normal file
View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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