fontconfig: Branch 'main' - 2 commits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Apr 23 05:52:42 UTC 2025


 .gitlab-ci.yml         |  462 +++++++++++++------------------------------------
 .gitlab-ci/ci.template |  155 +++++++++++-----
 .gitlab-ci/config.yml  |  160 +++++++---------
 .gitlab-ci/other.yml   |    4 
 4 files changed, 304 insertions(+), 477 deletions(-)

New commits:
commit a7957436d80178ae632ad34504d98e5764bceef1
Merge: 9e61da4 e1d9944
Author: Akira TAGOH <akira at tagoh.org>
Date:   Wed Apr 23 05:52:39 2025 +0000

    Merge branch 'ci-cleanup' into 'main'
    
    ci: clean up and add changelog to the release note through changelog API
    
    See merge request fontconfig/fontconfig!391

commit e1d99448cf0bdd1e39d5a6ad2a5dd774299bc60c
Author: Akira TAGOH <akira at tagoh.org>
Date:   Wed Apr 23 11:51:22 2025 +0900

    ci: clean up and add changelog to the release note through changelog API

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index efa0fd8..4fa6385 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -29,8 +29,9 @@ include:
 stages:
   - sanity check
   - prep
-  - style check
+  - build
   - test
+  - distro
   - deploy
   - container_clean
 
@@ -42,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-17.1-a21ccc3b8989'
-  FREEBSD_TAG:   '2025-04-17.1-c694c9922fb9'
+  FEDORA_TAG:    '2025-04-23.1-dd4daa0bc582'
+  FREEBSD_TAG:   '2025-04-23.1-e06fb6df1f3e'
 
   FEDORA_EXEC:   'bash .gitlab-ci/fedora-install.sh'
   FREEBSD_EXEC:  'bash .gitlab-ci/freebsd-install.sh'
@@ -205,30 +206,7 @@ freebsd:14.1 at container-clean:
 
 #######################################
 #                                     #
-#             style check             #
-#                                     #
-#######################################
-
-clang-format:
-  stage: style check
-  extends:
-    - .fdo.distribution-image at fedora
-  variables:
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
-    FDO_DISTRIBUTION_TAG: $FEDORA_TAG
-  needs:
-    - 'fedora:rawhide at container-prep'
-  script:
-    - |
-      commit="${CI_MERGE_REQUEST_TARGET_BRANCH_SHA:-${CI_MERGE_REQUEST_DIFF_BASE_SHA:?}}" || exit
-      echo sh .gitlab-ci/check-style.sh "$commit"
-      sh .gitlab-ci/check-style.sh "$commit"
-  rules:
-    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
-
-#######################################
-#                                     #
-#             build stage             #
+#           build template            #
 #                                     #
 #######################################
 
@@ -354,308 +332,227 @@ clang-format:
 
 #######################################
 #                                     #
-#              test stage             #
+#             build stage             #
 #                                     #
 #######################################
 
-
-t_fedora:rawhide:autotools shared expat:
+build-autotools shared expat:
+  stage: build
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
+    FDO_DISTRIBUTION_VERSION: rawhide
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
     FC_BUILDSYS: autotools
     FC_BUILD_TYPE: shared
     FC_XML_BACKEND: expat
   needs:
-    - 'fedora:rawhide at container-prep'
-
-
-
-t_fedora:rawhide:autotools shared libxml2:
+    - fedora:rawhide at container-prep
+build-autotools shared libxml2:
+  stage: build
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
+    FDO_DISTRIBUTION_VERSION: rawhide
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
     FC_BUILDSYS: autotools
     FC_BUILD_TYPE: shared
     FC_XML_BACKEND: libxml2
-    FC_BUILD_DISTCHECK: 1
   needs:
