7 commits - .gitlab-ci/android-cross-file.txt .gitlab-ci/install-android-toolchain.sh .gitlab-ci.yml subprojects/expat.wrap subprojects/fontconfig.wrap subprojects/freetype2.wrap subprojects/glib.wrap subprojects/libpng.wrap subprojects/pixman.wrap

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Mar 26 11:46:07 UTC 2025


 .gitlab-ci.yml                          |   52 +++++++++-----------------------
 .gitlab-ci/android-cross-file.txt       |   22 +++++++++++++
 .gitlab-ci/install-android-toolchain.sh |   33 ++++++++++++++++++++
 subprojects/expat.wrap                  |   18 +++++------
 subprojects/fontconfig.wrap             |   12 +++----
 subprojects/freetype2.wrap              |   12 +++----
 subprojects/glib.wrap                   |   11 +++---
 subprojects/libpng.wrap                 |   18 +++++------
 subprojects/pixman.wrap                 |   12 +++----
 9 files changed, 112 insertions(+), 78 deletions(-)

New commits:
commit 7fd0cd0a9c0278c2b3d4c78087ca8481087b588b
Merge: 58578a2f4 20503ecec
Author: Tim-Philipp Müller <tim at centricular.com>
Date:   Wed Mar 26 11:45:58 2025 +0000

    Merge branch 'alatiera/android-image-test' into 'master'
    
    ci: update the android CI image
    
    See merge request cairo/cairo!614

commit 20503ecec38382e93f3dd5d6ef957ad711d61066
Author: Tim-Philipp Müller <tim at centricular.com>
Date:   Wed Mar 26 10:22:43 2025 +0000

    ci: drop placeholder-job tags from image jobs

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index edebaf658..478e5751c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -70,7 +70,7 @@ fedora image:
    - '.fdo.container-build at fedora'
   stage: 'prep'
   tags:
-    - placeholder-job
+    - kvm
   variables:
     FDO_DISTRIBUTION_PACKAGES: >
       binutils-gold
commit 8dc09a1c486159047183d127e9da09bba33446f5
Author: Jordan Petridis <jpetridis at gnome.org>
Date:   Wed Mar 12 00:39:29 2025 +0200

    ci: Update rust version

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 18125f031..edebaf658 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -26,8 +26,8 @@ variables:
   DEFAULT_MESON_ARGS: >
     --default-library=both
 
-  RUST_STABLE: "1.80.0"
-  RUSTUP_VERSION: "1.27.1"
+  RUST_STABLE: "1.85.0"
+  RUSTUP_VERSION: "1.28.1"
 
   ANDROID_HOME: "/android/sdk"
   ANDROID_NDK_HOME: "/android/ndk"
commit 0826837e4a383d0363ca9113c1cbd6dede075428
Author: Jordan Petridis <jpetridis at gnome.org>
Date:   Wed Mar 12 00:12:43 2025 +0200

    ci: Install android toolchain into our own image
    
    Previously we were using a prebuilt image from
    gstreamer, but now we can copy what's needed and build
    our own image with ci-templates.

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3f621f342..18125f031 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -16,7 +16,7 @@ workflow:
 variables:
   FDO_UPSTREAM_REPO: 'cairo/cairo'
   FDO_DISTRIBUTION_VERSION: '40'
-  FDO_DISTRIBUTION_TAG: '2024-07-26-coverage.0'
+  FDO_DISTRIBUTION_TAG: '2025-03-12-android.0'
 
   # TODO: should probably get its own image at some point instead of reusing the GStreamer one
   # See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/.gitlab-image-tags.yml for latest
@@ -29,6 +29,9 @@ variables:
   RUST_STABLE: "1.80.0"
   RUSTUP_VERSION: "1.27.1"
 
+  ANDROID_HOME: "/android/sdk"
+  ANDROID_NDK_HOME: "/android/ndk"
+
 stages:
   - prep
   - build
@@ -70,11 +73,13 @@ fedora image:
     - placeholder-job
   variables:
     FDO_DISTRIBUTION_PACKAGES: >
+      binutils-gold
       meson
       ninja-build
       ccache
       gcc
       g++
+      gperf
       zlib-devel
       expat-devel
       libpng-devel
