From 5a64a791317d98171435eff541a835ab0d3f498c Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Wed, 25 Jan 2017 16:28:03 +0100 Subject: [PATCH] utils: Add helper method to make files writable. * gnu/build/activation.scm (make-file-writable): Move this to ... * guix/build/utils.scm (make-file-writable): ... here. Export it. * guix/build/gnu-build-system.scm (strip): Use it. --- gnu/build/activation.scm | 5 ----- guix/build/gnu-build-system.scm | 6 ++++-- guix/build/utils.scm | 6 ++++++ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm index 1b31dc1538..756a6872bb 100644 --- a/gnu/build/activation.scm +++ b/gnu/build/activation.scm @@ -78,11 +78,6 @@ (define (dot-or-dot-dot? file) (member file '("." ".."))) -(define (make-file-writable file) - "Make FILE writable for its owner.." - (let ((stat (lstat file))) ;XXX: symlinks - (chmod file (logior #o600 (stat:perms stat))))) - (define* (copy-account-skeletons home #:optional (directory %skeleton-directory)) "Copy the account skeletons from DIRECTORY to HOME." diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index 39ed1e4d4a..1786e2e3c9 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -392,8 +392,10 @@ makefiles." (and (or (elf-file? file) (ar-file? file)) (or (not debug-output) (make-debug-file file)) - ;; Ensure libraries are writable. - (chmod file #o755) + + ;; Ensure the file is writable. + (begin (make-file-writable file) #t) + (zero? (apply system* strip-command (append strip-flags (list file)))) (or (not debug-output) diff --git a/guix/build/utils.scm b/guix/build/utils.scm index 9e9ac90050..e8efb0653a 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -50,6 +50,7 @@ with-directory-excursion mkdir-p install-file + make-file-writable copy-recursively delete-file-recursively file-name-predicate @@ -262,6 +263,11 @@ name." (mkdir-p directory) (copy-file file (string-append directory "/" (basename file)))) +(define (make-file-writable file) + "Make FILE writable for its owner." + (let ((stat (lstat file))) ;XXX: symlinks + (chmod file (logior #o600 (stat:perms stat))))) + (define* (copy-recursively source destination #:key (log (current-output-port))