-    - 'fedora:rawhide at container-prep'
-
-
-
-t_fedora:rawhide:meson shared expat:
-  extends:
-    - .build at template
-    - .fdo.distribution-image at fedora
-    - .fc_artifacts
-  variables:
-    FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
-    FDO_DISTRIBUTION_TAG: $FEDORA_TAG
-    FC_BUILDSYS: meson
-    FC_BUILD_TYPE: shared
-    FC_XML_BACKEND: expat
-  needs:
-    - 'fedora:rawhide at container-prep'
-
-
-
-t_fedora:rawhide:meson shared libxml2:
-  extends:
-    - .build at template
-    - .fdo.distribution-image at fedora
-    - .fc_artifacts
-  variables:
-    FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
-    FDO_DISTRIBUTION_TAG: $FEDORA_TAG
-    FC_BUILDSYS: meson
-    FC_BUILD_TYPE: shared
-    FC_XML_BACKEND: libxml2
-    FC_BUILD_DISTCHECK: 1
-  needs:
-    - 'fedora:rawhide at container-prep'
-
-upload_asset:t_fedora:rawhide:meson shared libxml2:
-  needs:
-    - t_fedora:rawhide:meson shared libxml2
-  extends:
-    - .fdo.distribution-image at fedora
-    - .upload
-  variables:
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
-    FDO_DISTRIBUTION_TAG: $FEDORA_TAG
-
-
-t_fedora:rawhide:subproject_build:
-  extends:
-    - .build at template
-    - .fdo.distribution-image at fedora
-    - .fc_artifacts
-  variables:
-    FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
-    FDO_DISTRIBUTION_TAG: $FEDORA_TAG
-    FC_BUILDSYS: meson
-    FC_BUILD_TYPE: shared
-    FC_XML_BACKEND: libxml2
-    FC_BUILD_SUBPROJECT: 1
-  needs:
-    - 'fedora:rawhide at container-prep'
-
-
-
-t_fedora:rawhide:autotools static expat:
+    - fedora:rawhide at container-prep
+build-autotools static expat:
+  stage: build
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
+    FDO_DISTRIBUTION_VERSION: rawhide
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
     FC_BUILDSYS: autotools
     FC_BUILD_TYPE: static
     FC_XML_BACKEND: expat
   needs:
-    - 'fedora:rawhide at container-prep'
-
-
-
-t_fedora:rawhide:autotools static libxml2:
+    - fedora:rawhide at container-prep
+build-autotools static libxml2:
+  stage: build
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
+    FDO_DISTRIBUTION_VERSION: rawhide
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
     FC_BUILDSYS: autotools
     FC_BUILD_TYPE: static
     FC_XML_BACKEND: libxml2
   needs:
-    - 'fedora:rawhide at container-prep'
-
-
-
-t_fedora:rawhide:meson static expat:
+    - fedora:rawhide at container-prep
+build-meson shared expat:
+  stage: build
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
+    FDO_DISTRIBUTION_VERSION: rawhide
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
     FC_BUILDSYS: meson
-    FC_BUILD_TYPE: static
+    FC_BUILD_TYPE: shared
     FC_XML_BACKEND: expat
   needs:
-    - 'fedora:rawhide at container-prep'
-
-
-
-t_fedora:rawhide:meson static libxml2:
+    - fedora:rawhide at container-prep
+build-meson shared libxml2:
+  stage: build
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
+    FDO_DISTRIBUTION_VERSION: rawhide
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
     FC_BUILDSYS: meson
-    FC_BUILD_TYPE: static
+    FC_BUILD_TYPE: shared
     FC_XML_BACKEND: libxml2
   needs:
-    - 'fedora:rawhide at container-prep'
-
-
-
-t_fedora:rawhide:mingw autotools static libxml2:
+    - fedora:rawhide at container-prep
+build-meson static expat:
+  stage: build
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
+    FDO_DISTRIBUTION_VERSION: rawhide
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
-    FC_BUILDSYS: autotools
+    FC_BUILDSYS: meson
     FC_BUILD_TYPE: static
-    FC_XML_BACKEND: libxml2
-    FC_BUILD_PLATFORM: mingw
-    FC_BUILD_ARCH: x86_64-mingw32
+    FC_XML_BACKEND: expat
   needs:
-    - 'fedora:rawhide at container-prep'
-
-
-
-t_fedora:rawhide:mingw meson static expat:
+    - fedora:rawhide at container-prep
+build-meson static libxml2:
+  stage: build
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
+    FDO_DISTRIBUTION_VERSION: rawhide
     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
+    FC_XML_BACKEND: libxml2
   needs:
