[PATCH] gnu: flatpak: Fix icon validation

  • Open
  • quality assurance status badge
Details
One participant
  • vasilii.smirnov
Owner
unassigned
Submitted by
vasilii.smirnov
Severity
normal

Debbugs page

V
V
vasilii.smirnov wrote 5 days ago
(address . guix-patches@gnu.org)(name . Vasilii Smirnov)(address . vasilii.smirnov@mailbox.org)
7a4075b102949dc42d2acff1e4a948fe9a795cff.1736110687.git.vasilii.smirnov@mailbox.org
From: Vasilii Smirnov <vasilii.smirnov@mailbox.org>

* gnu/packages/package-management.scm (flatpak): Substitute a marker in
icon-validator/validate-icon.c for the store location.
* gnu/packages/patches/flatpak-fix-icon-validation.patch: Bind the guix
store during flatpak-validate-icon invocation in sandbox mode, along
with a few environment variables necessary for image format detection.

This fixes the "No such file or directory" error when invoking
flatpak-validate-icon with the --sandbox argument.

Change-Id: I15dfdd0ecadc57ed383e2985c1c3caa36be4a1de
---
gnu/packages/package-management.scm | 7 ++++
.../patches/flatpak-fix-icon-validation.patch | 34 +++++++++++++++++++
2 files changed, 41 insertions(+)
create mode 100644 gnu/packages/patches/flatpak-fix-icon-validation.patch

Toggle diff (67 lines)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index a8b95f450a..663965367c 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -2032,6 +2032,7 @@ (define-public flatpak
(patches
(search-patches "flatpak-fix-fonts-icons.patch"
"flatpak-fix-path.patch"
+ "flatpak-fix-icon-validation.patch"
"flatpak-unset-gdk-pixbuf-for-sandbox.patch"))))

;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to
@@ -2078,6 +2079,12 @@ (define-public flatpak
(("if \\(g_find_program_in_path \\(\"p11-kit\"\\)\\)")
(string-append "if (g_find_program_in_path (\""
p11-path "\"))"))))))
+ (add-after 'unpack 'fix-icon-validation
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (store (dirname out)))
+ (substitute* "icon-validator/validate-icon.c"
+ (("@storeDir@") store)))))
;; Many tests fail for unknown reasons, so we just run a few basic
;; tests.
(replace 'check
diff --git a/gnu/packages/patches/flatpak-fix-icon-validation.patch b/gnu/packages/patches/flatpak-fix-icon-validation.patch
new file mode 100644
index 0000000000..f55f43cf81
--- /dev/null
+++ b/gnu/packages/patches/flatpak-fix-icon-validation.patch
@@ -0,0 +1,34 @@
+diff --git a/icon-validator/validate-icon.c b/icon-validator/validate-icon.c
+index 6c3d152..0d70e55 100644
+--- a/icon-validator/validate-icon.c
++++ b/icon-validator/validate-icon.c
+@@ -163,7 +163,7 @@ rerun_in_sandbox (const char *arg_width,
+ const char *arg_height,
+ const char *filename)
+ {
+- const char * const usrmerged_dirs[] = { "bin", "lib32", "lib64", "lib", "sbin" };
++ const char * const usrmerged_dirs[] = { };
+ int i;
+ g_autoptr(GPtrArray) args = g_ptr_array_new_with_free_func (g_free);
+ char validate_icon[PATH_MAX + 1];
+@@ -183,8 +183,7 @@ rerun_in_sandbox (const char *arg_width,
+ "--unshare-ipc",
+ "--unshare-net",
+ "--unshare-pid",
+- "--ro-bind", "/usr", "/usr",
+- "--ro-bind-try", "/etc/ld.so.cache", "/etc/ld.so.cache",
++ "--ro-bind", "@storeDir@", "@storeDir@",
+ "--ro-bind", validate_icon, validate_icon,
+ NULL);
+
+@@ -227,6 +226,10 @@ rerun_in_sandbox (const char *arg_width,
+ add_args (args, "--setenv", "G_MESSAGES_DEBUG", g_getenv ("G_MESSAGES_DEBUG"), NULL);
+ if (g_getenv ("G_MESSAGES_PREFIXED"))
+ add_args (args, "--setenv", "G_MESSAGES_PREFIXED", g_getenv ("G_MESSAGES_PREFIXED"), NULL);
++ if (g_getenv ("GDK_PIXBUF_MODULE_FILE"))
++ add_args (args, "--setenv", "GDK_PIXBUF_MODULE_FILE", g_getenv ("GDK_PIXBUF_MODULE_FILE"), NULL);
++ if (g_getenv ("XDG_DATA_DIRS"))
++ add_args (args, "--setenv", "XDG_DATA_DIRS", g_getenv ("XDG_DATA_DIRS"), NULL);
+
+ add_args (args, validate_icon, arg_width, arg_height, filename, NULL);
+ g_ptr_array_add (args, NULL);

base-commit: b8858d8b1344525d0d7ac78d8fb9dc1a577b85d3
--
2.46.0
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 75396@patchwise.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 75396
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch