~ruther/guix-local

dd0a8ef15f903422c6b020e7d793986427add927 — Ludovic Courtès 11 years ago 4db8716
utils: Treat 'configure' and Makefiles with an 8-bit encoding.

* guix/build/utils.scm (patch-makefile-SHELL, patch-/usr/bin/file): Wrap
  'substitute*' in 'with-fluids'.  Fixes <http://hydra.gnu.org/build/262895>.
1 files changed, 21 insertions(+), 17 deletions(-)

M guix/build/utils.scm
M guix/build/utils.scm => guix/build/utils.scm +21 -17
@@ 712,16 712,18 @@ When KEEP-MTIME? is true, the atime/mtime of FILE are kept unchanged."
      shell))

  (let ((st (stat file)))
   (substitute* file
     (("^ *SHELL[[:blank:]]*:?=[[:blank:]]*([[:graph:]]*/)([[:graph:]]+)(.*)$"
       _ dir shell args)
      (let* ((old (string-append dir shell))
             (new (or (find-shell shell) old)))
        (unless (string=? new old)
          (format (current-error-port)
                  "patch-makefile-SHELL: ~a: changing `SHELL' from `~a' to `~a'~%"
                  file old new))
        (string-append "SHELL = " new args))))
    ;; Consider FILE is using an 8-bit encoding to avoid errors.
    (with-fluids ((%default-port-encoding #f))
      (substitute* file
        (("^ *SHELL[[:blank:]]*:?=[[:blank:]]*([[:graph:]]*/)([[:graph:]]+)(.*)$"
          _ dir shell args)
         (let* ((old (string-append dir shell))
                (new (or (find-shell shell) old)))
           (unless (string=? new old)
             (format (current-error-port)
                     "patch-makefile-SHELL: ~a: changing `SHELL' from `~a' to `~a'~%"
                     file old new))
           (string-append "SHELL = " new args)))))

   (when keep-mtime?
     (set-file-time file st))))


@@ 738,13 740,15 @@ unchanged."
              "patch-/usr/bin/file: warning: \
no replacement 'file' command, doing nothing~%")
      (let ((st (stat file)))
        (substitute* file
          (("/usr/bin/file")
           (begin
             (format (current-error-port)
                     "patch-/usr/bin/file: ~a: changing `~a' to `~a'~%"
                     file "/usr/bin/file" file-command)
             file-command)))
        ;; Consider FILE is using an 8-bit encoding to avoid errors.
        (with-fluids ((%default-port-encoding #f))
          (substitute* file
            (("/usr/bin/file")
             (begin
               (format (current-error-port)
                       "patch-/usr/bin/file: ~a: changing `~a' to `~a'~%"
                       file "/usr/bin/file" file-command)
               file-command))))

        (when keep-mtime?
          (set-file-time file st)))))