.gitlab-ci.yml | 48 ++++++++++++++++++++++++++++++-- .gitlab-ci/build.sh | 9 ++++-- .gitlab-ci/ci.template | 22 ++++++++++++++ .gitlab-ci/config.yml | 6 +++- .gitlab-ci/test-meson-install-shared.sh | 23 +++++++++++++++ .gitlab-ci/test-meson-install-static.sh | 23 +++++++++++++++ 6 files changed, 126 insertions(+), 5 deletions(-) New commits: commit f25be57f7a08d8ac40ca8059d05bf36ae14f34f5 Merge: 3902e22 38ba898 Author: Akira TAGOH <akira@xxxxxxxxx> Date: Wed Apr 30 07:24:23 2025 +0000 Merge branch 'ci-build-script' into 'main' ci: few updates in build script See merge request fontconfig/fontconfig!397 commit 38ba8986224571aadd98bd8d73a048fe83102593 Author: Akira TAGOH <akira@xxxxxxxxx> Date: Tue Apr 29 00:51:46 2025 +0900 ci: add installation test diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1f47d14..15a1f6c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -43,8 +43,8 @@ variables: # changing these will force rebuilding the associated image # Note: these tags have no meaning and are not tied to a particular # fontconfig version - FEDORA_TAG: '2025-04-23.1-7916b3c469ca' - FREEBSD_TAG: '2025-04-23.1-58fbfb327c45' + FEDORA_TAG: '2025-04-30.1-f55ea04ce447' + FREEBSD_TAG: '2025-04-30.1-2e18059bfc52' FEDORA_EXEC: 'bash .gitlab-ci/fedora-install.sh' FREEBSD_EXEC: 'bash .gitlab-ci/freebsd-install.sh' @@ -318,6 +318,7 @@ freebsd:14.1@container-clean: - build*/fontconfig*/_build - build*/meson-logs/* - build*/meson-dist/* + - prefix* .upload: rules: @@ -480,6 +481,19 @@ build-meson static fontations: # # ####################################### +.test_hook@template: + script: + - export PREFIX="$(echo $(pwd)/prefix-*)" + - | + if [ -n "$FC_TEST_EXEC" -a -f ".gitlab-ci/test-${FC_TEST_EXEC}.sh" ]; then + sh ".gitlab-ci/test-${FC_TEST_EXEC}.sh" + else + echo "*** No test script found" + exit 1 + fi + variables: + FC_TEST_EXEC: "" + clang-format: stage: test extends: @@ -507,6 +521,7 @@ subproject-build shared: FC_DISTRO_NAME: fedora FDO_DISTRIBUTION_VERSION: rawhide FDO_DISTRIBUTION_TAG: $FEDORA_TAG + FC_TEST_EXEC: subproject-build shared FC_BUILDSYS: meson FC_BUILD_TYPE: shared FC_BUILD_SUBPROJECT: 1 @@ -522,11 +537,40 @@ subproject-build static: FC_DISTRO_NAME: fedora FDO_DISTRIBUTION_VERSION: rawhide FDO_DISTRIBUTION_TAG: $FEDORA_TAG + FC_TEST_EXEC: subproject-build static FC_BUILDSYS: meson FC_BUILD_TYPE: static FC_BUILD_SUBPROJECT: 1 needs: - fedora:rawhide@container-prep +meson-install-shared: + stage: test + extends: + - .test_hook@template + - .fdo.distribution-image@fedora + - .fc_artifacts + variables: + FC_DISTRO_NAME: fedora + FDO_DISTRIBUTION_VERSION: rawhide + FDO_DISTRIBUTION_TAG: $FEDORA_TAG + FC_TEST_EXEC: meson-install-shared + needs: + - fedora:rawhide@container-prep + - build-meson shared libxml2 +meson-install-static: + stage: test + extends: + - .test_hook@template + - .fdo.distribution-image@fedora + - .fc_artifacts + variables: + FC_DISTRO_NAME: fedora + FDO_DISTRIBUTION_VERSION: rawhide + FDO_DISTRIBUTION_TAG: $FEDORA_TAG + FC_TEST_EXEC: meson-install-static + needs: + - fedora:rawhide@container-prep + - build-meson static libxml2 ####################################### # # diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template index 8fd8052..34240c2 100644 --- a/.gitlab-ci/ci.template +++ b/.gitlab-ci/ci.template @@ -281,6 +281,7 @@ check-ci-script: - build*/fontconfig*/_build - build*/meson-logs/* - build*/meson-dist/* + - prefix* .upload: rules: @@ -330,6 +331,19 @@ build-{{build.name}}: # # ####################################### +.test_hook@template: + script: + - export PREFIX="$(echo $(pwd)/prefix-*)" + - | + if [ -n "$FC_TEST_EXEC" -a -f ".gitlab-ci/test-${FC_TEST_EXEC}.sh" ]; then + sh ".gitlab-ci/test-${FC_TEST_EXEC}.sh" + else + echo "*** No test script found" + exit 1 + fi + variables: + FC_TEST_EXEC: "" + clang-format: stage: test extends: @@ -351,13 +365,18 @@ clang-format: {{test.name}}: stage: test extends: + {% if 'parent' in test %} + - .test_hook@template + {% else %} - .build@template + {% endif %} - .fdo.distribution-image@fedora - .fc_artifacts variables: FC_DISTRO_NAME: fedora FDO_DISTRIBUTION_VERSION: rawhide FDO_DISTRIBUTION_TAG: $FEDORA_TAG + FC_TEST_EXEC: {{test.name}} {# Where we have extra_variables defined, add them to the list #} {% if test.variables is defined %} {% for key, value in test.variables.items() %} @@ -366,6 +385,9 @@ clang-format: {% endif %} needs: - fedora:rawhide@container-prep + {% if 'parent' in test %} + - build-{{test.parent}} + {% endif %} {% endfor %} ####################################### diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml index 3d82cd9..15f37bc 100644 --- a/.gitlab-ci/config.yml +++ b/.gitlab-ci/config.yml @@ -1,4 +1,4 @@ -.default_tag: &default_tag "2025-04-23.1" +.default_tag: &default_tag "2025-04-30.1" build_patterns: - name: "autotools shared expat" @@ -59,6 +59,10 @@ test_patterns: FC_BUILDSYS: meson FC_BUILD_TYPE: static FC_BUILD_SUBPROJECT: 1 + - name: "meson-install-shared" + parent: "meson shared libxml2" + - name: "meson-install-static" + parent: "meson static libxml2" distributions: - name: fedora diff --git a/.gitlab-ci/test-meson-install-shared.sh b/.gitlab-ci/test-meson-install-shared.sh new file mode 100644 index 0000000..c42bd19 --- /dev/null +++ b/.gitlab-ci/test-meson-install-shared.sh @@ -0,0 +1,23 @@ +#! /bin/bash + +set -e + +ret=0 +r=0 +echo -n "*** libfontconfig.so installation check: " 1>&2 +ret=$(find $PREFIX -name libfontconfig.so | wc -l) +if [ $ret -eq 0 ]; then + echo "NG - libfontconfig.so not installed." 1>&2 + r=1 +else + echo "OK" 1>&2 +fi +echo -n "*** libfontconfig.a installation check: " 1>&2 +ret=$(find $PREFIX -name libfontconfig.a | wc -l) +if [ $ret -ne 0 ]; then + echo "NG - libfontconfig.a installed." 1>&2 + r=1 +else + echo "OK" 1>&2 +fi +exit $r diff --git a/.gitlab-ci/test-meson-install-static.sh b/.gitlab-ci/test-meson-install-static.sh new file mode 100644 index 0000000..9298776 --- /dev/null +++ b/.gitlab-ci/test-meson-install-static.sh @@ -0,0 +1,23 @@ +#! /bin/bash + +set -e + +ret=0 +r=0 +echo -n "*** libfontconfig.so installation check: " 1>&2 +ret=$(find $PREFIX -name libfontconfig.so | wc -l) +if [ $ret -ne 0 ]; then + echo "NG - libfontconfig.so installed." 1>&2 + r=1 +else + echo "OK" 1>&2 +fi +echo -n "*** libfontconfig.a installation check: " 1>&2 +ret=$(find $PREFIX -name libfontconfig.a | wc -l) +if [ $ret -eq 0 ]; then + echo "NG - libfontconfig.a not installed." 1>&2 + r=1 +else + echo "OK" 1>&2 +fi +exit $r commit dcc2312f10ecccaeeee9dcce10c8a445b548b366 Author: Akira TAGOH <akira@xxxxxxxxx> Date: Tue Apr 29 00:11:32 2025 +0900 ci: Add -O option to the build script for convenience diff --git a/.gitlab-ci/build.sh b/.gitlab-ci/build.sh index 2b38f6f..0cf6ae9 100755 --- a/.gitlab-ci/build.sh +++ b/.gitlab-ci/build.sh @@ -24,6 +24,7 @@ buildsys="meson" type="shared" arch="" buildopt=() +optimization="" SRCDIR=$MyPWD export MAKE=${MAKE:-make} export BUILD_ID=${BUILD_ID:-fontconfig-$$} @@ -43,7 +44,7 @@ if [ "x$FC_DISTRO_NAME" = "x" ]; then sleep 3 fi -while getopts a:cCe:d:hINs:St:X: OPT +while getopts a:cCe:d:hINO:s:St:X: OPT do case $OPT in 'a') arch=$OPTARG ;; @@ -53,6 +54,7 @@ do 'd') disable+=($OPTARG) ;; 'I') enable_install=0 ;; 'N') clean_build=0 ;; + 'O') optimization=$OPTARG ;; 's') buildsys=$OPTARG ;; 'S') subproject=1 ;; 't') type=$OPTARG ;; @@ -190,6 +192,9 @@ elif [ x"$buildsys" == "xmeson" ]; then subprojectname="fontconfig:" fi TASK= + if [ -n "$optimization" ]; then + buildopt+=(--optimization=$optimization) + fi for i in "${disable[@]}"; do buildopt+=(-D${subprojectname}$i=disabled) done commit 0c6596b999d0fdc5195cff5a82f246f930d7f9b6 Author: Akira TAGOH <akira@xxxxxxxxx> Date: Tue Apr 29 00:09:51 2025 +0900 ci: quote pip's requirement specifier in the build script diff --git a/.gitlab-ci/build.sh b/.gitlab-ci/build.sh index 54ec7aa..2b38f6f 100755 --- a/.gitlab-ci/build.sh +++ b/.gitlab-ci/build.sh @@ -147,7 +147,7 @@ if [ x"$buildsys" == "xautotools" ]; then fi elif [ x"$buildsys" == "xmeson" ]; then TASK="pip install" - pip install meson>=1.6.1 + pip install "meson>=1.6.1" # tomli not required for Python >= 3.11 pip install tomli pip install pytest pytest-tap requests