cs makefile: refine handling of file permissions

On a second look, 6d06086dad unnecessarily duplicates work already don
by `copy-file` in most cases. For the case where `copy-file` was not
used, there was code to explicitly set an executable bit, but the new
approach is better and should be used just there.
This commit is contained in:
Matthew Flatt 2020-05-19 09:59:46 -06:00
parent b6c5515efa
commit b7908e97a1

View File

@ -82,16 +82,10 @@
(add-racket-section use-src-file dest-file #".rackboot" (add-racket-section use-src-file dest-file #".rackboot"
(lambda (pos) (lambda (pos)
(values data 'any1 'any2)))) (values data 'any1 'any2))))
(define (ensure-executable dest-file)
(let* ([perms1 (file-or-directory-permissions dest-file 'bits)]
[perms2 (bitwise-ior user-read-bit user-write-bit user-execute-bit
perms1)])
(unless (equal? perms1 perms2)
(file-or-directory-permissions dest-file perms2))))
(cond (cond
[start-pos [start-pos
;; Success as ELF ;; Success as ELF
(ensure-executable dest-file) (file-or-directory-permissions dest-file (file-or-directory-permissions use-src-file 'bits))
(cond (cond
[expect-elf? [expect-elf?
;; Find ".rackboot" at run time: ;; Find ".rackboot" at run time:
@ -101,7 +95,6 @@
[else [else
;; Not ELF; just append to the end ;; Not ELF; just append to the end
(copy-file use-src-file dest-file #t) (copy-file use-src-file dest-file #t)
(ensure-executable dest-file)
(define pos (file-size dest-file)) (define pos (file-size dest-file))
(call-with-output-file* (call-with-output-file*
dest-file dest-file
@ -134,6 +127,4 @@
(copy-file (car alt) (cdr alt) #t) (copy-file (car alt) (cdr alt) #t)
(write-offsets (cdr alt)))]) (write-offsets (cdr alt)))])
(file-or-directory-permissions dest-file (file-or-directory-permissions use-src-file 'bits))
(clean-src))) (clean-src)))