| 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 ninja-build wget python3-pip |
| - pip install meson |
| |
| 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" |
| |
| meson android arm64 fedora: |
| # See https://gitlab.freedesktop.org/gstreamer/gst-ci/container_registry/164 for current images |
| image: 'registry.freedesktop.org/gstreamer/gst-ci/amd64/android-fedora:2020-10-22.0-master' |
| stage: 'build' |
| artifacts: |
| name: "${CI_JOB_NAME}_${CI_COMMIT_SHA}" |
| expire_in: '5 days' |
| when: 'always' |
| paths: |
| - "build/meson-logs/*.txt" |
| before_script: |
| - dnf install -y python3-pip gcc ninja-build gperf |
| - pip3 install --user meson |
| script: |
| - export PATH="$HOME/.local/bin:$PATH" |
| - | |
| cat > android-cross-file.txt <<EOF |
| [constants] |
| ndk_path = '/android/ndk' |
| toolchain = ndk_path + '/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android' |
| api = '28' |
| |
| [host_machine] |
| system = 'android' |
| cpu_family = 'aarch64' |
| cpu = 'aarch64' |
| endian = 'little' |
| |
| [properties] |
| sys_root = ndk_path + '/sysroot' |
| c_args = ['-Wno-pointer-bool-conversion'] |
| c_link_args = ['-fuse-ld=gold'] |
| cpp_link_args = ['-fuse-ld=gold'] |
| |
| [binaries] |
| c = toolchain + api + '-clang' |
| cpp = toolchain + api + '-clang++' |
| ar = toolchain + '-ar' |
| strip = toolchain + '-strip' |
| EOF |
| - meson setup --werror --cross-file android-cross-file.txt build |
| - meson compile --verbose -C build |