Hi, This patch [1] had been submitted in 2017 and fallen in the cracks. The code below requires improvement and I am not convinced by the feature. Therefore closing?
<http://issues.guix.gnu.org/issue/28602 On Mon, 05 Jul 2021 at 13:46, zimoun <zimon.touto...@gmail.com> wrote: > On Mon, 09 Oct 2017 at 23:00, nee <n...@cock.li> wrote: >> Hello here is a patch to fix this bug. It changes the gnu-build-system, >> so the hashes of almost all packages will also change. I guess >> core-updates is the right branch for this. >> >>>>From 089b9741a734f0682a671df6c0c36dfefcbd407c Mon Sep 17 00:00:00 2001 >> From: nee <nee....@cock.li> >> Date: Mon, 9 Oct 2017 22:49:12 +0200 >> Subject: [PATCH] guix: gnu-build-system: warn about missing unzip input >> during >> unpack. >> >> --- >> guix/build/gnu-build-system.scm | 17 ++++++++++++++++- >> 1 file changed, 16 insertions(+), 1 deletion(-) >> >> diff --git a/guix/build/gnu-build-system.scm >> b/guix/build/gnu-build-system.scm >> index e37b75140..c16d15964 100644 >> --- a/guix/build/gnu-build-system.scm >> +++ b/guix/build/gnu-build-system.scm >> @@ -67,6 +67,21 @@ See >> https://reproducible-builds.org/specs/source-date-epoch/." >> #f >> dir)) >> >> +(define (unzip filepath) >> + "Unzip archive file. >> +Warn the user when unzip fails and the executable is not present." >> + (define exit-code (system* "unzip" filepath)) >> + (define program-not-found-code 32512) >> + (cond ((zero? exit-code) #t) >> + ((eqv? exit-code program-not-found-code) >> + (format (current-error-port) >> + "warning: Archive with .zip suffix failed to unpack. >> +Please add unzip as native-input to the package, >> +e.g. (native-inputs `((\"unzip\" ,unzip)))") >> + (newline (current-error-port)) >> + #f) >> + (else #f))) > > Give a look at 'invoke' from (guix build utils). > >> (define* (set-paths #:key target inputs native-inputs >> (search-paths '()) (native-search-paths '()) >> #:allow-other-keys) >> @@ -154,7 +169,7 @@ working directory." >> #:keep-mtime? #t) >> #t) >> (and (if (string-suffix? ".zip" source) >> - (zero? (system* "unzip" source)) >> + (unzip source) >> (zero? (system* "tar" "xvf" source))) >> (chdir (first-subdirectory "."))))) > > After 9a87649c863e1ff8b073b356875eb05eecedbcf7, this part uses 'invoke'. > Instead of your 'unzip', the exception raised by 'invoke' should be > catched and then should trigger the hint message. WDYT? Cheers, simon