Subject: bug#42543: lint failure for packages on load path specified with -L

From: Ludovic Courtès <[email-masked]>
Date: Wed, 05 Aug 2020 22:28:07 +0200

Hi,

Jack Hill <[email-masked]> skribis:

> jackhill@alperton ~$ guix lint -L lint-test my-hello
> Backtrace:[email-masked] [formatting]...
>            8 (primitive-load "/home/jackhill/.config/guix/current/bi…")
> In guix/ui.scm:
>   1974:12  7 (run-guix-command _ . _)
> In ice-9/boot-9.scm:
>   1736:10  6 (with-exception-handler _ _ #:unwind? _ # _)
> In guix/store.scm:
>    631:22  5 (thunk)
> In srfi/srfi-1.scm:
>     634:9  4 (for-each #<procedure 7f40c0484020 at guix/scripts/lin…> …)
> In guix/scripts/lint.scm:
>      60:4  3 (run-checkers _ _ #:store _)
> In srfi/srfi-1.scm:
>     634:9  2 (for-each #<procedure 7f40b2ab53f0 at guix/scripts/lin…> …)
>     241:2  1 (for-each _ _)
> In ice-9/boot-9.scm:
>   1669:16  0 (raise-exception _ #:continuable? _)
>
> ice-9/boot-9.scm:1669:16: In procedure raise-exception:
> In procedure for-each: Wrong type argument: #f

I can’t reproduce this problem:

--8<---------------cut here---------------start------------->8---
$ cat /tmp/t/my-hello.scm
(define-module (my-hello)
  #:use-module (guix build-system gnu)
  #:use-module (guix download)
  #:use-module (guix licenses)
  #:use-module (guix packages))

(define-public my-hello
  (package
    (name "my-hello")
    (version "2.10")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/hello/hello-" version
                                  ".tar.gz"))
              (sha256
               (base32
                "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
    (build-system gnu-build-system)
    (synopsis "Hello, GNU world: An example GNU package")
    (description
     "GNU Hello prints the message \"Hello, world!\" and then exits.  It
serves as an example of standard GNU coding practices.  As such, it supports
command-line arguments, multiple languages, and so on.")
    (home-page "https://www.gnu.org/software/hello/")
    (license gpl3+)))
$ guix lint -L /tmp/t my-hello
$ echo $?
0
$ guix show -L /tmp/t my-hello
name: my-hello
version: 2.10
outputs: out
systems: x86_64-linux i686-linux
dependencies: 
location: /tmp/t/my-hello.scm:8:2
homepage: https://www.gnu.org/software/hello/
license: GPL 3+
synopsis: Saluton, mondo GNU: ekzemplo de pako GNU  
description: GNU Hello montras la mesaĝon "Hello, world!" kaj finiĝas.  Ĝi funkcias kiel ekzemplo de norma
+ kodumada tradicio de GNU.  Tiel, ĝi subtenas komand-liniajn argumentojn, plurajn lingvojn, kaj tiel plu.

$ guix describe
Generacio 152	Aug 04 2020 17:34:23	(nuna)
  guix abe3c5e
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: abe3c5ed7d04985c987e6c81aeb1284354ea0c77
--8<---------------cut here---------------end--------------->8---

Do you still have this problem?

(Besides, ‘canonicalize-path’ should be used sparsely: it’s quite
expensive and sometimes confusing for users.  With the proposed patches,
“-L /does/not/exist” would now lead to an error.)

Thanks,
Ludo’.