GNU bug report logs - #62640
[PATCH] gnu: Add pmbootstrap.

Previous Next

Package: guix-patches;

Reported by: Sughosha <Sughosha <at> proton.me>

Date: Mon, 3 Apr 2023 08:19:01 UTC

Severity: normal

Tags: patch

Merged with 49577

Done: Danny Milosavljevic <dannym <at> friendly-machines.com>

To reply to this bug, email your comments to 62640 AT debbugs.gnu.org.
There is no need to reopen the bug first.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#62640; Package guix-patches. (Mon, 03 Apr 2023 08:19:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Sughosha <Sughosha <at> proton.me>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Mon, 03 Apr 2023 08:19:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Sughosha <Sughosha <at> proton.me>
To: "guix-patches <at> gnu.org" <guix-patches <at> gnu.org>
Subject: [PATCH] gnu: Add pmbootstrap.
Date: Mon, 03 Apr 2023 08:17:50 +0000
* gnu/packages/postmarketos.scm: New file.
(pmbootstrap): New public variable.
* gnu/packages/local.mk (GNU_SYSTEM_MODULES): Add the new file.
---
 gnu/local.mk                  |  1 +
 gnu/packages/postmarketos.scm | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 69 insertions(+)
 create mode 100644 gnu/packages/postmarketos.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 186d82a..92848b2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -502,6 +502,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/poedit.scm				\
   %D%/packages/polkit.scm			\
   %D%/packages/popt.scm				\
+  %D%/packages/postmarketos			\
   %D%/packages/printers.scm			\
   %D%/packages/profiling.scm			\
   %D%/packages/prolog.scm			\
diff --git a/gnu/packages/postmarketos.scm b/gnu/packages/postmarketos.scm
new file mode 100644
index 0000000..9de45ec
--- /dev/null
+++ b/gnu/packages/postmarketos.scm
@@ -0,0 +1,68 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Sughosha <sughosha <at> proton.me>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages postmarketos)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control))
+
+(define-public pmbootstrap
+  (package
+    (name "pmbootstrap")
+    (version "1.51.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pmbootstrap" version))
+              (sha256
+               (base32
+                "08g55fh24n3wpva7d1ps6fnk65ik49wfycjpwrjs9w0889zlwsl1"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f
+       #:phases (modify-phases %standard-phases
+                  (replace 'wrap
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (wrap-program (string-append (assoc-ref outputs "out")
+                                                   "/bin/pmbootstrap")
+                        `("PATH" = ("/run/setuid-programs" ,(getenv "PATH")))
+                        `("GUIX_PYTHONPATH" =
+                          (,(getenv "GUIX_PYTHONPATH"))))))
+                  ;; Dissociate "sudo" as setuid-programs is preferred
+                  (add-after 'sanity-check 'dissociate-sudo
+                    (lambda* (#:key outputs inputs #:allow-other-keys)
+                      (let ((out (assoc-ref outputs "out"))
+                            (sudo (assoc-ref inputs "sudo")))
+                        (substitute* (string-append out "/bin/pmbootstrap")
+                          (((string-append ":" sudo "/sbin"))
+                           "")
+                          (((string-append ":" sudo "/bin"))
+                           ""))))))))
+    (native-inputs (list sudo))
+    (inputs (list bash-minimal git openssl procps))
+    (home-page "https://git.sr.ht/~postmarketos/pmbootstrap")
+    (synopsis "Bootstrap a postmarketOS system")
+    (description
+     "This package provides a sophisticated chroot / build / flash tool to
+     develop and install postmarketOS.")
+    (license license:gpl3+)))
--
libgit2 1.5.1





Information forwarded to guix-patches <at> gnu.org:
bug#62640; Package guix-patches. (Mon, 03 Apr 2023 08:26:02 GMT) Full text and rfc822 format available.

Message #8 received at 62640 <at> debbugs.gnu.org (full text, mbox):

From: Sughosha <Sughosha <at> proton.me>
To: "62640 <at> debbugs.gnu.org" <62640 <at> debbugs.gnu.org>
Subject: [PATCH v2] gnu: Add pmbootstrap.
Date: Mon, 03 Apr 2023 08:24:37 +0000
* gnu/packages/postmarketos.scm: New file.
(pmbootstrap): New public variable.
* gnu/packages/local.mk (GNU_SYSTEM_MODULES): Add the new file.
---
 gnu/local.mk                  |  1 +
 gnu/packages/postmarketos.scm | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 69 insertions(+)
 create mode 100644 gnu/packages/postmarketos.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 186d82a..12e5f68 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -502,6 +502,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/poedit.scm				\
   %D%/packages/polkit.scm			\
   %D%/packages/popt.scm				\
+  %D%/packages/postmarketos.scm			\
   %D%/packages/printers.scm			\
   %D%/packages/profiling.scm			\
   %D%/packages/prolog.scm			\
