[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#33755: error: execlp: No such file or directory from guix environmen
From: |
Timothy Sample |
Subject: |
bug#33755: error: execlp: No such file or directory from guix environment |
Date: |
Sat, 15 Dec 2018 23:26:07 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) |
Hi Danny,
Danny Milosavljevic <address@hidden> writes:
> Hi Tim,
>
> I like it in princple, but why special-case ENOENT? I think it would
> be better to just always print the program name (and maybe program
> args, too!) and the system error message.
You are right. I got fixated on the fact that it was failing the $PATH
search, and forgot about the more general cases. I think printing the
program name and the system error message is the right choice.
According to the manual for “execve”, the arguments only cause an error
if they exceed ARG_MAX, in which case we probably don’t want to print
them anyway.
Here’s an updated patch. I also got rid of the 127 status code, since
doesn’t make sense for the more general cases.
Thanks for the help!
-- Tim
>From aedc745a3f9765ae00dc61a59fa53d22a458551b Mon Sep 17 00:00:00 2001
From: Timothy Sample <address@hidden>
Date: Sat, 15 Dec 2018 23:17:46 -0500
Subject: [PATCH] environment: Print command name on execlp error.
Fixes <https://bugs.gnu.org/33755>.
* guix/scripts/environment.scm (launch-environment): When execlp fails,
include the command name in the error message.
---
guix/scripts/environment.scm | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 5965e3426..64035a740 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -389,7 +389,12 @@ variables are cleared before setting the new ones."
(create-environment profile manifest #:pure? pure?)
(match command
((program . args)
- (apply execlp program program args))))
+ (catch 'system-error
+ (lambda ()
+ (apply execlp program program args))
+ (lambda args
+ (let ((errno (system-error-errno args)))
+ (leave (G_ "~a: ~a~%") program (strerror errno))))))))
(define* (launch-environment/fork command profile manifest #:key pure?)
"Run COMMAND in a new process with an environment containing PROFILE, with
--
2.20.0
- bug#33755: error: execlp: No such file or directory from guix environment, swedebugia, 2018/12/15
- bug#33755: error: execlp: No such file or directory from guix environment, Julien Lepiller, 2018/12/15
- bug#33755: error: execlp: No such file or directory from guix environment, Timothy Sample, 2018/12/15
- bug#33755: error: execlp: No such file or directory from guix environment, Timothy Sample, 2018/12/15
- bug#33755: error: execlp: No such file or directory from guix environment, Danny Milosavljevic, 2018/12/15
- bug#33755: error: execlp: No such file or directory from guix environment,
Timothy Sample <=
- bug#33755: error: execlp: No such file or directory from guix environment, Ludovic Courtès, 2018/12/16
- bug#33755: error: execlp: No such file or directory from guix environment, Timothy Sample, 2018/12/16
- bug#33755: error: execlp: No such file or directory from guix environment, Ludovic Courtès, 2018/12/18