From 3d45d8f14bea0468494442597e005c9a6b46155b Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Sun, 21 Jul 2019 15:50:57 -0400 Subject: [PATCH] gnu: git-annex: Don't patch shebang used in hooks. git-annex relies on configuring Git's pre-commit and post-receive hooks. Avoid patching the shebang that git-annex embeds when generating these hooks so that the hooks don't fail if garbage collection claims the bash that was current when the annex repository was initialized. * gnu/packages/haskell-apps.scm (git-annex):[arguments]: Patch hook shebangs only temporarily for tests. Signed-off-by: Marius Bakke --- gnu/packages/haskell-apps.scm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm index e01f796178..818e691a6e 100644 --- a/gnu/packages/haskell-apps.scm +++ b/gnu/packages/haskell-apps.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2018 Arun Isaac ;;; Copyright © 2016, 2017 Leo Famulari ;;; Copyright © 2015 Paul van der Walt +;;; Copyright © 2019 Kyle Meyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -157,8 +158,13 @@ (define-public git-annex '("--flags=-Android -Assistant -Pairing -S3 -Webapp -WebDAV") #:phases (modify-phases %standard-phases - (add-before 'configure 'patch-shell + (add-before 'configure 'patch-shell-for-tests (lambda _ + ;; Shell.hs defines "/bin/sh" that is used in Git hooks. We + ;; shouldn't patch hooks with Guix's current bash because the + ;; hooks can exist after that bash is garbage collected, but + ;; let's temporarily patch it so that we can run the tests. + (copy-file "Utility/Shell.hs" "/tmp/Shell.hs") (substitute* "Utility/Shell.hs" (("/bin/sh") (which "sh"))) #t)) @@ -192,6 +198,11 @@ (define-public git-annex (symlink "git-annex" "git-annex-shell")) (invoke "git-annex" "test") #t)) + (add-after 'check 'unpatch-shell-and-rebuild + (lambda args + ;; Undo `patch-shell-for-tests'. + (copy-file "/tmp/Shell.hs" "Utility/Shell.hs") + (apply (assoc-ref %standard-phases 'build) args))) (add-after 'install 'install-symlinks (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out"))