[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
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 62008@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 62008
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch