[Fontconfig] fontconfig: Branch 'main' - 2 commits
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Dec 6 10:43:13 UTC 2023
.gitlab-ci.yml | 417 +++++++++++++++++++++++++++---------------
.gitlab-ci/build.sh | 24 +-
.gitlab-ci/ci.template | 147 ++++++++++++++
.gitlab-ci/config.yml | 78 ++++++-
.gitlab-ci/freebsd-cross.sh | 4
.gitlab-ci/freebsd-install.sh | 3
6 files changed, 499 insertions(+), 174 deletions(-)
New commits:
commit 51160281e3c8eec793099ad5d5f0d1ed762d8d9b
Author: Akira TAGOH <akira at tagoh.org>
Date: Wed Dec 6 19:21:38 2023 +0900
CI: static build only for rawhide
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4899faf..c6434f3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -41,8 +41,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: '2023-12-05.1-7b7a4d882550'
- FREEBSD_TAG: '2023-12-05.1-9e4cd5a85377'
+ FEDORA_TAG: '2023-12-05.1-7c59f403cca5'
+ FREEBSD_TAG: '2023-12-05.1-b3f6fd9ee634'
FEDORA_EXEC: 'bash .gitlab-ci/fedora-install.sh'
FREEBSD_EXEC: 'bash .gitlab-ci/freebsd-install.sh'
@@ -372,7 +372,7 @@ t_fedora:rawhide:autotools shared libxml2:
- 'fedora:rawhide at container-prep'
-t_fedora:rawhide:autotools static expat:
+t_fedora:rawhide:meson shared expat:
extends:
- .build at template
- .fdo.distribution-image at fedora
@@ -381,14 +381,14 @@ t_fedora:rawhide:autotools static expat:
FC_DISTRO_NAME: fedora
FDO_DISTRIBUTION_VERSION: 'rawhide'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: autotools
- FC_BUILD_TYPE: static
+ FC_BUILDSYS: meson
+ FC_BUILD_TYPE: shared
FC_XML_BACKEND: expat
needs:
- 'fedora:rawhide at container-prep'
-t_fedora:rawhide:autotools static libxml2:
+t_fedora:rawhide:autotools static expat:
extends:
- .build at template
- .fdo.distribution-image at fedora
@@ -399,12 +399,12 @@ t_fedora:rawhide:autotools static libxml2:
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
FC_BUILDSYS: autotools
FC_BUILD_TYPE: static
- FC_XML_BACKEND: libxml2
+ FC_XML_BACKEND: expat
needs:
- 'fedora:rawhide at container-prep'
-t_fedora:rawhide:mingw autotools static libxml2:
+t_fedora:rawhide:autotools static libxml2:
extends:
- .build at template
- .fdo.distribution-image at fedora
@@ -416,13 +416,11 @@ t_fedora:rawhide:mingw autotools static libxml2:
FC_BUILDSYS: autotools
FC_BUILD_TYPE: static
FC_XML_BACKEND: libxml2
- FC_BUILD_PLATFORM: mingw
- FC_BUILD_ARCH: x86_64-mingw32
needs:
- 'fedora:rawhide at container-prep'
-t_fedora:rawhide:meson shared expat:
+t_fedora:rawhide:meson static expat:
extends:
- .build at template
- .fdo.distribution-image at fedora
@@ -432,13 +430,13 @@ t_fedora:rawhide:meson shared expat:
FDO_DISTRIBUTION_VERSION: 'rawhide'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
FC_BUILDSYS: meson
- FC_BUILD_TYPE: shared
+ FC_BUILD_TYPE: static
FC_XML_BACKEND: expat
needs:
- 'fedora:rawhide at container-prep'
-t_fedora:rawhide:meson static expat:
+t_fedora:rawhide:mingw autotools static libxml2:
extends:
- .build at template
- .fdo.distribution-image at fedora
@@ -447,9 +445,11 @@ t_fedora:rawhide:meson static expat:
FC_DISTRO_NAME: fedora
FDO_DISTRIBUTION_VERSION: 'rawhide'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: meson
+ FC_BUILDSYS: autotools
FC_BUILD_TYPE: static
- FC_XML_BACKEND: expat
+ FC_XML_BACKEND: libxml2
+ FC_BUILD_PLATFORM: mingw
+ FC_BUILD_ARCH: x86_64-mingw32
needs:
- 'fedora:rawhide at container-prep'
@@ -506,7 +506,7 @@ t_fedora:39:autotools shared libxml2:
- 'fedora:39 at container-prep'
-t_fedora:39:autotools static expat:
+t_fedora:39:meson shared expat:
extends:
- .build at template
- .fdo.distribution-image at fedora
@@ -515,96 +515,21 @@ t_fedora:39:autotools static expat:
FC_DISTRO_NAME: fedora
FDO_DISTRIBUTION_VERSION: '39'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: autotools
- FC_BUILD_TYPE: static
+ FC_BUILDSYS: meson
+ FC_BUILD_TYPE: shared
FC_XML_BACKEND: expat
needs:
- 'fedora:39 at container-prep'
-t_fedora:39:autotools static libxml2:
- extends:
- - .build at template
- - .fdo.distribution-image at fedora
- - .fc_artifacts
- variables:
- FC_DISTRO_NAME: fedora
- FDO_DISTRIBUTION_VERSION: '39'
- FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: autotools
- FC_BUILD_TYPE: static
- FC_XML_BACKEND: libxml2
- needs:
- - 'fedora:39 at container-prep'
-t_fedora:39:mingw autotools static libxml2:
- extends:
- - .build at template
- - .fdo.distribution-image at fedora
- - .fc_artifacts
- variables:
- FC_DISTRO_NAME: fedora
- FDO_DISTRIBUTION_VERSION: '39'
- FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: autotools
- FC_BUILD_TYPE: static
- FC_XML_BACKEND: libxml2
- FC_BUILD_PLATFORM: mingw
- FC_BUILD_ARCH: x86_64-mingw32
- needs:
- - 'fedora:39 at container-prep'
-t_fedora:39:meson shared expat:
- extends:
- - .build at template
- - .fdo.distribution-image at fedora
- - .fc_artifacts
- variables:
- FC_DISTRO_NAME: fedora
- FDO_DISTRIBUTION_VERSION: '39'
- FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: meson
- FC_BUILD_TYPE: shared
- FC_XML_BACKEND: expat
- needs:
- - 'fedora:39 at container-prep'
-t_fedora:39:meson static expat:
- extends:
- - .build at template
- - .fdo.distribution-image at fedora
- - .fc_artifacts
- variables:
- FC_DISTRO_NAME: fedora
- FDO_DISTRIBUTION_VERSION: '39'
- FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: meson
- FC_BUILD_TYPE: static
- FC_XML_BACKEND: expat
- needs:
- - 'fedora:39 at container-prep'
-t_fedora:39:mingw meson static expat:
- extends:
- - .build at template
- - .fdo.distribution-image at fedora
- - .fc_artifacts
- variables:
- FC_DISTRO_NAME: fedora
- FDO_DISTRIBUTION_VERSION: '39'
- FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: meson
- FC_BUILD_TYPE: static
- FC_XML_BACKEND: expat
- FC_BUILD_PLATFORM: mingw
- FC_BUILD_ARCH: linux-mingw-w64-64bit
- FC_BUILD_NO_INSTALL: 1
- needs:
- - 'fedora:39 at container-prep'
t_fedora:38:autotools shared expat:
@@ -640,7 +565,7 @@ t_fedora:38:autotools shared libxml2:
- 'fedora:38 at container-prep'
-t_fedora:38:autotools static expat:
+t_fedora:38:meson shared expat:
extends:
- .build at template
- .fdo.distribution-image at fedora
@@ -649,96 +574,21 @@ t_fedora:38:autotools static expat:
FC_DISTRO_NAME: fedora
FDO_DISTRIBUTION_VERSION: '38'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: autotools
- FC_BUILD_TYPE: static
+ FC_BUILDSYS: meson
+ FC_BUILD_TYPE: shared
FC_XML_BACKEND: expat
needs:
- 'fedora:38 at container-prep'
-t_fedora:38:autotools static libxml2:
- extends:
- - .build at template
- - .fdo.distribution-image at fedora
- - .fc_artifacts
- variables:
- FC_DISTRO_NAME: fedora
- FDO_DISTRIBUTION_VERSION: '38'
- FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: autotools
- FC_BUILD_TYPE: static
- FC_XML_BACKEND: libxml2
- needs:
- - 'fedora:38 at container-prep'
-t_fedora:38:mingw autotools static libxml2:
- extends:
- - .build at template
- - .fdo.distribution-image at fedora
- - .fc_artifacts
- variables:
- FC_DISTRO_NAME: fedora
- FDO_DISTRIBUTION_VERSION: '38'
- FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: autotools
- FC_BUILD_TYPE: static
- FC_XML_BACKEND: libxml2
- FC_BUILD_PLATFORM: mingw
- FC_BUILD_ARCH: x86_64-mingw32
- needs:
- - 'fedora:38 at container-prep'
-t_fedora:38:meson shared expat:
- extends:
- - .build at template
- - .fdo.distribution-image at fedora
- - .fc_artifacts
- variables:
- FC_DISTRO_NAME: fedora
- FDO_DISTRIBUTION_VERSION: '38'
- FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: meson
- FC_BUILD_TYPE: shared
- FC_XML_BACKEND: expat
- needs:
- - 'fedora:38 at container-prep'
-t_fedora:38:meson static expat:
- extends:
- - .build at template
- - .fdo.distribution-image at fedora
- - .fc_artifacts
- variables:
- FC_DISTRO_NAME: fedora
- FDO_DISTRIBUTION_VERSION: '38'
- FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: meson
- FC_BUILD_TYPE: static
- FC_XML_BACKEND: expat
- needs:
- - 'fedora:38 at container-prep'
-t_fedora:38:mingw meson static expat:
- extends:
- - .build at template
- - .fdo.distribution-image at fedora
- - .fc_artifacts
- variables:
- FC_DISTRO_NAME: fedora
- FDO_DISTRIBUTION_VERSION: '38'
- FDO_DISTRIBUTION_TAG: $FEDORA_TAG
- FC_BUILDSYS: meson
- FC_BUILD_TYPE: static
- FC_XML_BACKEND: expat
- FC_BUILD_PLATFORM: mingw
- FC_BUILD_ARCH: linux-mingw-w64-64bit
- FC_BUILD_NO_INSTALL: 1
- needs:
- - 'fedora:38 at container-prep'
t_freebsd:14.0:autotools shared expat:
diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template
index c7fd321..3a1f662 100644
--- a/.gitlab-ci/ci.template
+++ b/.gitlab-ci/ci.template
@@ -283,6 +283,7 @@ check-ci-script:
{% for version in distro.versions %}
{% for build in distro.builds %}
+{% if not 'build_only' in build or build.build_only == version %}
t_{{distro.name}}:{{version}}:{{build.name}}:
extends:
{% if distro.qemu_based %}
@@ -304,6 +305,7 @@ t_{{distro.name}}:{{version}}:{{build.name}}:
{% endif %}
needs:
- '{{distro.name}}:{{version}}@container-prep'
+{% endif %}
{% endfor %}
{% endfor %}
diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml
index 21ee147..d3547f0 100644
--- a/.gitlab-ci/config.yml
+++ b/.gitlab-ci/config.yml
@@ -21,34 +21,39 @@ distributions:
FC_BUILD_TYPE: shared
FC_XML_BACKEND: libxml2
FC_BUILD_DISTCHECK: 1
+ - name: "meson shared expat"
+ variables:
+ FC_BUILDSYS: meson
+ FC_BUILD_TYPE: shared
+ FC_XML_BACKEND: expat
- name: "autotools static expat"
+ build_only: "rawhide"
variables:
FC_BUILDSYS: autotools
FC_BUILD_TYPE: static
FC_XML_BACKEND: expat
- name: "autotools static libxml2"
+ build_only: "rawhide"
variables:
FC_BUILDSYS: autotools
FC_BUILD_TYPE: static
FC_XML_BACKEND: libxml2
+ - name: "meson static expat"
+ build_only: "rawhide"
+ variables:
+ FC_BUILDSYS: meson
+ FC_BUILD_TYPE: static
+ FC_XML_BACKEND: expat
- name: "mingw autotools static libxml2"
+ build_only: "rawhide"
variables:
FC_BUILDSYS: autotools
FC_BUILD_TYPE: static
FC_XML_BACKEND: libxml2
FC_BUILD_PLATFORM: mingw
FC_BUILD_ARCH: x86_64-mingw32
- - name: "meson shared expat"
- variables:
- FC_BUILDSYS: meson
- FC_BUILD_TYPE: shared
- FC_XML_BACKEND: expat
- - name: "meson static expat"
- variables:
- FC_BUILDSYS: meson
- FC_BUILD_TYPE: static
- FC_XML_BACKEND: expat
- name: "mingw meson static expat"
+ build_only: "rawhide"
variables:
FC_BUILDSYS: meson
FC_BUILD_TYPE: static
commit 966ab23a99b8f39631c59464c045c6d406145d5b
Author: Akira TAGOH <akira at tagoh.org>
Date: Tue Dec 5 14:39:00 2023 +0900
CI: Update
* Add FreeBSD
* Add some sanity checks
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e66d15c..4899faf 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -17,14 +17,20 @@ include:
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/fedora.yml'
+ # Freebsd container builder template
+ - project: 'freedesktop/ci-templates'
+ ref: *template_sha
+ file: '/templates/freebsd.yml'
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/ci-fairy.yml'
- local: '.gitlab-ci/other.yml'
stages:
+ - sanity check
- prep
- test
+ - deploy
- container_clean
variables:
@@ -35,9 +41,45 @@ 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: '2023-12-05.0-e56dbdc02823'
+ FEDORA_TAG: '2023-12-05.1-7b7a4d882550'
+ FREEBSD_TAG: '2023-12-05.1-9e4cd5a85377'
+
+ FEDORA_EXEC: 'bash .gitlab-ci/fedora-install.sh'
+ FREEBSD_EXEC: 'bash .gitlab-ci/freebsd-install.sh'
+
+#######################################
+# #
+# sanity check #
+# #
+#######################################
- FEDORA_EXEC: 'bash .gitlab-ci/fedora-install.sh'
+fail-if-fork-is-not-public:
+ stage: sanity check
+ script:
+ - |
+ if [ $CI_PROJECT_VISIBILITY != "public" ]; then
+ echo "*************************************************************************************"
+ echo "Project visibility must be set to 'public'."
+ echo "Change this in $CI_PROJECT_URL/edit under 'Visibility, project features, permissions'"
+ echo "*************************************************************************************"
+ exit 1
+ fi
+ except:
+ - main at fontconfig/fontconfig
+
+check-ci-script:
+ extends:
+ - .fdo.ci-fairy
+ stage: sanity check
+ script:
+ - ci-fairy generate-template --verify && exit 0 || true
+ - >
+ printf "%s\n" \
+ "Committed gitlab-ci.yml differs from generated gitlab-ci.yml." \
+ "To change the gitlab CI, edit .gitlab-ci/ci.template and/or .gitlab-ci/config.yml" \
+ " and run ci-fairy generate-template. For details, see " \
+ "https://freedesktop.pages.freedesktop.org/ci-templates/ci-fairy.html#templating-gitlab-ci-yml"
+ - exit 1
#######################################
# #
@@ -78,6 +120,30 @@ fedora:38 at container-prep:
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC
+freebsd:14.0 at container-prep:
+ extends: .fdo.qemu-build at freebsd
+ tags:
+ - kvm
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '14.0'
+ FDO_DISTRIBUTION_PACKAGES: 'gcc autoconf automake libtool gettext gperf expat libxml2 freetype2 json-c git ninja wget python3 py39-pip pkgconf gmake'
+ FDO_DISTRIBUTION_TAG: $FREEBSD_TAG
+ FDO_DISTRIBUTION_EXEC: $FREEBSD_EXEC
+
+freebsd:13.2 at container-prep:
+ extends: .fdo.qemu-build at freebsd
+ tags:
+ - kvm
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '13.2'
+ FDO_DISTRIBUTION_PACKAGES: 'gcc autoconf automake libtool gettext gperf expat libxml2 freetype2 json-c git ninja wget python3 py39-pip pkgconf gmake'
+ FDO_DISTRIBUTION_TAG: $FREEBSD_TAG
+ FDO_DISTRIBUTION_EXEC: $FREEBSD_EXEC
+
#######################################
# #
# container clean stage #
@@ -138,6 +204,24 @@ fedora:38 at container-clean:
FDO_DISTRIBUTION_VERSION: '38'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+freebsd:14.0 at container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/freebsd/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '14.0'
+ FDO_DISTRIBUTION_TAG: $FREEBSD_TAG
+
+freebsd:13.2 at container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/freebsd/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '13.2'
+ FDO_DISTRIBUTION_TAG: $FREEBSD_TAG
+
#######################################
# #
@@ -145,9 +229,68 @@ fedora:38 at container-clean:
# #
#######################################
+.check_tainted: &check_tainted |
+ # make sure the kernel is not tainted
+ if [[ "$(ssh localhost -p 5555 cat /proc/sys/kernel/tainted)" -gt 0 ]];
+ then
+ echo tainted kernel ;
+ exit 1 ;
+ fi
+
+.build-in-qemu at template:
+ tags:
+ - kvm
+ script:
+ - /app/vmctl start || (echo "Error - Failed to start the VM." && exit 1)
+
+ - *check_tainted
+
+ - 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"
+ - |
+ buildopt=()
+ for bo in $FC_BUILD_ENABLED; do
+ buildopt+=(-e $bo)
+ done
+ for bo in $FC_BUILD_DISABLED; do
+ buildopt+=(-d $bo)
+ done
+ [ -n "$FC_BUILD_ARCH" ] && buildopt+=(-a $FC_BUILD_ARCH)
+ [ $FC_BUILD_DISTCHECK -eq 1 ] && buildopt+=(-c)
+ [ $FC_BUILD_NO_INSTALL -eq 1 ] && buildopt+=(-I)
+ [ $FC_BUILD_NO_CHECK -eq 1 ] && buildopt+=(-C)
+ buildopt+=(-s $FC_BUILDSYS)
+ buildopt+=(-t $FC_BUILD_TYPE)
+ buildopt+=(-X $FC_XML_BACKEND)
+ export buildopt
+ - "scp -r $(pwd) vm:"
+ - echo "CI_JOB_ID=\"$CI_JOB_ID\"" > fcenv
+ - echo "CI_JOB_NAME=\"$CI_JOB_NAME\"" >> fcenv
+ - echo "BUILD_ID=\"$BUILD_ID\"" >> fcenv
+ - echo "MAKEFLAGS=\"$MAKEFLAGS\"" >> fcenv
+ - echo "MAKE=\"$MAKE\"" >> fcenv
+ - "scp fcenv vm:~/$CI_PROJECT_NAME/.gitlab-ci/fcenv"
+ - /app/vmctl exec "cd $CI_PROJECT_NAME ; bash .gitlab-ci/build.sh ${buildopt[@]}" && touch .success || true
+ - scp -r vm:$CI_PROJECT_NAME/build $BUILDDIR
+
+ - *check_tainted
+
+ - /app/vmctl stop
+ - if [[ ! -e .success ]];
+ then
+ exit 1 ;
+ fi
+ variables:
+ FC_BUILDSYS: autotools
+ FC_XML_BACKEND: expat
+ FC_BUILD_TYPE: both
+ FC_BUILD_DISTCHECK: 0
+ FC_BUILD_NO_INSTALL: 0
+ FC_BUILD_NO_CHECK: 0
+
.build at template:
- before_script:
- - pip install meson
script:
- export BUILD_ID="fontconfig-$CI_JOB_NAME_$CI_COMMIT_SHA-$CI_JOB_ID"
- export PREFIX="$(pwd)/prefix-$BUILD_ID"
@@ -164,16 +307,18 @@ fedora:38 at container-clean:
[ -n "$FC_BUILD_ARCH" ] && buildopt+=(-a $FC_BUILD_ARCH)
[ $FC_BUILD_DISTCHECK -eq 1 ] && buildopt+=(-c)
[ $FC_BUILD_NO_INSTALL -eq 1 ] && buildopt+=(-I)
+ [ $FC_BUILD_NO_CHECK -eq 1 ] && buildopt+=(-C)
buildopt+=(-s $FC_BUILDSYS)
buildopt+=(-t $FC_BUILD_TYPE)
buildopt+=(-X $FC_XML_BACKEND)
- sh .gitlab-ci/build.sh ${buildopt[*]}
+ sh .gitlab-ci/build.sh ${buildopt[@]}
variables:
FC_BUILDSYS: autotools
FC_XML_BACKEND: expat
FC_BUILD_TYPE: both
FC_BUILD_DISTCHECK: 0
FC_BUILD_NO_INSTALL: 0
+ FC_BUILD_NO_CHECK: 0
.fc_artifacts:
artifacts:
@@ -181,9 +326,11 @@ fedora:38 at container-clean:
when: always
expire_in: 5 days
paths:
- - fc-build.log
- - build-*/fontconfig-*.tar.*
- - build-*/fontconfig*/_build
+ - build*/fc-build.log
+ - build*/fontconfig-*.tar.*
+ - build*/test/*log
+ - build*/fontconfig*/_build
+ - build*/meson-logs/*
#######################################
# #
@@ -594,3 +741,127 @@ t_fedora:38:mingw meson static expat:
- 'fedora:38 at container-prep'
+t_freebsd:14.0:autotools shared expat:
+ extends:
+ - .build-in-qemu at template
+ - .fdo.distribution-image at freebsd
+ - .fc_artifacts
+ variables:
+ FC_DISTRO_NAME: freebsd
+ FDO_DISTRIBUTION_VERSION: '14.0'
+ FDO_DISTRIBUTION_TAG: $FREEBSD_TAG
+ FC_BUILDSYS: autotools
+ FC_BUILD_TYPE: shared
+ FC_XML_BACKEND: expat
+ MAKE: gmake
+ FC_BUILD_NO_CHECK: 1
+ needs:
+ - 'freebsd:14.0 at container-prep'
+
+
+t_freebsd:14.0:autotools shared libxml2:
+ extends:
+ - .build-in-qemu at template
+ - .fdo.distribution-image at freebsd
+ - .fc_artifacts
+ variables:
+ FC_DISTRO_NAME: freebsd
+ FDO_DISTRIBUTION_VERSION: '14.0'
+ FDO_DISTRIBUTION_TAG: $FREEBSD_TAG
+ FC_BUILDSYS: autotools
+ FC_BUILD_TYPE: shared
+ FC_XML_BACKEND: libxml2
+ MAKE: gmake
+ FC_BUILD_NO_CHECK: 1
+ needs:
+ - 'freebsd:14.0 at container-prep'
+
+
+t_freebsd:14.0:meson shared expat:
+ extends:
+ - .build-in-qemu at template
+ - .fdo.distribution-image at freebsd
+ - .fc_artifacts
+ variables:
+ FC_DISTRO_NAME: freebsd
+ FDO_DISTRIBUTION_VERSION: '14.0'
+ FDO_DISTRIBUTION_TAG: $FREEBSD_TAG
+ FC_BUILDSYS: meson
+ FC_BUILD_TYPE: shared
+ FC_XML_BACKEND: expat
+ FC_BUILD_NO_CHECK: 1
+ needs:
+ - 'freebsd:14.0 at container-prep'
+
+
+t_freebsd:13.2:autotools shared expat:
+ extends:
+ - .build-in-qemu at template
+ - .fdo.distribution-image at freebsd
+ - .fc_artifacts
+ variables:
+ FC_DISTRO_NAME: freebsd
+ FDO_DISTRIBUTION_VERSION: '13.2'
+ FDO_DISTRIBUTION_TAG: $FREEBSD_TAG
+ FC_BUILDSYS: autotools
+ FC_BUILD_TYPE: shared
+ FC_XML_BACKEND: expat
+ MAKE: gmake
+ FC_BUILD_NO_CHECK: 1
+ needs:
+ - 'freebsd:13.2 at container-prep'
+
+
+t_freebsd:13.2:autotools shared libxml2:
+ extends:
+ - .build-in-qemu at template
+ - .fdo.distribution-image at freebsd
+ - .fc_artifacts
+ variables:
+ FC_DISTRO_NAME: freebsd
+ FDO_DISTRIBUTION_VERSION: '13.2'
+ FDO_DISTRIBUTION_TAG: $FREEBSD_TAG
+ FC_BUILDSYS: autotools
+ FC_BUILD_TYPE: shared
+ FC_XML_BACKEND: libxml2
+ MAKE: gmake
+ FC_BUILD_NO_CHECK: 1
+ needs:
+ - 'freebsd:13.2 at container-prep'
+
+
+t_freebsd:13.2:meson shared expat:
+ extends:
+ - .build-in-qemu at template
+ - .fdo.distribution-image at freebsd
+ - .fc_artifacts
+ variables:
+ FC_DISTRO_NAME: freebsd
+ FDO_DISTRIBUTION_VERSION: '13.2'
+ FDO_DISTRIBUTION_TAG: $FREEBSD_TAG
+ FC_BUILDSYS: meson
+ FC_BUILD_TYPE: shared
+ FC_XML_BACKEND: expat
+ FC_BUILD_NO_CHECK: 1
+ needs:
+ - 'freebsd:13.2 at container-prep'
+
+
+#######################################
+# #
+# deploy stage #
+# #
+#######################################
+
+check-merge-request:
+ extends:
+ - .fdo.ci-fairy
+ stage: deploy
+ script:
+ - ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml
+ artifacts:
+ when: on_failure
+ reports:
+ junit: results.xml
+ allow_failure: true
+
diff --git a/.gitlab-ci/build.sh b/.gitlab-ci/build.sh
index 7c3c47b..39900a4 100755
--- a/.gitlab-ci/build.sh
+++ b/.gitlab-ci/build.sh
@@ -3,29 +3,36 @@
set -ex
set -o pipefail
+cidir=$(dirname $0)
+[ -f ${cidir}/fcenv ] && . ${cidir}/fcenv
+
case "$OSTYPE" in
msys) MyPWD=$(pwd -W) ;;
+ *BSD) PATH=$PATH:/usr/local/bin ;&
*) MyPWD=$(pwd) ;;
esac
enable=()
disable=()
distcheck=0
enable_install=1
+disable_check=0
cross=0
buildsys="autotools"
type="both"
arch=""
buildopt=()
SRCDIR=$MyPWD
+export MAKE=${MAKE:-make}
export BUILD_ID=${BUILD_ID:-fontconfig-$$}
export PREFIX=${PREFIX:-$MyPWD/prefix}
export BUILDDIR=${BUILDDIR:-$MyPWD/build}
-while getopts a:ce:d:hIs:t:X: OPT
+while getopts a:cCe:d:hIs:t:X: OPT
do
case $OPT in
'a') arch=$OPTARG ;;
'c') distcheck=1 ;;
+ 'C') disable_check=1 ;;
'e') enable+=($OPTARG) ;;
'd') disable+=($OPTARG) ;;
'I') enable_install=0 ;;
@@ -87,15 +94,18 @@ if [ x"$buildsys" == "xautotools" ]; then
mkdir "$BUILDDIR" "$PREFIX"
cd "$BUILDDIR"
../autogen.sh --prefix="$PREFIX" ${buildopt[*]} 2>&1 | tee /tmp/fc-build.log || r=$?
- make V=1 2>&1 | tee -a /tmp/fc-build.log || r=$?
- make check V=1 2>&1 | tee -a /tmp/fc-build.log || r=$?
+ $MAKE V=1 2>&1 | tee -a /tmp/fc-build.log || r=$?
+ if [ $disable_check -eq 0 ]; then
+ $MAKE check V=1 2>&1 | tee -a /tmp/fc-build.log || r=$?
+ fi
if [ $enable_install -eq 1 ]; then
- make install V=1 2>&1 | tee -a /tmp/fc-build.log || r=$?
+ $MAKE install V=1 2>&1 | tee -a /tmp/fc-build.log || r=$?
fi
if [ $distcheck -eq 1 ]; then
- make distcheck V=1 2>&1 | tee -a /tmp/fc-build.log || r=$?
+ $MAKE distcheck V=1 2>&1 | tee -a /tmp/fc-build.log || r=$?
fi
elif [ x"$buildsys" == "xmeson" ]; then
+ pip install meson
for i in "${enable[@]}"; do
buildopt+=(-D$i=true)
done
@@ -120,7 +130,9 @@ elif [ x"$buildsys" == "xmeson" ]; then
buildopt+=(--default-library=$type)
meson setup --prefix="$PREFIX" ${buildopt[*]} "$BUILDDIR" 2>&1 | tee /tmp/fc-build.log || r=$?
meson compile -v -C "$BUILDDIR" 2>&1 | tee -a /tmp/fc-build.log || r=$?
- meson test -v -C "$BUILDDIR" 2>&1 | tee -a /tmp/fc-build.log || r=$?
+ if [ $disable_check -eq 0 ]; then
+ meson test -v -C "$BUILDDIR" 2>&1 | tee -a /tmp/fc-build.log || r=$?
+ fi
if [ $enable_install -eq 1 ]; then
meson install -C "$BUILDDIR" 2>&1 | tee -a /tmp/fc-build.log || r=$?
fi
diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template
index 3612421..c7fd321 100644
--- a/.gitlab-ci/ci.template
+++ b/.gitlab-ci/ci.template
@@ -27,8 +27,10 @@ include:
- local: '.gitlab-ci/other.yml'
stages:
+ - sanity check
- prep
- test
+ - deploy
- container_clean
variables:
@@ -40,16 +42,50 @@ variables:
# Note: these tags have no meaning and are not tied to a particular
# fontconfig version
{% for distro in distributions %}
- {{"%-13s"| format(distro.name.upper() + '_TAG:')}}'{{distro.tag}}-{{
+ {{"%-15s"| format(distro.name.upper() + '_TAG:')}}'{{distro.tag}}-{{
(ci_fairy.hashfiles('.gitlab-ci/config.yml',
'.gitlab-ci/' + distro.name + '-install.sh'))[0:12]
}}'
{% endfor %}
{% for distro in distributions %}
- {{"%-13s"| format(distro.name.upper() + '_EXEC:')}}'bash .gitlab-ci/{{distro.name}}-install.sh'
+ {{"%-15s"| format(distro.name.upper() + '_EXEC:')}}'bash .gitlab-ci/{{distro.name}}-install.sh'
{% endfor %}
+#######################################
+# #
+# sanity check #
+# #
+#######################################
+
+fail-if-fork-is-not-public:
+ stage: sanity check
+ script:
+ - |
+ if [ $CI_PROJECT_VISIBILITY != "public" ]; then
+ echo "*************************************************************************************"
+ echo "Project visibility must be set to 'public'."
+ echo "Change this in $CI_PROJECT_URL/edit under 'Visibility, project features, permissions'"
+ echo "*************************************************************************************"
+ exit 1
+ fi
+ except:
+ - main at fontconfig/fontconfig
+
+check-ci-script:
+ extends:
+ - .fdo.ci-fairy
+ stage: sanity check
+ script:
+ - ci-fairy generate-template --verify && exit 0 || true
+ - >
+ printf "%s\n" \
+ "Committed gitlab-ci.yml differs from generated gitlab-ci.yml." \
+ "To change the gitlab CI, edit .gitlab-ci/ci.template and/or .gitlab-ci/config.yml" \
+ " and run ci-fairy generate-template. For details, see " \
+ "https://freedesktop.pages.freedesktop.org/ci-templates/ci-fairy.html#templating-gitlab-ci-yml"
+ - exit 1
+
#######################################
# #
# containers stage #
@@ -62,7 +98,15 @@ variables:
{% for version in distro.versions %}
{{distro.name}}:{{version}}@container-prep:
+{% if distro.qemu_based %}
+ extends: .fdo.qemu-build@{{distro.name}}
+{% else %}
extends: .fdo.container-build@{{distro.name}}
+{% endif %}
+{% if distro.qemu_based %}
+ tags:
+ - kvm
+{% endif %}
stage: prep
variables:
GIT_STRATEGY: none
@@ -126,9 +170,68 @@ variables:
# #
#######################################
+.check_tainted: &check_tainted |
+ # make sure the kernel is not tainted
+ if [[ "$(ssh localhost -p 5555 cat /proc/sys/kernel/tainted)" -gt 0 ]];
+ then
+ echo tainted kernel ;
+ exit 1 ;
+ fi
+
+.build-in-qemu at template:
+ tags:
+ - kvm
+ script:
+ - /app/vmctl start || (echo "Error - Failed to start the VM." && exit 1)
+
+ - *check_tainted
+
+ - 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"
+ - |
+ buildopt=()
+ for bo in $FC_BUILD_ENABLED; do
+ buildopt+=(-e $bo)
+ done
+ for bo in $FC_BUILD_DISABLED; do
+ buildopt+=(-d $bo)
+ done
+ [ -n "$FC_BUILD_ARCH" ] && buildopt+=(-a $FC_BUILD_ARCH)
+ [ $FC_BUILD_DISTCHECK -eq 1 ] && buildopt+=(-c)
+ [ $FC_BUILD_NO_INSTALL -eq 1 ] && buildopt+=(-I)
+ [ $FC_BUILD_NO_CHECK -eq 1 ] && buildopt+=(-C)
+ buildopt+=(-s $FC_BUILDSYS)
+ buildopt+=(-t $FC_BUILD_TYPE)
+ buildopt+=(-X $FC_XML_BACKEND)
+ export buildopt
+ - "scp -r $(pwd) vm:"
+ - echo "CI_JOB_ID=\"$CI_JOB_ID\"" > fcenv
+ - echo "CI_JOB_NAME=\"$CI_JOB_NAME\"" >> fcenv
+ - echo "BUILD_ID=\"$BUILD_ID\"" >> fcenv
+ - echo "MAKEFLAGS=\"$MAKEFLAGS\"" >> fcenv
+ - echo "MAKE=\"$MAKE\"" >> fcenv
+ - "scp fcenv vm:~/$CI_PROJECT_NAME/.gitlab-ci/fcenv"
+ - /app/vmctl exec "cd $CI_PROJECT_NAME ; bash .gitlab-ci/build.sh ${buildopt[@]}" && touch .success || true
+ - scp -r vm:$CI_PROJECT_NAME/build $BUILDDIR
+
+ - *check_tainted
+
+ - /app/vmctl stop
+ - if [[ ! -e .success ]];
+ then
+ exit 1 ;
+ fi
+ variables:
+ FC_BUILDSYS: autotools
+ FC_XML_BACKEND: expat
+ FC_BUILD_TYPE: both
+ FC_BUILD_DISTCHECK: 0
+ FC_BUILD_NO_INSTALL: 0
+ FC_BUILD_NO_CHECK: 0
+
.build at template:
- before_script:
- - pip install meson
script:
- export BUILD_ID="fontconfig-$CI_JOB_NAME_$CI_COMMIT_SHA-$CI_JOB_ID"
- export PREFIX="$(pwd)/prefix-$BUILD_ID"
@@ -145,16 +248,18 @@ variables:
[ -n "$FC_BUILD_ARCH" ] && buildopt+=(-a $FC_BUILD_ARCH)
[ $FC_BUILD_DISTCHECK -eq 1 ] && buildopt+=(-c)
[ $FC_BUILD_NO_INSTALL -eq 1 ] && buildopt+=(-I)
+ [ $FC_BUILD_NO_CHECK -eq 1 ] && buildopt+=(-C)
buildopt+=(-s $FC_BUILDSYS)
buildopt+=(-t $FC_BUILD_TYPE)
buildopt+=(-X $FC_XML_BACKEND)
- sh .gitlab-ci/build.sh ${buildopt[*]}
+ sh .gitlab-ci/build.sh ${buildopt[@]}
variables:
FC_BUILDSYS: autotools
FC_XML_BACKEND: expat
FC_BUILD_TYPE: both
FC_BUILD_DISTCHECK: 0
FC_BUILD_NO_INSTALL: 0
+ FC_BUILD_NO_CHECK: 0
.fc_artifacts:
artifacts:
@@ -162,9 +267,11 @@ variables:
when: always
expire_in: 5 days
paths:
- - fc-build.log
- - build-*/fontconfig-*.tar.*
- - build-*/fontconfig*/_build
+ - build*/fc-build.log
+ - build*/fontconfig-*.tar.*
+ - build*/test/*log
+ - build*/fontconfig*/_build
+ - build*/meson-logs/*
#######################################
# #
@@ -178,7 +285,11 @@ variables:
t_{{distro.name}}:{{version}}:{{build.name}}:
extends:
+{% if distro.qemu_based %}
+ - .build-in-qemu at template
+{% else %}
- .build at template
+{% endif %}
- .fdo.distribution-image@{{distro.name}}
- .fc_artifacts
variables:
@@ -198,3 +309,21 @@ t_{{distro.name}}:{{version}}:{{build.name}}:
{% endfor %}
{% endfor %}
+#######################################
+# #
+# deploy stage #
+# #
+#######################################
+
+check-merge-request:
+ extends:
+ - .fdo.ci-fairy
+ stage: deploy
+ script:
+ - ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml
+ artifacts:
+ when: on_failure
+ reports:
+ junit: results.xml
+ allow_failure: true
+
diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml
index 968d7e2..21ee147 100644
--- a/.gitlab-ci/config.yml
+++ b/.gitlab-ci/config.yml
@@ -1,9 +1,10 @@
-.default_tag: &default_tag "2023-12-05.0"
+.default_tag: &default_tag "2023-12-05.1"
distributions:
- name: fedora
tag: *default_tag
base_type: fedora
+ qemu_based: false
versions:
- "rawhide"
- "39"
@@ -55,6 +56,34 @@ distributions:
FC_BUILD_PLATFORM: mingw
FC_BUILD_ARCH: linux-mingw-w64-64bit
FC_BUILD_NO_INSTALL: 1
+ - name: freebsd
+ tag: *default_tag
+ base_type: freebsd
+ qemu_based: true
+ versions:
+ - "14.0"
+ - "13.2"
+ builds:
+ - name: "autotools shared expat"
+ variables:
+ FC_BUILDSYS: autotools
+ FC_BUILD_TYPE: shared
+ FC_XML_BACKEND: expat
+ MAKE: gmake
+ FC_BUILD_NO_CHECK: 1 # FIXME: There is GNU-specific parameter issue in touch command.
+ - name: "autotools shared libxml2"
+ variables:
+ FC_BUILDSYS: autotools
+ FC_BUILD_TYPE: shared
+ FC_XML_BACKEND: libxml2
+ MAKE: gmake
+ FC_BUILD_NO_CHECK: 1
+ - name: "meson shared expat"
+ variables:
+ FC_BUILDSYS: meson
+ FC_BUILD_TYPE: shared
+ FC_XML_BACKEND: expat
+ FC_BUILD_NO_CHECK: 1
packages:
fedora:
@@ -83,4 +112,24 @@ packages:
"mingw64-libxml2",
"wine",
]
- use_qemu: false
+ freebsd:
+ needed:
+ [
+ "gcc",
+ "autoconf",
+ "automake",
+ "libtool",
+ "gettext",
+ "gperf",
+ "expat",
+ "libxml2",
+ "freetype2",
+ "json-c",
+ "git",
+ "ninja",
+ "wget",
+ "python3",
+ "py39-pip",
+ "pkgconf",
+ "gmake",
+ ]
diff --git a/.gitlab-ci/freebsd-cross.sh b/.gitlab-ci/freebsd-cross.sh
new file mode 100644
index 0000000..c770d88
--- /dev/null
+++ b/.gitlab-ci/freebsd-cross.sh
@@ -0,0 +1,4 @@
+#! /bin/sh
+
+echo "** Cross build not supported."
+exit 1
diff --git a/.gitlab-ci/freebsd-install.sh b/.gitlab-ci/freebsd-install.sh
new file mode 100644
index 0000000..4a21923
--- /dev/null
+++ b/.gitlab-ci/freebsd-install.sh
@@ -0,0 +1,3 @@
+#! /bin/bash
+
+set -ex
More information about the Fontconfig
mailing list