include:
    - project: 'steam/steam-ci-pipeline'
      file: '/steam-gitlab-ci-common.yml'

    - project: 'steam/steam-ci-pipeline'
      file: '/steam-gitlab-ci-pipeline.yml'

variables:
    BUILD_IMAGE: registry.gitlab.steamos.cloud/steamrt/scout/sdk:beta
    STEAM_CI_USE_BINARIES_FROM: autopkgtest
    STEAM_CI_DEPENDENCIES: >-
        debhelper
        glslang-tools
        gtk-doc-tools
        libelf-dev
        libegl1-mesa-dev
        libgl1-mesa-dev
        libgles2-mesa-dev
        libglib2.0-dev
        libjson-glib-dev
        libtheora-dev
        libva-dev
        libvdpau-dev
        libvulkan-dev
        libx11-dev
        libxcb1-dev
        libxcomposite-dev
        locales
        meson
        pandoc
        python3
        python3.5

    DEBIAN_FRONTEND: noninteractive

    SCOUT_DOCKER_REGISTRY: registry.gitlab.steamos.cloud
    SCOUT_DOCKER_IMAGE: steamrt/scout/sdk:beta
    SCOUT_APT_SOURCES_FILE: ''
    DEVEL_DOCKER_REGISTRY: ''
    DEVEL_DOCKER_IMAGE: ''
    # Set non-empty to allow
    CI_ALLOW_MISSING_SOURCES: ''

stages:
    - build
    - test

build:devel:
    stage: build
    tags:
        - docker
        - linux
    rules:
        - if: '$DEVEL_DOCKER_REGISTRY != "" && $DEVEL_DOCKER_IMAGE != ""'
    image: "${DEVEL_DOCKER_REGISTRY}/${DEVEL_DOCKER_IMAGE}"
    script:
        - |
            set -eux

            apt-get -y --no-install-recommends install \
            clang \
            clang-tools \
            ${NULL+}

            meson --werror -Dman=true _build-devel
            ninja -C _build-devel
            ninja -C _build-devel install
            meson test --verbose -C _build-devel

            export CC=clang
            export CXX=clang++

            meson \
                -Db_lundef=false \
                -Db_sanitize=address,undefined \
                --werror \
                _build-clang-asan
            ninja -C _build-clang-asan
            ninja -C _build-clang-asan scan-build
            ninja -C _build-clang-asan install
            meson test --verbose -C _build-clang-asan

    artifacts:
        paths:
            - _build-devel/meson-logs/*.txt
            - _build-clang-asan/meson-logs/*.txt

build:scout:
    stage: build
    tags:
        - docker
        - linux
    image: "${SCOUT_DOCKER_REGISTRY}/${SCOUT_DOCKER_IMAGE}"
    script:
        - |
            set -eux

            if [ -n "${SCOUT_APT_SOURCES_FILE}" ]; then
                cp "${SCOUT_APT_SOURCES_FILE}" /etc/apt/sources.list
                echo >> /etc/apt/sources.list

                if [ -n "${STEAM_CI_EXTRA_APT_SOURCES-}" ]; then
                  echo "${STEAM_CI_EXTRA_APT_SOURCES}" | while read -r first rest; do
                    if [ "x$first" = xboth ]; then
                      echo "deb $rest" >> /etc/apt/sources.list
                      echo "deb-src $rest" >> /etc/apt/sources.list
                    else
                      echo "$first $rest" >> /etc/apt/sources.list
                    fi
                  done
                fi

                apt-get -y update
            fi

            # g++ 4.6 is too old (see also debian/rules)
            export CXX=g++-4.8

            meson \
              --prefix="$(pwd)/_build-scout/prefix" \
              -Dsrcdir=src \
              --werror \
              _build-scout
            ninja -C _build-scout
            G_MESSAGES_DEBUG=all meson test --verbose -C _build-scout
            ninja -C _build-scout install

    artifacts:
        paths:
            - _build-scout/meson-logs/*.txt

autopkgtest:
    stage: test
    needs:
        - build
    variables:
        STEAM_CI_INSTALL_SCRIPT: |
            # Workaround for the build regression described in !88
            apt-get -y remove libsteam-runtime-tools-0-helpers

# vim:set sw=4 sts=4 et: