Subject: bug#35640: Make USB modems just work on Guix

From: "pelzflorian (Florian Pelz)" <[email-masked]>
Date: Fri, 24 May 2019 22:12:10 +0200

Thank you for your feedback!

On Fri, May 24, 2019 at 05:37:01PM +0200, Ludovic Courtès wrote:
> > Tring to put the packages in gnu/packages/libusb.scm and not in their
> > own file gnu/packages/usb-modeswitch.scm again resulted in
> >
> > [ 11%] LOAD     guix/scripts/search.scm
> > [ 11%] LOAD     guix/scripts/gc.scm
> > [ 11%] LOAD     guix/scripts/hash.scm
> > [ 11%] LOAD     guix/scripts/pack.scm
> > Backtrace:
> > In ice-9/boot-9.scm:
> >    222:29 19 (map1 (((guix utils)) ((guix store)) ((guix #) # (#)) …))
> >    222:29 18 (map1 (((guix store)) ((guix status) #:select (#)) (#) …))
> >    222:29 17 (map1 (((guix status) #:select (#)) ((guix grafts)) # …))
> >    222:29 16 (map1 (((guix grafts)) ((guix monads)) ((guix #)) (#) …))
> >    222:29 15 (map1 (((guix monads)) ((guix modules)) ((guix #)) (#) …))
> >    222:29 14 (map1 (((guix modules)) ((guix packages)) ((guix #)) # …))
> >    222:29 13 (map1 (((guix packages)) ((guix profiles)) ((guix #)) …))
> >    222:29 12 (map1 (((guix profiles)) ((guix describe)) ((guix #)) …))
> >    222:29 11 (map1 (((guix describe)) ((guix derivations)) ((# #)) …))
> >    222:29 10 (map1 (((guix derivations)) ((guix search-paths)) (#) …))
> >    222:29  9 (map1 (((guix search-paths)) ((guix build-system #)) # …))
> >    222:29  8 (map1 (((guix build-system gnu)) ((guix scripts #)) # …))
> >    222:29  7 (map1 (((guix scripts build)) ((guix self) #:select …) …))
> >    222:29  6 (map1 (((guix self) #:select (make-config.scm)) ((…)) …))
> >    222:29  5 (map1 (((gnu packages)) ((gnu packages bootstrap)) (…) …))
> >    222:29  4 (map1 (((gnu packages bootstrap)) ((gnu packages …) …) …))
> >    222:17  3 (map1 (((gnu packages compression) #:hide (zip)) ((…)) …))
> >   2830:10  2 (resolve-interface (gnu packages compression) #:select _ …)
> >    260:13  1 (for-each #<procedure 52470e0 at ice-9/boot-9.scm:2830…> …)
> > In unknown file:
> >            0 (scm-error misc-error #f "~A" ("no binding `zip' to h…") …)
> >
> > ERROR: In procedure scm-error:
> > no binding `zip' to hide in module (gnu packages compression)
> 
> You cannot use #:hide on (gnu packages …) modules, for unfortunate and
> obscure reasons.  The trick would be to hide the other ‘zip’ binding,
> the one from (srfi srfi-1).
> 

I did not #:hide anything.  The error is reported when (or after?) a
call to “make” loads guix/scripts/pack.scm (which I have not changed)
after putting the packages and required modules into libusb.scm
instead of usb-modeswitch.scm.

> > Should I also make the usb-modeswitch-data package install the license
> > file of usb-modeswitch-data?
> >
> > Or should I use gnu-build-system instead of trivial-build-system?
> > trivial works now though.
> 
> In general we should install license files.  If ‘trivial’ works for you,
> that’s OK; an additional line to install the license would be welcome,
> but not blocking.
> 

I add the license file.

> > The file dispatcher.c of usb-modeswitch is licensed bsd-2 and not
> > gpl2+.  Should I list both licenses or just gpl2+?
> 
> I think it’s enough to mark it as ‘gpl2+’ because, IIUC, the combination
> of all this is GPLv2+.  If you think that needs clarification, you can
> just add a comment about the ‘license’ field.
>

Since nobody is likely to use the USB_ModeSwitch dispatcher.c without
USB_ModeSwitch, I tend to leave it at gpl2+.

> > Currently I install the usb_modeswitch_dispatcher that is needed by
> > the udev rule in a separate output called “dispatcher”.  I am unsure
> > if this usb_modeswitch_dispatcher would need the usb_modeswitch
> > program from the “out” output.  Is it OK when one output only works
> > when the “out” output is installed too?
> 
> I’d say no.  :-)  In general, we want “guix install foo:bar” to provide
> something that Just Works.
>

I will try substitute*ing the dispatcher script to use /gnu/store
until it just works.

> Let me know if you want to send an updated patch if you we should
> proceed with the one you sent.
>

I will send an updated patch tomorrow with a working ”dispatcher“
output.

Regards,
Florian