OSDN Git Service

tests/amdgpu: add gfx ring draw hang test
[android-x86/external-libdrm.git] / .gitlab-ci.yml
index eee6abf..c685a2b 100644 (file)
@@ -1,15 +1,60 @@
-latest-meson:
+# This is the tag of the docker image used for the build jobs. If the
+# image doesn't exist yet, the containers 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.
+variables:
+  UPSTREAM_REPO: mesa/drm
+  DEBIAN_TAG: "2019-11-16"
+  DEBIAN_VERSION: buster-slim
+  DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG"
+
+include:
+  - project: 'wayland/ci-templates'
+    ref: 0a9bdd33a98f05af6761ab118b5074952242aab0
+    file: '/templates/debian.yml'
+
+stages:
+  - containers
+  - build
+
+
+# When & how to run the CI
+.ci-run-policy:
+  except:
+    - schedules
+  retry:
+    max: 2
+    when:
+      - runner_system_failure
+
+# CONTAINERS
+
+debian:
+  stage: containers
+  extends:
+    - .ci-run-policy
+    - .debian@container-ifnot-exists
+  variables:
+    GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
+    DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh'
+
+
+# BUILD
+
+.meson-build:
   stage: build
-  image: base/archlinux:latest
-  before_script:
-    - pacman -Syu --noconfirm --needed
-        base-devel
-        meson
-        libpciaccess
-        libxslt docbook-xsl
-        valgrind
-        libatomic_ops
-        cairo cunit
+  variables:
+    GIT_DEPTH: 10
   script:
     - meson _build
         -D amdgpu=true
@@ -26,154 +71,61 @@ latest-meson:
         -D radeon=true
         -D tegra=true
         -D udev=true
-        -D valgrind=true
+        -D valgrind=auto
         -D vc4=true
         -D vmwgfx=true
+        ${CROSS+--cross /cross_file-$CROSS.txt}
     - ninja -C _build
     - ninja -C _build test
