Subject: bug#36456: Guix stumbles on duplicates?

From: swedebugia <[email-masked]>
Date: Mon, 1 Jul 2019 10:38:15 +0200

Hi

Yesterday Arne posted a list of 1000 crates-io packages to the devel list.

When I inserted them in my 200+ crates-io.scm I got this error when 
trying to build rust-backtrace:

$ ./pre-inst-env guix build rust-backtrace
Backtrace:
In guix/scripts/build.scm:
     902:6 19 (_)
In guix/status.scm:
     768:4 18 (call-with-status-report _ _)
In guix/store.scm:
    623:10 17 (call-with-store _)
In guix/scripts/build.scm:
    909:26 16 (_ #<store-connection 256.99 2726f00>)
In ice-9/boot-9.scm:
     829:9 15 (catch unbound-variable #<procedure 260ac80 at guix/ui…> …)
In guix/ui.scm:
     382:6 14 (_)
In guix/scripts/build.scm:
     874:5 13 (_)
In srfi/srfi-1.scm:
    679:15 12 (append-map _ _ . _)
    592:17 11 (map1 ("x86_64-linux"))
    679:15 10 (append-map _ _ . _)
    592:17  9 (map1 (#<package [email-masked] /home/user/src/…>))
In guix/scripts/build.scm:
    835:18  8 (_ _)
In guix/packages.scm:
    936:16  7 (cache! #<weak-table 0/113> #<package rust-backtrace@0…> …)
   1254:22  6 (thunk)
    936:16  5 (cache! #<weak-table 0/223> #<package rust-backtrace@0…> …)
   1038:19  4 (thunk)
In guix/build-system/cargo.scm:
    260:27  3 (lower "rust-backtrace-0.3.32" #:source _ #:inputs _ # . #)
     231:4  2 (expand-crate-sources _ _)
    170:23  1 (crate-closure _)
     128:4  0 (_ #:cargo-inputs _)

guix/build-system/cargo.scm:128:4: Invalid keyword: ("rust-lazy-static" 
#<package [email-masked] 
/home/user/src/guix/gnu/packages/crates-io.scm:98 3690d10>)

I tried building rust-lazy-static and it build fine and said:
successfully built 
/gnu/store/0z3giv8ba2383zqaz6m7ayyixhm2jicf-rust-lazy-static-1.3.0.drv
/gnu/store/ssw3gh2ydw1bwp01r6z9sgy2i1zsq1q0-rust-lazy-static-1.3.0

I narrowed it down by inserting smaller and smaller fragments of arnes 
list of packages and this one package (the last in the crates-io.scm) 
causes the error:

(define-public rust-redox-termios 

   (package 

     (name "rust-redox-termios") 

     (version "0.1.1") 

     (source 

      (origin 

        (method url-fetch) 

        (uri (crate-uri "redox_termios" version)) 

        (file-name 

         (string-append name "-" version ".tar.gz")) 

        (sha256 

         (base32 

          "0xhgvdh62mymgdl3jqrngl8hr4i8xwpnbsxnldq0l47993z1r2by")))) 

     (build-system cargo-build-system) 

     (arguments 

      `(#:cargo-inputs 

        (("rust-redox-syscall" ,rust-redox-syscall)))) 

     (home-page "https://github.com/redox-os/termios") 

     (synopsis 

      "A Rust library to access Redox termios functions") 

     (description 

      "This package provides a Rust library to access Redox termios 
functions") 

     (license #f)))

When it is commented out guix says:

$ ./pre-inst-env guix build rust-backtrace
ice-9/eval.scm:223:20: In procedure proc:
error: rust-redox-termios: unbound variable
hint: Did you forget `(use-modules (gnu packages rust))'?

this happens on a guix git pulled && maked yesterday @
Git checkout:
   repository: /home/egil/src/guix
   branch: master
   commit: a3d1a3487a34820d2a0b3d5e6206e4df1c77c15c

My rust is this (from tobias' CI-server @ guix.tobias.gr):
     /gnu/store/s89kb99c07wvyxjcq3rc6aap8rkcfwqx-rust-1.35.0-cargo
    /gnu/store/2dc71v5jlbd6rpz7qx04iyzwl7kcqrjm-rust-1.35.0

-- 
Cheers Swedebugia