@@ -101,8 +106,10 @@ fedora image:
       google-noto-emoji-color-fonts
       google-noto-sans-vf-fonts
       fonttools
+      unzip
       util-linux
       poppler-utils
+      python3-pip
       clang
       clang-analyzer
       clang-tools-extra
@@ -117,6 +124,7 @@ fedora image:
                               --arch x86_64-unknown-linux-gnu &&
       bash .gitlab-ci/install-rust-tools.sh &&
       bash .gitlab-ci/install-grcov.sh &&
+      bash .gitlab-ci/install-android-toolchain.sh $ANDROID_HOME $ANDROID_NDK_HOME &&
       rm -rf /root/.cargo /root/.cache    # cleanup compilation dirs; binaries are installed now
 
 .build fedora:
@@ -398,10 +406,8 @@ vs2019 shared x86:
     EXTRA_MESON_ARGS: '--default-library=shared'
 
 android arm64 fedora:
-  # TODO: should probably build our own image here some day
-  # See https://gitlab.freedesktop.org/gstreamer/gstreamer/container_registry/7689 for current images
-  image: 'registry.freedesktop.org/gstreamer/cerbero/android:2024-11-01.0'
-  needs: []
+  extends:
+    - '.fdo.distribution-image at fedora'
   stage: 'build'
   artifacts:
     name: "${CI_JOB_NAME}_${CI_COMMIT_SHA}"
@@ -409,11 +415,7 @@ android arm64 fedora:
     when: 'always'
     paths:
       - "build/meson-logs/*.txt"
-  before_script:
-    - dnf install -y python3-pip gcc ninja-build gperf binutils-gold
-    - pip3 install --user meson
   script:
-    - export PATH="$HOME/.local/bin:$PATH"
     - meson setup --cross-file .gitlab-ci/android-cross-file.txt -Dpixman:a64-neon=disabled build
     - meson compile --verbose -C build
 
