unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Rovanion Luckey <rovanion.luckey@gmail.com>
To: guix-devel@gnu.org
Subject: Confusing error messages from guix when loading a user scheme file that fails to load another file
Date: Sun, 21 Feb 2021 10:45:33 +0100	[thread overview]
Message-ID: <CAAaf0CCm+EZ7Qr02+-BEPvo6giWmMK7W4B_7oz0Hyq31WeYMdg@mail.gmail.com> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 2413 bytes --]

Hi,
Today I encountered an issue with Guix's user interface. I was trying to
load a Scheme file defining a development environment with `guix
environment --ad-hoc --load=file.scm`, but Guix kept telling me that the
file did not exist even though I could swear it did:

> $ head -n 1 development-environment.scm
> (use-modules (gnu packages)
> $ guix environment --ad-hoc --load=development-environment.scm
> guix environment: error: failed to load 'development-environment.scm': No
such file or directory

After pulling my hair out for a while and then turning to `strace` I
figured out that it was not actually that the file
`development-environment.scm` did not exist, the issue was that the Scheme
code in that file tried to load a file that did not exist.

I set up a couple of different test cases to see if all errors were
reported equally and to understand the issue better. Running a file that
contains a syntax error indicates that there is an error in the file itself

> $ guix environment --ad-hoc --load=syntax-error.scm
> syntax-error.scm:2:1: missing closing parenthesis


The same goes for when the code in the file being run throws an exception:

> $ guix environment --ad-hoc --load=throw-exception.scm
> guix environment: error: failed to load 'throw-exception.scm':
> throw-exception.scm:1:0: banana


But when the code in turn tries to load another file which does not exist
it is reported as if the file itself is missing:

> $ guix environment --ad-hoc --load=load-non-existing-file.scm
> guix environment: error: failed to load 'load-non-existing-file.scm': No
such file or directory


I was able to find the source of the error message in `guix/ui.scm:378` and
patched it to output the following message that makes more sense in this
failure case:

> $ ./pre-inst-env guix environment --ad-hoc
--load=load-non-existing-file.scm
> guix environment: error: failed to evaluate 'load-non-existing-file.scm',
it raised the error: No such file or directory


So here comes my questions:

1. Why is the file and line number not reported when the user provided
scheme file fails to load another file?
2. Is it possible to modify guix so that it is?
3. If not, is the code path that I patched also used for other failures
making the modification I demonstrated above a bad idea?
4. If so, is there a better way?

I have attached the three small Scheme source code files used in the above
examples.

[-- Attachment #1.2: Type: text/html, Size: 2753 bytes --]

[-- Attachment #2: load-non-existing-file.scm --]
[-- Type: text/x-scheme, Size: 80 bytes --]

(use-modules (ice-9 rdelim))

(with-input-from-file "non-existant" read-string)

[-- Attachment #3: throw-exception.scm --]
[-- Type: text/x-scheme, Size: 17 bytes --]

(error "banana")

[-- Attachment #4: syntax-error.scm --]
[-- Type: text/x-scheme, Size: 2 bytes --]

(

             reply	other threads:[~2021-02-21  9:46 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-21  9:45 Rovanion Luckey [this message]
2021-02-25 16:55 ` Confusing error messages from guix when loading a user scheme file that fails to load another file zimoun
2021-02-26 22:44   ` Rovanion Luckey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAAaf0CCm+EZ7Qr02+-BEPvo6giWmMK7W4B_7oz0Hyq31WeYMdg@mail.gmail.com \
    --to=rovanion.luckey@gmail.com \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).