Subject: Re: bug#36592: no output for guix package -f when the file evaluates to nothing
From: Ludovic Courtès <[email-masked]>
To: Julien Lepiller <[email-masked]>
Cc: [email-masked]
Date: Fri, 20 Sep 2019 09:42:22 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

Julien Lepiller <[email-masked]> skribis:

> Users tend to copy what they see in our code base, so it's not rare to have to help them realise that if their last statement is (define-public ...), the file doesn't evaluate to a package.
>
> Running guix build -f mypackage.scm at least gives an error saying it doesn't know how to compile #<unspecified>.
>
> Running guix package -f mypackage.scm returns immediately with no error message and a status of 0, but doesn't actually build or install anything. You can even try with an empty file :)
>
> There should be an error message, and probably even a hint.

Fixed in f9c0400392843540a87985a67ffb9fb6e4dbc2fa.  It doesn’t provide a
hint though.

I thought we may want to provide ‘load*’ a type predicate that it would
check, so that it can say “got #<undefined>, expected <package>”.
However, we’d need a contract rather than a mere predicate to have nice
error reporting, so I decided to punt on this for now.

Ludo’.