+    - DESTDIR=$PWD/install ninja -C _build install
+  artifacts:
+    when: on_failure
+    paths:
+      - _build/meson-logs/*
 
-latest-autotools:
-  stage: build
-  image: base/archlinux:latest
+meson-x86_64:
+  extends:
+    - .ci-run-policy
+    - .meson-build
+  image: $DEBIAN_IMAGE
+  needs:
+    - debian
+
+meson-i386:
+  extends: meson-x86_64
+  variables:
+    CROSS: i386
+
+meson-aarch64:
+  extends: meson-x86_64
+  variables:
+    CROSS: arm64
+
+meson-armhf:
+  extends: meson-x86_64
+  variables:
+    CROSS: armhf
+
+meson-ppc64el:
+  extends: meson-x86_64
+  variables:
+    CROSS: ppc64el
+
+meson-arch-daily:
+  rules:
+    - if: '$SCHEDULE == "arch-daily"'
+      when: on_success
+    - when: never
+  image: archlinux/base
   before_script:
     - pacman -Syu --noconfirm --needed
         base-devel
-        libpciaccess
-        libxslt docbook-xsl
-        valgrind
+        cairo
+        cunit
+        docbook-xsl
         libatomic_ops
-        cairo cunit
-        xorg-util-macros
-        git # autogen.sh depends on git
-  script:
-    - mkdir _build
-    - cd _build
-    - ../autogen.sh
-        --enable-udev
-        --enable-libkms
-        --enable-intel
-        --enable-radeon
-        --enable-admgpu
-        --enable-nouveau
-        --enable-vmwfgx
-        --enable-omap-experimental-api
-        --enable-exynos-experimental-api
-        --enable-freedreno
-        --enable-freedreno-kgsl
-        --enable-tegra-experimental-api
-        --enable-vc4
-        --enable-etnaviv-experimental-api
-    - make
-    - make check
-
-oldest-meson:
-  stage: build
-  image: debian:stable
-  before_script:
-    - printf > /etc/dpkg/dpkg.cfg.d/99-exclude-cruft "%s\n"
-        'path-exclude=/usr/share/doc/*'
-        'path-exclude=/usr/share/man/*'
-    - printf > /usr/sbin/policy-rc.d "%s\n"
-        '#!/bin/sh'
-        'exit 101'
-    - chmod +x /usr/sbin/policy-rc.d
-    - apt-get update
-    - apt-get -y --no-install-recommends install
-        build-essential
-        pkg-config
-        xsltproc
-        libxslt1-dev docbook-xsl
-        valgrind
-        libatomic-ops-dev
-        libcairo2-dev libcunit1-dev
-        ninja-build
-        python3 python3-pip
-        wget
-    # We need `--no-check-certificate` here because Debian's CA list is
-    # too old to know about LetsEncrypt's CA, so it refuses to connect
-    # to FreeDesktop.org
-    - LIBPCIACCESS_VERSION=libpciaccess-0.10 &&
-      wget --no-check-certificate https://xorg.freedesktop.org/releases/individual/lib/$LIBPCIACCESS_VERSION.tar.bz2 &&
-      tar -jxvf $LIBPCIACCESS_VERSION.tar.bz2 &&
-      (cd $LIBPCIACCESS_VERSION && ./configure --prefix=$HOME/prefix && make install)
-    - pip3 install wheel setuptools
-    - pip3 install meson==0.43
-  script:
-    - export PKG_CONFIG_PATH=$HOME/prefix/lib/pkgconfig:$HOME/prefix/share/pkgconfig
-    - export LD_LIBRARY_PATH="$HOME/prefix/lib:$LD_LIBRARY_PATH"
-    - meson _build
-        -D amdgpu=true
-        -D cairo-tests=true
-        -D etnaviv=true
-        -D exynos=true
-        -D freedreno=true
-        -D freedreno-kgsl=true
-        -D intel=true
-        -D libkms=true
-        -D man-pages=true
-        -D nouveau=true
-        -D omap=true
-        -D radeon=true
-        -D tegra=true
-        -D udev=true
-        -D valgrind=true
-        -D vc4=true
-        -D vmwgfx=true
-    - ninja -C _build
-    - ninja -C _build test
-
-oldest-autotools:
-  stage: build
-  image: debian:stable
-  before_script:
-    - printf > /etc/dpkg/dpkg.cfg.d/99-exclude-cruft "%s\n"
-        'path-exclude=/usr/share/doc/*'
-        'path-exclude=/usr/share/man/*'
-    - printf > /usr/sbin/policy-rc.d "%s\n"
-        '#!/bin/sh'
-        'exit 101'
-    - chmod +x /usr/sbin/policy-rc.d
-    - apt-get update
-    - apt-get -y --no-install-recommends install
-        build-essential
-        automake
-        autoconf
-        libtool
-        pkg-config
-        xsltproc
-        libxslt1-dev docbook-xsl
+        libpciaccess
+        libxslt
+        meson
         valgrind
-        libatomic-ops-dev
-        libcairo2-dev libcunit1-dev
-        wget
-        xutils-dev
-        git # autogen.sh depends on git
-    # We need `--no-check-certificate` here because Debian's CA list is
-    # too old to know about LetsEncrypt's CA, so it refuses to connect
-    # to FreeDesktop.org
-    - LIBPCIACCESS_VERSION=libpciaccess-0.10 &&
-      wget --no-check-certificate https://xorg.freedesktop.org/releases/individual/lib/$LIBPCIACCESS_VERSION.tar.bz2 &&
-      tar -jxvf $LIBPCIACCESS_VERSION.tar.bz2 &&
-      (cd $LIBPCIACCESS_VERSION && ./configure --prefix=$HOME/prefix && make install)
-  script:
-    - export PKG_CONFIG_PATH=$HOME/prefix/lib/pkgconfig:$HOME/prefix/share/pkgconfig
-    - export LD_LIBRARY_PATH="$HOME/prefix/lib:$LD_LIBRARY_PATH"
-    - mkdir _build
-    - cd _build
-    - ../autogen.sh
-        --enable-udev
-        --enable-libkms
-        --enable-intel
-        --enable-radeon
-        --enable-admgpu
-        --enable-nouveau
-        --enable-vmwfgx
-        --enable-omap-experimental-api
-        --enable-exynos-experimental-api
-        --enable-freedreno
-        --enable-freedreno-kgsl
-        --enable-tegra-experimental-api
-        --enable-vc4
-        --enable-etnaviv-experimental-api
-    - make
-    - make check
+  extends: .meson-build