diff mbox

[bug#62008,0/2] Update Disarchive to 0.5.0

Message ID 87fs4iew25.fsf@gmail.com
State New
Headers show

Commit Message

Simon Tournier Aug. 16, 2023, 5:28 p.m. UTC
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:
> 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:

--8<---------------cut here---------------start------------->8---
$ 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)
--8<---------------cut here---------------end--------------->8---

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.
Then tweaking around.

Cheers,
simon

Comments

Ludovic Courtès Aug. 18, 2023, 1:56 p.m. UTC | #1
Simon Tournier <zimon.toutoune@gmail.com> skribis:

> 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’.
Simon Tournier Aug. 18, 2023, 3:03 p.m. UTC | #2
Hi Ludo,

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

> > 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]. ;-)

--8<---------------cut here---------------start------------->8---
$ 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.
--8<---------------cut here---------------end--------------->8---

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

1: https://issues.guix.gnu.org/62008#1
Simon Tournier Aug. 19, 2023, 8:57 a.m. UTC | #3
Re,

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

> 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
        https://yhetil.org/guix/87leew25tp.wl-hako@ultrarare.space

        Re: poetry: python-poetry?
        by Lars-Dominik Braun <lars@6xq.net>
        Thu, 27 Jul 2023 09:03:34 +0200
        https://yhetil.org/guix/ZMIWxvt4jyx9mv--@noor.fritz.box

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
diff mbox

Patch

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")