# SPDX-License-Identifier: CC0-1.0 # SPDX-FileCopyrightText: 2018-2020 Collabora, Ltd. and the Monado contributors variables: FDO_UPSTREAM_REPO: monado/monado .templates_sha: &templates_sha 322bf2b8f29b6491caeb13861201e96969ddc169 # Variables for build and usage of Debian 10 (Buster) image .monado.debian:buster: variables: FDO_DISTRIBUTION_VERSION: buster FDO_DISTRIBUTION_TAG: "2019-04-28.1" # Variables for build and usage of Debian 10 (Buster) + Android NDK image .monado.debian:buster-ndk: variables: FDO_DISTRIBUTION_VERSION: buster FDO_DISTRIBUTION_TAG: "2019-04-28.1" FDO_REPO_SUFFIX: ndk # Variables for build and usage of Arch Linux image .monado.arch:rolling: variables: FDO_DISTRIBUTION_TAG: "2019-04-28.0" include: - project: "freedesktop/ci-templates" ref: *templates_sha file: "/templates/debian.yml" - project: "freedesktop/ci-templates" ref: *templates_sha file: "/templates/arch.yml" stages: - container_prep - build - pages - deploy ### # Container prep jobs # Base for all container prep .monado.container_base: # "stage" set here doesn't work, for some reason variables: # no need to pull the whole tree for rebuilding the image - is this still needed? GIT_STRATEGY: none # Each most-derived job has a script to set up stuff for it. FDO_DISTRIBUTION_EXEC: "bash .gitlab-ci/${CI_JOB_NAME}.sh" # Debian Buster (x64 + i386) debian:container_prep: stage: container_prep extends: - .monado.debian:buster # local - .monado.container_base # local - .fdo.container-build@debian # from ci-templates variables: # a list of packages to install FDO_DISTRIBUTION_PACKAGES: "build-essential git wget unzip cmake meson ninja-build doxygen graphviz libeigen3-dev curl patch python3 pkg-config libx11-dev libxxf86vm-dev libxrandr-dev libxcb-randr0-dev libhidapi-dev libwayland-dev libvulkan-dev glslang-dev glslang-tools libglvnd-dev libgl1-mesa-dev ca-certificates libusb-1.0-0-dev libuvc-dev libavcodec-dev libopencv-dev libudev-dev clang-format-7 codespell libv4l-dev libegl1-mesa-dev python3-pip python3-click" # Arch Linux (x64) arch:container_prep: stage: container_prep extends: - .monado.arch:rolling # local - .monado.container_base # local - .fdo.container-build@arch # from ci-templates variables: # a list of packages to install FDO_DISTRIBUTION_PACKAGES: "git gcc cmake meson ninja pkgconfig python3 diffutils patch doxygen graphviz eigen hidapi libxrandr mesa glslang vulkan-headers vulkan-icd-loader check glfw-x11 libusb opencv gtk3 ffmpeg v4l-utils qt5-base" # Debian Buster + the Android NDK in /opt/android-ndk # The NDK itself gets installed by .gitlab-ci/ndk:container_prep.sh ndk:container_prep: stage: container_prep extends: - .monado.debian:buster-ndk # local - .monado.container_base # local - .fdo.container-build@debian # from ci-templates variables: # Repo suffix is set in .monado.debian:buster-ndk # a list of packages to install FDO_DISTRIBUTION_PACKAGES: "git wget unzip cmake meson ninja-build libeigen3-dev python3 pkg-config ca-certificates glslang-tools" format-and-spellcheck: extends: - .monado.debian:buster # local - .fdo.distribution-image@debian # from ci-templates stage: build script: - scripts/format-and-spellcheck.sh artifacts: paths: - patches/ expire_in: 1 week when: on_failure # "Base" job for a CMake build .monado.build-cmake: stage: build script: - mkdir build - pushd build - cmake -GNinja .. $CMAKE_ARGS - ninja # "Base" job for a Meson build .monado.build-meson: stage: build script: - mkdir build - pushd build - meson .. $MESON_ARGS - ninja debian:cmake: extends: - .monado.debian:buster # local - .fdo.distribution-image@debian # from ci-templates - .monado.build-cmake # local before_script: # Generate "changes since last release" and add to changelog, # since this is the build that makes our docs. - pip3 install proclamation - pushd doc/changes - proclamation build --overwrite vNEXT - popd artifacts: paths: - build/doc/html/ debian:cmake-no-opencv: extends: - .monado.debian:buster # local - .fdo.distribution-image@debian # from ci-templates - .monado.build-cmake # local variables: CMAKE_ARGS: -DBUILD_WITH_OPENCV=OFF debian:cmake-no-opengl: extends: - .monado.debian:buster # local - .fdo.distribution-image@debian # from ci-templates - .monado.build-cmake # local variables: CMAKE_ARGS: -DBUILD_WITH_OPENGL=OFF debian:cmake-no-sdl2: extends: - .monado.debian:buster # local - .fdo.distribution-image@debian # from ci-templates - .monado.build-cmake # local variables: CMAKE_ARGS: -DBUILD_WITH_SDL2=OFF arch:cmake: extends: - .monado.arch:rolling # local - .fdo.distribution-image@arch # from ci-templates - .monado.build-cmake # local debian:meson: extends: - .monado.debian:buster # local - .fdo.distribution-image@debian # from ci-templates - .monado.build-meson # local arch:meson: extends: - .monado.arch:rolling # local - .fdo.distribution-image@arch # from ci-templates - .monado.build-meson # local variables: MESON_ARGS: -Ddocs=disabled # Cross-compiling debian:meson:32bit: extends: - .monado.debian:buster # local - .fdo.distribution-image@debian # from ci-templates - .monado.build-meson # local variables: MESON_ARGS: --prefix /usr --libdir /usr/lib/i386-linux-gnu --cross-file ../.gitlab-ci/i386-cross.txt debian:cmake:32bit: extends: - .monado.debian:buster # local - .fdo.distribution-image@debian # from ci-templates - .monado.build-cmake # local variables: # OpenCV and local OpenHMD doesn't play nicely with us in multi-arch. CMAKE_ARGS: -DCMAKE_TOOLCHAIN_FILE=../.gitlab-ci/i386.cmake -DBUILD_WITH_OPENCV=off -DBUILD_WITH_OPENHMD=off # Base of Android NDK builds. # Takes the last :-delimited part of the name as the ABI to build for, # so you don't need to do anything other than "extends" in the job .monado.ndk:build-base: stage: build extends: - .monado.debian:buster-ndk # local - .fdo.suffixed-image@debian # from ci-templates variables: ANDROID_PLATFORM: 24 script: - mkdir build - pushd build # This extracts the ABI from the job name - export ABI=$(echo $CI_JOB_NAME | cut --delimiter=":" -f 2) # Note we are pointing CMake to the host install of Eigen3 because it's header-only # and thus this is safe to do. - cmake -GNinja .. -DANDROID_PLATFORM=$ANDROID_PLATFORM -DANDROID_ABI=$ABI -DCMAKE_TOOLCHAIN_FILE=/opt/android-ndk/build/cmake/android.toolchain.cmake -DEigen3_DIR=/usr/lib/cmake/eigen3/ - ninja ndk:armeabi-v7a: extends: .monado.ndk:build-base ndk:arm64-v8a: extends: .monado.ndk:build-base ### # Pages ### pages: stage: pages only: - master dependencies: - debian:cmake script: - mkdir -p public - mv build/doc/html/* public/ artifacts: paths: - public