guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

04/13: gnu: mc: Fix cross-(mis)compilation & substitutions.


From: guix-commits
Subject: 04/13: gnu: mc: Fix cross-(mis)compilation & substitutions.
Date: Mon, 14 Aug 2023 15:37:10 -0400 (EDT)

nckx pushed a commit to branch master
in repository guix.

commit a5f76d482f00a4d5bce2bb089ecdb0be69cea1b5
Author: Tobias Geerinckx-Rice <me@tobias.gr>
AuthorDate: Sun Aug 13 02:00:00 2023 +0200

    gnu: mc: Fix cross-(mis)compilation & substitutions.
    
    * gnu/packages/mc.scm (mc)[arguments]: Set PERL_FOR_BUILD.
    Rename 'patch-FHS-file-names phase to 'patch-file-names.
    Properly distinguish build-time from run-time commands.
    Reorganise to catch more occurrences.
    [inputs]: Add bash-minimal and perl.
---
 gnu/packages/mc.scm | 52 +++++++++++++++++++++++++++++++++-------------------
 1 file changed, 33 insertions(+), 19 deletions(-)

diff --git a/gnu/packages/mc.scm b/gnu/packages/mc.scm
index ff3e702034..ccc2b1cebc 100644
--- a/gnu/packages/mc.scm
+++ b/gnu/packages/mc.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
-;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018–2021, 2023 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +21,7 @@
 
 (define-module (gnu packages mc)
   #:use-module (gnu packages aspell)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages glib)
@@ -52,28 +53,39 @@
      (list
       #:configure-flags
       #~(list "--with-screen=ncurses"
-              "--enable-aspell")
+              "--enable-aspell"
+              (string-append "PERL_FOR_BUILD=" ; to build .hlp files
+                             #$(this-package-native-input "perl") "/bin/perl")
+              (string-append "PERL="    ; for run-time helpers, mainly VFS
+                             #$(this-package-input "perl") "/bin/perl"))
       #:phases
       #~(modify-phases %standard-phases
-          (add-after 'patch-source-shebangs 'patch-FHS-file-names
-            (lambda _
-              ;; Patch files to refer to executables in the store or $PATH.
-              (substitute* "misc/mcedit.menu.in"
-                (("#! /bin/sh") (string-append "#!" (which "sh")))
-                (("/bin/bash") (which "bash")))
-              (substitute* (list "lib/utilunix.c"
-                                 "src/usermenu.c"
-                                 "src/vfs/fish/fish.c"
-                                 
"tests/src/vfs/extfs/helpers-list/Makefile.in")
-                (("/bin/sh") (which "sh")))
+          (add-after 'patch-source-shebangs 'patch-file-names
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; The following commands are all invoked at run time.
+              (substitute*
+                  (list "lib/utilunix.c"
+                        "src/filemanager/ext.c"
+                        "src/usermenu.c"
+                        "src/vfs/fish/fish.c"
+                        ;; This file hard-codes other shells, but they're never
+                        ;; tried after mc's first choice (bash) is found.
+                        "lib/shell.c")
+                (("/bin/(ba|)sh" file)
+                 (search-input-file inputs file)))
               (substitute* "src/filemanager/ext.c"
-                (("/bin/rm") "rm")
-                (("/bin/sh") (which "sh")))
+                ;; Look up in $PATH at run time, rather than hard-coding now.
+                (("/bin/(rm)" command)
+                 command))
+              (substitute* "misc/mcedit.menu.in"
+                ;; These are script templates.  Don't embed store file names.
+                (("#! /bin/([[:alnum:]]*)" _ file)
+                 (string-append "#!/usr/bin/env " file)))
 
-              ;; There are other /bin/<shell>s hard-coded in this file, but 
they
-              ;; are never tried after bash (mc's first choice) is found.
-              (substitute* "lib/shell.c"
-                (("/bin/bash") (which "bash")))))
+              ;; The following commands are all invoked at build time.
+              (substitute* "tests/src/vfs/extfs/helpers-list/Makefile.in"
+                (("/bin/sh")
+                 (which "sh")))))
           (add-before 'check 'fix-tests
             (lambda _
               ;; Don't expect a UID or GID of ‘0’ in the build environment.
@@ -88,11 +100,13 @@
                 (("usr/bin") "/")))))))
     (native-inputs (list perl pkg-config))
     (inputs (list aspell
+                  bash-minimal
                   check
                   glib
                   gpm
                   libssh2
                   ncurses
+                  perl
                   unzip))
     (home-page "https://www.midnight-commander.org";)
     (properties



reply via email to

[Prev in Thread] Current Thread [Next in Thread]