diff options
-rw-r--r-- | gnu/build/activation.scm | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm index c6c7e7fd3b..6d69628eb2 100644 --- a/gnu/build/activation.scm +++ b/gnu/build/activation.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; ;;; This file is part of GNU Guix. @@ -247,7 +247,19 @@ they already exist." string<?)) (mkdir-p %setuid-directory)) - (for-each make-setuid-program programs)) + (for-each (lambda (program) + (catch 'system-error + (lambda () + (make-setuid-program program)) + (lambda args + ;; If we fail to create a setuid program, better keep going + ;; so that we don't leave %SETUID-DIRECTORY empty or + ;; half-populated. This can happen if PROGRAMS contains + ;; incorrect file names: <https://bugs.gnu.org/38800>. + (format (current-error-port) + "warning: failed to make '~a' setuid-root: ~a~%" + program (strerror (system-error-errno args)))))) + programs)) (define (activate-special-files special-files) "Install the files listed in SPECIAL-FILES. Each element of SPECIAL-FILES |