mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-01-18 13:36:36 +01:00
gnu: flatpak: Fix icon validation.
* 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. Change-Id: I15dfdd0ecadc57ed383e2985c1c3caa36be4a1de Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
59646be903
commit
e42c9da557
3 changed files with 45 additions and 0 deletions
|
@ -1290,6 +1290,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/flann-cmake-3.11.patch \
|
||||
%D%/packages/patches/flatpak-fix-path.patch \
|
||||
%D%/packages/patches/flatpak-fix-fonts-icons.patch \
|
||||
%D%/packages/patches/flatpak-fix-icon-validation.patch \
|
||||
%D%/packages/patches/flatpak-unset-gdk-pixbuf-for-sandbox.patch \
|
||||
%D%/packages/patches/fluxbox-1.3.7-no-dynamic-cursor.patch \
|
||||
%D%/packages/patches/fluxbox-1.3.7-gcc.patch \
|
||||
|
|
|
@ -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
|
||||
|
|
37
gnu/packages/patches/flatpak-fix-icon-validation.patch
Normal file
37
gnu/packages/patches/flatpak-fix-icon-validation.patch
Normal file
|
@ -0,0 +1,37 @@
|
|||
This fixes the "No such file or directory" error when invoking
|
||||
flatpak-validate-icon with the --sandbox argument.
|
||||
|
||||
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);
|
Loading…
Reference in a new issue