shell: Error out when an unauthorized guix.scm/manifest.scm is found.

The previous behavior was confusing: a warning would be printed and
'guix shell' would go on starting an empty environment.

Reported by Tobias Geerinckx-Rice <me@tobias.gr>.

* guix/scripts/shell.scm (auto-detect-manifest): Change "not loading"
case from warning to error.
* tests/guix-shell.sh: Adjust accordingly.
This commit is contained in:
Ludovic Courtès 2021-10-30 16:35:06 +02:00
parent bcce83c785
commit 98173af522
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 7 additions and 4 deletions

View file

@ -283,8 +283,9 @@ (define disallow-implicit-load?
("guix.scm" (alist-cons 'load `(package ,file) opts))
("manifest.scm" (alist-cons 'manifest file opts))))
(begin
(warning (G_ "not loading '~a' because not authorized to do so~%")
file)
(report-error
(G_ "not loading '~a' because not authorized to do so~%")
file)
(display-hint (format #f (G_ "To allow automatic loading of
@file{~a} when running @command{guix shell}, you must explicitly authorize its
directory, like so:
@ -295,7 +296,7 @@ (define disallow-implicit-load?
file
(dirname file)
(authorized-directory-file)))
opts))))))
(exit 1)))))))
;;;

View file

@ -39,7 +39,9 @@ guix shell --bootstrap --pure guile-bootstrap -- guile --version
cat > "$tmpdir/guix.scm" <<EOF
This is a broken guix.scm file.
EOF
(cd "$tmpdir"; SHELL="$(type -P true)" guix shell --bootstrap)
! (cd "$tmpdir"; SHELL="$(type -P true)" guix shell --bootstrap 2> "stderr")
grep "not authorized" "$tmpdir/stderr"
rm "$tmpdir/stderr"
# Authorize the directory.
echo "$(realpath "$tmpdir")" > "$configdir/guix/shell-authorized-directories"