diff --git a/gnu/packages/postmarketos.scm b/gnu/packages/postmarketos.scm
new file mode 100644
index 0000000..9de45ec
--- /dev/null
+++ b/gnu/packages/postmarketos.scm
@@ -0,0 +1,68 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Sughosha <sughosha <at> proton.me>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages postmarketos)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control))
+
+(define-public pmbootstrap
+  (package
+    (name "pmbootstrap")
+    (version "1.51.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pmbootstrap" version))
+              (sha256
+               (base32
+                "08g55fh24n3wpva7d1ps6fnk65ik49wfycjpwrjs9w0889zlwsl1"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f
+       #:phases (modify-phases %standard-phases
+                  (replace 'wrap
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (wrap-program (string-append (assoc-ref outputs "out")
+                                                   "/bin/pmbootstrap")
+                        `("PATH" = ("/run/setuid-programs" ,(getenv "PATH")))
+                        `("GUIX_PYTHONPATH" =
+                          (,(getenv "GUIX_PYTHONPATH"))))))
+                  ;; Dissociate "sudo" as setuid-programs is preferred
+                  (add-after 'sanity-check 'dissociate-sudo
+                    (lambda* (#:key outputs inputs #:allow-other-keys)
+                      (let ((out (assoc-ref outputs "out"))
+                            (sudo (assoc-ref inputs "sudo")))
+                        (substitute* (string-append out "/bin/pmbootstrap")
+                          (((string-append ":" sudo "/sbin"))
+                           "")
+                          (((string-append ":" sudo "/bin"))
+                           ""))))))))
+    (native-inputs (list sudo))
+    (inputs (list bash-minimal git openssl procps))
+    (home-page "https://git.sr.ht/~postmarketos/pmbootstrap")
+    (synopsis "Bootstrap a postmarketOS system")
+    (description
+     "This package provides a sophisticated chroot / build / flash tool to
+     develop and install postmarketOS.")
+    (license license:gpl3+)))
--
libgit2 1.5.1





Information forwarded to guix-patches <at> gnu.org:
bug#62640; Package guix-patches. (Mon, 19 May 2025 11:44:02 GMT) Full text and rfc822 format available.

Message #11 received at 62640 <at> debbugs.gnu.org (full text, mbox):

From: Herman Rimm <herman <at> rimm.ee>
To: 62640 <at> debbugs.gnu.org
Cc: Sughosha <Sughosha <at> proton.me>
Subject: [PATCH v3] gnu: Add pmbootstrap.
Date: Mon, 19 May 2025 13:42:13 +0200
From: Sughosha <Sughosha <at> proton.me>

* gnu/packages/postmarketos.scm: New file.
* gnu/packages/local.mk (GNU_SYSTEM_MODULES): Register file.

Change-Id: Ib8347dd536738d2ea16a961c85308a0e43b98c1f
---
Hello,

For v3:
version is bumped to 3.4.0;
source uses git-fetch;
three tests are skipped;
mkbootimg, python-setuptools, python-wheel and util-linux are added to
native-inputs;
multipath-tools is added to propagated-inputs.

pmbootstrap uses kpartx from multipath-tools for e.g.:
$ pmbootstrap install --sdcard /dev/sda
If the kpartx invocations could be replaced with a store path,
then multipath-tools could be moved to (normal) inputs.

Cheers,
Herman

 gnu/local.mk                  |  3 +-
 gnu/packages/postmarketos.scm | 71 +++++++++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/postmarketos.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 3730d272eae..c4d5e6cb2e4 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -566,7 +566,8 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/poedit.scm				\
   %D%/packages/polkit.scm			\
   %D%/packages/popt.scm				\
-  %D%/packages/potassco.scm				\
+  %D%/packages/postmarketos.scm			\
+  %D%/packages/potassco.scm			\
   %D%/packages/power.scm			\
   %D%/packages/printers.scm			\
   %D%/packages/profiling.scm			\
diff --git a/gnu/packages/postmarketos.scm b/gnu/packages/postmarketos.scm
new file mode 100644
index 00000000000..78e95fcbb5d
--- /dev/null
+++ b/gnu/packages/postmarketos.scm
@@ -0,0 +1,71 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Sughosha <sughosha <at> proton.me>
+;;; Copyright © 2025 Herman Rimm <herman <at> rimm.ee>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages postmarketos)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages android)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages python-build)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
+  #:use-module (guix build-system pyproject)
+  #:use-module (guix gexp)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages))
+
+(define-public pmbootstrap
+  (package
+    (name "pmbootstrap")
+    (version "3.4.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url (string-append "https://gitlab.postmarketos.org/"
+                                  "postmarketOS/pmbootstrap"))
+              (commit version)))
+       (sha256
+        (base32 "16naj8ykipbrs2a93zaxci1wl045cc9jn7rq8sy76d1rqlqb9mmw"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list #:test-flags
+           ;; Tests require a pmaports git repository in the workdir.
+           #~(list (string-append "--deselect=test/core/test_pkgrepo.py"
+                                  "::test_pkgrepo_pmaports")
+                   (string-append "--deselect=test/parse/test_bootimg.py"
+                                  "::test_bootimg")
+                   ;; RuntimeError: No package repositories specified?
+                   (string-append "--deselect=test/parse/test_deviceinfo.py"
+                                  "::test_random_valid_deviceinfos"))))
+    (native-inputs (list mkbootimg
+                         python-pytest
+                         python-setuptools
+                         python-wheel
+                         util-linux)) ; for losetup
+    (inputs (list bash-minimal git openssl procps))
+    (propagated-inputs (list multipath-tools)) ; for kpartx
+    (home-page "https://gitlab.com/postmarketOS/pmbootstrap")
+    (synopsis "Bootstrap a postmarketOS system")
+    (description
+     "This package provides a sophisticated chroot, build and flash tool
+to develop and install postmarketOS.")
+    (license license:gpl3+)))

