image: fedora:rawhide

stages:
  - build

before_script:
  - dnf -y upgrade --disablerepo=rawhide-modular --nogpgcheck fedora-repos fedora-repos-rawhide
  - dnf -y upgrade --disablerepo=rawhide-modular
  - dnf -y install --disablerepo=rawhide-modular --allowerasing --skip-broken @buildsys-build autoconf automake libtool gettext gettext-devel gperf expat-devel freetype-devel json-c-devel git docbook-utils docbook-utils-pdf bubblewrap
  - dnf -y install --disablerepo=rawhide-modular --allowerasing --skip-broken mingw64-gettext mingw64-freetype mingw64-expat wine
  - dnf -y install --disablerepo=rawhide-modular --allowerasing --skip-broken meson ninja-build wget

shared-build:
  stage: build
  script:
    - export BUILD_ID="fontconfig-$CI_JOB_NAME_$CI_COMMIT_SHA-$CI_JOB_ID"
    - export PREFIX="$(pwd)/prefix-$BUILD_ID"
    - export BUILDDIR="$(pwd)/build-$BUILD_ID"
    - export MAKEFLAGS="-j4"
    - mkdir "$BUILDDIR" "$PREFIX"
    - cd "$BUILDDIR"
    - ../autogen.sh --prefix="$PREFIX" --enable-shared --disable-static
    - make
    - make check
    - make install
    - make distcheck
  artifacts:
    name: fontconfig-$CI_COMMIT_SHA-$CI_JOB_ID
    when: always
    paths:
      - build-*/fontconfig-*.tar.*
      - build-*/fontconfig*/_build/sub/*.log
      - build-*/fontconfig*/_build/sub/test/*.log
      - build-*/fontconfig*/_build/sub/test/*.trs
      - build-*/fontconfig*/_build/sub/test/out*
      - build-*/*.log
      - build-*/test/*.log
      - build-*/test/*.trs
      - build-*/test/out*
      - prefix-*
static-build:
  stage: build
  script:
    - export BUILD_ID="fontconfig-$CI_JOB_NAME_$CI_COMMIT_SHA-$CI_JOB_ID"
    - export PREFIX="$(pwd)/prefix-$BUILD_ID"
    - export BUILDDIR="$(pwd)/build-$BUILD_ID"
    - export MAKEFLAGS="-j4"
    - mkdir "$BUILDDIR"
    - cd "$BUILDDIR"
    - ../autogen.sh --prefix="$PREFIX" --disable-shared --enable-static
    - make
    - make check
  artifacts:
    name: fontconfig-$CI_COMMIT_SHA-$CI_JOB_ID
    when: always
    paths:
      - build-*/*.log
      - build-*/test/*.log
      - build-*/test/*.trs
      - build-*/test/out*
mingw-build:
  stage: build
  script:
    - export BUILD_ID="fontconfig-$CI_JOB_NAME_$CI_COMMIT_SHA-$CI_JOB_ID"
    - export PREFIX="$(pwd)/prefix-$BUILD_ID"
    - export BUILDDIR="$(pwd)/build-$BUILD_ID"
    - export MAKEFLAGS="-j4"
    - mkdir "$BUILDDIR"
    - cd "$BUILDDIR"
    - eval `rpm --eval %{mingw64_env}`
    - ../autogen.sh --prefix="$PREFIX" --host=x86_64-mingw32 --disable-shared --enable-static
    - make
    - make check
  artifacts:
    name: fontconfig-$CI_COMMIT_SHA-$CI_JOB_ID
    when: always
    paths:
      - build-*/*.log
      - build-*/test/*.log
      - build-*/test/*.trs
      - build-*/test/out*
