Subject: bug#43736: closed (Re: bug#43736: The local-file()'s error message is misleading.)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 02 Oct 2020 06:16:02 +0000

Your bug report

#43736: The local-file()'s error message is misleading.

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
43736: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=43736
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#43736: The local-file()'s error message is misleading.
From: Ludovic Courtès <[email-masked]>
To: "Vitaliy Shatrov" <[email-masked]>
Cc: [email-masked]
Date: Fri, 02 Oct 2020 08:14:56 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

"Vitaliy Shatrov" <[email-masked]> skribis:

> ;; (define (custom-local-file str)              ; shorthand, preserves permissions
> ;;   (let* ((file (local-file str #:recursive? #t))
> ;;       (dir (dirname (local-file-absolute-file-name file))))
> ;;     (display (string-append "loading local file '" str "' from " dir "...\n"))
> ;;     file))

[...]

> ;;      (auto-login (custom-local-file "auto-login"))
> ;;      (syslog.conf (custom-local-file "syslog.conf")))

This will not have the desired effect.  ‘local-file’ is special syntax:
it captures the source directory so that at run time it can resolve file
names relative to the source directory.

The ‘custom-local-file’ procedure does not do that.  Consequently, file
names get resolved relative to $PWD instead.

Commit f43ffee90882c2d61b46d69728daa7432be297e4 improves on that by
emitting a warning at run time when ‘local-file’ is passed a non-literal
relative file name.

Thanks,
Ludo’.

Subject: The local-file()'s error message is misleading.
From: "Vitaliy Shatrov" <[email-masked]>
To: "Das Guixen" <[email-masked]>
Date: Thu, 01 Oct 2020 04:56:08 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello there.
I ran in bash shell:

pwd
--> /home/vits

conf=~/guix/configuration/configuration.scm

ls $conf   # file exists
--> ~/guix/configuration/configuration.scm

guix system build $conf
--> guix system: error: failed to load
'/home/vits/guix/configuration/configuration.scm': No such file or directory

The commands above will result in a successfull build if i
`cd guix/configuration` before doing `guix system build`
(both with rel. and abs. names).

Attached is WORKING config.scm.  Error was caused by local-file()
used with _relative_ paths.  Those were commented out, and this
config.scm works from any directory.

#guix:
> ... error message is very misleading.

Better of course if the offending file will be print out:
"failed to load (...) /home/vits/auto-login:  no such file or directory"

---
Thanks for attention, Vitaliy.