base-commit: 450a361532573a02389530a6a80b7821683ed41b
-- 
2.47.1





Information forwarded to guix-patches <at> gnu.org:
bug#62640; Package guix-patches. (Fri, 23 May 2025 18:42:02 GMT) Full text and rfc822 format available.

Message #14 received at 62640 <at> debbugs.gnu.org (full text, mbox):

From: André Batista <nandre <at> riseup.net>
To: Herman Rimm <herman <at> rimm.ee>
Cc: Sughosha <Sughosha <at> proton.me>, 62640 <at> debbugs.gnu.org
Subject: Re: [bug#62640] [PATCH v3] gnu: Add pmbootstrap.
Date: Fri, 23 May 2025 15:41:18 -0300
Hi Herman,

seg 19 mai 2025 às 13:42:13 (1747672933), guix-patches <at> gnu.org enviou:
> From: Sughosha <Sughosha <at> proton.me>
> 
> * gnu/packages/postmarketos.scm: New file.
> * gnu/packages/local.mk (GNU_SYSTEM_MODULES): Register file.
> 
> Change-Id: Ib8347dd536738d2ea16a961c85308a0e43b98c1f
> ---
> Hello,
> 
> For v3:
> version is bumped to 3.4.0;
> source uses git-fetch;
> three tests are skipped;
> mkbootimg, python-setuptools, python-wheel and util-linux are added to
> native-inputs;
> multipath-tools is added to propagated-inputs.
> 
> pmbootstrap uses kpartx from multipath-tools for e.g.:
> $ pmbootstrap install --sdcard /dev/sda
> If the kpartx invocations could be replaced with a store path,
> then multipath-tools could be moved to (normal) inputs.
> 
> Cheers,
> Herman
> 
>  gnu/local.mk                  |  3 +-
>  gnu/packages/postmarketos.scm | 71 +++++++++++++++++++++++++++++++++++
>  2 files changed, 73 insertions(+), 1 deletion(-)
>  create mode 100644 gnu/packages/postmarketos.scm
> 
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 3730d272eae..c4d5e6cb2e4 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -566,7 +566,8 @@ GNU_SYSTEM_MODULES =				\
>    %D%/packages/poedit.scm				\
>    %D%/packages/polkit.scm			\
>    %D%/packages/popt.scm				\
> -  %D%/packages/potassco.scm				\
> +  %D%/packages/postmarketos.scm			\
> +  %D%/packages/potassco.scm			\

IMO, it would be better if you did not touch the potassco.scm line, since
this format change is unrelated to this commit.

>    %D%/packages/power.scm			\
>    %D%/packages/printers.scm			\
>    %D%/packages/profiling.scm			\
> diff --git a/gnu/packages/postmarketos.scm b/gnu/packages/postmarketos.scm
> new file mode 100644
> index 00000000000..78e95fcbb5d
> --- /dev/null
> +++ b/gnu/packages/postmarketos.scm
> @@ -0,0 +1,71 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2023 Sughosha <sughosha <at> proton.me>
> +;;; Copyright © 2025 Herman Rimm <herman <at> rimm.ee>
> +;;;
> +;;; This file is part of GNU Guix.
> +;;;
> +;;; GNU Guix is free software; you can redistribute it and/or modify it
> +;;; under the terms of the GNU General Public License as published by
> +;;; the Free Software Foundation; either version 3 of the License, or (at
> +;;; your option) any later version.
> +;;;
> +;;; GNU Guix is distributed in the hope that it will be useful, but
> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of
> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +;;; GNU General Public License for more details.
> +;;;
> +;;; You should have received a copy of the GNU General Public License
> +;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
> +
> +(define-module (gnu packages postmarketos)
> +  #:use-module (gnu packages admin)
> +  #:use-module (gnu packages android)
> +  #:use-module (gnu packages bash)
> +  #:use-module (gnu packages check)
> +  #:use-module (gnu packages linux)
> +  #:use-module (gnu packages python-build)
> +  #:use-module (gnu packages tls)
> +  #:use-module (gnu packages version-control)
> +  #:use-module (guix build-system pyproject)
> +  #:use-module (guix gexp)
> +  #:use-module (guix git-download)
> +  #:use-module ((guix licenses) #:prefix license:)
> +  #:use-module (guix packages))
> +
> +(define-public pmbootstrap
> +  (package
> +    (name "pmbootstrap")
> +    (version "3.4.0")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +              (url (string-append "https://gitlab.postmarketos.org/"
> +                                  "postmarketOS/pmbootstrap"))
> +              (commit version)))

'origin' is missing a file-name field which usually goes:
 (file-name (git-file-name name version))

> +       (sha256
> +        (base32 "16naj8ykipbrs2a93zaxci1wl045cc9jn7rq8sy76d1rqlqb9mmw"))))
> +    (build-system pyproject-build-system)
> +    (arguments
> +     (list #:test-flags
> +           ;; Tests require a pmaports git repository in the workdir.
> +           #~(list (string-append "--deselect=test/core/test_pkgrepo.py"
> +                                  "::test_pkgrepo_pmaports")

This is a nitpick of mine, but I find it confusing when keys starting
with '#' are followed by their arguments on another aligned line which
also starts with '#' (a gexp this time, not another key). So, I'd suggest
indenting the arguments with two spaces to ease reading.

Also, I would also have inserted this package directly on android.scm,
since this tool is useful for android related activities and it seems
overkill to create a new file for just one package.

WDYT?

Thanks for picking up this patch!




Information forwarded to guix-patches <at> gnu.org:
bug#62640; Package guix-patches. (Sat, 24 May 2025 13:02:02 GMT) Full text and rfc822 format available.

Message #17 received at 62640 <at> debbugs.gnu.org (full text, mbox):

From: Herman Rimm <herman <at> rimm.ee>
To: André Batista <nandre <at> riseup.net>
Cc: Sughosha <Sughosha <at> proton.me>, 62640 <at> debbugs.gnu.org
Subject: Re: [bug#62640] [PATCH v3] gnu: Add pmbootstrap.
Date: Sat, 24 May 2025 14:59:48 +0200
Hi,

On Fri, May 23, 2025 at 03:41:18PM -0300, Andr� Batista wrote:
> > diff --git a/gnu/local.mk b/gnu/local.mk
> > index 3730d272eae..c4d5e6cb2e4 100644
> > --- a/gnu/local.mk
> > +++ b/gnu/local.mk
> > @@ -566,7 +566,8 @@ GNU_SYSTEM_MODULES =				\
> >    %D%/packages/poedit.scm				\
> >    %D%/packages/polkit.scm			\
> >    %D%/packages/popt.scm				\
> > -  %D%/packages/potassco.scm				\
> > +  %D%/packages/postmarketos.scm			\
> > +  %D%/packages/potassco.scm			\
> 
> IMO, it would be better if you did not touch the potassco.scm line, since
> this format change is unrelated to this commit.
> 
> > +(define-public pmbootstrap
> > +  (package
> > +    (name "pmbootstrap")
> > +    (version "3.4.0")
> > +    (source
> > +     (origin
> > +       (method git-fetch)
> > +       (uri (git-reference
> > +              (url (string-append "https://gitlab.postmarketos.org/"
> > +                                  "postmarketOS/pmbootstrap"))
> > +              (commit version)))
> 
> 'origin' is missing a file-name field which usually goes:
>  (file-name (git-file-name name version))

Thanks, I will make the appropriate changes for the next revision.  I
will also add a wrap phase so pmbootstrap can find the inputs' binaries.

> > +       (sha256
> > +        (base32 "16naj8ykipbrs2a93zaxci1wl045cc9jn7rq8sy76d1rqlqb9mmw"))))
> > +    (build-system pyproject-build-system)
> > +    (arguments
> > +     (list #:test-flags
> > +           ;; Tests require a pmaports git repository in the workdir.
> > +           #~(list (string-append "--deselect=test/core/test_pkgrepo.py"
> > +                                  "::test_pkgrepo_pmaports")
> 
> This is a nitpick of mine, but I find it confusing when keys starting
> with '#' are followed by their arguments on another aligned line which
> also starts with '#' (a gexp this time, not another key). So, I'd suggest
> indenting the arguments with two spaces to ease reading.

Like this?

(arguments
 (list #:test-flags
         ;; Tests require a pmaports git repository in the workdir.
         #~(list (string-append "--deselect=test/core/test_pkgrepo.py"
                                ...))))

I would rather do it like this:

(arguments
 (list
   ;; The first two tests require a pmaports git repository in the workdir.
   #:test-flags #~(list (string-append "--deselect=test/core/test_pkgrepo"
                                       ...))))

> Also, I would also have inserted this package directly on android.scm,
> since this tool is useful for android related activities and it seems
> overkill to create a new file for just one package.

Besides handling the Android bootimg format, I don't think pmbootstrap
is Android related.  Yes, the only other major PostmarketOS project is
pmaports, but I don't think there is an existing module where
pmbootstrap belongs.  Should it be a more general module like: (gnu
packages smartphone)?

Can you please close or merge issue #49577, because the PyPi pmbootstrap
releases are apparently deprecated?

Cheers,
Herman




Information forwarded to guix-patches <at> gnu.org:
bug#62640; Package guix-patches. (Sat, 24 May 2025 16:27:01 GMT) Full text and rfc822 format available.

Message #20 received at 62640 <at> debbugs.gnu.org (full text, mbox):

From: André Batista <nandre <at> riseup.net>
To: Herman Rimm <herman <at> rimm.ee>
Cc: Sughosha <Sughosha <at> proton.me>, control <at> debbugs.gnu.org,
 62640 <at> debbugs.gnu.org
Subject: Re: [bug#62640] [PATCH v3] gnu: Add pmbootstrap.
Date: Sat, 24 May 2025 13:26:17 -0300
merge 62640 49577
quit

sáb 24 mai 2025 às 14:59:48 (1748109588), herman <at> rimm.ee enviou:
> (...)
> 
> > > +       (sha256
> > > +        (base32 "16naj8ykipbrs2a93zaxci1wl045cc9jn7rq8sy76d1rqlqb9mmw"))))
> > > +    (build-system pyproject-build-system)
> > > +    (arguments
> > > +     (list #:test-flags
> > > +           ;; Tests require a pmaports git repository in the workdir.
> > > +           #~(list (string-append "--deselect=test/core/test_pkgrepo.py"
> > > +                                  "::test_pkgrepo_pmaports")
> > 
> > This is a nitpick of mine, but I find it confusing when keys starting
> > with '#' are followed by their arguments on another aligned line which
> > also starts with '#' (a gexp this time, not another key). So, I'd suggest
> > indenting the arguments with two spaces to ease reading.
> 
> Like this?
> 
> (arguments
>  (list #:test-flags
>          ;; Tests require a pmaports git repository in the workdir.
>          #~(list (string-append "--deselect=test/core/test_pkgrepo.py"
>                                 ...))))
> 

