summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryarl-baudig@mailoo.org <yarl-baudig@mailoo.org>2022-05-22 15:54:42 +0200
committerLudovic Courtès <ludo@gnu.org>2022-05-27 23:36:36 +0200
commitd4158ea63ad6d112c3e95b3dde99608d7bd99148 (patch)
tree777fb5f6efec1677afbe4f649bdcbe5e7b7ecc34
parent5bfb7ebe5dd3011d766a98cb9875399fb836c4b1 (diff)
downloadguix-patches-d4158ea63ad6d112c3e95b3dde99608d7bd99148.tar
guix-patches-d4158ea63ad6d112c3e95b3dde99608d7bd99148.tar.gz
substitute: Check for --help or --version options early.
Running `guix archive --authorize` sets /etc/guix/acl to 600 via with-atomic-file-output via mkstemp!. Then running `guix substitute --help/--version` fails on "permission denied". While "guix substitute" is an internal tool, the options --help and --version exist and you should be able to run those from the command line. * guix/scripts/substitute.scm (guix-substitute): Earlier check for --help or --version. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rwxr-xr-xguix/scripts/substitute.scm12
1 files changed, 8 insertions, 4 deletions
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 908a8334a8..c5f5d23b47 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -704,6 +704,14 @@ default value."
(category internal)
(synopsis "implement the build daemon's substituter protocol")
+ (match args
+ ((or ("-V") ("--version"))
+ (show-version-and-exit "guix substitute"))
+ ((or ("-h") ("--help") ())
+ (show-help)
+ (exit 0))
+ (_ #t))
+
(define print-build-trace?
(match (or (find-daemon-option "untrusted-print-extended-build-trace")
(find-daemon-option "print-extended-build-trace"))
@@ -775,10 +783,6 @@ default value."
#:print-build-trace?
print-build-trace?)
(loop))))))
- ((or ("-V") ("--version"))
- (show-version-and-exit "guix substitute"))
- ((or ("-h") ("--help"))
- (show-help))
(opts
(leave (G_ "~a: unrecognized options~%") opts))))))