From c5fd7456cad36514c544a1e606250fca706c8759 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Tue, 23 Dec 2025 21:50:32 +0100 Subject: [PATCH] .github: use new common driver build actions Using the new driver build actions in X11Libre/actions-build-driver repo, instead of having lots of duplicated pipeline and script in all the individual driver repos. Signed-off-by: Enrico Weigelt, metux IT consult --- .github/actions/build-driver/action.yaml | 69 ------ .github/scripts/conf.sh | 13 -- .github/scripts/github/make-release | 17 -- .github/scripts/install-prereq.sh | 15 -- .github/scripts/ubuntu/install-pkg.sh | 94 -------- .github/scripts/util.sh | 85 ------- .github/workflows/build.yml | 42 ++-- .gitlab-ci/common/README.md | 20 -- .gitlab-ci/common/build-driver.sh | 61 ----- .gitlab-ci/common/build-xserver.sh | 71 ------ .gitlab-ci/common/debian/image-install.sh | 91 -------- .gitlab-ci/common/freebsd/FreeBSD.conf | 8 - .gitlab-ci/common/freebsd/image-install.sh | 59 ----- .../common/freebsd/libdrm-2.4.116.patch | 109 --------- .gitlab-ci/common/xorg-driver.yml | 216 ------------------ 15 files changed, 13 insertions(+), 957 deletions(-) delete mode 100644 .github/actions/build-driver/action.yaml delete mode 100644 .github/scripts/conf.sh delete mode 100755 .github/scripts/github/make-release delete mode 100755 .github/scripts/install-prereq.sh delete mode 100755 .github/scripts/ubuntu/install-pkg.sh delete mode 100644 .github/scripts/util.sh delete mode 100644 .gitlab-ci/common/README.md delete mode 100755 .gitlab-ci/common/build-driver.sh delete mode 100755 .gitlab-ci/common/build-xserver.sh delete mode 100755 .gitlab-ci/common/debian/image-install.sh delete mode 100644 .gitlab-ci/common/freebsd/FreeBSD.conf delete mode 100755 .gitlab-ci/common/freebsd/image-install.sh delete mode 100644 .gitlab-ci/common/freebsd/libdrm-2.4.116.patch delete mode 100644 .gitlab-ci/common/xorg-driver.yml diff --git a/.github/actions/build-driver/action.yaml b/.github/actions/build-driver/action.yaml deleted file mode 100644 index 3032abda..00000000 --- a/.github/actions/build-driver/action.yaml +++ /dev/null @@ -1,69 +0,0 @@ -name: 'build driver' -description: 'build driver against specific Xserver' -inputs: - xserver-version: - required: true - -runs: - using: "composite" - steps: - - name: check out driver repo - uses: actions/checkout@v4 - - - name: prepare build environment - shell: bash - run: | - MACHINE=`gcc -dumpmachine` - echo "MACHINE=$MACHINE" >> "$GITHUB_ENV" - echo "PKG_CONFIG_PATH=$X11_PREFIX/share/pkgconfig:$X11_PREFIX/lib/$MACHINE/pkgconfig:$X11_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV" - sudo chown root /bin/tar && sudo chmod u+s /bin/tar - - - name: apt cache - uses: actions/cache@v4 - with: - path: /var/cache/apt - key: apt-cache-${{ hashFiles('.github/scripts/ubuntu/install-pkg.sh') }} - restore-keys: apt-cache- - - - name: pkg install - shell: bash - run: sudo .github/scripts/ubuntu/install-pkg.sh - - - name: X11 prereq cache - uses: actions/cache@v4 - with: - path: | - ${{ env.X11_PREFIX }} - key: ${{ runner.name }}-x11-deps-${{ hashFiles('.github/scripts/install-prereq.sh') }} - restore-keys: ${{ runner.name }}-x11-deps- - - - name: generic prereq - shell: bash - run: .github/scripts/install-prereq.sh - - - name: check out xserver repo - uses: actions/checkout@v4 - with: - repository: X11Libre/xserver - path: xserver-sdk - ref: ${{ inputs.xserver-version }} - - - name: build xserver sdk - shell: bash - env: - MESON_ARGS: -Dc_args="-fno-common" -Dprefix=/usr -Dnamespace=false -Dxselinux=false -Dxephyr=false -Dwerror=false -Dxcsecurity=false -Dxorg=true -Dxvfb=false -Dxnest=false -Ddocs=false - run: | - cd xserver-sdk - echo -n > .meson_environment - echo "export MESON_BUILDDIR=$MESON_BUILDDIR" >> .meson_environment - echo "export PKG_CONFIG_PATH=$PKG_CONFIG_PATH" >> .meson_environment - .gitlab-ci/meson-build.sh --skip-test - sudo meson install --no-rebuild -C "$MESON_BUILDDIR" - sudo mkdir -p /usr/local/lib/$MACHINE/xorg/modules # /home/runner/x11/lib/xorg/modules - sudo chown -R runner /usr/local/lib/$MACHINE/xorg/modules # /home/runner/x11/lib/xorg/modules - - - name: compile driver - shell: bash - run: | - CFLAGS="-Wall" ./autogen.sh # --prefix=$X11_PREFIX - CFLAGS="-Wall" make -j # install diff --git a/.github/scripts/conf.sh b/.github/scripts/conf.sh deleted file mode 100644 index 7cdab25d..00000000 --- a/.github/scripts/conf.sh +++ /dev/null @@ -1,13 +0,0 @@ -export X11_OS=`uname -s` - -export X11_PREFIX="${X11_PREFIX:-$HOME/x11}" -export X11_BUILD_DIR="${X11_BUILD_DIR:-$HOME/build-deps}" -export DRV_BUILD_DIR="${DRV_BUILD_DIR:-$HOME/build-drivers}" - -case "$X11_OS" in -Darwin) export FDO_CI_CONCURRENT=`sysctl -n hw.logicalcpu` ;; -Linux) export FDO_CI_CONCURRENT=`nproc` ;; -esac - -export PATH="$X11_PREFIX/bin:$PATH" -export PKG_CONFIG_PATH="$X11_PREFIX/lib/x86_64-linux-gnu/pkgconfig:$X11_PREFIX/lib/pkgconfig:$X11_PREFIX/share/pkgconfig:$PKG_CONFIG_PATH" diff --git a/.github/scripts/github/make-release b/.github/scripts/github/make-release deleted file mode 100755 index 89152bac..00000000 --- a/.github/scripts/github/make-release +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -err() { - echo "$0: $*" -} - -[ "$GITHUB_REPOSITORY" ] || err "missing variable GITHUB_REPOSITORY" - -TITLE=$(git tag -l --format='%(contents)' $tag) - -echo "tag=$tag" -echo "title=$TITLE" - -gh release create "$tag" \ - --repo="$GITHUB_REPOSITORY" \ - --title="$tag" \ - --generate-notes diff --git a/.github/scripts/install-prereq.sh b/.github/scripts/install-prereq.sh deleted file mode 100755 index e2bd8465..00000000 --- a/.github/scripts/install-prereq.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -set -e - -. .github/scripts/util.sh - -mkdir -p $X11_BUILD_DIR -cd $X11_BUILD_DIR - -if [ "$X11_OS" = "Linux" ]; then -build_meson drm https://gitlab.freedesktop.org/mesa/drm libdrm-2.4.121 "" \ - -Domap=enabled -fi -build_meson libxcvt https://gitlab.freedesktop.org/xorg/lib/libxcvt libxcvt-0.1.0 -build_ac xorgproto https://gitlab.freedesktop.org/xorg/proto/xorgproto xorgproto-2024.1 diff --git a/.github/scripts/ubuntu/install-pkg.sh b/.github/scripts/ubuntu/install-pkg.sh deleted file mode 100755 index 0cdaf882..00000000 --- a/.github/scripts/ubuntu/install-pkg.sh +++ /dev/null @@ -1,94 +0,0 @@ -#!/bin/bash - -set -e - -# Packages which are needed by this script, but not for the xserver build -EPHEMERAL=" - libexpat-dev - libgles2-mesa-dev - libxkbcommon-dev - x11-utils - x11-xserver-utils - xauth - xvfb -" - -apt-get update - -apt-get install -y \ - $EPHEMERAL \ - autoconf \ - automake \ - build-essential \ - ca-certificates \ - libaudit-dev \ - libbsd-dev \ - libcairo2-dev \ - libdbus-1-dev \ - libdrm-dev \ - libegl1-mesa-dev \ - libepoxy-dev \ - libevdev2 \ - libexpat1 \ - libffi-dev \ - libgbm-dev \ - libgcrypt-dev \ - libgl1-mesa-dev \ - libgles2 \ - libglx-mesa0 \ - libinput10 \ - libinput-dev \ - libnvidia-egl-wayland-dev \ - libpciaccess-dev \ - libpixman-1-dev \ - libspice-protocol-dev \ - libsystemd-dev \ - libudev-dev \ - libunwind-dev \ - libx11-dev \ - libx11-xcb-dev \ - libxau-dev \ - libxaw7-dev \ - libxcb-glx0-dev \ - libxcb-icccm4-dev \ - libxcb-image0-dev \ - libxcb-keysyms1-dev \ - libxcb-randr0-dev \ - libxcb-render-util0-dev \ - libxcb-render0-dev \ - libxcb-shape0-dev \ - libxcb-shm0-dev \ - libxcb-util0-dev \ - libxcb-xf86dri0-dev \ - libxcb-xkb-dev \ - libxcb-xv0-dev \ - libxcb1-dev \ - libxdmcp-dev \ - libxext-dev \ - libxfixes-dev \ - libxfont-dev \ - libxi-dev \ - libxinerama-dev \ - libxkbcommon0 \ - libxkbfile-dev \ - libxmu-dev \ - libxmuu-dev \ - libxpm-dev \ - libxrender-dev \ - libxres-dev \ - libxshmfence-dev \ - libxt-dev \ - libxtst-dev \ - libxv-dev \ - mesa-common-dev \ - meson \ - nettle-dev \ - libpango1.0-dev \ - pkg-config \ - x11-xkb-utils \ - xfonts-utils \ - xkb-data \ - xtrans-dev \ - xutils-dev \ - libxaw7-dev \ - python3-mako diff --git a/.github/scripts/util.sh b/.github/scripts/util.sh deleted file mode 100644 index dea16ae9..00000000 --- a/.github/scripts/util.sh +++ /dev/null @@ -1,85 +0,0 @@ - -. .github/scripts/conf.sh - -clone_source() { - local pkgname="$1" - local url="$2" - local ref="$3" - local commit="$4" - - if [ ! -f $pkgname/.git/config ]; then - echo "need to clone $pkgname" - if [ "$commit" ]; then - git clone $url $pkgname --branch=$ref - else - git clone $url $pkgname --branch=$ref --depth 1 - fi - else - echo "already cloned $pkgname" - fi - - if [ "$commit" ]; then - ( cd $pkgname && git checkout -f "$commit" ) - fi -} - -build_meson() { - local pkgname="$1" - local url="$2" - local ref="$3" - local commit="$4" - shift - shift - shift - shift || true - if [ -f $X11_PREFIX/$pkgname.DONE ]; then - echo "package $pkgname already built" - else - clone_source "$pkgname" "$url" "$ref" "$commit" - ( - cd $pkgname - meson "$@" build -Dprefix=$X11_PREFIX - ninja -j${FDO_CI_CONCURRENT:-4} -C build install - ) - touch $X11_PREFIX/$pkgname.DONE - fi -} - -build_ac() { - local pkgname="$1" - local url="$2" - local ref="$3" - local commit="$4" - shift - shift - shift - shift || true - if [ -f $X11_PREFIX/$pkgname.DONE ]; then - echo "package $pkgname already built" - else - clone_source "$pkgname" "$url" "$ref" "$commit" - ( - cd $pkgname - ./autogen.sh --prefix=$X11_PREFIX - make -j${FDO_CI_CONCURRENT:-4} install - ) - touch $X11_PREFIX/$pkgname.DONE - fi -} - -build_drv_ac() { - local pkgname="$1" - local url="$2" - local ref="$3" - local commit="$4" - shift - shift - shift - shift || true - clone_source "$pkgname" "$url" "$ref" "$commit" - ( - cd $pkgname - ./autogen.sh # --prefix=$X11_PREFIX - make -j${FDO_CI_CONCURRENT:-4} # install - ) -} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 23644b02..5111427c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,43 +1,27 @@ -name: Build driver - permissions: contents: write -env: - MESON_BUILDDIR: "build" - X11_PREFIX: /home/runner/x11 - X11_BUILD_DIR: /home/runner/build-deps - on: push: pull_request: jobs: - for-xserver-stable-25_0: + target-ubuntu: + strategy: + matrix: + xserver-version: [ master, xlibre-xserver-25.1.0, xlibre-xserver-25.0.0.18 ] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/build-driver + - uses: X11Libre/action-build-driver/target/ubuntu@v0.0.2 with: - xserver-version: xlibre-xserver-25.0.0.5 + xserver-version: ${{ matrix.xserver-version }} - for-xserver-master: + release-notes: + name: Release pushed tag runs-on: ubuntu-latest + if: ${{ startsWith(github.ref, 'refs/tags/xlibre-') }} + needs: target-ubuntu + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/build-driver - with: - xserver-version: master - - release: - name: Release pushed tag - runs-on: ubuntu-latest - if: ${{ startsWith(github.ref, 'refs/tags/xlibre-') }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Create release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - tag: ${{ github.ref_name }} - run: .github/scripts/github/make-release + - uses: X11Libre/action-build-driver/release@v0.0.2 diff --git a/.gitlab-ci/common/README.md b/.gitlab-ci/common/README.md deleted file mode 100644 index 1f2dbd87..00000000 --- a/.gitlab-ci/common/README.md +++ /dev/null @@ -1,20 +0,0 @@ -common CI stuff - supposed to be synced across all drivers - -moving this to a dedicated CI component is left for a later exercise. - -Some scripts can also be used locally, eg. in a VM: - -Prepare the image: - - .gitlab-ci/common/debian/image-install.sh - .gitlab-ci/common/freebsd/image-install.sh - -Build the xserver + driver: - - .gitlab-ci/common/build-driver.sh debian - .gitlab-ci/common/build-driver.sh freebsd - -Build just the xserver: - - .gitlab-ci/common/build-xserver.sh debian - .gitlab-ci/common/build-xserver.sh freebsd diff --git a/.gitlab-ci/common/build-driver.sh b/.gitlab-ci/common/build-driver.sh deleted file mode 100755 index 384d7636..00000000 --- a/.gitlab-ci/common/build-driver.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env bash - -set -e - -PLATFORM="$1" -XSERVER_REF="$2" - -if [ ! "$PLATFORM" ]; then - echo "missing PLATFORM" >&2 - exit 1 -fi - -if [ ! "$XSERVER_REF" ]; then - echo "missing XSERVER_REF" >&2 - exit 1 -fi - -.gitlab-ci/common/build-xserver.sh "$PLATFORM" "$XSERVER_REF" - -MACH=`gcc -dumpmachine` -echo "Building on machine $MACH" - -case "$PLATFORM" in - freebsd) - export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/libdata/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/libdata/pkgconfig" - export ACLOCAL_PATH="/usr/share/aclocal:/usr/local/share/aclocal" - export CFLAGS="$CFLAGS -I/usr/local/include" - export UDEV_CFLAGS=" " - export UDEV_LIBS=" " - ;; - debian) - export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig" - ;; - *) - echo "unknown platform $PLATFORM" >&2 - ;; -esac - -if [ -f autogen.sh ]; then - ( - echo "building driver via autotools" - rm -Rf _builddir - mkdir -p _builddir - cd _builddir - ../autogen.sh --disable-silent-rules - make - make check - make distcheck - ) -elif [ -f meson.build ]; then - ( - echo "building driver via meson" - meson setup _build - cd _build - meson compile - meson install - ) -else - echo "failed detecting build system" - exit 1 -fi diff --git a/.gitlab-ci/common/build-xserver.sh b/.gitlab-ci/common/build-xserver.sh deleted file mode 100755 index 7e21580e..00000000 --- a/.gitlab-ci/common/build-xserver.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env bash - -set -e -set -x - -PLATFORM="$1" -XSERVER_REF="$2" - -if [ ! "$XSERVER_REF" ]; then - echo "missing XSERVER_REF variable" >&2 - exit 1 -fi - -XSERVER_CLONE=/tmp/xserver -XSERVER_BUILD=$XSERVER_CLONE/_builddir -XSERVER_REPO=https://gitlab.freedesktop.org/xorg/xserver.git - -MACH=`gcc -dumpmachine` - -export PKG_CONFIG_PATH="/usr/lib/$MACH/pkgconfig:/usr/share/pkgconfig:$PKG_CONFIG_PATH" -export PKG_CONFIG_PATH="/usr/local/lib/$MACH/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:$PKG_CONFIG_PATH" - -echo "cloning xserver" -rm -Rf $XSERVER_CLONE -git clone --depth=1 -b $XSERVER_REF $XSERVER_REPO $XSERVER_CLONE - -echo "checking platform: $PLATFORM" -case "$PLATFORM" in - freebsd) - echo "Building on FreeBSD" - XSERVER_OS_AUTOCONF_FLAGS="--without-dtrace" - XSERVER_MESON_DISABLE="glx udev udev_kms" - ;; - debian) - echo "Building on Debian" - ;; - *) - echo "unknown platform $PLATFORM" >&2 - exit 1 - ;; -esac - -if [ -f $XSERVER_CLONE/meson.build ]; then - ( - echo "Building Xserver via meson" - for opt in $XSERVER_MESON_DISABLE ; do - if grep "'$opt'" $XSERVER_CLONE/meson_options.txt ; then - echo "disable $opt" - XSERVER_MESON_FLAGS="$XSERVER_MESON_FLAGS -D$opt=false" - else - echo "no option $opt" - fi - done - mkdir -p $XSERVER_BUILD - cd $XSERVER_BUILD - meson setup --prefix=/usr $XSERVER_MESON_FLAGS - meson compile - meson install - ) -else - ( - echo "Building Xserver via autotools" - cd $XSERVER_CLONE - # Workaround glvnd having reset the version in gl.pc from what Mesa used - # similar to xserver commit e6ef2b12404dfec7f23592a3524d2a63d9d25802 - sed -i -e 's/gl >= [79].[12].0/gl >= 1.2/' configure.ac - ./autogen.sh --prefix=/usr $XSERVER_AUTOCONF_FLAGS $XSERVER_OS_AUTOCONF_FLAGS - make -j`nproc` - make -j`nproc` install - ) -fi diff --git a/.gitlab-ci/common/debian/image-install.sh b/.gitlab-ci/common/debian/image-install.sh deleted file mode 100755 index f0e98f0c..00000000 --- a/.gitlab-ci/common/debian/image-install.sh +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/bash - -set -e -set -o xtrace - -echo 'deb-src https://deb.debian.org/debian bullseye main' >>/etc/apt/sources.list.d/deb-src.list -echo 'deb-src https://deb.debian.org/debian bullseye-updates main' >>/etc/apt/sources.list.d/deb-src.list -echo 'deb http://deb.debian.org/debian bullseye-backports main' >> /etc/apt/sources.list - -apt-get update - -apt-get autoremove -y --purge - -apt-get install -y --no-remove \ - autoconf \ - automake \ - build-essential \ - libtool \ - pkg-config \ - ca-certificates \ - git \ - debian-archive-keyring \ - python3 python3-setuptools libxshmfence-dev \ - clang \ - libxcb-icccm4-dev libxcb-xkb-dev \ - libxvmc-dev libxcb1-dev libx11-xcb-dev libxcb-dri2-0-dev libxcb-util-dev \ - libxfixes-dev libxcb-xfixes0-dev libxrender-dev libxdamage-dev libxrandr-dev \ - libxcursor-dev libxss-dev libxinerama-dev libxtst-dev libpng-dev libssl-dev \ - libxcb-dri3-dev libxxf86vm-dev libxfont-dev libxkbfile-dev libdrm-dev \ - libgbm-dev libgl1-mesa-dev libpciaccess-dev libpixman-1-dev libudev-dev \ - libgcrypt-dev libepoxy-dev libevdev-dev libmtdev-dev libinput-dev \ - mesa-common-dev libspice-protocol-dev libspice-server-dev \ - meson/bullseye-backports \ - nettle-dev \ - pkg-config \ - valgrind \ - x11-xkb-utils xfonts-utils xutils-dev x11proto-dev - -build_autoconf() { - local subdir="$1" - shift - ( - cd $subdir - ./autogen.sh "$@" - make -j${FDO_CI_CONCURRENT:-4} - make -j${FDO_CI_CONCURRENT:-4} install - ) -} - -build_meson() { - local subdir="$1" - shift - ( - cd $subdir - meson _build -Dprefix=/usr "$@" - ninja -C _build -j${FDO_CI_CONCURRENT:-4} install - ) -} - -do_clone() { - git clone "$1" --depth 1 --branch="$2" -} - -mkdir -p /tmp/build-deps -cd /tmp/build-deps - -# xserver 1.18 and older branches require libXfont 1.5 instead of 2.0 -echo "Installing libXfont 1.5" -do_clone https://gitlab.freedesktop.org/xorg/lib/libXfont.git libXfont-1.5-branch -build_autoconf libXfont - -echo "Installing font-util" -do_clone https://gitlab.freedesktop.org/xorg/font/util.git font-util-1.4.1 -build_autoconf util --prefix=/usr - -echo "Installing libxcvt" -do_clone https://gitlab.freedesktop.org/xorg/lib/libxcvt.git libxcvt-0.1.0 -build_meson libxcvt - -# xserver requires xorgproto >= 2024.1 for XWAYLAND -echo "Installing xorgproto" -do_clone https://gitlab.freedesktop.org/xorg/proto/xorgproto.git xorgproto-2024.1 -build_autoconf xorgproto - -# Xwayland requires drm 2.4.116 for drmSyncobjEventfd -# xf86-video-freedreno and xf86-video-omap need extra features -echo "Installing libdrm" -do_clone https://gitlab.freedesktop.org/mesa/drm libdrm-2.4.116 -build_meson drm -Dfreedreno=enabled -Dnouveau=enabled -Domap=enabled - -rm -Rf /tmp/build-deps diff --git a/.gitlab-ci/common/freebsd/FreeBSD.conf b/.gitlab-ci/common/freebsd/FreeBSD.conf deleted file mode 100644 index 50a9bce1..00000000 --- a/.gitlab-ci/common/freebsd/FreeBSD.conf +++ /dev/null @@ -1,8 +0,0 @@ -# using the latest branch -FreeBSD: { - url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest", - mirror_type: "srv", - signature_type: "fingerprints", - fingerprints: "/usr/share/keys/pkg", - enabled: yes -} diff --git a/.gitlab-ci/common/freebsd/image-install.sh b/.gitlab-ci/common/freebsd/image-install.sh deleted file mode 100755 index 758e90fc..00000000 --- a/.gitlab-ci/common/freebsd/image-install.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env bash - -set -e - -# note: really wanna install to /usr/local, since that's explicitly searched first, -# so we always catch the locally installed before any system/ports provided one -# otherwise we might run into trouble like trying to use outdated xorgproto -build_autoconf() { - local subdir="$1" - shift - ( - cd $subdir - ./autogen.sh --prefix=/usr/local "$@" - make -j${FDO_CI_CONCURRENT:-4} - make -j${FDO_CI_CONCURRENT:-4} install - ) -} - -build_meson() { - local subdir="$1" - shift - ( - cd $subdir - meson _build -Dprefix=/usr/local "$@" - ninja -C _build -j${FDO_CI_CONCURRENT:-4} install - ) -} - -do_clone() { - git clone "$1" --depth 1 --branch="$2" -} - -cp .gitlab-ci/common/freebsd/FreeBSD.conf /etc/pkg - -pkg upgrade -f -y - -pkg install -y \ - git gcc pkgconf autoconf automake libtool xorg-macros xorgproto meson \ - ninja pixman xtrans libXau libXdmcp libXfont libXfont2 libxkbfile libxcvt \ - libpciaccess font-util libepoll-shim libdrm mesa-libs libdrm libglu mesa-dri \ - libepoxy nettle xkbcomp libXvMC xcb-util valgrind libXcursor libXScrnSaver \ - libXinerama libXtst evdev-proto libevdev libmtdev libinput spice-protocol \ - libspice-server xcb-util xcb-util-wm - -[ -f /bin/bash ] || ln -sf /usr/local/bin/bash /bin/bash - -# Xwayland requires drm 2.4.116 for drmSyncobjEventfd -# xf86-video-freedreno and xf86-video-omap need extra features -echo "Installing libdrm" -do_clone https://gitlab.freedesktop.org/mesa/drm libdrm-2.4.116 -( - cd drm - git config user.email "buildbot@freebsd" - git config user.name "FreeBSD build bot" - git am ../.gitlab-ci/common/freebsd/libdrm-2.4.116.patch -) -build_meson drm -Dfreedreno=enabled -Dnouveau=enabled -Domap=enabled - -echo "=== post-install script END" diff --git a/.gitlab-ci/common/freebsd/libdrm-2.4.116.patch b/.gitlab-ci/common/freebsd/libdrm-2.4.116.patch deleted file mode 100644 index 820ea279..00000000 --- a/.gitlab-ci/common/freebsd/libdrm-2.4.116.patch +++ /dev/null @@ -1,109 +0,0 @@ -From a87432dbb281ddf1c50a5e78091d38f0dac79416 Mon Sep 17 00:00:00 2001 -From: "Enrico Weigelt, metux IT consult" -Date: Fri, 7 Jun 2024 15:18:47 +0200 -Subject: [PATCH 1/2] fix FTBS on FreeBSD (or non-Linux in general) - -Several drivers still including , but not using anything -from it, thus breaking build on non-Linux platforms (eg. FreeBSD). -Since not needed at all, just stop including it. - -Signed-off-by: Enrico Weigelt, metux IT consult ---- - etnaviv/etnaviv_device.c | 1 - - exynos/exynos_drm.c | 1 - - exynos/exynos_fimg2d.c | 1 - - omap/omap_drm.c | 1 - - tests/exynos/exynos_fimg2d_test.c | 1 - - 5 files changed, 5 deletions(-) - -diff --git a/etnaviv/etnaviv_device.c b/etnaviv/etnaviv_device.c -index 699df256..a63bd15d 100644 ---- a/etnaviv/etnaviv_device.c -+++ b/etnaviv/etnaviv_device.c -@@ -25,7 +25,6 @@ - */ - - #include --#include - #include - #include - #include -diff --git a/exynos/exynos_drm.c b/exynos/exynos_drm.c -index 3e322a17..fb4cd8de 100644 ---- a/exynos/exynos_drm.c -+++ b/exynos/exynos_drm.c -@@ -31,7 +31,6 @@ - #include - - #include --#include - - #include - -diff --git a/exynos/exynos_fimg2d.c b/exynos/exynos_fimg2d.c -index ac6fa687..f0aee962 100644 ---- a/exynos/exynos_fimg2d.c -+++ b/exynos/exynos_fimg2d.c -@@ -30,7 +30,6 @@ - #include - - #include --#include - - #include - -diff --git a/omap/omap_drm.c b/omap/omap_drm.c -index aa273660..42d35ef7 100644 ---- a/omap/omap_drm.c -+++ b/omap/omap_drm.c -@@ -27,7 +27,6 @@ - */ - - #include --#include - #include - #include - #include -diff --git a/tests/exynos/exynos_fimg2d_test.c b/tests/exynos/exynos_fimg2d_test.c -index d85e2f6b..b1baa503 100644 ---- a/tests/exynos/exynos_fimg2d_test.c -+++ b/tests/exynos/exynos_fimg2d_test.c -@@ -31,7 +31,6 @@ - #include - - #include --#include - - #include - #include --- -2.39.2 - -From 79123db12c6c5f42747fae02068b482055e8c376 Mon Sep 17 00:00:00 2001 -From: "Enrico Weigelt, metux IT consult" -Date: Fri, 7 Jun 2024 15:43:13 +0200 -Subject: [PATCH 2/2] omap: fix FTBS on FreeBSD and drop unneeded include - -No need to explicitly include , since drm.h already does that, -but conditionally only Linux only. - -Signed-off-by: Enrico Weigelt, metux IT consult ---- - omap/omap_drm.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/omap/omap_drm.c b/omap/omap_drm.c -index 42d35ef7..93d2207f 100644 ---- a/omap/omap_drm.c -+++ b/omap/omap_drm.c -@@ -27,7 +27,6 @@ - */ - - #include --#include - #include - #include - #include --- -2.39.2 - diff --git a/.gitlab-ci/common/xorg-driver.yml b/.gitlab-ci/common/xorg-driver.yml deleted file mode 100644 index 3e63bc48..00000000 --- a/.gitlab-ci/common/xorg-driver.yml +++ /dev/null @@ -1,216 +0,0 @@ -# version 0.1.19 -variables: - DEBIAN_VERSION: 'bullseye-slim' - DEBIAN_TAG: "2024-10-01.03" - DEBIAN_EXEC: 'bash .gitlab-ci/common/debian/image-install.sh' - DEBIAN_SKIP: "false" # to enable, it has to be litterally "true" - - FREEBSD_TAG: '2024-10-01.01' - FREEBSD_VERSION: '14.0' -# image is yet too small for that - need a more complicated way :( -# FREEBSD_EXEC: "bash .gitlab-ci/common/freebsd/image-install.sh" - FREEBSD_SKIP: "false" # to enable, it has to be litterally "true" - -.templates_sha: &template_sha bc70242ffb8402243e934659ecc1a2d1c89eca2b # see https://docs.gitlab.com/ee/ci/yaml/#includefile - -include: - - project: 'freedesktop/ci-templates' - ref: *template_sha - file: '/templates/debian.yml' - - project: 'freedesktop/ci-templates' - ref: *template_sha - file: '/templates/freebsd.yml' - - project: 'freedesktop/ci-templates' - ref: *template_sha - file: '/templates/ci-fairy.yml' - - template: Security/SAST.gitlab-ci.yml - -stages: - - images - - build - - test - -# standard commits quality check -check-commits: - extends: - - .fdo.ci-fairy - stage: test - script: - - ci-fairy check-commits --junit-xml=results.xml - except: - - master@$FDO_UPSTREAM_REPO - variables: - GIT_DEPTH: 100 - artifacts: - reports: - junit: results.xml - allow_failure: true - needs: - -# standard merge request quality checks -check-merge-request: - extends: - - .fdo.ci-fairy - stage: test - script: - - ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml - artifacts: - when: on_failure - reports: - junit: results.xml - allow_failure: true - needs: - -# create debian build image -image@debian@amd64: - extends: - - .xorg.distro@debian@amd64 - - .fdo.container-build@debian - stage: images - variables: - GIT_STRATEGY: none - rules: - - if: $DEBIAN_SKIP != "true" - when: always - needs: - -image@debian@i386: - extends: - - .xorg.distro@debian@i386 - - .fdo.container-build@debian - stage: images - variables: - GIT_STRATEGY: none - rules: - - if: $DEBIAN_SKIP != "true" - when: always - needs: - -# inherit this to define FDO_DISTRIBUTION_* variables for Debian -.xorg.distro@debian@amd64: - variables: - FDO_DISTRIBUTION_VERSION: "$DEBIAN_VERSION" - FDO_DISTRIBUTION_EXEC: "$DEBIAN_EXEC" - FDO_DISTRIBUTION_TAG: "amd64-$DEBIAN_TAG" - FDO_BASE_IMAGE: "amd64/debian:$DEBIAN_VERSION" - -.xorg.distro@debian@i386: - variables: - FDO_DISTRIBUTION_VERSION: "$DEBIAN_VERSION" - FDO_DISTRIBUTION_EXEC: "$DEBIAN_EXEC" - FDO_DISTRIBUTION_TAG: "i386-$DEBIAN_TAG" - FDO_BASE_IMAGE: "i386/debian:$DEBIAN_VERSION" - -# overwrite this one if another matrix is needed -.xorg.driver_matrix@debian: - parallel: - matrix: - - CC: [ "gcc", "clang" ] - XSERVER_REF: [ -# these break on Debian -# "xorg-server-1.18.4", -# "xorg-server-1.19.7", - "xorg-server-1.20.14", - "xorg-server-21.1.13", - "master" - ] - -# default build with meson on Debian -.xorg.driver_common@debian: - needs: - - image@debian@i386 - - image@debian@amd64 - extends: - - .fdo.distribution-image@debian - stage: build - script: - - .gitlab-ci/common/build-driver.sh "debian" "$XSERVER_REF" - variables: - CFLAGS: "-pipe -g -O2" - rules: - - if: $DEBIAN_SKIP != "true" - when: always - -# overwrite this when you need some special Debian build -build@debian@amd64: - extends: - - .xorg.driver_matrix@debian - - .xorg.driver_common@debian - - .xorg.distro@debian@amd64 - -build@debian@i386: - extends: - - .xorg.driver_matrix@debian - - .xorg.driver_common@debian - - .xorg.distro@debian@i386 - -# inherit this to define FDO_DISTRIBUTION_* variables for FreeBSD -.xorg.distro@freebsd: - variables: - FDO_DISTRIBUTION_VERSION: "$FREEBSD_VERSION" - FDO_DISTRIBUTION_EXEC: "$FREEBSD_EXEC" - FDO_DISTRIBUTION_TAG: "$FREEBSD_TAG" - -# create base image for FreeBSD -image@freebsd: - extends: - - .xorg.distro@freebsd - - .fdo.qemu-build@freebsd@x86_64 - stage: images - variables: - GIT_STRATEGY: none - rules: - - if: $FREEBSD_SKIP != "true" - when: always - -# inherit this to get the default build matrix -.xorg.driver_matrix@freebsd: - parallel: - matrix: - - CC: [ "gcc", "clang" ] - XSERVER_REF: [ -# "xorg-server-1.18.4", # this breaks due name clash on "bool" -# "xorg-server-1.19.7", -# "xorg-server-1.20.14", # breaks meson ... see: 331850ce6f0c48a1cfc489da2a27ca0220997a2f -- server-1.20-branch - "xorg-server-21.0.99.1", - "xorg-server-21.1.13", - "master" - ] - -# common build for driver on FreeBSD. meson and autoconf are both handled by this -.xorg.driver_common@freebsd: - needs: - - image@freebsd - stage: build - extends: - - .fdo.distribution-image@freebsd - - .xorg.distro@freebsd - script: - # FIXME: increasing image and running image-install.sh should be done - # at container image build time, but would have to replicate too much - # of the cbuild script here. better wait until CI folks have increased - # the image size or provide hooks for that - - xz -d -T0 /app/image.raw.xz - - rm -f /app/image.raw.xz - - truncate -s +5G /app/image.raw - - /app/vmctl start - - set +e - - /app/vmctl exec "service growfs onestart" - - scp -r $PWD "vm:" - - /app/vmctl exec "cd $CI_PROJECT_NAME && .gitlab-ci/common/freebsd/image-install.sh" - - /app/vmctl exec "cd $CI_PROJECT_NAME && .gitlab-ci/common/build-driver.sh freebsd $XSERVER_REF" && touch .success - # copy any test results from the VM to our container so we can - # save them as artifacts - - scp -r vm:$CI_PROJECT_NAME/test-results.xml . || true # this is allowed to fail - - /app/vmctl stop - - set -e - - test -e .success || exit 1 - rules: - - if: $FREEBSD_SKIP != "true" - when: always - -# overwrite this if you need some special FreeBSD build -build@freebsd: - extends: - - .xorg.driver_matrix@freebsd - - .xorg.driver_common@freebsd