-    - 'fedora:rawhide at container-prep'
-
-
-
-t_fedora:rawhide:meson static libxml2 fontations:
+    - fedora:rawhide at container-prep
+build-meson static fontations:
+  stage: build
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
+    FDO_DISTRIBUTION_VERSION: rawhide
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
     FC_BUILDSYS: meson
     FC_BUILD_TYPE: static
-    FC_XML_BACKEND: libxml2
     FC_BUILD_ENABLED: fontations
   needs:
-    - 'fedora:rawhide at container-prep'
-
+    - fedora:rawhide at container-prep
 
+#######################################
+#                                     #
+#                 test                #
+#                                     #
+#######################################
 
-t_fedora:rawhide:android aarch64:
+clang-format:
+  stage: test
   extends:
-    - .build at template
     - .fdo.distribution-image at fedora
-    - .fc_artifacts
   variables:
-    FC_DISTRO_NAME: fedora
     FDO_DISTRIBUTION_VERSION: 'rawhide'
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
-    FC_BUILDSYS: meson
-    FC_BUILD_TYPE: shared
-    FC_XML_BACKEND: expat
-    FC_BUILD_PLATFORM: android
-    FC_BUILD_ARCH: aarch64-linux-android
-    FC_BUILD_NO_INSTALL: 1
-    FC_BUILD_DISABLED: nls
-    FC_BUILD_NO_CHECK: 1
   needs:
     - 'fedora:rawhide at container-prep'
+  script:
+    - |
+      commit="${CI_MERGE_REQUEST_TARGET_BRANCH_SHA:-${CI_MERGE_REQUEST_DIFF_BASE_SHA:?}}" || exit
+      echo sh .gitlab-ci/check-style.sh "$commit"
+      sh .gitlab-ci/check-style.sh "$commit"
+  rules:
+    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
 
-
-
-t_fedora:41:autotools shared expat:
+subproject-build shared:
+  stage: test
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: '41'
+    FDO_DISTRIBUTION_VERSION: rawhide
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
-    FC_BUILDSYS: autotools
+    FC_BUILDSYS: meson
     FC_BUILD_TYPE: shared
-    FC_XML_BACKEND: expat
+    FC_BUILD_SUBPROJECT: 1
   needs:
-    - 'fedora:41 at container-prep'
-
-
-
-t_fedora:41:autotools shared libxml2:
+    - fedora:rawhide at container-prep
+subproject-build static:
+  stage: test
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: '41'
+    FDO_DISTRIBUTION_VERSION: rawhide
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
-    FC_BUILDSYS: autotools
-    FC_BUILD_TYPE: shared
-    FC_XML_BACKEND: libxml2
-    FC_BUILD_DISTCHECK: 1
+    FC_BUILDSYS: meson
+    FC_BUILD_TYPE: static
+    FC_BUILD_SUBPROJECT: 1
   needs:
-    - 'fedora:41 at container-prep'
+    - fedora:rawhide at container-prep
 
+#######################################
+#                                     #
+#            distro stage             #
+#                                     #
+#######################################
 
 
-t_fedora:41:meson shared expat:
+t_fedora:rawhide:standard build:
+  stage: distro
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: '41'
+    FDO_DISTRIBUTION_VERSION: 'rawhide'
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
     FC_BUILDSYS: meson
     FC_BUILD_TYPE: shared
-    FC_XML_BACKEND: expat
+    FC_XML_BACKEND: libxml2
+    FC_BUILD_DISTCHECK: 1
   needs:
-    - 'fedora:41 at container-prep'
-
+    - 'fedora:rawhide at container-prep'
 
 
-t_fedora:41:meson shared libxml2:
+t_fedora:41:standard build:
+  stage: distro
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
@@ -672,52 +569,8 @@ t_fedora:41:meson shared libxml2:
     - 'fedora:41 at container-prep'
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-t_fedora:40:autotools shared expat:
-  extends:
-    - .build at template
-    - .fdo.distribution-image at fedora
-    - .fc_artifacts
-  variables:
-    FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: '40'
-    FDO_DISTRIBUTION_TAG: $FEDORA_TAG
-    FC_BUILDSYS: autotools
-    FC_BUILD_TYPE: shared
-    FC_XML_BACKEND: expat
-  needs:
-    - 'fedora:40 at container-prep'
-
-
-
-t_fedora:40:autotools shared libxml2:
+t_fedora:40:standard build:
+  stage: distro
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
@@ -726,7 +579,7 @@ t_fedora:40:autotools shared libxml2:
     FC_DISTRO_NAME: fedora
     FDO_DISTRIBUTION_VERSION: '40'
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
-    FC_BUILDSYS: autotools
+    FC_BUILDSYS: meson
     FC_BUILD_TYPE: shared
     FC_XML_BACKEND: libxml2
     FC_BUILD_DISTCHECK: 1
@@ -734,126 +587,49 @@ t_fedora:40:autotools shared libxml2:
     - 'fedora:40 at container-prep'
 
 
-
-t_fedora:40:meson shared expat:
+t_fedora:rawhide:MinGW:
+  stage: distro
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: '40'
+    FDO_DISTRIBUTION_VERSION: 'rawhide'
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
     FC_BUILDSYS: meson
-    FC_BUILD_TYPE: shared
-    FC_XML_BACKEND: expat
+    FC_BUILD_TYPE: static
+    FC_BUILD_PLATFORM: mingw
+    FC_BUILD_ARCH: linux-mingw-w64-64bit
+    FC_BUILD_NO_INSTALL: 1
   needs:
-    - 'fedora:40 at container-prep'
-
+    - 'fedora:rawhide at container-prep'
 
 
-t_fedora:40:meson shared libxml2:
+t_fedora:rawhide:android aarch64:
+  stage: distro
   extends:
     - .build at template
     - .fdo.distribution-image at fedora
     - .fc_artifacts
   variables:
     FC_DISTRO_NAME: fedora
-    FDO_DISTRIBUTION_VERSION: '40'
+    FDO_DISTRIBUTION_VERSION: 'rawhide'
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
     FC_BUILDSYS: meson
     FC_BUILD_TYPE: shared
-    FC_XML_BACKEND: libxml2
-    FC_BUILD_DISTCHECK: 1
-  needs:
-    - 'fedora:40 at container-prep'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-t_freebsd:14.1: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.1'
-    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.1 at container-prep'
-
-
-
-t_freebsd:14.1: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.1'
-    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.1 at container-prep'
-
-
-
-t_freebsd:14.1: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.1'
-    FDO_DISTRIBUTION_TAG: $FREEBSD_TAG
-    FC_BUILDSYS: meson
-    FC_BUILD_TYPE: shared
     FC_XML_BACKEND: expat
+    FC_BUILD_PLATFORM: android
+    FC_BUILD_ARCH: aarch64-linux-android
+    FC_BUILD_NO_INSTALL: 1
+    FC_BUILD_DISABLED: nls
     FC_BUILD_NO_CHECK: 1
   needs:
-    - 'freebsd:14.1 at container-prep'
-
+    - 'fedora:rawhide at container-prep'
 
 
-t_freebsd:14.1:meson shared libxml2:
+t_freebsd:14.1:standard build:
+  stage: distro
   extends:
     - .build-in-qemu at template
     - .fdo.distribution-image at freebsd
@@ -870,7 +646,6 @@ t_freebsd:14.1:meson shared libxml2:
     - 'freebsd:14.1 at container-prep'
 
 
-
 #######################################
 #                                     #
 #            deploy stage             #
@@ -891,8 +666,22 @@ check-merge-request:
   rules:
     - if: $CI_PIPELINE_SOURCE == "merge_request_event"
 
+upload_asset:
+  stage: deploy
+  needs:
+    - t_fedora:rawhide:standard build
+  extends:
+    - .fdo.distribution-image at fedora
+    - .upload
+  variables:
+    FDO_DISTRIBUTION_VERSION: 'rawhide'
+    FDO_DISTRIBUTION_TAG: $FEDORA_TAG
 pages:
   stage: deploy
+  needs:
+    - t_fedora:rawhide:standard build
+  dependencies:
+    - t_fedora:rawhide:standard build
   script:
     - |
       mkdir public || :