Precisely.

> I would rather do it like this:
> 
> (arguments
>  (list
>    ;; The first two tests require a pmaports git repository in the workdir.
>    #:test-flags #~(list (string-append "--deselect=test/core/test_pkgrepo"
>                                        ...))))
> 

This would be even better, IMO.  But after reviewing some files, I think
this is just my personal take on it, not a guix standard.  So your patch,
your take.

> > Also, I would also have inserted this package directly on android.scm,
> > since this tool is useful for android related activities and it seems
> > overkill to create a new file for just one package.
> 
> Besides handling the Android bootimg format, I don't think pmbootstrap
> is Android related.  Yes, the only other major PostmarketOS project is
> pmaports, but I don't think there is an existing module where
> pmbootstrap belongs.  Should it be a more general module like: (gnu
> packages smartphone)?
>

Makes sense.  The only time I've used pmbootstrap was for analysing
android images, so I've given this functionality undue primacy.  I guess
we may keep it as is for now and move it elsewhere on a separate commit
if others see fit.
 
> Can you please close or merge issue #49577, because the PyPi pmbootstrap
> releases are apparently deprecated?
> 

You may also do it by sending a mail to control <at> debbugs.gnu.org, as
I've done here.  There's no special priviledge to it.  See:

https://debbugs.gnu.org/server-control.html