meson-shared-build:
  image: fedora:latest
  stage: build
  script:
    - export BUILD_ID="fontconfig-$CI_JOB_NAME_$CI_COMMIT_SHA-$CI_JOB_ID"
    - export PREFIX="$(pwd)/prefix-$BUILD_ID"
    - export BUILDDIR="$(pwd)/build-$BUILD_ID"
    - export MAKEFLAGS="-j4"
    - meson --prefix="$PREFIX" --default-library=shared "$BUILDDIR"
    - ninja -C "$BUILDDIR"
    - ninja -C "$BUILDDIR" test
    - ninja -C "$BUILDDIR" install
  artifacts:
    name: fontconfig-$CI_COMMIT_SHA-$CI_JOB_ID
    when: always
    paths:
      - build-*/meson-logs/*txt
      - prefix-*
meson-static-build:
  image: fedora:latest
  stage: build
  script:
    - export BUILD_ID="fontconfig-$CI_JOB_NAME_$CI_COMMIT_SHA-$CI_JOB_ID"
    - export PREFIX="$(pwd)/prefix-$BUILD_ID"
    - export BUILDDIR="$(pwd)/build-$BUILD_ID"
    - export MAKEFLAGS="-j4"
    - meson --prefix="$PREFIX" --default-library=static "$BUILDDIR"
    - ninja -C "$BUILDDIR"
    - ninja -C "$BUILDDIR" test
    - ninja -C "$BUILDDIR" install
  artifacts:
    name: fontconfig-$CI_COMMIT_SHA-$CI_JOB_ID
    when: always
    paths:
      - build-*/meson-logs/*txt
      - prefix-*
meson-mingw-w64-build:
  image: fedora:latest
  stage: build
  # allow failure until https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/263 is resolved
  allow_failure: true
  script:
    - export BUILD_ID="fontconfig-$CI_JOB_NAME_$CI_COMMIT_SHA-$CI_JOB_ID"
    - export PREFIX="$(pwd)/prefix-$BUILD_ID"
    - export BUILDDIR="$(pwd)/build-$BUILD_ID"
    - eval `rpm --eval %{mingw64_env}`
    - meson --prefix="$PREFIX" "$BUILDDIR" --cross-file .gitlab-ci/linux-mingw-w64-64bit.txt
    - ninja -C "$BUILDDIR"
    - ninja -C "$BUILDDIR" test
    # install doesn't work, fccache problems, but autotools ci doesn't do that either
    # - ninja -C "$BUILDDIR" install
  artifacts:
    name: fontconfig-$CI_COMMIT_SHA-$CI_JOB_ID
    when: always
    paths:
      - build-*/meson-logs/*txt
      - prefix-*

# FIXME: fontconfig should probably get its own image
.build meson windows:
  image: 'registry.freedesktop.org/gstreamer/gst-ci/amd64/windows:v10'
  stage: 'build'
  tags:
    - 'docker'
    - 'windows'
    - '1809'
  variables:
    # Make sure any failure in PowerShell scripts is fatal
    ErrorActionPreference: 'Stop'
    WarningPreference: 'Stop'
    # Uncomment the following key if need to pass custom args, as well with the
    # $env:MESON_ARGS line in the `script:` blocks
    # MESON_ARGS: >-
    #   -Dfoo=enabled
    #   -Dbar=disabled
  before_script:
    # Make sure meson is up to date, so we don't need to rebuild the image with each release
    - pip3 install -U meson
  script:
    # For some reason, options are separated by newline instead of space, so we
    # have to replace them first.
    # - $env:MESON_ARGS = $env:MESON_ARGS.replace("`n"," ")
    # Gitlab executes PowerShell in docker, but VsDevCmd.bat is a batch script.
    # Environment variables substitutions is done by PowerShell before calling
    # cmd.exe, that's why we use $env:FOO instead of %FOO%
    - cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH &&
        meson build $env:MESON_ARGS &&
        ninja -C build &&
        ninja -C build test"

meson vs2017 amd64:
  extends: '.build meson windows'
  variables:
    ARCH: 'amd64'

meson vs2017 x86:
  extends: '.build meson windows'
  variables:
    ARCH: 'x86'

meson macos:
  stage: 'build'
  tags:
    - gst-macos-10.15
  artifacts:
    name: "${CI_JOB_NAME}_${CI_COMMIT_SHA}"
    expire_in: '5 days'
    when: 'always'
    paths:
      - "build/meson-logs/*txt"
  before_script:
    - pip3 install --upgrade pip
    # Make sure meson is up to date
    - pip3 install -U meson
    # Need to install certificates for python
    - pip3 install --upgrade certifi
    # Anther way t install certificates
    - open /Applications/Python\ 3.8/Install\ Certificates.command
    # Get ninja
    - curl -L -o ninja-mac.zip https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-mac.zip
    - unzip ninja-mac.zip
    - sudo cp ninja /usr/local/bin
  script:
    - CERT_PATH=$(python3 -m certifi) && export SSL_CERT_FILE=${CERT_PATH} && export REQUESTS_CA_BUNDLE=${CERT_PATH} && meson build
    - ninja -C build
    - ninja -C build test

# msys infrastructure is a bit broken, disable for now
meson msys2:
  extends: '.build meson windows'
  when: 'manual'
  allow_failure: true
  script:
    # For some reason, options are separated by newline instead of space, so we
    # have to replace them first.
    # - $env:MESON_ARGS = $env:MESON_ARGS.replace("`n"," ")

    - $env:PATH += ";C:\msys64\usr\bin;C:\msys64\mingw64/bin;C:\msys64\mingw32/bin"
    # XXX: Copied from https://gitlab.freedesktop.org/gstreamer/gst-ci/blob/master/gitlab/ci_template.yml#L487
    # For some reason docker build hangs if this is included in the image, needs more troubleshooting
    - C:\msys64\usr\bin\bash -c "pacman-key --init && pacman-key --populate msys2 && pacman-key --refresh-keys || true"
    - C:\msys64\usr\bin\bash -c "pacman -Syuu --noconfirm"
    - C:\msys64\usr\bin\bash -c "pacman -Sy --noconfirm --needed mingw-w64-x86_64-toolchain ninja"
    - C:\msys64\usr\bin\bash -c "meson build $env:MESON_ARGS &&
        ninja -C build &&
        ninja -C build test"