@@ -900,10 +689,6 @@ pages:
   artifacts:
     paths:
       - public
-  dependencies:
-    - t_fedora:rawhide:autotools shared libxml2
-  needs:
-    - t_fedora:rawhide:autotools shared libxml2
   rules:
     - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE != "merge_request_event"
 
@@ -917,7 +702,8 @@ make-release:
   script:
     - glab auth login -h ${CI_SERVER_HOST} -j ${CI_JOB_TOKEN}
     - |
-      glab release create ${CI_COMMIT_TAG} --name "Release ${CI_COMMIT_TAG}" -a "[{\"name\": \"fontconfig-${CI_COMMIT_TAG}.tar.xz\", \"url\": \"${PACKAGE_REGISTRY_URL}/fontconfig-${CI_COMMIT_TAG}.tar.xz\"}, {\"name\": \"fontconfig-${CI_COMMIT_TAG}.tar.xz (sha256sum)\", \"url\": \"${PACKAGE_REGISTRY_URL}/fontconfig-${CI_COMMIT_TAG}.tar.xz.sha256sum\"}]"
+      glab changelog generate -v ${CI_COMMIT_TAG} > changelog-${CI_COMMIT_TAG}.md
+      glab release create ${CI_COMMIT_TAG} --name "Release ${CI_COMMIT_TAG}" -F changelog-${CI_COMMIT_TAG}.md -a "[{\"name\": \"fontconfig-${CI_COMMIT_TAG}.tar.xz\", \"url\": \"${PACKAGE_REGISTRY_URL}/fontconfig-${CI_COMMIT_TAG}.tar.xz\"}, {\"name\": \"fontconfig-${CI_COMMIT_TAG}.tar.xz (sha256sum)\", \"url\": \"${PACKAGE_REGISTRY_URL}/fontconfig-${CI_COMMIT_TAG}.tar.xz.sha256sum\"}]"
 
 workflow:
   rules:
diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template
index d357fdb..0a6397d 100644
--- a/.gitlab-ci/ci.template
+++ b/.gitlab-ci/ci.template
@@ -15,7 +15,7 @@
 .templates_sha: &template_sha ef5e4669b7500834a17ffe9277e15fbb6d977fff
 
 include:
-  {% for distro in distributions|sort(attribute="name") %}
+  {% for distro in distributions|sort(attribute="name")|unique(attribute="name") %}
   # {{ distro.name.capitalize() }} container builder template
   - project: 'freedesktop/ci-templates'
     ref: *template_sha
@@ -29,8 +29,9 @@ include:
 stages:
   - sanity check
   - prep
-  - style check
+  - build
   - test
+  - distro
   - deploy
   - container_clean
 
@@ -42,14 +43,14 @@ variables:
 # changing these will force rebuilding the associated image
 # Note: these tags have no meaning and are not tied to a particular
 # fontconfig version
