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 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" - 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"