GNU bug report logs - #73529
[PATCH core] gnu: patchelf: Build from git sources.

Previous Next

Package: guix-patches;

Reported by: attila.lendvai <at> gmail.com

Date: Sat, 28 Sep 2024 12:17:01 UTC

Severity: normal

Tags: patch

To reply to this bug, email your comments to 73529 AT debbugs.gnu.org.

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#73529; Package guix-patches. (Sat, 28 Sep 2024 12:17:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to attila.lendvai <at> gmail.com:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sat, 28 Sep 2024 12:17:02 GMT) Full text and rfc822 format available.

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

From: attila.lendvai <at> gmail.com
To: guix-patches <at> gnu.org
Cc: Attila Lendvai <attila <at> lendvai.name>
Subject: [PATCH core] gnu: patchelf: Build from git sources.
Date: Sat, 28 Sep 2024 14:12:03 +0200
From: Attila Lendvai <attila <at> lendvai.name>

Rationale: it makes it much easier to build a pending PR by using
`(commit "pull/544/head")` in the origin, or in general to experiment
with different patchelf versions.  It also makes it more resilient
against attacks hidden in release tarballs.

Change-Id: I94eaedcd826c32b2c90823fe026718213f8d5962
---

sadly, this leads to endless rebuilds...

 gnu/packages/elf.scm | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index dc2db836321..21228a9d878 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -278,19 +278,19 @@ (define-public patchelf
     (name "patchelf")
     (version "0.18.0")
     (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/NixOS/patchelf/releases/download/"
-                   version
-                   "/patchelf-" version ".tar.bz2"))
-             (sha256
-              (base32
-               "02s7ap86rx6yagfh9xwp96sgsj0p6hp99vhiq9wn4mxshakv4lhr"))))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/NixOS/patchelf")
+                    (commit version)))
+              (file-name (git-file-name "patchelf" version))
+              (sha256
+               (base32
+                "1v5mh8wdax4a97hw79nvzy0dixkbs0h487xkskkljkkdamq4rj5z"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'fix-tests
+         (add-after 'bootstrap 'fix-tests
            ;; Our GCC code ensures that RUNPATH is never empty, it includes
            ;; at least glibc/lib and gcc:lib/lib.
            (lambda* (#:key inputs #:allow-other-keys)
@@ -298,8 +298,8 @@ (define-public patchelf
                ;; Disable checking for an empty runpath:
                (("^if test.*") "")
                ;; Find libgcc_s.so, which is necessary for the test:
-               (("/xxxxxxxxxxxxxxx") (string-append (assoc-ref inputs "gcc:lib")
-                                                    "/lib")))
+               (("/xxxxxxxxxxxxxxx")
+                (dirname (search-input-file inputs "/lib/libgcc_s.so"))))
              (substitute* "tests/replace-needed.sh"
                ;; This test assumes that only libc will be linked alongside
                ;; libfoo, but we also link libgcc_s.
@@ -312,7 +312,10 @@ (define-public patchelf
              (substitute* "tests/Makefile.in"
                ((".*shared-rpath\\.sh \\.*") "")))))))
     (native-inputs
-     `(("gcc:lib" ,gcc "lib")))
+     (list
+      autoconf
+      automake
+      (list gcc "lib")))
     (home-page "https://nixos.org/patchelf.html")
     (synopsis "Modify the dynamic linker and RPATH of ELF executables")
     (description

base-commit: 4f86fa20179ded1e6314eeba7da17309d501a32f
-- 
2.46.0





Information forwarded to guix-patches <at> gnu.org:
bug#73529; Package guix-patches. (Sun, 29 Sep 2024 16:14:03 GMT) Full text and rfc822 format available.

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

From: Z572 <zhengjunjie <at> iscas.ac.cn>
To: attila.lendvai <at> gmail.com
Cc: Attila Lendvai <attila <at> lendvai.name>, 73529 <at> debbugs.gnu.org
Subject: Re: [bug#73529] [PATCH core] gnu: patchelf: Build from git sources.
Date: Mon, 30 Sep 2024 00:12:27 +0800
[Message part 1 (text/plain, inline)]
attila.lendvai <at> gmail.com writes:

> From: Attila Lendvai <attila <at> lendvai.name>
>
> Rationale: it makes it much easier to build a pending PR by using
> `(commit "pull/544/head")` in the origin, or in general to experiment
> with different patchelf versions.  It also makes it more resilient
> against attacks hidden in release tarballs.
>
> Change-Id: I94eaedcd826c32b2c90823fe026718213f8d5962
> ---
>
> sadly, this leads to endless rebuilds...
>
>  gnu/packages/elf.scm | 27 +++++++++++++++------------
>  1 file changed, 15 insertions(+), 12 deletions(-)
>
> diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
> index dc2db836321..21228a9d878 100644
> --- a/gnu/packages/elf.scm
> +++ b/gnu/packages/elf.scm
> @@ -278,19 +278,19 @@ (define-public patchelf
>      (name "patchelf")
>      (version "0.18.0")
>      (source (origin
> -             (method url-fetch)
> -             (uri (string-append
> -                   "https://github.com/NixOS/patchelf/releases/download/"
> -                   version
> -                   "/patchelf-" version ".tar.bz2"))
> -             (sha256
> -              (base32
> -               "02s7ap86rx6yagfh9xwp96sgsj0p6hp99vhiq9wn4mxshakv4lhr"))))
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url "https://github.com/NixOS/patchelf")
> +                    (commit version)))
> +              (file-name (git-file-name "patchelf" version))

i think should "(git-file-name name version)" ?

> +              (sha256
> +               (base32
> +                "1v5mh8wdax4a97hw79nvzy0dixkbs0h487xkskkljkkdamq4rj5z"))))
>      (build-system gnu-build-system)
>      (arguments
>       '(#:phases
>         (modify-phases %standard-phases
> -         (add-after 'unpack 'fix-tests
> +         (add-after 'bootstrap 'fix-tests

Just a question, why do you need to change to bootstrap here?

>             ;; Our GCC code ensures that RUNPATH is never empty, it includes
>             ;; at least glibc/lib and gcc:lib/lib.
>             (lambda* (#:key inputs #:allow-other-keys)
> @@ -298,8 +298,8 @@ (define-public patchelf
>                 ;; Disable checking for an empty runpath:
>                 (("^if test.*") "")
>                 ;; Find libgcc_s.so, which is necessary for the test:
> -               (("/xxxxxxxxxxxxxxx") (string-append (assoc-ref inputs "gcc:lib")
> -                                                    "/lib")))
> +               (("/xxxxxxxxxxxxxxx")
> +                (dirname (search-input-file inputs "/lib/libgcc_s.so"))))
>               (substitute* "tests/replace-needed.sh"
>                 ;; This test assumes that only libc will be linked alongside
>                 ;; libfoo, but we also link libgcc_s.
> @@ -312,7 +312,10 @@ (define-public patchelf
>               (substitute* "tests/Makefile.in"
>                 ((".*shared-rpath\\.sh \\.*") "")))))))
>      (native-inputs
> -     `(("gcc:lib" ,gcc "lib")))
> +     (list
> +      autoconf
> +      automake
> +      (list gcc "lib")))