diff --git a/.gitlab-ci/install-android-toolchain.sh b/.gitlab-ci/install-android-toolchain.sh
new file mode 100644
index 000000000..5b9fce8d2
--- /dev/null
+++ b/.gitlab-ci/install-android-toolchain.sh
@@ -0,0 +1,33 @@
+#! /bin/bash
+
+# Copied from gstreamer/cerbero
+# https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/2a0f5829aa1b56e8d36ef36f9675845345d54542/ci/docker_android_setup.sh
+
+set -eux
+
+export ANDROID_HOME=$1
+export ANDROID_NDK_HOME=$2
+
+mkdir -p /android/sources
+
+curl -o /android/sources/android-ndk.zip https://dl.google.com/android/repository/android-ndk-r25c-linux.zip
+unzip /android/sources/android-ndk.zip -d ${ANDROID_NDK_HOME}/
+# remove the intermediate versioned directory
+mv ${ANDROID_NDK_HOME}/*/* ${ANDROID_NDK_HOME}/
+
+curl -o /android/sources/android-sdk-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip
+unzip /android/sources/android-sdk-tools.zip -d ${ANDROID_HOME}/
+mkdir -p ${ANDROID_HOME}/licenses
+
+# Accept licenses. Values taken from:
+# $ANDROID_HOME/tools/bin/sdkmanager --sdk_root=$ANDROID_HOME --licenses
+# cd $ANDROID_HOME
+# for f in licenses/*; do echo "echo \"$(cat $f | tr -d '\n')\" > \${ANDROID_HOME}/$f"; done
+echo "601085b94cd77f0b54ff86406957099ebe79c4d6" > ${ANDROID_HOME}/licenses/android-googletv-license
+echo "859f317696f67ef3d7f30a50a5560e7834b43903" > ${ANDROID_HOME}/licenses/android-sdk-arm-dbt-license
+echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" > ${ANDROID_HOME}/licenses/android-sdk-license
+echo "84831b9409646a918e30573bab4c9c91346d8abd" > ${ANDROID_HOME}/licenses/android-sdk-preview-license
+echo "33b6a2b64607f11b759f320ef9dff4ae5c47d97a" > ${ANDROID_HOME}/licenses/google-gdk-license
+echo "e9acab5b5fbb560a72cfaecce8946896ff6aab9d" > ${ANDROID_HOME}/licenses/mips-android-sysimage-license
+
+rm -rf /android/sources
commit 3a3771f86260e0c4ae5236e687e3bada104c3a68
Author: Jordan Petridis <jpetridis at gnome.org>
Date:   Sat Mar 8 16:40:33 2025 +0200

    ci: Update the android CI image
    
    Switch to using the gstreamer/cerbero image that
    has NDK installed, until we add the android toolchain
    to our image.
    
    Followup to 92dde935d4cdf3cdc981e154150db2ea076ab827

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 55ecbd8db..3f621f342 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -400,7 +400,8 @@ vs2019 shared x86:
 android arm64 fedora:
   # TODO: should probably build our own image here some day
   # See https://gitlab.freedesktop.org/gstreamer/gstreamer/container_registry/7689 for current images
-  image: 'registry.freedesktop.org/gstreamer/gstreamer/amd64/android-fedora:2020-10-22.0-master'
+  image: 'registry.freedesktop.org/gstreamer/cerbero/android:2024-11-01.0'
+  needs: []
   stage: 'build'
   artifacts:
     name: "${CI_JOB_NAME}_${CI_COMMIT_SHA}"
@@ -408,9 +409,8 @@ android arm64 fedora:
     when: 'always'
     paths:
       - "build/meson-logs/*.txt"
-  allow_failure: true
   before_script:
-    - dnf install -y python3-pip gcc ninja-build gperf
+    - dnf install -y python3-pip gcc ninja-build gperf binutils-gold
     - pip3 install --user meson
   script:
     - export PATH="$HOME/.local/bin:$PATH"
diff --git a/.gitlab-ci/android-cross-file.txt b/.gitlab-ci/android-cross-file.txt
index b9496c7b9..e5df1e5a7 100644
--- a/.gitlab-ci/android-cross-file.txt
+++ b/.gitlab-ci/android-cross-file.txt
@@ -1,6 +1,7 @@
 [constants]
 ndk_path    = '/android/ndk'
-toolchain   = ndk_path + '/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android'
+ndk_bindir   = ndk_path + '/toolchains/llvm/prebuilt/linux-x86_64/bin/'
+toolchain   = ndk_bindir + 'aarch64-linux-android'
 api         = '28'
 
 [host_machine]
@@ -10,12 +11,12 @@ cpu         = 'aarch64'
 endian      = 'little'
 
 [properties]
-sys_root        = ndk_path + '/sysroot'
-c_link_args     = ['-fuse-ld=gold']
-cpp_link_args   = ['-fuse-ld=gold']
+sys_root    = ndk_path + '/sysroot'
+c_ld        = 'gold'
+cpp_ld      = 'gold'
 
 [binaries]
 c           = toolchain + api + '-clang'
 cpp         = toolchain + api + '-clang++'
-ar          = toolchain + '-ar'
-strip       = toolchain + '-strip'
+ar          = ndk_bindir + 'llvm-ar'
+strip       = ndk_bindir + 'llvm-strip'
commit 6dd779677e8619b3be52130e3b7eb41047447c50
Author: Jordan Petridis <jpetridis at gnome.org>
Date:   Tue Mar 11 15:54:16 2025 +0200

    build: Update wrap files

diff --git a/subprojects/expat.wrap b/subprojects/expat.wrap
index 36be273c6..53d13b943 100644
--- a/subprojects/expat.wrap
+++ b/subprojects/expat.wrap
@@ -1,13 +1,13 @@
 [wrap-file]
-directory = expat-2.6.0
-source_url = https://github.com/libexpat/libexpat/releases/download/R_2_6_0/expat-2.6.0.tar.xz
-source_filename = expat-2.6.0.tar.bz2
-source_hash = cb5f5a8ea211e1cabd59be0a933a52e3c02cc326e86a4d387d8d218e7ee47a3e
-patch_filename = expat_2.6.0-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.6.0-1/get_patch
-patch_hash = 7452665b0cf413f87fae1dc4d5c779bc2c8f0ccf3ba637140c9d46eacf521604
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/expat_2.6.0-1/expat-2.6.0.tar.bz2
-wrapdb_version = 2.6.0-1
+directory = expat-2.6.4
+source_url = https://github.com/libexpat/libexpat/releases/download/R_2_6_4/expat-2.6.4.tar.xz
+source_filename = expat-2.6.4.tar.bz2
+source_hash = a695629dae047055b37d50a0ff4776d1d45d0a4c842cf4ccee158441f55ff7ee
+patch_filename = expat_2.6.4-1_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.6.4-1/get_patch
+patch_hash = e4ffff014e06b805fbb36cd1e911e90829dc1e07301a3aee53231f9048758558
+source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/expat_2.6.4-1/expat-2.6.4.tar.bz2
+wrapdb_version = 2.6.4-1
 
 [provide]
 expat = expat_dep
diff --git a/subprojects/fontconfig.wrap b/subprojects/fontconfig.wrap
index 7dc416811..2a72b98a8 100644
--- a/subprojects/fontconfig.wrap
+++ b/subprojects/fontconfig.wrap
@@ -1,10 +1,10 @@
 [wrap-file]
-directory = fontconfig-2.14.2
-source_url = https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.14.2.tar.xz
-source_filename = fontconfig-2.14.2.tar.xz
-source_hash = dba695b57bce15023d2ceedef82062c2b925e51f5d4cc4aef736cf13f60a468b
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/fontconfig_2.14.2-1/fontconfig-2.14.2.tar.xz
-wrapdb_version = 2.14.2-1
+directory = fontconfig-2.16.0
+source_url = https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.16.0.tar.xz
+source_filename = fontconfig-2.16.0.tar.xz
+source_hash = 6a33dc555cc9ba8b10caf7695878ef134eeb36d0af366041f639b1da9b6ed220
+source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/fontconfig_2.16.0-1/fontconfig-2.16.0.tar.xz
+wrapdb_version = 2.16.0-1
 
 [provide]
 fontconfig = fontconfig_dep
diff --git a/subprojects/freetype2.wrap b/subprojects/freetype2.wrap
index e3554c9a1..acad6f487 100644
--- a/subprojects/freetype2.wrap
+++ b/subprojects/freetype2.wrap
@@ -1,10 +1,10 @@
 [wrap-file]
-directory = freetype-2.13.2
-source_url = https://download.savannah.gnu.org/releases/freetype/freetype-2.13.2.tar.xz
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/freetype2_2.13.2-1/freetype-2.13.2.tar.xz
-source_filename = freetype-2.13.2.tar.xz
-source_hash = 12991c4e55c506dd7f9b765933e62fd2be2e06d421505d7950a132e4f1bb484d
-wrapdb_version = 2.13.2-1
+directory = freetype-2.13.3
+source_url = https://download.savannah.gnu.org/releases/freetype/freetype-2.13.3.tar.xz
+source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/freetype2_2.13.3-1/freetype-2.13.3.tar.xz
+source_filename = freetype-2.13.3.tar.xz
+source_hash = 0550350666d427c74daeb85d5ac7bb353acba5f76956395995311a9c6f063289
+wrapdb_version = 2.13.3-1
 
 [provide]
 freetype2 = freetype_dep
diff --git a/subprojects/glib.wrap b/subprojects/glib.wrap
index 51d9cf8d4..71b6cd18b 100644
--- a/subprojects/glib.wrap
+++ b/subprojects/glib.wrap
@@ -1,9 +1,10 @@
 [wrap-file]
-directory = glib-2.74.0
-source_url = https://download.gnome.org/sources/glib/2.74/glib-2.74.0.tar.xz
-source_filename = glib-2.74.0.tar.xz
-source_hash = 3652c7f072d7b031a6b5edd623f77ebc5dcd2ae698598abcc89ff39ca75add30
-wrapdb_version = 2.74.0-1
+directory = glib-2.84.0
+source_url = https://download.gnome.org/sources/glib/2.84/glib-2.84.0.tar.xz
+source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/glib_2.84.0-1/glib-2.84.0.tar.xz
+source_filename = glib-2.84.0.tar.xz
+source_hash = f8823600cb85425e2815cfad82ea20fdaa538482ab74e7293d58b3f64a5aff6a
+wrapdb_version = 2.84.0-1
 
 [provide]
 dependency_names = gthread-2.0, gobject-2.0, gmodule-no-export-2.0, gmodule-export-2.0, gmodule-2.0, glib-2.0, gio-2.0, gio-windows-2.0, gio-unix-2.0
diff --git a/subprojects/libpng.wrap b/subprojects/libpng.wrap
index d8a4abffa..ec796cd88 100644
--- a/subprojects/libpng.wrap
+++ b/subprojects/libpng.wrap
@@ -1,13 +1,13 @@
 [wrap-file]
-directory = libpng-1.6.43
-source_url = https://github.com/glennrp/libpng/archive/v1.6.43.tar.gz
-source_filename = libpng-1.6.43.tar.gz
-source_hash = fecc95b46cf05e8e3fc8a414750e0ba5aad00d89e9fdf175e94ff041caf1a03a
-patch_filename = libpng_1.6.43-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/libpng_1.6.43-1/get_patch
-patch_hash = 0e995446c607ef2e618fb561929acf91e4bdd8017d2e18a7a3b68ba41da345e6
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/libpng_1.6.43-1/libpng-1.6.43.tar.gz
-wrapdb_version = 1.6.43-1
+directory = libpng-1.6.47
+source_url = https://github.com/glennrp/libpng/archive/v1.6.47.tar.gz
+source_filename = libpng-1.6.47.tar.gz
+source_hash = 631a4c58ea6c10c81f160c4b21fa8495b715d251698ebc2552077e8450f30454
+patch_filename = libpng_1.6.47-1_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/libpng_1.6.47-1/get_patch
+patch_hash = a21f619a39da40a215e6c0d51e92af173c14b5e958bad0c0069eb91a6b9b0a3d
+source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/libpng_1.6.47-1/libpng-1.6.47.tar.gz
+wrapdb_version = 1.6.47-1
 
 [provide]
 libpng = libpng_dep
diff --git a/subprojects/pixman.wrap b/subprojects/pixman.wrap
index 6ce238b84..2bc079ed0 100644
--- a/subprojects/pixman.wrap
+++ b/subprojects/pixman.wrap
@@ -1,10 +1,10 @@
 [wrap-file]
-directory = pixman-0.43.4
-source_url = https://www.cairographics.org/releases/pixman-0.43.4.tar.gz
-source_filename = pixman-0.43.4.tar.gz
-source_hash = a0624db90180c7ddb79fc7a9151093dc37c646d8c38d3f232f767cf64b85a226
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/pixman_0.43.4-1/pixman-0.43.4.tar.gz
-wrapdb_version = 0.43.4-1
+directory = pixman-0.44.2
+source_url = https://www.cairographics.org/releases/pixman-0.44.2.tar.gz
+source_filename = pixman-0.44.2.tar.gz
+source_hash = 6349061ce1a338ab6952b92194d1b0377472244208d47ff25bef86fc71973466
+source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/pixman_0.44.2-1/pixman-0.44.2.tar.gz
+wrapdb_version = 0.44.2-1
 
 [provide]
 pixman-1 = idep_pixman
commit 8c67cb8e2df5066a08c851f8a1306b4a53a2e48b
Author: Jordan Petridis <jpetridis at gnome.org>
Date:   Tue Mar 11 15:50:25 2025 +0200

    ci: Move the android cross file into the repository
    
    Avoid having the txt file be inline bash which is inline
    in yaml in the ci config.

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 62d515006..55ecbd8db 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -414,31 +414,7 @@ android arm64 fedora:
     - 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_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 --cross-file android-cross-file.txt -Dpixman:a64-neon=disabled build
+    - meson setup --cross-file .gitlab-ci/android-cross-file.txt -Dpixman:a64-neon=disabled build
     - meson compile --verbose -C build
 
 macOS x86 host:
diff --git a/.gitlab-ci/android-cross-file.txt b/.gitlab-ci/android-cross-file.txt
new file mode 100644
index 000000000..b9496c7b9
--- /dev/null
+++ b/.gitlab-ci/android-cross-file.txt
@@ -0,0 +1,21 @@
+[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_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'


More information about the cairo-commit mailing list