Subject: Re: bug#53040: [PATCH] gnu: bubblewrap: Update to 0.5.0.

From: [email-masked]
Date: Tue, 11 Jan 2022 22:46:40 +0100 (CET)

I rebased the patch onto today's Guix commits, and Flatpak 1.12.1 and 1.12.2 passes the tests on my machine. But I'm currently running Guix on Arch and don't have a Guix system available to test further.

All dependent packages except wpewebkit build successfully. wpewebkit build log complains during cmake configuration that a required package is not found, but it seems unrelated to bubblewrap, and it won't build on master anyways.

Jan 11, 2022, 17:52 by [email-masked]:

> Hi,
>
> [email-masked] skribis:
>
>> Fixed locale in tests, thanks Ludo for the suggestion via email. Also fixed more test substitutions and simplified inputs.
>>
> >>From f5c56100d62d315c3ed860898998a7c8afc78d50 Mon Sep 17 00:00:00 2001
>
>> From: kiasoc5 <[email-masked]>
>> Date: Mon, 10 Jan 2022 17:58:35 -0500
>> Subject: [PATCH] gnu: bubblewrap: Update to 0.5.0.
>>
>> * gnu/packages/patches/bubblewrap-fix-locale-in-tests.patch: Add it.
>> * gnu/local.mk (dist_patch_DATA): Add it.
>> * gnu/packages/virtualization.scm (bubblewrap): Update to 0.5.0.
>> [source]: Add patch.
>> [arguments]: Adjust test substitutions.
>> [inputs]: Remove labels.
>> [native-inputs]: Remove labels.
>>
>
> That LGTM.  I tested direct dependents as shown by:
>
> ./pre-inst-env guix graph -M1 -t reverse-package bubblewrap | xdot -f fdp -
>
> Unfortunately, the update breaks flatpak (both 1.12.1 and 1.12.2):
>
> --8<---------------cut here---------------start------------->8---
> make[3]: Nothing to be done for 'tests/org.flatpak.Authenticator.test.service.in'.
> rm -rf tests/runtime-repo
> PATH=/tmp/guix-build-flatpak-1.12.2.drv-0/flatpak-1.12.2:${PATH} ./tests/make-test-runtime.sh tests/runtime-repo org.test.Platform master "" ""
> guix
> error: Writing content object: min-free-space-percent '3%' would be exceeded, at least 36.9 kB requested
> make[3]: *** [Makefile:7804: tests/runtime-repo] Error 1
> make[3]: Leaving directory '/tmp/guix-build-flatpak-1.12.2.drv-0/flatpak-1.12.2'
> make[2]: *** [Makefile:7063: check-am] Error 2
> make[2]: Leaving directory '/tmp/guix-build-flatpak-1.12.2.drv-0/flatpak-1.12.2'
> make[1]: *** [Makefile:6255: check-recursive] Error 1
> make[1]: Leaving directory '/tmp/guix-build-flatpak-1.12.2.drv-0/flatpak-1.12.2'
> make: *** [Makefile:7067: check] Error 2
> error: in phase 'check': uncaught exception:
> %exception #<&invoke-error program: "make" arguments: ("check" "TESTS=tests/test-basic.sh tests/test-config.sh testcommon") exit-status: 2 term-signal: #f stop-signal: #f> 
> phase `check' failed after 17.2 seconds
> command "make" "check" "TESTS=tests/test-basic.sh tests/test-config.sh testcommon" failed with status 2
> --8<---------------cut here---------------end--------------->8---
>
> Could you take a look?
>
> Apologies for the extra work!
>
> Thanks,
> Ludo’.
>

>From dc1d48162f3d9fdc2647cbbd4ed2b8eb57eca08f Mon Sep 17 00:00:00 2001
From: kiasoc5 <[email-masked]>
Date: Mon, 10 Jan 2022 17:58:35 -0500
Subject: [PATCH] gnu: bubblewrap: Update to 0.5.0.

* gnu/packages/patches/bubblewrap-fix-locale-in-tests.patch: Add it.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/virtualization.scm (bubblewrap): Update to 0.5.0.
[source]: Add patch.
[arguments]: Adjust test substitutions.
[inputs]: Remove labels.
[native-inputs]: Remove labels.
---
 gnu/local.mk                                  |  1 +
 .../bubblewrap-fix-locale-in-tests.patch      | 34 +++++++++++++++++++
 gnu/packages/virtualization.scm               | 24 ++++++++-----
 3 files changed, 50 insertions(+), 9 deletions(-)
 create mode 100644 gnu/packages/patches/bubblewrap-fix-locale-in-tests.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 7c75a1043b..756caeea44 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -911,6 +911,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/binutils-mingw-w64-deterministic.patch	\
   %D%/packages/patches/bpftrace-disable-bfd-disasm.patch	\
   %D%/packages/patches/byobu-writable-status.patch		\
+  %D%/packages/patches/bubblewrap-fix-locale-in-tests.patch	\
   %D%/packages/patches/cabal-install-base16-bytestring1.0.patch		\
   %D%/packages/patches/cabal-install-ghc8.10.patch		\
   %D%/packages/patches/cairo-CVE-2018-19876.patch		\
diff --git a/gnu/packages/patches/bubblewrap-fix-locale-in-tests.patch b/gnu/packages/patches/bubblewrap-fix-locale-in-tests.patch
new file mode 100644
index 0000000000..bd5924ef87
--- /dev/null
+++ b/gnu/packages/patches/bubblewrap-fix-locale-in-tests.patch
@@ -0,0 +1,34 @@
+From 9282223de4b511aeda3b7d2caf3810a56a865710 Mon Sep 17 00:00:00 2001
+From: kiasoc5 <[email-masked]>
+Date: Mon, 10 Jan 2022 14:16:32 -0500
+Subject: [PATCH] Use C locale unconditionally for tests.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The ‘en_US.utf8’ locale is available. However, the ‘locale -a’ command won’t list it.
+---
+ tests/libtest-core.sh | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/tests/libtest-core.sh b/tests/libtest-core.sh
+index 9632e90..82951dd 100644
+--- a/tests/libtest-core.sh
++++ b/tests/libtest-core.sh
+@@ -41,12 +41,7 @@ assert_not_reached () {
+ #
+ # If we can't find the locale command assume we have support for C.UTF-8
+ # (e.g. musl based systems)
+-if type -p locale >/dev/null; then
+-    export LC_ALL=$(locale -a | grep -iEe '^(C|en_US)\.(UTF-8|utf8)$' | head -n1 || true)
+-    if [ -z "${LC_ALL}" ]; then fatal "Can't find suitable UTF-8 locale"; fi
+-else
+-    export LC_ALL=C.UTF-8
+-fi
++export LC_ALL=en_US.utf8
+ # A GNU extension, used whenever LC_ALL is not C
+ unset LANGUAGE
+ 
+-- 
+2.34.1
+
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 82cc02b738..cec1bce5f3 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -1926,7 +1926,7 @@ (define-public python-vagrant
 (define-public bubblewrap
   (package
     (name "bubblewrap")
-    (version "0.4.1")
+    (version "0.5.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/containers/bubblewrap/"
@@ -1934,7 +1934,8 @@ (define-public bubblewrap
                                   version ".tar.xz"))
               (sha256
                (base32
-                "00ycgi6q2yngh06bnz50wkvar6r2jnjf3j158grhi9k13jdrpimr"))))
+                "0608l2sjwhnb1c0mslah1h6yjvqr17wk60by6i710qwxg4rszz8n"))
+               (patches (search-patches "bubblewrap-fix-locale-in-tests.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -1950,7 +1951,9 @@ (define-public bubblewrap
                (substitute* "tests/test-run.sh"
                  (("/var/tmp") tmp-dir)
                  ;; Tests create a temporary python script, so fix its shebang.
-                 (("/usr/bin/env python") (which "python"))
+                 (("/usr/bin/env python3") (which "python3"))
+                 ;; Tests call /usr/bin/env, so fix its path.
+                 (("/usr/bin/env") (which "env"))
                  ;; Some tests try to access /usr, but that doesn't exist.
                  ;; Give them /gnu instead.
                  (("/usr") "/gnu")
@@ -1959,18 +1962,21 @@ (define-public bubblewrap
                  (("--ro-bind /lib /lib") "--ro-bind /gnu /lib")
                  (("  */bin/bash") (which "bash"))
                  (("/bin/sh") (which "sh"))
-                 (("findmnt") (which "findmnt"))))
+                 (("findmnt") (which "findmnt")))
+               (substitute* "tests/libtest.sh"
+                 (("/var/tmp") tmp-dir)
+                 (("/usr") "/gnu")
+                 (("--ro-bind /bin /bin") "--ro-bind /gnu /bin")
+                 (("--ro-bind /sbin /sbin") "--ro-bind /gnu /sbin")
+                 (("--ro-bind /lib /lib") "--ro-bind /gnu /lib")))
              #t))
          ;; Remove the directory we gave to tests to have a clean package.
          (add-after 'check 'remove-tmp-dir
            (lambda* (#:key outputs #:allow-other-keys)
              (delete-file-recursively (string-append (assoc-ref outputs "out") "/tmp"))
              #t)))))
-    (inputs
-     (list libcap))
-    (native-inputs
-     `(("python" ,python-wrapper)
-       ("util-linux" ,util-linux)))
+    (inputs (list libcap))
+    (native-inputs (list python-wrapper util-linux))
     (home-page "https://github.com/containers/bubblewrap")
     (synopsis "Unprivileged sandboxing tool")
     (description "Bubblewrap is aimed at running applications in a sandbox,

base-commit: 993bc8f06cc0662632618e49f6940d5036479c8b
-- 
2.34.1