-{% for distro in distributions %}
+{% for distro in distributions|unique(attribute="name") %}
   {{"%-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 %}
+{% for distro in distributions|unique(attribute="name") %}
   {{"%-15s"| format(distro.name.upper() + '_EXEC:')}}'bash .gitlab-ci/{{distro.name}}-install.sh'
 {% endfor %}
 
@@ -95,7 +96,7 @@ check-ci-script:
 
 # Build a container for each distribution + version. The ci-templates
 # will re-use the containers if the tag doesn't change.
-{% for distro in distributions %}
+{% for distro in distributions|unique(attribute="name") %}
 {% for version in distro.versions %}
 
 {{distro.name}}:{{version}}@container-prep:
@@ -151,7 +152,7 @@ check-ci-script:
   only:
     - schedules
 
-{% for distro in distributions %}
+{% for distro in distributions|unique(attribute="name") %}
 {% for version in distro.versions %}
 {{distro.name}}:{{version}}@container-clean:
   extends:
@@ -167,30 +168,7 @@ check-ci-script:
 
 #######################################
 #                                     #
-#             style check             #
-#                                     #
-#######################################
-
-clang-format:
-  stage: style check
-  extends:
-    - .fdo.distribution-image at fedora
-  variables:
-    FDO_DISTRIBUTION_VERSION: 'rawhide'
-    FDO_DISTRIBUTION_TAG: $FEDORA_TAG
-  needs:
-    - 'fedora:rawhide at container-prep'
-  script:
-    - |
-      commit="${CI_MERGE_REQUEST_TARGET_BRANCH_SHA:-${CI_MERGE_REQUEST_DIFF_BASE_SHA:?}}" || exit
-      echo sh .gitlab-ci/check-style.sh "$commit"
-      sh .gitlab-ci/check-style.sh "$commit"
-  rules:
-    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
-
-#######################################
-#                                     #
-#             build stage             #
+#           build template            #
 #                                     #
 #######################################
 
@@ -316,7 +294,78 @@ clang-format:
 
 #######################################
 #                                     #
-#              test stage             #
+#             build stage             #
+#                                     #
+#######################################
+
+{% for build in build_patterns %}
+build-{{build.name}}:
+  stage: build
+  extends:
+    - .build at template
+    - .fdo.distribution-image at fedora
+    - .fc_artifacts
+  variables:
+    FC_DISTRO_NAME: fedora
+    FDO_DISTRIBUTION_VERSION: rawhide
+    FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+    {# Where we have extra_variables defined, add them to the list #}
+    {% if build.variables is defined %}
+    {% for key, value in build.variables.items() %}
+    {{key}}: {{value}}
+    {% endfor %}
+    {% endif %}
+  needs:
+    - fedora:rawhide at container-prep
+{% endfor %}
+
+#######################################
+#                                     #
+#                 test                #
+#                                     #
+#######################################
+
+clang-format:
+  stage: test
+  extends:
+    - .fdo.distribution-image at fedora
+  variables:
+    FDO_DISTRIBUTION_VERSION: 'rawhide'
+    FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+  needs:
+    - 'fedora:rawhide at container-prep'
+  script:
+    - |
+      commit="${CI_MERGE_REQUEST_TARGET_BRANCH_SHA:-${CI_MERGE_REQUEST_DIFF_BASE_SHA:?}}" || exit
+      echo sh .gitlab-ci/check-style.sh "$commit"
+      sh .gitlab-ci/check-style.sh "$commit"
+  rules:
+    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
+
+{% for test in test_patterns %}
+{{test.name}}:
+  stage: test
+  extends:
+    - .build at template
+    - .fdo.distribution-image at fedora
+    - .fc_artifacts
+  variables:
+    FC_DISTRO_NAME: fedora
+    FDO_DISTRIBUTION_VERSION: rawhide
+    FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+    {# Where we have extra_variables defined, add them to the list #}
+    {% if test.variables is defined %}
+    {% for key, value in test.variables.items() %}
+    {{key}}: {{value}}
+    {% endfor %}
+    {% endif %}
+  needs:
+    - fedora:rawhide at container-prep
+{% endfor %}
+
+#######################################
+#                                     #
+#            distro stage             #
 #                                     #
 #######################################
 
@@ -326,6 +375,7 @@ clang-format:
 
 {% if not 'build_only' in build or build.build_only == version %}
 t_{{distro.name}}:{{version}}:{{build.name}}:
+  stage: distro
   extends:
 {% if distro.qemu_based %}
     - .build-in-qemu at template
@@ -348,18 +398,6 @@ t_{{distro.name}}:{{version}}:{{build.name}}:
     - '{{distro.name}}:{{version}}@container-prep'
 {% endif %}
 
-{% if 'upload' in build and build.upload == version %}
-upload_asset:t_{{distro.name}}:{{version}}:{{build.name}}:
-  needs:
-    - t_{{distro.name}}:{{version}}:{{build.name}}
-  extends:
-    - .fdo.distribution-image@{{distro.name}}
-    - .upload
-  variables:
-    FDO_DISTRIBUTION_VERSION: '{{version}}'
-    FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG
-{% endif %}
-
 {% endfor %}
 {% endfor %}
 {% endfor %}
@@ -384,8 +422,28 @@ check-merge-request:
   rules:
     - if: $CI_PIPELINE_SOURCE == "merge_request_event"
 
+{% for distro in distributions %}
+{% for version in distro.versions %}
+{% for build in distro.builds %}
+{% if 'upload' in build and build.upload == version %}
+upload_asset:
+  stage: deploy
+  needs:
+    - t_{{distro.name}}:{{version}}:{{build.name}}
+  extends:
+    - .fdo.distribution-image@{{distro.name}}
+    - .upload
+  variables:
+    FDO_DISTRIBUTION_VERSION: '{{version}}'
+    FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG
+{% endif %}
+{% if 'doc' in build and build.doc == version %}
 pages:
   stage: deploy
+  needs:
+    - t_{{distro.name}}:{{version}}:{{build.name}}
+  dependencies:
+    - t_{{distro.name}}:{{version}}:{{build.name}}
   script:
     - |
       mkdir public || :
@@ -393,12 +451,12 @@ pages:
   artifacts:
     paths:
       - public
-  dependencies:
-    - t_fedora:rawhide:autotools shared libxml2
-  needs:
-    - t_fedora:rawhide:autotools shared libxml2
   rules:
     - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE != "merge_request_event"
+{% endif %}
+{% endfor %}
+{% endfor %}
+{% endfor %}
 
 make-release:
   stage: deploy
@@ -410,7 +468,8 @@ make-release:
   script:
     - glab auth login -h ${CI_SERVER_HOST} -j ${CI_JOB_TOKEN}
     - |
-      glab release create ${CI_COMMIT_TAG} --name "Release ${CI_COMMIT_TAG}" -a "[{\"name\": \"fontconfig-${CI_COMMIT_TAG}.tar.xz\", \"url\": \"${PACKAGE_REGISTRY_URL}/fontconfig-${CI_COMMIT_TAG}.tar.xz\"}, {\"name\": \"fontconfig-${CI_COMMIT_TAG}.tar.xz (sha256sum)\", \"url\": \"${PACKAGE_REGISTRY_URL}/fontconfig-${CI_COMMIT_TAG}.tar.xz.sha256sum\"}]"
+      glab changelog generate -v ${CI_COMMIT_TAG} > changelog-${CI_COMMIT_TAG}.md
+      glab release create ${CI_COMMIT_TAG} --name "Release ${CI_COMMIT_TAG}" -F changelog-${CI_COMMIT_TAG}.md -a "[{\"name\": \"fontconfig-${CI_COMMIT_TAG}.tar.xz\", \"url\": \"${PACKAGE_REGISTRY_URL}/fontconfig-${CI_COMMIT_TAG}.tar.xz\"}, {\"name\": \"fontconfig-${CI_COMMIT_TAG}.tar.xz (sha256sum)\", \"url\": \"${PACKAGE_REGISTRY_URL}/fontconfig-${CI_COMMIT_TAG}.tar.xz.sha256sum\"}]"
 
 workflow:
   rules:
diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml
index 73902b5..6a1bc46 100644
--- a/.gitlab-ci/config.yml
+++ b/.gitlab-ci/config.yml
@@ -1,4 +1,63 @@
-.default_tag: &default_tag "2025-04-17.1"
+.default_tag: &default_tag "2025-04-23.1"
+
+build_patterns:
+  - name: "autotools shared expat"
+    variables:
+      FC_BUILDSYS: autotools
+      FC_BUILD_TYPE: shared
+      FC_XML_BACKEND: expat
+  - name: "autotools shared libxml2"
+    variables:
+      FC_BUILDSYS: autotools
+      FC_BUILD_TYPE: shared
+      FC_XML_BACKEND: libxml2
+  - name: "autotools static expat"
+    variables:
+      FC_BUILDSYS: autotools
+      FC_BUILD_TYPE: static
+      FC_XML_BACKEND: expat
+  - name: "autotools static libxml2"
+    variables:
+      FC_BUILDSYS: autotools
+      FC_BUILD_TYPE: static
+      FC_XML_BACKEND: libxml2
+  - name: "meson shared expat"
+    variables:
+      FC_BUILDSYS: meson
+      FC_BUILD_TYPE: shared
+      FC_XML_BACKEND: expat
+  - name: "meson shared libxml2"
+    variables:
+      FC_BUILDSYS: meson
+      FC_BUILD_TYPE: shared
+      FC_XML_BACKEND: libxml2
+  - name: "meson static expat"
+    variables:
+      FC_BUILDSYS: meson
+      FC_BUILD_TYPE: static
+      FC_XML_BACKEND: expat
+  - name: "meson static libxml2"
+    variables:
+      FC_BUILDSYS: meson
+      FC_BUILD_TYPE: static
+      FC_XML_BACKEND: libxml2
+  - name: "meson static fontations"
+    variables:
+      FC_BUILDSYS: meson
+      FC_BUILD_TYPE: static
+      FC_BUILD_ENABLED: "fontations"
+
+test_patterns:
+  - name: "subproject-build shared"
+    variables:
+      FC_BUILDSYS: meson
+      FC_BUILD_TYPE: shared
+      FC_BUILD_SUBPROJECT: 1
+  - name: "subproject-build static"
+    variables:
+      FC_BUILDSYS: meson
+      FC_BUILD_TYPE: static
+      FC_BUILD_SUBPROJECT: 1
 
 distributions:
   - name: fedora
@@ -10,86 +69,29 @@ distributions:
       - "41"
       - "40"
     builds:
-      - name: "autotools shared expat"
-        variables:
-          FC_BUILDSYS: autotools
-          FC_BUILD_TYPE: shared
-          FC_XML_BACKEND: expat
-      - name: "autotools shared libxml2"
-        variables:
-          FC_BUILDSYS: autotools
-          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: "meson shared libxml2"
+      - name: "standard build"
         upload: "rawhide"
+        doc: "rawhide"
         variables:
           FC_BUILDSYS: meson
           FC_BUILD_TYPE: shared
           FC_XML_BACKEND: libxml2
           FC_BUILD_DISTCHECK: 1
-      - name: "subproject_build"
-        build_only: "rawhide"
-        variables:
-          FC_BUILDSYS: meson
-          FC_BUILD_TYPE: shared
-          FC_XML_BACKEND: libxml2
-          FC_BUILD_SUBPROJECT: 1
-      - 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: "meson static libxml2"
-        build_only: "rawhide"
-        variables:
-          FC_BUILDSYS: meson
-          FC_BUILD_TYPE: static
-          FC_XML_BACKEND: libxml2
-      - 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: "mingw meson static expat"
-        build_only: "rawhide"
+  - name: fedora
+    tag: *default_tag
+    base_type: fedora
+    qemu_based: false
+    versions:
+      - "rawhide"
+    builds:
+      - name: "MinGW"
         variables:
           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
-      - name: "meson static libxml2 fontations"
-        build_only: "rawhide"
-        variables:
-          FC_BUILDSYS: meson
-          FC_BUILD_TYPE: static
-          FC_XML_BACKEND: libxml2
-          FC_BUILD_ENABLED: "fontations"
       - name: "android aarch64"
-        build_only: "rawhide"
         variables:
           FC_BUILDSYS: meson
           FC_BUILD_TYPE: shared
@@ -106,27 +108,7 @@ distributions:
     versions:
       - "14.1"
     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
-      - name: "meson shared libxml2"
+      - name: "standard build"
         variables:
           FC_BUILDSYS: meson
           FC_BUILD_TYPE: shared
diff --git a/.gitlab-ci/other.yml b/.gitlab-ci/other.yml
index f019a88..14af564 100644
--- a/.gitlab-ci/other.yml
+++ b/.gitlab-ci/other.yml
@@ -3,7 +3,7 @@
 # https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/.gitlab-image-tags.yml#L18
 .build meson windows:
   image: "registry.freedesktop.org/gstreamer/gstreamer/amd64/windows:2024-11-12.0-main"
-  stage: "test"
+  stage: "distro"
   tags:
     - "docker"
     - "windows"
@@ -57,7 +57,7 @@ meson vs2019 x86:
 # Skip that configuration for now.
 
 .meson macos test:
-  stage: "test"
+  stage: "distro"
   # See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/.gitlab-ci.yml
   # As of 2024-11-21, this is a Mac OS 15 Sequia image on Apple silicon.
   image: "registry.freedesktop.org/gstreamer/gstreamer/macos-arm64/15-sequoia:2024-10-28.0"


More information about the Fontconfig mailing list