Note: I'm not a commiter, I'm just trying to help this patch get through
by helping commiters with the review and giving it more visibility.

Thanks!




Merged 49577 62640. Request was from André Batista <nandre <at> riseup.net> to control <at> debbugs.gnu.org. (Sat, 24 May 2025 16:27:02 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#62640; Package guix-patches. (Sat, 24 May 2025 16:54:01 GMT) Full text and rfc822 format available.

Message #25 received at 62640 <at> debbugs.gnu.org (full text, mbox):

From: Herman Rimm <herman <at> rimm.ee>
To: 62640 <at> debbugs.gnu.org
Cc: Sughosha <Sughosha <at> proton.me>
Subject: [PATCH] gnu: Add pmbootstrap.
Date: Sat, 24 May 2025 18:52:18 +0200
From: Sughosha <Sughosha <at> proton.me>

* gnu/packages/postmarketos.scm: New file.
* gnu/packages/local.mk (GNU_SYSTEM_MODULES): Register file.

Change-Id: Ib8347dd536738d2ea16a961c85308a0e43b98c1f
---
 gnu/local.mk                  |   1 +
 gnu/packages/postmarketos.scm | 107 ++++++++++++++++++++++++++++++++++
 2 files changed, 108 insertions(+)
 create mode 100644 gnu/packages/postmarketos.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 3730d272eae..a884110d381 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -566,6 +566,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/poedit.scm				\
   %D%/packages/polkit.scm			\
   %D%/packages/popt.scm				\
+  %D%/packages/postmarketos.scm			\
   %D%/packages/potassco.scm				\
   %D%/packages/power.scm			\
   %D%/packages/printers.scm			\
diff --git a/gnu/packages/postmarketos.scm b/gnu/packages/postmarketos.scm
new file mode 100644
index 00000000000..43e8caf2c80
--- /dev/null
+++ b/gnu/packages/postmarketos.scm
@@ -0,0 +1,107 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Sughosha <sughosha <at> proton.me>
+;;; Copyright © 2025 Herman Rimm <herman <at> rimm.ee>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages postmarketos)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages android)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages python-build)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
+  #:use-module (guix build-system pyproject)
+  #:use-module (guix gexp)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (ice-9 match))
+
+(define-public pmbootstrap
+  (package
+    (name "pmbootstrap")
+    (version "3.4.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url (string-append "https://gitlab.postmarketos.org/"
+                                  "postmarketOS/pmbootstrap.git"))
+              (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "16naj8ykipbrs2a93zaxci1wl045cc9jn7rq8sy76d1rqlqb9mmw"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+       #:modules `((guix build pyproject-build-system)
+                   (guix build utils)
+                   (ice-9 match))
+       #:phases #~(modify-phases %standard-phases
+                    (add-after 'unpack 'set-sudo
+                      (lambda _
+                        (substitute* "pmb/config/sudo.py"
+                          (("sudo\"") "/run/privileged/bin/sudo\""))))
+                    (add-after 'wrap 'wrap-required-programs
+                      (lambda* (#:key inputs outputs #:allow-other-keys)
+                        (wrap-program (string-append (assoc-ref outputs "out")
+                                                     "/bin/pmbootstrap")
+                          `("PATH" ":" prefix
+                            ,(map (match-lambda
+                                    ((input directory)
+                                     (string-append (assoc-ref inputs input)
+                                                    "/" directory)))
+                                  '(("bash"            "bin")
+                                    ("coreutils"       "bin")
+                                    ("git"             "bin")
+                                    ("openssl"         "bin")
+                                    ("procps"          "bin")
+                                    ("multipath-tools" "sbin")
+                                    ("tar"             "bin")
+                                    ("util-linux"      "bin")
+                                    ("util-linux"      "sbin"))))))))
+       ;; The first two tests require a pmaports git repository in the workdir.
+       #:test-flags #~(list (string-append "--deselect=test/core/test_pkgrepo"
+                                           ".py::test_pkgrepo_pmaports")
+                            (string-append "--deselect=test/parse/test_bootimg"
+                                           ".py::test_bootimg")
+                            ;; RuntimeError: No package repositories specified?
+                            (string-append "--deselect=test/parse/"
+                                           "test_deviceinfo.py::"
+                                           "test_random_valid_deviceinfos"))))
+    (native-inputs (list mkbootimg
+                         python-pytest
+                         python-setuptools
+                         python-wheel
+                         util-linux)) ; for losetup
+    (inputs (list bash-minimal
+                  coreutils
+                  git
+                  multipath-tools
+                  openssl
+                  procps
+                  tar
+                  util-linux))
+    (home-page "https://gitlab.com/postmarketOS/pmbootstrap")
+    (synopsis "Bootstrap a postmarketOS system")
+    (description
+     "This package provides a sophisticated chroot, build and flash tool
+to develop and install postmarketOS.")
+    (license license:gpl3+)))

base-commit: 096dedd0bb13523002c814b001429c2f65b6f10d
-- 
2.47.1





Information forwarded to guix-patches <at> gnu.org:
bug#62640; Package guix-patches. (Thu, 29 May 2025 19:40:02 GMT) Full text and rfc822 format available.

Message #28 received at 62640 <at> debbugs.gnu.org (full text, mbox):

From: André Batista <nandre <at> riseup.net>
To: Herman Rimm <herman <at> rimm.ee>
Cc: Sughosha <Sughosha <at> proton.me>, 62640 <at> debbugs.gnu.org
Subject: Re: [bug#62640] [PATCH] gnu: Add pmbootstrap.
Date: Thu, 29 May 2025 16:39:37 -0300
Quite a lot of improvements!

sáb 24 mai 2025 às 18:52:18 (1748123538), guix-patches <at> gnu.org enviou:
> (...)
> +    (arguments
> +     (list
> +       #:modules `((guix build pyproject-build-system)
> +                   (guix build utils)
> +                   (ice-9 match))
> +       #:phases #~(modify-phases %standard-phases
> +                    (add-after 'unpack 'set-sudo
> +                      (lambda _
> +                        (substitute* "pmb/config/sudo.py"
> +                          (("sudo\"") "/run/privileged/bin/sudo\""))))
> +                    (add-after 'wrap 'wrap-required-programs
> +                      (lambda* (#:key inputs outputs #:allow-other-keys)
> +                        (wrap-program (string-append (assoc-ref outputs "out")
> +                                                     "/bin/pmbootstrap")
> +                          `("PATH" ":" prefix
> +                            ,(map (match-lambda
> +                                    ((input directory)
> +                                     (string-append (assoc-ref inputs input)

Even though this is fine, maintainers have been favoring the usage of
'this-package-inputs' and related functions that improve code semantics
and readability.  The same goes for gexps in place for the usual quote
unquote dance.  See:

<https://guix.gnu.org/en/blog/2021/the-big-change> and
<https://lists.gnu.org/archive/html/guix-commits/2022-09/msg00511.html>

Also, a bit above, instead of 'assoc-ref outputs "out"', you may use
 #$output.

Incidentally, the first link shows that I was really in the wrong as
to the indentation comments in the previous mail.

> +                                                    "/" directory)))
> +                                  '(("bash"            "bin")
> +                                    ("coreutils"       "bin")
> +                                    ("git"             "bin")
> +                                    ("openssl"         "bin")
> +                                    ("procps"          "bin")
> +                                    ("multipath-tools" "sbin")

Breaks alphabetical order, which was consistently respected otherwise.

> +                                    ("tar"             "bin")
> +                                    ("util-linux"      "bin")
> +                                    ("util-linux"      "sbin"))))))))
> +       ;; The first two tests require a pmaports git repository in the workdir.
> +       #:test-flags #~(list (string-append "--deselect=test/core/test_pkgrepo"
> +                                           ".py::test_pkgrepo_pmaports")
> +                            (string-append "--deselect=test/parse/test_bootimg"
> +                                           ".py::test_bootimg")
> +                            ;; RuntimeError: No package repositories specified?
> +                            (string-append "--deselect=test/parse/"
> +                                           "test_deviceinfo.py::"
> +                                           "test_random_valid_deviceinfos"))))

But this is way clearer to me, thanks.. :)

> +    (native-inputs (list mkbootimg
> +                         python-pytest
> +                         python-setuptools
> +                         python-wheel
> +                         util-linux)) ; for losetup
> +    (inputs (list bash-minimal
> +                  coreutils
> +                  git
> +                  multipath-tools
> +                  openssl
> +                  procps
> +                  tar
> +                  util-linux))

I could not check this, so more of a question: are this new inputs
required for what?  They seem to enlarge the package size quite a bit
according to guix size.

Cheers!




Information forwarded to guix-patches <at> gnu.org:
bug#62640; Package guix-patches. (Sat, 31 May 2025 08:34:03 GMT) Full text and rfc822 format available.

Message #31 received at 62640 <at> debbugs.gnu.org (full text, mbox):

From: Herman Rimm <herman <at> rimm.ee>
To: 62640 <at> debbugs.gnu.org
Cc: André Batista <nandre <at> riseup.net>,
 Sughosha <Sughosha <at> proton.me>
Subject: [PATCH v5] gnu: Add pmbootstrap.
Date: Sat, 31 May 2025 10:32:15 +0200
From: Sughosha <Sughosha <at> proton.me>

* gnu/packages/postmarketos.scm: New file.
* gnu/packages/local.mk (GNU_SYSTEM_MODULES): Register file.

Change-Id: Ib8347dd536738d2ea16a961c85308a0e43b98c1f
---
Hi,

Thanks again André.  The wrap-required-programs phase now uses output,
ungexp and this-package-input.  I also replaced the coreutils and git
inputs with their minimal counterparts, and this still works:

$ guix shell --pure pmbootstrap -- pmbootstrap init
$ guix shell --pure pmbootstrap -- pmbootstrap export

Cheers,
Herman
 gnu/local.mk                  |   1 +
 gnu/packages/postmarketos.scm | 107 ++++++++++++++++++++++++++++++++++
 2 files changed, 108 insertions(+)
 create mode 100644 gnu/packages/postmarketos.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 2948bfb1bff..b56cfe34d75 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -567,6 +567,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/poedit.scm				\
   %D%/packages/polkit.scm			\
   %D%/packages/popt.scm				\
+  %D%/packages/postmarketos.scm			\
   %D%/packages/potassco.scm				\
   %D%/packages/power.scm			\
   %D%/packages/printers.scm			\
diff --git a/gnu/packages/postmarketos.scm b/gnu/packages/postmarketos.scm
new file mode 100644
index 00000000000..7bb7e788e34
--- /dev/null
+++ b/gnu/packages/postmarketos.scm
@@ -0,0 +1,107 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Sughosha <sughosha <at> proton.me>
+;;; Copyright © 2025 Herman Rimm <herman <at> rimm.ee>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages postmarketos)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages android)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages python-build)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
+  #:use-module (guix build-system pyproject)
+  #:use-module (guix gexp)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (ice-9 match))
+
+(define-public pmbootstrap
+  (package
+    (name "pmbootstrap")
+    (version "3.4.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url (string-append "https://gitlab.postmarketos.org/"
+                                  "postmarketOS/pmbootstrap.git"))
+              (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "16naj8ykipbrs2a93zaxci1wl045cc9jn7rq8sy76d1rqlqb9mmw"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+       #:modules '((guix build pyproject-build-system)
+                   (guix build utils)
+                   (ice-9 match))
+       #:phases #~(modify-phases %standard-phases
+                    (add-after 'unpack 'set-sudo
+                      (lambda _
+                        (substitute* "pmb/config/sudo.py"
+                          (("sudo\"") "/run/privileged/bin/sudo\""))))
+                    (add-after 'wrap 'wrap-required-programs
+                      (lambda* (#:key inputs outputs #:allow-other-keys)
+                        (wrap-program (string-append #$output
+                                                     "/bin/pmbootstrap")
+                          '("PATH" ":" prefix
+                            #$(map (match-lambda
+                                     ((input directory)
+                                      (file-append (this-package-input input)
+                                                   "/" directory)))
+                                   '(("bash-minimal"      "bin")
+                                     ("coreutils-minimal" "bin")
+                                     ("git-minimal"       "bin")
+                                     ("multipath-tools"   "sbin")
+                                     ("openssl"           "bin")
+                                     ("procps"            "bin")
+                                     ("tar"               "bin")
+                                     ("util-linux"        "bin")
+                                     ("util-linux"        "sbin"))))))))
+       ;; The first two tests require a pmaports git repository in the workdir.
+       #:test-flags #~(list (string-append "--deselect=test/core/test_pkgrepo"
+                                           ".py::test_pkgrepo_pmaports")
+                            (string-append "--deselect=test/parse/test_bootimg"
+                                           ".py::test_bootimg")
+                            ;; RuntimeError: No package repositories specified?
+                            (string-append "--deselect=test/parse/"
+                                           "test_deviceinfo.py::"
+                                           "test_random_valid_deviceinfos"))))
+    (native-inputs (list mkbootimg
+                         python-pytest
+                         python-setuptools
+                         python-wheel
+                         util-linux)) ; for losetup
+    (inputs (list bash-minimal
+                  coreutils-minimal
+                  git-minimal
+                  multipath-tools
+                  openssl
+                  procps
+                  tar
+                  util-linux))
+    (home-page "https://gitlab.com/postmarketOS/pmbootstrap")
+    (synopsis "Bootstrap a postmarketOS system")
+    (description
+     "This package provides a sophisticated chroot, build and flash tool
+to develop and install postmarketOS.")
+    (license license:gpl3+)))

base-commit: d3334af3958caad3617df5aa9ebe08c76285f345
-- 
2.47.1





Information forwarded to guix-patches <at> gnu.org:
bug#62640; Package guix-patches. (Wed, 04 Jun 2025 15:25:02 GMT) Full text and rfc822 format available.

Message #34 received at 62640 <at> debbugs.gnu.org (full text, mbox):

From: André Batista <nandre <at> riseup.net>
To: Herman Rimm <herman <at> rimm.ee>
Cc: Sughosha <Sughosha <at> proton.me>, control <at> debbugs.gnu.org,
 62640 <at> debbugs.gnu.org
Subject: Re: [PATCH v5] gnu: Add pmbootstrap.
Date: Wed, 4 Jun 2025 12:23:53 -0300
user guix
usertag 62640 reviewed-looks-good
quit

sáb 31 mai 2025 às 10:32:15 (1748698335), herman <at> rimm.ee enviou:
> From: Sughosha <Sughosha <at> proton.me>
> 
> * gnu/packages/postmarketos.scm: New file.
> * gnu/packages/local.mk (GNU_SYSTEM_MODULES): Register file.
> 
> Change-Id: Ib8347dd536738d2ea16a961c85308a0e43b98c1f
> ---
> Hi,
> 
> Thanks again André.  The wrap-required-programs phase now uses output,
> ungexp and this-package-input.  I also replaced the coreutils and git
> inputs with their minimal counterparts, and this still works:
> 
> $ guix shell --pure pmbootstrap -- pmbootstrap init
> $ guix shell --pure pmbootstrap -- pmbootstrap export
> 

Nice! LGTM, lets wait for someone to pick it up.

Cheers




Reply sent to Danny Milosavljevic <dannym <at> friendly-machines.com>:
You have taken responsibility. (Thu, 05 Jun 2025 23:22:02 GMT) Full text and rfc822 format available.

Notification sent to Sughosha <Sughosha <at> proton.me>:
bug acknowledged by developer. (Thu, 05 Jun 2025 23:22:02 GMT) Full text and rfc822 format available.

Message #39 received at 62640-done <at> debbugs.gnu.org (full text, mbox):

From: Danny Milosavljevic <dannym <at> friendly-machines.com>
To: Sughosha <Sughosha <at> proton.me>,  André Batista
 <nandre <at> riseup.net>
Cc: Herman Rimm <herman <at> rimm.ee>, 62640-done <at> debbugs.gnu.org
Subject: Re: [bug#62640] [PATCH v5] gnu: Add pmbootstrap.
Date: Fri, 06 Jun 2025 01:21:05 +0200
Merged pmboostrap to guix master as commit e4e3176a061d046e34d30a0c39a8afc913d4228d.




Reply sent to Danny Milosavljevic <dannym <at> friendly-machines.com>:
You have taken responsibility. (Thu, 05 Jun 2025 23:22:02 GMT) Full text and rfc822 format available.

Notification sent to phodina <phodina <at> protonmail.com>:
bug acknowledged by developer. (Thu, 05 Jun 2025 23:22:03 GMT) Full text and rfc822 format available.

This bug report was last modified 7 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.