[PATCH 0/2] Update Disarchive to 0.5.0

  • Open
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Simon Tournier
Owner
unassigned
Submitted by
Simon Tournier
Severity
normal
S
S
Simon Tournier wrote on 6 Mar 20:18 +0100
(address . guix-patches@gnu.org)(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
20230306191814.3638619-1-zimon.toutoune@gmail.com
Hi,

The first patch removes an annoyance. Now,

guix shell disarchive -- disarchive disassemble foo

works without the need to propagate Guile-LZMA or Guile-Gcrypt; which need
Guile itself to trigger the related search paths.

The second patch is a trivial update but since core Guix depends on
Disarchive, please double check. :-)

For instance, guix-minimal fails but it also fails before this patch series.


Cheers,
simon


Simon Tournier (2):
gnu: disarchive: Wrap program instead of using propagated inputs..
gnu: disarchive: Update to 0.5.0.

gnu/packages/backup.scm | 38 +++++++++++++++++++++++++++++++++-----
1 file changed, 33 insertions(+), 5 deletions(-)


base-commit: fe9bcf9db24e6f7849ad870e0853c251517fd6f0
--
2.38.1
S
S
Simon Tournier wrote on 6 Mar 20:19 +0100
[PATCH 1/2] gnu: disarchive: Wrap program instead of using propagated inputs..
(address . 62008@debbugs.gnu.org)(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
20230306191950.3639176-1-zimon.toutoune@gmail.com
* gnu/packages/backup.scm (disarchive)[arguments]: Add phase after install
to wrap program.
[inputs]: Add guile-gcrypt and guile-lzma.
[propagated-inputs]: Remove it.
---
gnu/packages/backup.scm | 34 +++++++++++++++++++++++++++++++---
1 file changed, 31 insertions(+), 3 deletions(-)

Toggle diff (61 lines)
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 7be0c813bb..7fe2e80d39 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -23,6 +23,7 @@
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2022 Feng Shu <tumashu@163.com>
+;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1230,6 +1231,35 @@ (define-public disarchive
(base32
"1pql8cspsxyx8cpw3xyhirnisv6rb4vj5mxr1d7w9la72q740n8s"))))
(build-system gnu-build-system)
+ (arguments
+ (list
+ #:modules `((ice-9 popen)
+ ,@%gnu-build-system-modules)
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((effective
+ (read (open-pipe* OPEN_READ
+ (string-append #$guile-3.0 "/bin/guile")
+ "-c" "(write (effective-version))")))
+ (scm-dir (string-append "/share/guile/site/" effective))
+ (go-dir (string-append "/lib/guile/" effective
+ "/site-ccache/"))
+ (modules (list #$output
+ #$guile-bytestructures
+ #$guile-gcrypt
+ #$guile-lzma))
+ (scm-path
+ (map (lambda (module) (string-append module scm-dir))
+ modules))
+ (go-path
+ (map (lambda (module) (string-append module scm-dir))
+ modules)))
+ (wrap-program (string-append #$output "/bin/disarchive")
+ `("PATH" ":" prefix (,(string-append #$output "/bin")))
+ `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
+ `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path))))))))
(native-inputs
(list autoconf
automake
@@ -1239,9 +1269,7 @@ (define-public disarchive
guile-lzma
guile-quickcheck))
(inputs
- (list guile-3.0 zlib))
- (propagated-inputs
- (list guile-gcrypt guile-lzma))
+ (list guile-3.0 guile-gcrypt guile-lzma zlib))
(home-page "https://ngyro.com/software/disarchive.html")
(synopsis "Software archive disassembler")
(description "Disarchive can disassemble software archives into data
--
2.38.1
S
S
Simon Tournier wrote on 6 Mar 20:19 +0100
[PATCH 2/2] gnu: disarchive: Update to 0.5.0.
(address . 62008@debbugs.gnu.org)(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
20230306191950.3639176-2-zimon.toutoune@gmail.com
* gnu/packages/backup.scm (disarchive): Update to 0.5.0.
---
gnu/packages/backup.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (23 lines)
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 7fe2e80d39..362da0a219 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -1222,14 +1222,14 @@ (define-public burp
(define-public disarchive
(package
(name "disarchive")
- (version "0.4.0")
+ (version "0.5.0")
(source (origin
(method url-fetch)
(uri (string-append "https://files.ngyro.com/disarchive/"
"disarchive-" version ".tar.gz"))
(sha256
(base32
- "1pql8cspsxyx8cpw3xyhirnisv6rb4vj5mxr1d7w9la72q740n8s"))))
+ "16sjplkn9nr7zhfrqll7l1m2b2j4hg8k29p6bqjap9fkj6zpn2q2"))))
(build-system gnu-build-system)
(arguments
(list
--
2.38.1
L
L
Ludovic Courtès wrote on 7 Mar 10:49 +0100
Re: bug#62008: [PATCH 0/2] Update Disarchive to 0.5.0
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)(address . 62008@debbugs.gnu.org)
87jzzsevsh.fsf_-_@gnu.org
Hi Simon,

Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (5 lines)
> * gnu/packages/backup.scm (disarchive)[arguments]: Add phase after install
> to wrap program.
> [inputs]: Add guile-gcrypt and guile-lzma.
> [propagated-inputs]: Remove it.

For this package, I have a slight preference for keeping propagated
inputs so that one can use Disarchive as a library.

WDYT?

Some comments while at it…

[...]

Toggle quote (5 lines)
> + (let* ((effective
> + (read (open-pipe* OPEN_READ
> + (string-append #$guile-3.0 "/bin/guile")
> + "-c" "(write (effective-version))")))

(guix build guile-build-system) exports ‘target-guile-effective-version’
to do that; it’s more convenient.

Toggle quote (5 lines)
> + (modules (list #$output
> + #$guile-bytestructures
> + #$guile-gcrypt
> + #$guile-lzma))

This should use (this-package-input "guile-bytestructures“) and similar,
for consistency.

Ludo’.
L
L
Ludovic Courtès wrote on 7 Mar 10:51 +0100
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)(address . 62008@debbugs.gnu.org)
87fsagevnk.fsf_-_@gnu.org
Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (2 lines)
> * gnu/packages/backup.scm (disarchive): Update to 0.5.0.

Applied, thanks! :-)

Ludo'.
S
S
Simon Tournier wrote on 7 Mar 11:43 +0100
Re: [bug#62008] [PATCH 0/2] Update Disarchive to 0.5.0
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 62008@debbugs.gnu.org)
87a60odep4.fsf@gmail.com
Hi Ludo,

On mar., 07 mars 2023 at 10:49, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (3 lines)
> For this package, I have a slight preference for keeping propagated
> inputs so that one can use Disarchive as a library.

Well, maybe I am missing a point but currently for Disarchive standalone,

Toggle snippet (10 lines)
$ guix shell -C disarchive -- disarchive disassemble hello-2.12.1
Backtrace:
In ice-9/boot-9.scm:

[...]

ice-9/boot-9.scm:3329:6: In procedure resolve-interface:
no code for module (gcrypt hash)

And I need to add Guile for triggering the search patch. And I find
that annoying,

$ guix shell -C disarchive guile -- disarchive disassemble hello-2.12.1

It does not appear to me straightforward to know that.


Toggle quote (2 lines)
> WDYT?

Since we have two usages of Disarchive, the standalone CLI and the
library, maybe we should have two packages: disarchive and
guile-disarchive.

WDYT?


Toggle quote (2 lines)
> Some comments while at it…

Thanks. That’s interesting because I took inspiration from the packages
Cuirass and Dezyne. :-)

Toggle quote (8 lines)
>> + (let* ((effective
>> + (read (open-pipe* OPEN_READ
>> + (string-append #$guile-3.0 "/bin/guile")
>> + "-c" "(write (effective-version))")))
>
> (guix build guile-build-system) exports ‘target-guile-effective-version’
> to do that; it’s more convenient.

I did not know. Well, I will adapt Cuirass and Dezyne too, IIUC. :-)


Toggle quote (8 lines)
>> + (modules (list #$output
>> + #$guile-bytestructures
>> + #$guile-gcrypt
>> + #$guile-lzma))
>
> This should use (this-package-input "guile-bytestructures“) and similar,
> for consistency.

Ok. Just for my understanding about the "consistency”, is the procedure
’make-gitolite’ from (gnu packages version-conrol) consistent?


Cheers,
simon
L
L
Ludovic Courtès wrote on 10 Mar 09:17 +0100
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)(address . 62008@debbugs.gnu.org)
87bkl1aukx.fsf@gnu.org
Hi Simon!

Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (10 lines)
> On mar., 07 mars 2023 at 10:49, Ludovic Courtès <ludo@gnu.org> wrote:
>
>> For this package, I have a slight preference for keeping propagated
>> inputs so that one can use Disarchive as a library.
>
> Well, maybe I am missing a point but currently for Disarchive standalone,
>
> $ guix shell -C disarchive -- disarchive disassemble hello-2.12.1
> Backtrace:

Hmm good point. So maybe we need to wrap after all, and also keep
propagated inputs (as an example, (guix build download) uses the
Disarchive modules directly, not the command.)

I realize that I worked around it in ‘etc/disarchive-manifest.scm’.

Toggle quote (10 lines)
>>> + (let* ((effective
>>> + (read (open-pipe* OPEN_READ
>>> + (string-append #$guile-3.0 "/bin/guile")
>>> + "-c" "(write (effective-version))")))
>>
>> (guix build guile-build-system) exports ‘target-guile-effective-version’
>> to do that; it’s more convenient.
>
> I did not know. Well, I will adapt Cuirass and Dezyne too, IIUC. :-)

Awesome.

Toggle quote (12 lines)
>
>>> + (modules (list #$output
>>> + #$guile-bytestructures
>>> + #$guile-gcrypt
>>> + #$guile-lzma))
>>
>> This should use (this-package-input "guile-bytestructures“) and similar,
>> for consistency.
>
> Ok. Just for my understanding about the "consistency”, is the procedure
> ’make-gitolite’ from (gnu packages version-conrol) consistent?

It should use ‘this-package-input’ as well, to keep input fields and
inheritance meaningful.

Thanks,
Ludo’.
S
S
Simon Tournier wrote on 10 Mar 12:41 +0100
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 62008@debbugs.gnu.org)
87bkl0omtg.fsf@gmail.com
Hi Ludo,

On ven., 10 mars 2023 at 09:17, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (4 lines)
> Hmm good point. So maybe we need to wrap after all, and also keep
> propagated inputs (as an example, (guix build download) uses the
> Disarchive modules directly, not the command.)

I am proposing to have ’package/inherit’,

1. ’disarchive’: the standalone CLI with wrap
2. ’guile-disarchive’: the library with propagated-inputs

WDYT?


Cheers,
simon
L
L
Ludovic Courtès wrote on 10 Mar 17:44 +0100
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)(address . 62008@debbugs.gnu.org)
87bkl0imja.fsf@gnu.org
Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (11 lines)
> On ven., 10 mars 2023 at 09:17, Ludovic Courtès <ludo@gnu.org> wrote:
>
>> Hmm good point. So maybe we need to wrap after all, and also keep
>> propagated inputs (as an example, (guix build download) uses the
>> Disarchive modules directly, not the command.)
>
> I am proposing to have ’package/inherit’,
>
> 1. ’disarchive’: the standalone CLI with wrap
> 2. ’guile-disarchive’: the library with propagated-inputs

I think having a single package is more convenient: it would both
propagate inputs and wrap the binaries as you proposed.

Ludo’.
?