* [bug#73529] [PATCH core] gnu: patchelf: Build from git sources.
@ 2024-09-28 12:12 attila.lendvai
2024-09-29 16:12 ` Z572
2024-09-30 8:15 ` [bug#73529] [PATCH core v2] gnu: patchelf: Build from git attila.lendvai
0 siblings, 2 replies; 4+ messages in thread
From: attila.lendvai @ 2024-09-28 12:12 UTC (permalink / raw)
To: 73529; +Cc: Attila Lendvai
From: Attila Lendvai <attila@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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [bug#73529] [PATCH core] gnu: patchelf: Build from git sources.
2024-09-28 12:12 [bug#73529] [PATCH core] gnu: patchelf: Build from git sources attila.lendvai
@ 2024-09-29 16:12 ` Z572
2024-09-30 8:14 ` Attila Lendvai
2024-09-30 8:15 ` [bug#73529] [PATCH core v2] gnu: patchelf: Build from git attila.lendvai
1 sibling, 1 reply; 4+ messages in thread
From: Z572 @ 2024-09-29 16:12 UTC (permalink / raw)
To: attila.lendvai; +Cc: Attila Lendvai, 73529
[-- Attachment #1: Type: text/plain, Size: 3374 bytes --]
attila.lendvai@gmail.com writes:
> From: Attila Lendvai <attila@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
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* [bug#73529] [PATCH core] gnu: patchelf: Build from git sources.
2024-09-29 16:12 ` Z572
@ 2024-09-30 8:14 ` Attila Lendvai
0 siblings, 0 replies; 4+ messages in thread
From: Attila Lendvai @ 2024-09-30 8:14 UTC (permalink / raw)
To: Z572; +Cc: attila.lendvai, 73529
> > + (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
^ permalink raw reply [flat|nested] 4+ messages in thread
* [bug#73529] [PATCH core v2] gnu: patchelf: Build from git
2024-09-28 12:12 [bug#73529] [PATCH core] gnu: patchelf: Build from git sources attila.lendvai
2024-09-29 16:12 ` Z572
@ 2024-09-30 8:15 ` attila.lendvai
1 sibling, 0 replies; 4+ messages in thread
From: attila.lendvai @ 2024-09-30 8:15 UTC (permalink / raw)
To: 73529; +Cc: Attila Lendvai
From: Attila Lendvai <attila@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
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-09-30 8:21 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-28 12:12 [bug#73529] [PATCH core] gnu: patchelf: Build from git sources attila.lendvai
2024-09-29 16:12 ` Z572
2024-09-30 8:14 ` Attila Lendvai
2024-09-30 8:15 ` [bug#73529] [PATCH core v2] gnu: patchelf: Build from git attila.lendvai
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.