[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 2023 20:18
(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 2023 20:19
[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 2023 20:19
[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 2023 10:49
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 2023 10:51
(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 2023 11:43
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 2023 09:17
(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 2023 12:41
(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 2023 17:44
(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’.
L
L
Ludovic Courtès wrote on 8 Aug 2023 17:27
control message for bug #62008
(address . control@debbugs.gnu.org)
877cq5r1v7.fsf@gnu.org
close 62008
quit
S
S
Simon Tournier wrote on 16 Aug 2023 18:54
(address . control@debbugs.gnu.org)
87o7j7dj1g.fsf@gmail.com
reopen 62008
tags 62008 - fixed patch
quit
S
S
Simon Tournier wrote on 16 Aug 2023 19:28
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)
87fs4iew25.fsf@gmail.com
Hi Ludo,

You closed this but the issue is still there, no? :-)

On Fri, 10 Mar 2023 at 17:44, Ludovic Courtès <ludo@gnu.org> wrote:
Toggle quote (16 lines)
> Simon Tournier <zimon.toutoune@gmail.com> skribis:
>
>> 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.

Because of this error:

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)

solved by adding the package guile,

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

then, I think the contrary: having two packages is more convenient.

Well, from my point of view, two packages would be consistent with other
Guix packages as pandoc and ghc-pandoc for instance. Plain name for the
CLI and <language>-name for the library in <language>, somehow. The
<language> compiler/interpreter propagated/wrapped only with the CLI.

Somehow, I am proposing this attached patch.
Toggle diff (59 lines)
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index d484c34826..e60570b037 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -1256,9 +1256,9 @@ (define-public burp
backup.")
(license license:agpl3)))
-(define-public disarchive
+(define-public guile-disarchive
(package
- (name "disarchive")
+ (name "guile-disarchive")
(version "0.5.0")
(source (origin
(method url-fetch)
@@ -1290,6 +1290,42 @@ (define-public disarchive
compression parameters used by Gzip.")
(license license:gpl3+)))
+(define-public disarchive
+ (package/inherit guile-disarchive
+ (name "disarchive")
+ (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))))))))
+ (inputs
+ (list guile-3.0 guile-gcrypt guile-lzma zlib))
+ (propagated-inputs (list))))
+
(define-public borgmatic
(package
(name "borgmatic")
Then tweaking around.

Cheers,
simon
L
L
Ludovic Courtès wrote on 18 Aug 2023 15:56
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)(address . 62008@debbugs.gnu.org)
875y5csbcq.fsf@gnu.org
Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (6 lines)
> solved by adding the package guile,
>
> $ guix shell -C disarchive guile -- disarchive disassemble hello-2.12.1
>
> then, I think the contrary: having two packages is more convenient.

Hi! Yes, I think you mentioned it before. To me, there’s a precedent
in favor of the status quo (a single package): quite a few other
packages (guix, cuirass, mumi, guile-smc, etc.) are also both a Guile
library and a set of commands, and they’re provided as a single package.

I think we shouldn’t lose our hair over it anyway. :-)

Ludo’.
S
S
Simon Tournier wrote on 18 Aug 2023 17:03
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 62008@debbugs.gnu.org)
CAJ3okZ0ZzcRASU5K8EUE-AZrB8vPZ+sUoRG_uCcJHCq2KaSEKw@mail.gmail.com
Hi Ludo,

On Fri, 18 Aug 2023 at 15:56, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (11 lines)
> > solved by adding the package guile,
> >
> > $ guix shell -C disarchive guile -- disarchive disassemble hello-2.12.1
> >
> > then, I think the contrary: having two packages is more convenient.
>
> Hi! Yes, I think you mentioned it before. To me, there’s a precedent
> in favor of the status quo (a single package): quite a few other
> packages (guix, cuirass, mumi, guile-smc, etc.) are also both a Guile
> library and a set of commands, and they’re provided as a single package.

Hum, thus the status quo is in favor of my initial patch [1]. ;-)

Toggle snippet (34 lines)
$ for tool in guix cuirass mumi; do
guix shell -C $tool -- $tool --version
done
guix shell -C guile-smc -- smc --version

> > guix (GNU Guix) 1.4.0-7.44bbfc2
Copyright (C) 2023 the Guix authors
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
cuirass (Cuirass) 1.1.0-16.b825967
Copyright (C) 2021 the Cuirass authors
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

`mumi search QUERY':
search mumi for issues.

[...]

;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /gnu/store/8jmrygas3krkdrqalj0g0cp273whm84s-guile-smc-0.6.0/bin/.smc-real
;;; compiled /home/simon/.cache/guile/ccache/3.0-LE-8-4.6/gnu/store/8jmrygas3krkdrqalj0g0cp273whm84s-guile-smc-0.6.0/bin/.smc-real.go
smc 0.6.0
Copyright (C) 2021-2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Artyom V. Poptsov.

Please note that cuirass, mumi and guile-smc does not propagate any
inputs. Hum, I do not know where cuirass and mumi are used as library,
but that’s another story. :-)

Well, I can live with one single package – although I think it’s
confusing :-) – however I cannot live without “guix shell -C disarchive
-- disarchive”. Therefore, could you send a patch that fixes this and
suits your needs?


Cheers,
simon

S
S
Simon Tournier wrote on 19 Aug 2023 10:57
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 62008@debbugs.gnu.org)
86bkf31kb2.fsf@gmail.com
Re,

On Fri, 18 Aug 2023 at 15:56, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (2 lines)
> I think we shouldn’t lose our hair over it anyway. :-)

For sure. Just to point that the two packages way is somehow
shared. ;-) At least in Python context, for example see:

Re: poetry: python-poetry?
by Hilton Chain <hako@ultrarare.space>
Mon, 31 Jul 2023 10:05:54 +0800

Re: poetry: python-poetry?
by Lars-Dominik Braun <lars@6xq.net>
Thu, 27 Jul 2023 09:03:34 +0200

And I do not see why Guile and disarchive would be an exception.

That’s said, it’s time to go to the hairdresser for brushing my hair
before loosing them. ;-)


Cheers,
simon
?