From bfaaffb06a8f5a3610db22698b4781b0db73d332 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 19 Aug 2015 22:43:15 +0200 Subject: [PATCH] gnu: ncurses: Rework trick to avoid reference to the bootstrap bash. This removes reliance on the availability of 'bin/sh' in glibc. * gnu/packages/ncurses.scm (ncurses): Remove 'configure-phase'. Add 'remove-shebang-phase'. [arguments]: Remove distinction between cross builds and native builds. Use 'modify-phases'. Add 'remove-unneeded-shebang' phase. --- gnu/packages/ncurses.scm | 51 ++++++++++++++-------------------------- 1 file changed, 18 insertions(+), 33 deletions(-) diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm index 31f5d27d2e..49a16bc058 100644 --- a/gnu/packages/ncurses.scm +++ b/gnu/packages/ncurses.scm @@ -28,21 +28,17 @@ '(lambda _ (for-each patch-makefile-SHELL (find-files "." "Makefile.in")))) - (configure-phase - '(lambda* (#:key inputs outputs configure-flags - #:allow-other-keys) - ;; The `ncursesw5-config' has a #!/bin/sh. We want to patch - ;; it to point to libc's embedded Bash, to avoid retaining a - ;; reference to the bootstrap Bash. - (let* ((libc (assoc-ref inputs "libc")) - (bash (string-append libc "/bin/bash")) - (out (assoc-ref outputs "out"))) - (format #t "configure flags: ~s~%" configure-flags) - (zero? (apply system* bash "./configure" - (string-append "SHELL=" bash) - (string-append "CONFIG_SHELL=" bash) - (string-append "--prefix=" out) - configure-flags))))) + (remove-shebang-phase + '(lambda _ + ;; To avoid retaining a reference to the bootstrap Bash via the + ;; shebang of the 'ncursesw5-config' script, simply remove that + ;; shebang: it'll work just as well without it. + (substitute* "misc/ncurses-config.in" + (("#!@SHELL@") + "# No shebang here, use /bin/sh!\n") + (("@SHELL@ \\$0") + "$0")) + #t)) (post-install-phase '(lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) @@ -103,24 +99,13 @@ '("--without-cxx-binding") '())) #:tests? #f ; no "check" target - #:phases ,(if (%current-target-system) - - `(alist-cons-before ; cross build - 'configure 'patch-makefile-SHELL - ,patch-makefile-phase - (alist-cons-after - 'install 'post-install ,post-install-phase - %standard-phases)) - - `(alist-cons-after ; native build - 'install 'post-install ,post-install-phase - (alist-cons-before - 'configure 'patch-makefile-SHELL - ,patch-makefile-phase - (alist-replace - 'configure - ,configure-phase - %standard-phases)))))) + #:phases (modify-phases %standard-phases + (add-after 'install 'post-install + ,post-install-phase) + (add-before 'configure 'patch-makefile-SHELL + ,patch-makefile-phase) + (add-after 'unpack 'remove-unneeded-shebang + ,remove-shebang-phase)))) (self-native-input? #t) ; for `tic' (synopsis "Terminal emulation (termcap, terminfo) library") (description