summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix/build/ruby-build-system.scm17
1 files changed, 10 insertions, 7 deletions
diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm
index 49400b204d..63c94765f7 100644
--- a/guix/build/ruby-build-system.scm
+++ b/guix/build/ruby-build-system.scm
@@ -143,13 +143,16 @@ GEM-FLAGS are passed to the 'gem' invokation, if present."
(gem-dir (string-append vendor-dir "/gems/" gem-name)))
(setenv "GEM_VENDOR" vendor-dir)
- (or (apply invoke "gem" "install" gem-file
- "--verbose"
- "--local" "--ignore-dependencies" "--vendor"
- ;; Executables should go into /bin, not
- ;; /lib/ruby/gems.
- "--bindir" (string-append out "/bin")
- gem-flags)
+ (or (zero?
+ ;; 'zero? system*' allows the custom error handling to function as
+ ;; expected, while 'invoke' raises its own exception.
+ (apply system* "gem" "install" gem-file
+ "--verbose"
+ "--local" "--ignore-dependencies" "--vendor"
+ ;; Executables should go into /bin, not
+ ;; /lib/ruby/gems.
+ "--bindir" (string-append out "/bin")
+ gem-flags))
(begin
(let ((failed-output-dir (string-append (getcwd) "/out")))
(mkdir failed-output-dir)