It would be nice to mention removing labels and adding new dependencies
in the submission, and etc/committer.scm maybe useful.

>      (home-page "https://nixos.org/patchelf.html")
>      (synopsis "Modify the dynamic linker and RPATH of ELF executables")
>      (description
>
> base-commit: 4f86fa20179ded1e6314eeba7da17309d501a32f
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#73529; Package guix-patches. (Mon, 30 Sep 2024 08:16:02 GMT) Full text and rfc822 format available.

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

From: Attila Lendvai <attila <at> lendvai.name>
To: Z572 <zhengjunjie <at> iscas.ac.cn>
Cc: attila.lendvai <at> gmail.com, 73529 <at> debbugs.gnu.org
Subject: Re: [bug#73529] [PATCH core] gnu: patchelf: Build from git sources.
Date: Mon, 30 Sep 2024 08:14:17 +0000
> > + (file-name (git-file-name "patchelf" version))
> 
> 
> i think should "(git-file-name name version)" ?


hrm. i tried that at first, but it errored out with `name` being undefined. i retried it just now to double check, and now it works. i must have been confused by something.

the updated patch will have `name` in there.


> > + (sha256
> > + (base32
> > + "1v5mh8wdax4a97hw79nvzy0dixkbs0h487xkskkljkkdamq4rj5z"))))
> > (build-system gnu-build-system)
> > (arguments
> > '(#:phases
> > (modify-phases %standard-phases
> > - (add-after 'unpack 'fix-tests
> > + (add-after 'bootstrap 'fix-tests
> 
> 
> Just a question, why do you need to change to bootstrap here?


because the last substitute* touches `tests/Makefile.in` which is generated by the bootstrap phase (by the auto* tools).

but now that you asked, i've changed it to target `tests/Makefile.am` instead.


> > (native-inputs
> > - `(("gcc:lib" ,gcc "lib")))
> > + (list
> > + autoconf
> > + automake
> > + (list gcc "lib")))
> 
> 
> It would be nice to mention removing labels and adding new dependencies
> in the submission, and etc/committer.scm maybe useful.


ok, i'll send an updated patch soon.

BTW, etc/committer.scm broke on this package. i've sent a patch to fix that:

https://issues.guix.gnu.org/73562

-- 
• attila lendvai
• PGP: 963F 5D5F 45C7 DFCD 0A39
--
“Where there are rulers, there are no rules, only interest-serving opinions enforced by violence. To want rulers is to beg for chaos.”
	— Brandon Roark





Information forwarded to guix-patches <at> gnu.org:
bug#73529; Package guix-patches. (Mon, 30 Sep 2024 08:18:02 GMT) Full text and rfc822 format available.

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

From: attila.lendvai <at> gmail.com
To: 73529 <at> debbugs.gnu.org
Cc: Attila Lendvai <attila <at> lendvai.name>
Subject: [PATCH core v2] gnu: patchelf: Build from git
Date: Mon, 30 Sep 2024 10:15:10 +0200
From: Attila Lendvai <attila <at> lendvai.name>

Rationale: it makes it much easier for anyone to build a pending PR (simply by
using `(commit "pull/544/head")` in the origin).  It also makes it more
resilient against attacks hidden in release tarballs.

* gnu/packages/elf.scm (patchelf): Change source origin to the git repo and
adjust inputs accordingly.
[native-inputs]: Add autoconf, automake.

Change-Id: I94eaedcd826c32b2c90823fe026718213f8d5962
---
 gnu/packages/elf.scm | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index dc2db836321..98b80c24b3e 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -278,14 +278,14 @@ (define-public patchelf
     (name "patchelf")
     (version "0.18.0")
     (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/NixOS/patchelf/releases/download/"
-                   version
-                   "/patchelf-" version ".tar.bz2"))
-             (sha256
-              (base32
-               "02s7ap86rx6yagfh9xwp96sgsj0p6hp99vhiq9wn4mxshakv4lhr"))))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/NixOS/patchelf")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1v5mh8wdax4a97hw79nvzy0dixkbs0h487xkskkljkkdamq4rj5z"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -298,8 +298,8 @@ (define-public patchelf
                ;; Disable checking for an empty runpath:
                (("^if test.*") "")
                ;; Find libgcc_s.so, which is necessary for the test:
-               (("/xxxxxxxxxxxxxxx") (string-append (assoc-ref inputs "gcc:lib")
-                                                    "/lib")))
+               (("/xxxxxxxxxxxxxxx")
+                (dirname (search-input-file inputs "/lib/libgcc_s.so"))))
              (substitute* "tests/replace-needed.sh"
                ;; This test assumes that only libc will be linked alongside
                ;; libfoo, but we also link libgcc_s.
@@ -309,10 +309,13 @@ (define-public patchelf
                ;; we still need to find libgcc_s (see above).
                (("^\"\\$\\{SCRATCH\\}\"\\/simple.$") ""))
              ;; Skip this test for now.
-             (substitute* "tests/Makefile.in"
+             (substitute* "tests/Makefile.am"
                ((".*shared-rpath\\.sh \\.*") "")))))))
     (native-inputs
-     `(("gcc:lib" ,gcc "lib")))
+     (list
+      autoconf
+      automake
+      (list gcc "lib")))
     (home-page "https://nixos.org/patchelf.html")
     (synopsis "Modify the dynamic linker and RPATH of ELF executables")
     (description

base-commit: d74fc6c8e6428c37a5bfad85b08999ff47000208
-- 
2.46.0





This bug report was last modified 260 days ago.

Previous Next


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