From 241b3c43b6edfb75acd8dcb42080fcb3e872bb1a Mon Sep 17 00:00:00 2001 From: Ryanmello07 <67509637+Ryanmello07@users.noreply.github.com> Date: Sun, 23 Aug 2026 06:05:52 -0700 Subject: [PATCH 1/2] flatpak: take cairomm from upstream git, not cairographics.org cairomm is the only module in this manifest whose source is not reachable from GitHub's runners, and it took the Flatpak build test down every time it ran: Failed to download sources: module cairomm: Failed to connect to www.cairographics.org port 443 after 60000 ms: Timeout was reached Four attempts across three runs, all the same, so a retry does not help. The host is not down -- it answers a home connection in about 8 seconds -- it just does not answer Azure-hosted runners, which is common for a single unmirrored academic server. There is no mirror to fall back to. cairomm 1.16+ is released by cairographics.org alone: download.gnome.org stops at the 1.12/1.15 API series, Debian's pool stops at 1.14.6, and neither Gentoo distfiles nor Fedora's lookaside carries 1.18.0. flatpak-builder's mirror-urls has nothing to point at. So this switches to cairo's own upstream git, which is where the tarball is cut from and which answers in about 1.5 seconds. Pinned to the commit rather than only the tag: `tag:` alone would follow a tag if it moved, and the commit is what keeps the build reproducible -- the same guarantee the sha256 was providing on the archive. This is a downgrade in one respect and the comment says so: a release tarball is what upstream tested, and a git checkout is not. If cairographics.org ever gets a mirror, this should go back to an archive source. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01MAXFxG1EK4jTxQ1iW73BUr --- packaging/flatpak/com.bringyour.network.yml | 32 +++++++++++++++++---- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/packaging/flatpak/com.bringyour.network.yml b/packaging/flatpak/com.bringyour.network.yml index 736efbe..818489d 100644 --- a/packaging/flatpak/com.bringyour.network.yml +++ b/packaging/flatpak/com.bringyour.network.yml @@ -136,8 +136,29 @@ modules: url: https://download.gnome.org/sources/glibmm/2.86/glibmm-2.86.0.tar.xz sha256: 39c0e9f6da046d679390774efdb9ad564436236736dc2f7825e614b2d4087826 - # cairomm 1.16+ is released by cairographics.org, NOT download.gnome.org - # (the GNOME mirror stops at the old 1.12/1.15 API series). + # FROM GIT, unlike every other module here, and not by preference. + # + # cairomm 1.16+ is released by cairographics.org and nowhere else: the GNOME + # mirror stops at the old 1.12/1.15 API series, Debian's pool stops at 1.14.6, + # and neither Gentoo distfiles nor Fedora's lookaside carries 1.18.0. That + # leaves one unmirrored host, and it is not reachable from GitHub's runners -- + # it answers a home connection in about 8 seconds and times out from CI every + # single time: + # + # Failed to download sources: module cairomm: Failed to connect to + # www.cairographics.org port 443 after 60000 ms: Timeout was reached + # + # Four attempts across three runs, all identical, so this is not a blip that a + # retry absorbs. With no archive left to mirror, the remaining source is + # cairo's own upstream git -- which is where that tarball is cut from anyway. + # + # PINNED TO A COMMIT, not just the tag. `tag:` alone would follow a moved tag; + # the commit is what keeps this reproducible, and it is the same guarantee the + # sha256 gave on the archive. e0bad5477 is what 1.18.0 peels to. + # + # If cairographics.org ever gets a mirror this should go back to an archive + # source: a release tarball is the better input, because it is what upstream + # actually tested. - name: cairomm buildsystem: meson config-opts: @@ -146,9 +167,10 @@ modules: - -Dbuild-examples=false - -Dbuild-tests=false sources: - - type: archive - url: https://www.cairographics.org/releases/cairomm-1.18.0.tar.xz - sha256: b81255394e3ea8e8aa887276d22afa8985fc8daef60692eb2407d23049f03cfb + - type: git + url: https://gitlab.freedesktop.org/cairo/cairomm.git + tag: '1.18.0' + commit: e0bad547705348657d09db4c9375833d8890cf54 - name: pangomm buildsystem: meson From 995e1de4fe968645c068c81d060a8a35ae5dfd68 Mon Sep 17 00:00:00 2001 From: Ryanmello07 <67509637+Ryanmello07@users.noreply.github.com> Date: Sun, 23 Aug 2026 06:15:10 -0700 Subject: [PATCH 2/2] flatpak: disable cairomm maintainer mode for the git source Building cairomm from git rather than a release tarball turns maintainer mode on, which hard-requires mm-common-get, which the GNOME SDK does not ship: ../meson.build:151:18: ERROR: Program 'mm-common-get' not found or not executable Switching it off is safe here rather than merely expedient. mm-common-get fetches the gmmproc scaffolding that generates .h/.cc from .hg/.ccg inputs, and cairomm has none of those -- its 1.18.0 tree contains zero .hg and zero .ccg files, unlike glibmm and gtkmm, which really are generated. The only other thing maintainer mode provides is the documentation toolchain, and -Dbuild-documentation=false already declines it. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01MAXFxG1EK4jTxQ1iW73BUr --- packaging/flatpak/com.bringyour.network.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packaging/flatpak/com.bringyour.network.yml b/packaging/flatpak/com.bringyour.network.yml index 818489d..df3c54c 100644 --- a/packaging/flatpak/com.bringyour.network.yml +++ b/packaging/flatpak/com.bringyour.network.yml @@ -166,6 +166,19 @@ modules: - -Dbuild-documentation=false - -Dbuild-examples=false - -Dbuild-tests=false + # REQUIRED because the source is git rather than a tarball. cairomm turns + # maintainer mode on when it does not find a released tree, and then hard- + # requires mm-common-get, which the GNOME SDK does not ship: + # + # ../meson.build:151:18: ERROR: Program 'mm-common-get' not found + # + # Safe to switch off here, and not merely expedient: mm-common-get exists + # to fetch the gmmproc scaffolding that generates .h/.cc from .hg/.ccg + # inputs, and cairomm has NONE -- its 1.18.0 tree contains zero .hg and + # zero .ccg files, unlike glibmm and gtkmm which are generated. The only + # other thing maintainer mode buys is the doc toolchain, and + # -Dbuild-documentation=false above already declines that. + - -Dmaintainer-mode=false sources: - type: git url: https://gitlab.freedesktop.org/cairo/cairomm.git