X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=.gitlab-ci.yml;h=87968b61328f94ee74c02904be6372c22baacb3d;hb=95748f648321a9569af61c64da9dfc805c629a24;hp=90b4f01cf00ba4f347adaf6f0076a8a3a4bddee7;hpb=329f5cd78092f3ee72d3565417de646c98990036;p=mesa.git diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 90b4f01cf00..87968b61328 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -16,17 +16,31 @@ # 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-01-31-01 - UBUNTU_IMAGE: "$CI_REGISTRY/$CI_PROJECT_PATH/ubuntu:$UBUNTU_TAG" - + 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" stages: - containers-build + - build+test + + +# When to automatically run the CI +.ci-run-policy: + only: + - master + - merge_requests + - /^ci([-/].*)?$/ + retry: + max: 2 + when: + - runner_system_failure # CONTAINERS -containers:ubuntu: +ubuntu: + extends: .ci-run-policy stage: containers-build image: docker:stable services: @@ -41,9 +55,288 @@ containers:ubuntu: - 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 - only: - changes: - - .gitlab-ci.yml - - .gitlab-ci/Dockerfile.ubuntu + + +# BUILD + +.build: + extends: .ci-run-policy + image: $UBUNTU_IMAGE + stage: build+test + cache: + paths: + - ccache + 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:-[]} + -D I-love-half-baked-turnips=true + - cd _build + - meson configure + - ninja -j4 + - ninja test + +.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 + +autotools: + extends: .build + variables: + MAKEFLAGS: "-j8" + LLVM_CONFIG: llvm-config-7 + script: + - mkdir build + - cd build + - ../autogen.sh + --enable-autotools + --enable-debug + --disable-llvm-shared-libs + - make + - make check + +# NOTE: Building SWR is 2x (yes two) times slower than all the other +# gallium drivers combined. +# Start this early so that it doesn't limit the total 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-clang: + extends: .meson-build + variables: + UNWIND: "true" + DRI_DRIVERS: "auto" + GALLIUM_DRIVERS: "auto" + CC: "ccache clang-7" + CXX: "ccache clang++-7" + +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,freedreno + 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 + +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,panfrost" + LLVM_VERSION: "5.0" + +meson-gallium-clover-llvm: + 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,radeonsi" + +meson-gallium-clover-llvm39: + extends: meson-gallium-clover-llvm + variables: + GALLIUM_DRIVERS: "r600" + LLVM_VERSION: "3.9" + +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" + +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"