From 5d8d2bf2d8706dba9c5d2e943ef6bc4e59f17b83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Wed, 12 May 2021 16:42:37 +0200 Subject: [PATCH] ci: Add Fedora 34 based x86 build docker image v2: * Do not install weak dependencies in Fedora docker image. Part-of: --- .gitlab-ci.yml | 21 ++++ .gitlab-ci/container/container_post_build.sh | 4 +- .gitlab-ci/container/container_pre_build.sh | 12 ++- .gitlab-ci/container/fedora/x86_build.sh | 107 +++++++++++++++++++ 4 files changed, 140 insertions(+), 4 deletions(-) create mode 100644 .gitlab-ci/container/fedora/x86_build.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 795af50ebec..10d9e55fdcf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,6 +22,7 @@ include: ref: *ci-templates-commit file: - '/templates/debian.yml' + - '/templates/fedora.yml' - local: '.gitlab-ci/lava/lava-gitlab-ci.yml' - local: '.gitlab-ci/test-source-dep.yml' - local: 'src/amd/ci/gitlab-ci.yml' @@ -452,6 +453,26 @@ debian/arm_build: needs: - debian/arm_build + +# Fedora 34 based x86 build image +fedora/x86_build: + extends: + - .fdo.container-build@fedora + - .container + variables: + FDO_DISTRIBUTION_VERSION: 34 + MESA_IMAGE_TAG: &fedora-x86_build "2021-07-08-bump-libdrm" + +.use-fedora/x86_build: + extends: + - .set-image + variables: + MESA_IMAGE_PATH: "fedora/x86_build" + MESA_IMAGE_TAG: *fedora-x86_build + needs: + - fedora/x86_build + + .kernel+rootfs: extends: - .ci-run-policy diff --git a/.gitlab-ci/container/container_post_build.sh b/.gitlab-ci/container/container_post_build.sh index 66e928a4bc8..818dc1ecfd0 100755 --- a/.gitlab-ci/container/container_post_build.sh +++ b/.gitlab-ci/container/container_post_build.sh @@ -1,6 +1,8 @@ #!/bin/sh -apt-get autoremove -y --purge +if test -f /etc/debian_version; then + apt-get autoremove -y --purge +fi # Clean up any build cache for rust. rm -rf /.cargo diff --git a/.gitlab-ci/container/container_pre_build.sh b/.gitlab-ci/container/container_pre_build.sh index 43cadc739b8..dc36970c8a7 100755 --- a/.gitlab-ci/container/container_pre_build.sh +++ b/.gitlab-ci/container/container_pre_build.sh @@ -1,15 +1,21 @@ #!/bin/sh +if test -f /etc/debian_version; then + CCACHE_PATH=/usr/lib/ccache +else + CCACHE_PATH=/usr/lib64/ccache +fi + # Common setup among container builds before we get to building code. export CCACHE_COMPILERCHECK=content export CCACHE_COMPRESS=true export CCACHE_DIR=/cache/mesa/ccache -export PATH=/usr/lib/ccache:$PATH +export PATH=$CCACHE_PATH:$PATH # CMake ignores $PATH, so we have to force CC/GCC to the ccache versions. -export CC="/usr/lib/ccache/gcc" -export CXX="/usr/lib/ccache/g++" +export CC="${CCACHE_PATH}/gcc" +export CXX="${CCACHE_PATH}/g++" # Force linkers to gold, since it's so much faster for building. We can't use # lld because we're on old debian and it's buggy. ming fails meson builds diff --git a/.gitlab-ci/container/fedora/x86_build.sh b/.gitlab-ci/container/fedora/x86_build.sh new file mode 100644 index 00000000000..718e49e9338 --- /dev/null +++ b/.gitlab-ci/container/fedora/x86_build.sh @@ -0,0 +1,107 @@ +#!/bin/bash + +set -e +set -o xtrace + + +EPHEMERAL=" + autoconf + automake + bzip2 + git + libtool + pkgconfig(epoxy) + pkgconfig(gbm) + unzip + wget + xz + " + +dnf install -y --setopt=install_weak_deps=False \ + bison \ + ccache \ + clang-devel \ + flex \ + gcc \ + gcc-c++ \ + gettext \ + kernel-headers \ + llvm-devel \ + meson \ + "pkgconfig(dri2proto)" \ + "pkgconfig(expat)" \ + "pkgconfig(glproto)" \ + "pkgconfig(libclc)" \ + "pkgconfig(libelf)" \ + "pkgconfig(libglvnd)" \ + "pkgconfig(libomxil-bellagio)" \ + "pkgconfig(libselinux)" \ + "pkgconfig(libva)" \ + "pkgconfig(pciaccess)" \ + "pkgconfig(vdpau)" \ + "pkgconfig(vulkan)" \ + "pkgconfig(wayland-egl-backend)" \ + "pkgconfig(wayland-protocols)" \ + "pkgconfig(wayland-scanner)" \ + "pkgconfig(x11)" \ + "pkgconfig(x11-xcb)" \ + "pkgconfig(xcb)" \ + "pkgconfig(xcb-dri2)" \ + "pkgconfig(xcb-dri3)" \ + "pkgconfig(xcb-glx)" \ + "pkgconfig(xcb-present)" \ + "pkgconfig(xcb-randr)" \ + "pkgconfig(xcb-sync)" \ + "pkgconfig(xcb-xfixes)" \ + "pkgconfig(xdamage)" \ + "pkgconfig(xext)" \ + "pkgconfig(xfixes)" \ + "pkgconfig(xrandr)" \ + "pkgconfig(xshmfence)" \ + "pkgconfig(xxf86vm)" \ + "pkgconfig(zlib)" \ + python-unversioned-command \ + python3-devel \ + python3-mako \ + python3-devel \ + python3-mako \ + vulkan-headers \ + $EPHEMERAL + + +. .gitlab-ci/container/container_pre_build.sh + + +# dependencies where we want a specific version +export XORG_RELEASES=https://xorg.freedesktop.org/releases/individual +export WAYLAND_RELEASES=https://wayland.freedesktop.org/releases + +export XORGMACROS_VERSION=util-macros-1.19.0 +export LIBWAYLAND_VERSION=wayland-1.18.0 + +wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2 +tar -xvf $XORGMACROS_VERSION.tar.bz2 && rm $XORGMACROS_VERSION.tar.bz2 +cd $XORGMACROS_VERSION; ./configure; make install; cd .. +rm -rf $XORGMACROS_VERSION + +. .gitlab-ci/container/build-libdrm.sh + +wget $WAYLAND_RELEASES/$LIBWAYLAND_VERSION.tar.xz +tar -xvf $LIBWAYLAND_VERSION.tar.xz && rm $LIBWAYLAND_VERSION.tar.xz +cd $LIBWAYLAND_VERSION; ./configure --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation; make install; cd .. +rm -rf $LIBWAYLAND_VERSION + + +pushd /usr/local +git clone https://gitlab.freedesktop.org/mesa/shader-db.git --depth 1 +rm -rf shader-db/.git +cd shader-db +make +popd + + +############### Uninstall the build software + +dnf remove -y $EPHEMERAL + +. .gitlab-ci/container/container_post_build.sh