123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499 |
- # This is the tag of the docker image used for the build jobs. If the
- # image doesn't exist yet, the containers-build stage generates it.
- #
- # In order to generate a new image, one should generally change the tag.
- # While removing the image from the registry would also work, that's not
- # recommended except for ephemeral images during development: Replacing
- # an image after a significant amount of time might pull in newer
- # versions of gcc/clang or other packages, which might break the build
- # with older commits using the same tag.
- #
- # After merging a change resulting in generating a new image to the
- # main repository, it's recommended to remove the image from the source
- # repository's container registry, so that the image from the main
- # repository's registry will be used there as well.
- #
- # The format of the tag is "%Y-%m-%d-${counter}" where ${counter} stays
- # at "01" unless you have multiple updates on the same day :)
- variables:
- UBUNTU_TAG: 2019-03-05-01
- UBUNTU_IMAGE: "$CI_REGISTRY_IMAGE/ubuntu:$UBUNTU_TAG"
- UBUNTU_IMAGE_MAIN: "registry.freedesktop.org/mesa/mesa/ubuntu:$UBUNTU_TAG"
-
- cache:
- paths:
- - ccache
-
- stages:
- - containers-build
- - build+test
-
-
- # When to automatically run the CI
- .ci-run-policy:
- only:
- - master
- - merge_requests
- - /^ci([-/].*)?$/
-
-
- # CONTAINERS
-
- ubuntu:
- extends: .ci-run-policy
- stage: containers-build
- image: docker:stable
- services:
- - docker:dind
- variables:
- DOCKER_HOST: tcp://docker:2375
- DOCKER_DRIVER: overlay2
- script:
- # Enable experimental features such as `docker manifest inspect`
- - mkdir -p ~/.docker
- - "echo '{\"experimental\": \"enabled\"}' > ~/.docker/config.json"
- - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- # Check if the image (with the specific tag) already exists
- - docker manifest inspect $UBUNTU_IMAGE && exit || true
- # Try to re-use the image from the main repository's registry
- - docker image pull $UBUNTU_IMAGE_MAIN &&
- docker image tag $UBUNTU_IMAGE_MAIN $UBUNTU_IMAGE &&
- docker image push $UBUNTU_IMAGE && exit || true
- - docker build -t $UBUNTU_IMAGE -f .gitlab-ci/Dockerfile.ubuntu .
- - docker push $UBUNTU_IMAGE
-
-
- # BUILD
-
- .build:
- extends: .ci-run-policy
- image: $UBUNTU_IMAGE
- stage: build+test
- artifacts:
- when: on_failure
- untracked: true
- # Use ccache transparently, and print stats before/after
- before_script:
- - export PATH="/usr/lib/ccache:$PATH"
- - export CCACHE_BASEDIR="$PWD"
- - export CCACHE_DIR="$PWD/ccache"
- - export CCACHE_COMPILERCHECK=content
- - ccache --zero-stats || true
- - ccache --show-stats || true
- after_script:
- - export CCACHE_DIR="$PWD/ccache"
- - ccache --show-stats
-
- .meson-build:
- extends: .build
- script:
- # We need to control the version of llvm-config we're using, so we'll
- # generate a native file to do so. This requires meson >=0.49
- - if test -n "$LLVM_VERSION"; then
- LLVM_CONFIG="llvm-config-${LLVM_VERSION}";
- echo -e "[binaries]\nllvm-config = '`which $LLVM_CONFIG`'" > native.file;
- $LLVM_CONFIG --version;
- else
- touch native.file;
- fi
- - meson --version
- - meson _build
- --native-file=native.file
- -D build-tests=true
- -D libunwind=${UNWIND}
- ${DRI_LOADERS}
- -D dri-drivers=${DRI_DRIVERS:-[]}
- ${GALLIUM_ST}
- -D gallium-drivers=${GALLIUM_DRIVERS:-[]}
- -D vulkan-drivers=${VULKAN_DRIVERS:-[]}
- - cd _build
- - meson configure
- - ninja -j4
- - ninja test
-
- .make-build:
- extends: .build
- variables:
- MAKEFLAGS: "-j4"
- script:
- - if test -n "$LLVM_VERSION"; then
- export LLVM_CONFIG="llvm-config-${LLVM_VERSION}";
- fi
- - mkdir build
- - cd build
- - ../autogen.sh
- --enable-autotools
- --enable-debug
- $LIBUNWIND_FLAGS
- $DRI_LOADERS
- --with-dri-drivers=$DRI_DRIVERS
- $GALLIUM_ST
- --with-gallium-drivers=$GALLIUM_DRIVERS
- --with-vulkan-drivers=$VULKAN_DRIVERS
- --disable-llvm-shared-libs
- - make
- - eval $MAKE_CHECK_COMMAND
-
- .scons-build:
- extends: .build
- variables:
- SCONSFLAGS: "-j4"
- script:
- - if test -n "$LLVM_VERSION"; then
- export LLVM_CONFIG="llvm-config-${LLVM_VERSION}";
- fi
- - scons $SCONS_TARGET
- - eval $SCONS_CHECK_COMMAND
-
- meson-vulkan:
- extends: .meson-build
- variables:
- UNWIND: "false"
- DRI_LOADERS: >
- -D glx=disabled
- -D gbm=false
- -D egl=false
- -D platforms=x11,wayland,drm
- -D osmesa=none
- GALLIUM_ST: >
- -D dri3=true
- -D gallium-vdpau=false
- -D gallium-xvmc=false
- -D gallium-omx=disabled
- -D gallium-va=false
- -D gallium-xa=false
- -D gallium-nine=false
- -D gallium-opencl=disabled
- VULKAN_DRIVERS: intel,amd
- LLVM_VERSION: "7"
-
- meson-loader-classic-dri:
- extends: .meson-build
- variables:
- UNWIND: "false"
- DRI_LOADERS: >
- -D glx=dri
- -D gbm=true
- -D egl=true
- -D platforms=x11,wayland,drm,surfaceless
- -D osmesa=classic
- DRI_DRIVERS: "i915,i965,r100,r200,swrast,nouveau"
- GALLIUM_ST: >
- -D dri3=true
- -D gallium-vdpau=false
- -D gallium-xvmc=false
- -D gallium-omx=disabled
- -D gallium-va=false
- -D gallium-xa=false
- -D gallium-nine=false
- -D gallium-opencl=disabled
-
- meson-glvnd:
- extends: .meson-build
- variables:
- UNWIND: "true"
- DRI_LOADERS: >
- -D glvnd=true
- -D egl=true
- -D gbm=true
- -D glx=dri
- DRI_DRIVERS: "i965"
- GALLIUM_ST: >
- -D gallium-vdpau=false
- -D gallium-xvmc=false
- -D gallium-omx=disabled
- -D gallium-va=false
- -D gallium-xa=false
- -D gallium-nine=false
- -D gallium-opencl=disabled
-
- # NOTE: Building SWR is 2x (yes two) times slower than all the other
- # gallium drivers combined.
- # Start this early so that it doesn't hunder the run time.
- meson-gallium-swr:
- extends: .meson-build
- variables:
- UNWIND: "true"
- DRI_LOADERS: >
- -D glx=disabled
- -D egl=false
- -D gbm=false
- GALLIUM_ST: >
- -D dri3=false
- -D gallium-vdpau=false
- -D gallium-xvmc=false
- -D gallium-omx=disabled
- -D gallium-va=false
- -D gallium-xa=false
- -D gallium-nine=false
- -D gallium-opencl=disabled
- GALLIUM_DRIVERS: "swr"
- LLVM_VERSION: "6.0"
-
- meson-gallium-radeonsi:
- extends: .meson-build
- variables:
- UNWIND: "true"
- DRI_LOADERS: >
- -D glx=disabled
- -D egl=false
- -D gbm=false
- GALLIUM_ST: >
- -D dri3=false
- -D gallium-vdpau=false
- -D gallium-xvmc=false
- -D gallium-omx=disabled
- -D gallium-va=false
- -D gallium-xa=false
- -D gallium-nine=false
- -D gallium-opencl=disabled
- GALLIUM_DRIVERS: "radeonsi"
- LLVM_VERSION: "7"
-
- meson-gallium-drivers-other:
- extends: .meson-build
- variables:
- UNWIND: "true"
- DRI_LOADERS: >
- -D glx=disabled
- -D egl=false
- -D gbm=false
- GALLIUM_ST: >
- -D dri3=false
- -D gallium-vdpau=false
- -D gallium-xvmc=false
- -D gallium-omx=disabled
- -D gallium-va=false
- -D gallium-xa=false
- -D gallium-nine=false
- -D gallium-opencl=disabled
- GALLIUM_DRIVERS: "i915,iris,nouveau,kmsro,r300,r600,freedreno,svga,swrast,v3d,vc4,virgl,etnaviv"
- LLVM_VERSION: "5.0"
-
- meson-gallium-clover-llvm5:
- extends: .meson-build
- variables:
- UNWIND: "true"
- DRI_LOADERS: >
- -D glx=disabled
- -D egl=false
- -D gbm=false
- GALLIUM_ST: >
- -D dri3=false
- -D gallium-vdpau=false
- -D gallium-xvmc=false
- -D gallium-omx=disabled
- -D gallium-va=false
- -D gallium-xa=false
- -D gallium-nine=false
- -D gallium-opencl=icd
- GALLIUM_DRIVERS: "r600"
- LLVM_VERSION: "5.0"
-
- meson-gallium-clover-llvm6:
- extends: meson-gallium-clover-llvm5
- variables:
- LLVM_VERSION: "6.0"
-
- meson-gallium-clover-llvm7:
- extends: meson-gallium-clover-llvm5
- variables:
- GALLIUM_DRIVERS: "r600,radeonsi"
- LLVM_VERSION: "7"
-
- meson-gallium-st-other:
- extends: .meson-build
- variables:
- UNWIND: "true"
- DRI_LOADERS: >
- -D glx=disabled
- -D egl=false
- -D gbm=false
- GALLIUM_ST: >
- -D dri3=true
- -D gallium-vdpau=true
- -D gallium-xvmc=true
- -D gallium-omx=bellagio
- -D gallium-va=true
- -D gallium-xa=true
- -D gallium-nine=true
- -D gallium-opencl=disabled
- -D osmesa=gallium
- GALLIUM_DRIVERS: "nouveau,swrast"
- LLVM_VERSION: "5.0"
-
- make-vulkan:
- extends: .make-build
- variables:
- MAKE_CHECK_COMMAND: "make -C src/gtest check && make -C src/intel check"
- LLVM_VERSION: "7"
- DRI_LOADERS: >
- --disable-glx
- --disable-gbm
- --disable-egl
- --with-platforms=x11,wayland,drm
- DRI_DRIVERS: ""
- GALLIUM_ST: >
- --enable-dri
- --enable-dri3
- --disable-opencl
- --disable-xa
- --disable-nine
- --disable-xvmc
- --disable-vdpau
- --disable-va
- --disable-omx-bellagio
- --disable-gallium-osmesa
- VULKAN_DRIVERS: intel,radeon
- LIBUNWIND_FLAGS: --disable-libunwind
-
- make-loader-classic-dri:
- extends: .make-build
- variables:
- MAKE_CHECK_COMMAND: "make check"
- DRI_LOADERS: >
- --enable-glx
- --enable-gbm
- --enable-egl
- --with-platforms=x11,wayland,drm,surfaceless
- --enable-osmesa
- DRI_DRIVERS: "i915,i965,radeon,r200,swrast,nouveau"
- GALLIUM_ST: >
- --enable-dri
- --disable-opencl
- --disable-xa
- --disable-nine
- --disable-xvmc
- --disable-vdpau
- --disable-va
- --disable-omx-bellagio
- --disable-gallium-osmesa
- LIBUNWIND_FLAGS: --disable-libunwind
-
- # NOTE: Building SWR is 2x (yes two) times slower than all the other
- # gallium drivers combined.
- # Start this early so that it doesn't hunder the run time.
- make-gallium-drivers-swr:
- extends: .make-build
- variables:
- MAKE_CHECK_COMMAND: "true"
- LLVM_VERSION: "6.0"
- DRI_LOADERS: >
- --disable-glx
- --disable-gbm
- --disable-egl
- GALLIUM_ST: >
- --enable-dri
- --disable-opencl
- --disable-xa
- --disable-nine
- --disable-xvmc
- --disable-vdpau
- --disable-va
- --disable-omx-bellagio
- --disable-gallium-osmesa
- GALLIUM_DRIVERS: "swr"
- LIBUNWIND_FLAGS: --enable-libunwind
-
- make-gallium-drivers-radeonsi:
- extends: make-gallium-drivers-swr
- variables:
- LLVM_VERSION: "7"
- GALLIUM_DRIVERS: "radeonsi"
-
- make-gallium-drivers-other:
- extends: make-gallium-drivers-swr
- variables:
- LLVM_VERSION: "3.9"
- GALLIUM_DRIVERS: "i915,nouveau,kmsro,r300,r600,freedreno,svga,swrast,v3d,vc4,virgl,etnaviv"
-
- make-gallium-st-clover-llvm-39:
- extends: .make-build
- variables:
- MAKE_CHECK_COMMAND: "true"
- LLVM_VERSION: "3.9"
- DRI_LOADERS: >
- --disable-glx
- --disable-gbm
- --disable-egl
- GALLIUM_ST: >
- --disable-dri
- --enable-opencl
- --enable-opencl-icd
- --enable-llvm
- --disable-xa
- --disable-nine
- --disable-xvmc
- --disable-vdpau
- --disable-va
- --disable-omx-bellagio
- --disable-gallium-osmesa
- GALLIUM_DRIVERS: "r600"
- LIBUNWIND_FLAGS: --enable-libunwind
-
- make-gallium-st-clover-llvm-4:
- extends: make-gallium-st-clover-llvm-39
- variables:
- LLVM_VERSION: "4.0"
-
- make-gallium-st-clover-llvm-5:
- extends: make-gallium-st-clover-llvm-39
- variables:
- LLVM_VERSION: "5.0"
-
- make-gallium-st-clover-llvm-6:
- extends: make-gallium-st-clover-llvm-39
- variables:
- LLVM_VERSION: "6.0"
-
- make-gallium-st-clover-llvm-7:
- extends: make-gallium-st-clover-llvm-39
- variables:
- LLVM_VERSION: "7"
- GALLIUM_DRIVERS: "r600,radeonsi"
-
- make-gallium-st-other:
- extends: .make-build
- variables:
- MAKE_CHECK_COMMAND: "true"
- # We should be testing 3.3, but 3.9 is the oldest that still exists in ubuntu
- LLVM_VERSION: "3.9"
- DRI_LOADERS: >
- --disable-glx
- --disable-gbm
- --disable-egl
- GALLIUM_ST: >
- --enable-dri
- --disable-opencl
- --enable-xa
- --enable-nine
- --enable-xvmc
- --enable-vdpau
- --enable-va
- --enable-omx-bellagio
- --enable-gallium-osmesa
- # We need swrast for osmesa and nine.
- # i915 most likely doesn't work with most ST.
- # Regardless - we're doing a quick build test here.
- GALLIUM_DRIVERS: "i915,swrast"
- LIBUNWIND_FLAGS: --enable-libunwind
-
- scons-nollvm:
- extends: .scons-build
- variables:
- SCONS_TARGET: "llvm=0"
- SCONS_CHECK_COMMAND: "scons llvm=0 check"
-
- scons-llvm:
- extends: .scons-build
- variables:
- SCONS_TARGET: "llvm=1"
- SCONS_CHECK_COMMAND: "scons llvm=1 check"
- LLVM_VERSION: "3.9"
-
- scons-swr:
- extends: .scons-build
- variables:
- SCONS_TARGET: "swr=1"
- SCONS_CHECK_COMMAND: "true"
- LLVM_VERSION: "6.0"
|