From e2cc1bc8a2667fe0f485e3807f6e5c09109505ba Mon Sep 17 00:00:00 2001 From: bbhtt Date: Wed, 6 Aug 2025 08:16:30 +0530 Subject: [PATCH 1/4] builder-utils: Add a function to check appstream version requirements This could've been done with the libappstream API but since flatpak-builder has until now avoided linking to it and linking to it now does not make sense just to check the version. That is postponed until appstream-compose is API stable and we can port to it. The CLI output format has been stable for 8+ years, see [1] [2]. We prefer the library version in case of a mismatch. [1]: https://github.com/ximion/appstream/commit/d83174a4695e13ef41730c7a055b7e9b9077c211 [2]: https://github.com/ximion/appstream/blob/56ecd0067495213a64f3a490cbbc030fcfd5b8f1/tools/appstreamcli.c#L1594-L1604 --- src/builder-utils.c | 49 +++++++++++++++++++++++++++++++++++++++++++++ src/builder-utils.h | 4 ++++ 2 files changed, 53 insertions(+) diff --git a/src/builder-utils.c b/src/builder-utils.c index 060fdeed..7a8b0083 100644 --- a/src/builder-utils.c +++ b/src/builder-utils.c @@ -1837,3 +1837,52 @@ flatpak_version_check (int major, return FALSE; } + +gboolean +appstream_has_version (int major, + int minor, + int micro) +{ + static int as_major = 0; + static int as_minor = 0; + static int as_micro = 0; + + if (as_major == 0 && + as_minor == 0 && + as_micro == 0) + { + const char * argv[] = { "appstreamcli", "--version", NULL }; + g_autoptr(GSubprocess) subp = NULL; + g_autofree char *out = NULL; + g_auto(GStrv) lines = NULL; + + subp = g_subprocess_newv (argv, G_SUBPROCESS_FLAGS_STDOUT_PIPE, NULL); + g_subprocess_communicate_utf8 (subp, NULL, NULL, &out, NULL, NULL); + + lines = g_strsplit (out, "\n", -1); + + for (size_t i = 0; lines[i] != NULL; i++) + { + /* Only prefer library version over cli version in case of mismatch */ + if (g_str_has_prefix (lines[i], "AppStream library version:")) + { + if (sscanf (lines[i], "AppStream library version: %d.%d.%d", &as_major, &as_minor, &as_micro) == 3) + break; + } + else if (g_str_has_prefix (lines[i], "AppStream version:")) + { + if (sscanf (lines[i], "AppStream version: %d.%d.%d", &as_major, &as_minor, &as_micro) == 3) + break; + } + } + + if (as_major == 0 && as_minor == 0 && as_micro == 0) + g_warning ("Failed to find appstream version"); + else + g_debug ("Found AppStream version %d.%d.%d", as_major, as_minor, as_micro); + } + + return (as_major > major) || + (as_major == major && as_minor > minor) || + (as_major == major && as_minor == minor && as_micro >= micro); +} diff --git a/src/builder-utils.h b/src/builder-utils.h index 05dfd839..ddbc5a00 100644 --- a/src/builder-utils.h +++ b/src/builder-utils.h @@ -216,6 +216,10 @@ gboolean flatpak_version_check (int major, int minor, int micro); +gboolean appstream_has_version (int major, + int minor, + int micro); + G_DEFINE_AUTOPTR_CLEANUP_FUNC (FlatpakXml, flatpak_xml_free); G_END_DECLS From 31a375862bb6f3352d2408270eef52fe5adb2ee5 Mon Sep 17 00:00:00 2001 From: bbhtt Date: Tue, 9 Sep 2025 00:50:10 +0530 Subject: [PATCH 2/4] builder-manifest: Add argument to run compose with selected url policy appstream-glib always composed with full urls. The URL policy got unintentionallly switched to partial urls during libappstream port in 1.3.x. Such a break in behaviour makes sense for unstable releases but we cannot revert back to full urls in a stable release. Using full URLs is desired for Flathub. So add a cli arg to control the behaviour and default to partial url. This may be flipped later in the next unstable release to default to full urls again. This is an alternative to https://github.com/flatpak/flatpak-builder/pull/576 --- doc/flatpak-builder.xml | 15 +++++++++++++++ src/builder-context.c | 15 +++++++++++++++ src/builder-context.h | 9 +++++++++ src/builder-main.c | 25 +++++++++++++++++++++++++ src/builder-manifest.c | 11 +++++++++-- 5 files changed, 73 insertions(+), 2 deletions(-) diff --git a/doc/flatpak-builder.xml b/doc/flatpak-builder.xml index 847bb57e..6cc19e2b 100644 --- a/doc/flatpak-builder.xml +++ b/doc/flatpak-builder.xml @@ -589,6 +589,21 @@ + + + + + Set the AppStream compose URL policy. Accepted values + are partial and full. + full requires AppStream version >= 0.16.3. + Defaults to partial if unspecified. + This policy only takes effect when used in conjunction + with ; + otherwise the Appstream catalogue will preserve + the source media URLs. + + + diff --git a/src/builder-context.c b/src/builder-context.c index 508ab91f..4458a229 100644 --- a/src/builder-context.c +++ b/src/builder-context.c @@ -88,6 +88,8 @@ struct BuilderContext char *opt_mirror_screenshots_url; BuilderSdkConfig *sdk_config; + + BuilderAsUrlPolicy as_url_policy; }; typedef struct @@ -1241,6 +1243,19 @@ builder_context_create_state_dir (BuilderContext *self, return TRUE; } +void +builder_context_set_as_url_policy (BuilderContext *self, + BuilderAsUrlPolicy policy) +{ + self->as_url_policy = policy; +} + +BuilderAsUrlPolicy +builder_context_get_as_url_policy (BuilderContext *self) +{ + return self->as_url_policy; +} + BuilderContext * builder_context_new (GFile *run_dir, GFile *app_dir, diff --git a/src/builder-context.h b/src/builder-context.h index 69671398..f6c12329 100644 --- a/src/builder-context.h +++ b/src/builder-context.h @@ -29,6 +29,11 @@ G_BEGIN_DECLS +typedef enum { + BUILDER_AS_URL_POLICY_PARTIAL = 0, + BUILDER_AS_URL_POLICY_FULL, +} BuilderAsUrlPolicy; + /* Same as SOUP_HTTP_URI_FLAGS, means all possible flags for http uris */ #if GLIB_CHECK_VERSION (2, 68, 0) @@ -185,6 +190,10 @@ BuilderSdkConfig * builder_context_get_sdk_config (BuilderContext *self); gboolean builder_context_create_state_dir (BuilderContext *self, GError **error); +void builder_context_set_as_url_policy (BuilderContext *self, + BuilderAsUrlPolicy policy); +BuilderAsUrlPolicy builder_context_get_as_url_policy (BuilderContext *self); + G_DEFINE_AUTOPTR_CLEANUP_FUNC (BuilderContext, g_object_unref) G_END_DECLS diff --git a/src/builder-main.c b/src/builder-main.c index aa6d0e4d..dfb61d66 100644 --- a/src/builder-main.c +++ b/src/builder-main.c @@ -89,6 +89,7 @@ static gboolean opt_log_session_bus; static gboolean opt_log_system_bus; static gboolean opt_yes; static gint64 opt_source_date_epoch = -1; +static gchar *opt_as_url_policy = NULL; static GOptionEntry entries[] = { { "verbose", 'v', 0, G_OPTION_ARG_NONE, &opt_verbose, "Print debug information during command processing", NULL }, @@ -144,6 +145,7 @@ static GOptionEntry entries[] = { { "assumeyes", 'y', 0, G_OPTION_ARG_NONE, &opt_yes, N_("Automatically answer yes for all questions"), NULL }, { "no-shallow-clone", 0, 0, G_OPTION_ARG_NONE, &opt_no_shallow_clone, "Don't use shallow clones when mirroring git repos", NULL }, { "override-source-date-epoch", 0, 0, G_OPTION_ARG_INT64, &opt_source_date_epoch, "Use this timestamp to perform the build, instead of the last modification time of the manifest.", NULL }, + { "compose-url-policy", 0, 0, G_OPTION_ARG_STRING, &opt_as_url_policy, "Set the AppStream compose URL policy to either 'partial' (default) or 'full'", "POLICY" }, { NULL } }; @@ -608,6 +610,29 @@ main (int argc, builder_context_set_opt_export_only (build_context, opt_export_only); builder_context_set_opt_mirror_screenshots_url (build_context, opt_mirror_screenshots_url); + if (opt_mirror_screenshots_url) + { + BuilderAsUrlPolicy policy = BUILDER_AS_URL_POLICY_PARTIAL; + + if (g_strcmp0 (opt_as_url_policy, "full") == 0) + policy = BUILDER_AS_URL_POLICY_FULL; + else if (g_strcmp0 (opt_as_url_policy, "partial") == 0) + policy = BUILDER_AS_URL_POLICY_PARTIAL; + else if (opt_as_url_policy != NULL) + { + g_printerr ("Invalid value for --compose-url-policy: %s\n", opt_as_url_policy); + return 1; + } + + if (policy == BUILDER_AS_URL_POLICY_FULL && !appstream_has_version (0, 16, 3)) + { + g_printerr ("AppStream version >= 0.16.3 required for 'full' compose URL policy\n"); + return 1; + } + + builder_context_set_as_url_policy (build_context, policy); + } + git_init_email (); if (!builder_context_create_state_dir (build_context, &error)) diff --git a/src/builder-manifest.c b/src/builder-manifest.c index 50596368..0fc94ebe 100644 --- a/src/builder-manifest.c +++ b/src/builder-manifest.c @@ -2422,7 +2422,8 @@ cmpstringp (const void *p1, const void *p2) } static gboolean -appstreamcli_compose (GError **error, +appstreamcli_compose (GError **error, + BuilderAsUrlPolicy as_url_policy, ...) { g_autoptr(GPtrArray) args = NULL; @@ -2433,7 +2434,10 @@ appstreamcli_compose (GError **error, g_ptr_array_add (args, g_strdup ("appstreamcli")); g_ptr_array_add (args, g_strdup ("compose")); - va_start (ap, error); + if (as_url_policy == BUILDER_AS_URL_POLICY_FULL) + g_ptr_array_add (args, g_strdup ("--no-partial-urls")); + + va_start (ap, as_url_policy); while ((arg = va_arg (ap, const gchar *))) g_ptr_array_add (args, g_strdup (arg)); g_ptr_array_add (args, NULL); @@ -3066,6 +3070,7 @@ builder_manifest_cleanup (BuilderManifest *self, flatpak_file_get_path_cached (icon_out)); const char *opt_mirror_screenshots_url = builder_context_get_opt_mirror_screenshots_url (context); gboolean opt_export_only = builder_context_get_opt_export_only (context); + BuilderAsUrlPolicy as_url_policy = builder_context_get_as_url_policy (context); if (opt_mirror_screenshots_url && !opt_export_only) { @@ -3077,6 +3082,7 @@ builder_manifest_cleanup (BuilderManifest *self, g_print ("Running appstreamcli compose\n"); g_print ("Saving screenshots in %s\n", flatpak_file_get_path_cached (media_dir)); if (!appstreamcli_compose (error, + as_url_policy, "--prefix=/", origin, arg_base_url, @@ -3093,6 +3099,7 @@ builder_manifest_cleanup (BuilderManifest *self, { g_print ("Running appstreamcli compose\n"); if (!appstreamcli_compose (error, + as_url_policy, "--prefix=/", origin, result_root_arg, From db166bc0fab06c9051ae575ef5f9f43b303a9ad9 Mon Sep 17 00:00:00 2001 From: bbhtt Date: Thu, 18 Sep 2025 20:12:29 +0530 Subject: [PATCH 3/4] ci: Run meson job on Ubuntu 24.04 as well --- .github/workflows/check.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index da15643d..f212cc71 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -74,14 +74,14 @@ jobs: run: make -j $(getconf _NPROCESSORS_ONLN) check-meson: - name: Ubuntu 22.04 meson build - runs-on: ubuntu-22.04 + name: Ubuntu meson build + runs-on: ${{ matrix.os }} strategy: matrix: + os: ['ubuntu-22.04', 'ubuntu-24.04'] compiler: ['gcc', 'clang'] env: - UBUNTU_VERSION: '22.04' CC: ${{ matrix.compiler }} BASE_CFLAGS: -Wp,-D_FORTIFY_SOURCE=2 BUILDDIR: builddir From badbc9c549662d750c71331ab1ae59ee9502c05a Mon Sep 17 00:00:00 2001 From: bbhtt Date: Thu, 18 Sep 2025 06:01:07 +0530 Subject: [PATCH 4/4] tests: Add a test for compose policy argument --- tests/Makefile.am.inc | 2 ++ tests/libtest.sh | 41 +++++++++++++++++++++++ tests/meson.build | 2 ++ tests/org.flatpak.appstream_media.json | 44 +++++++++++++++++++++++++ tests/org.test.Hello-256.png | Bin 0 -> 79285 bytes tests/test-builder.sh | 31 ++++++++++++++++- 6 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 tests/org.flatpak.appstream_media.json create mode 100644 tests/org.test.Hello-256.png diff --git a/tests/Makefile.am.inc b/tests/Makefile.am.inc index ff10308d..a16c74f3 100644 --- a/tests/Makefile.am.inc +++ b/tests/Makefile.am.inc @@ -61,6 +61,8 @@ dist_installed_test_data = \ tests/org.flatpak_builder.gui.desktop \ tests/org.flatpak_builder.gui.json \ tests/org.flatpak_builder.gui.metainfo.xml \ + tests/org.flatpak.appstream_media.json \ + tests/org.test.Hello-256.png \ $(NULL) installed_test_keyringdir = $(installed_testdir)/test-keyring diff --git a/tests/libtest.sh b/tests/libtest.sh index 3536e922..75c1f215 100644 --- a/tests/libtest.sh +++ b/tests/libtest.sh @@ -309,6 +309,47 @@ skip_without_python2 () { fi } +appstream_has_version () { + req_major=$1 + req_minor=$2 + req_micro=$3 + + maj=0; min=0; mic=0 + + out=$(appstreamcli --version 2>/dev/null) || return 1 + + while IFS= read -r line; do + case "$line" in + "AppStream library version:"* ) + ver=$(echo "$line" | awk '{print $4}') + ;; + "AppStream version:"* ) + ver=$(echo "$line" | awk '{print $3}') + ;; + * ) continue ;; + esac + + maj=$(echo "$ver" | cut -d. -f1) + min=$(echo "$ver" | cut -d. -f2) + mic=$(echo "$ver" | cut -d. -f3) + break + done <&2 || true if test -n "${TEST_SKIP_CLEANUP:-}"; then diff --git a/tests/meson.build b/tests/meson.build index 46c84fa9..373ed557 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -108,6 +108,8 @@ if get_option('installed_tests') 'org.flatpak_builder.gui.desktop', 'org.flatpak_builder.gui.json', 'org.flatpak_builder.gui.metainfo.xml', + 'org.flatpak.appstream_media.json', + 'org.test.Hello-256.png', install_dir: installed_testdir, install_mode: 'rw-r--r--', diff --git a/tests/org.flatpak.appstream_media.json b/tests/org.flatpak.appstream_media.json new file mode 100644 index 00000000..c9adf661 --- /dev/null +++ b/tests/org.flatpak.appstream_media.json @@ -0,0 +1,44 @@ +{ + "id": "org.flatpak.appstream_media", + "runtime": "org.test.Platform", + "sdk": "org.test.Sdk", + "rename-desktop-file": "org.flatpak_builder.gui.desktop", + "rename-appdata-file": "org.flatpak_builder.gui.metainfo.xml", + "rename-icon": "org.test.Hello-256", + "command": "hello", + "modules": [ + { + "name": "appstream_media", + "buildsystem": "simple", + "build-commands": [ + "mkdir -p ${FLATPAK_DEST}/bin ${FLATPAK_DEST}/share/metainfo ${FLATPAK_DEST}/share/applications", + "mkdir -p ${FLATPAK_DEST}/share/icons/hicolor/256x256/apps", + "cp -vf hello.sh ${FLATPAK_DEST}/bin/hello", + "cp -vf org.flatpak_builder.gui.metainfo.xml ${FLATPAK_DEST}/share/metainfo", + "cp -vf org.flatpak_builder.gui.desktop ${FLATPAK_DEST}/share/applications", + "cp -vf org.test.Hello-256.png ${FLATPAK_DEST}/share/icons/hicolor/256x256/apps" + ], + "sources": [ + { + "type": "script", + "dest-filename": "hello.sh", + "commands": [ + "echo \"Hello world, from a sandbox\"" + ] + }, + { + "type": "file", + "path": "org.flatpak_builder.gui.desktop" + }, + { + "type": "file", + "path": "org.flatpak_builder.gui.metainfo.xml" + }, + { + "type": "file", + "path": "org.test.Hello-256.png" + } + ] + } + ] +} diff --git a/tests/org.test.Hello-256.png b/tests/org.test.Hello-256.png new file mode 100644 index 0000000000000000000000000000000000000000..68473c5aa6db9f93a465bc4440e0b4108e762ba6 GIT binary patch literal 79285 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�ewuJ8|B;>z>@Ih!h;;kgQ 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 TrvJv600000NkvXXu0mjfA(Wxv literal 0 HcmV?d00001 diff --git a/tests/test-builder.sh b/tests/test-builder.sh index 8b22ac8a..0b29ef1f 100755 --- a/tests/test-builder.sh +++ b/tests/test-builder.sh @@ -23,7 +23,7 @@ set -euo pipefail skip_without_fuse -echo "1..8" +echo "1..10" setup_repo install_repo @@ -53,6 +53,8 @@ cp $(dirname $0)/org.flatpak_builder.gui.desktop . cp $(dirname $0)/org.flatpak_builder.gui.json . cp $(dirname $0)/org.flatpak_builder.gui.metainfo.xml . cp $(dirname $0)/org.test.Hello.png . +cp $(dirname $0)/org.test.Hello-256.png . +cp $(dirname $0)/org.flatpak.appstream_media.json . mkdir include1 cp $(dirname $0)/module1.json include1/ cp $(dirname $0)/module1.yaml include1/ @@ -144,3 +146,30 @@ ostree checkout --repo=$REPO/repo_sc -U screenshots/$(flatpak --default-arch) ou find outdir_sc -path "*/icons/64x64/org.test.Hello.png" -type f | grep -q . echo "ok screenshot ref commit" + +# test compose partial url policy +${FLATPAK_BUILDER} --force-clean builddir_sc \ + --mirror-screenshots-url=https://example.org/media \ + --state-dir .fp-compose-url-policy-partial \ + --compose-url-policy=partial \ + org.flatpak.appstream_media.json >&2 +# we test for the icon tag instead of screenshot +# the former works offline the latter does not +gzip -cdq builddir_sc/files/share/app-info/xmls/org.flatpak.appstream_media.xml.gz|grep -Eq '>org/flatpak/appstream_media/[^/]+/icons/128x128/org.flatpak.appstream_media.png' + +echo "ok compose partial url policy" + +# test compose full url policy +if appstream_has_version 0 16 3; then + ${FLATPAK_BUILDER} --force-clean builddir_sc \ + --mirror-screenshots-url=https://example.org/media \ + --state-dir .fp-compose-url-policy-full \ + --compose-url-policy=full \ + org.flatpak.appstream_media.json >&2 + + gzip -cdq builddir_sc/files/share/app-info/xmls/org.flatpak.appstream_media.xml.gz|grep -Eq '>https://example.org/media/org/flatpak/appstream_media/[^/]+/icons/128x128/org.flatpak.appstream_media.png' + + echo "ok compose full url policy" +else + echo "ok # Skip AppStream < 0.16.3" +fi