summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2018-07-13 20:39:34 +0100
committerChristopher Baines <mail@cbaines.net>2018-09-28 21:00:18 +0100
commit595af457aedb887c5fb4409f2fbaf4d23c059024 (patch)
tree5fea5493bb5f99724869aef7f49f7b535d5e752a
parent02817df07e965c3413e6986966b3e607de47709c (diff)
gnu: Modify the gitolite package to support the Guix service.
Previously the gitolite package worked, but there were problems using it for the service where you might have a minimal PATH. This commit patches the source and scripts where possible to use store paths, and also wraps the gitolite script to handle the harder dependencies. * gnu/packages/version-control.scm (gitolite)[arguments]: Add more patching to the patch-scripts phase, and add two new phases (patch-source and wrap-scripts). [inputs]: Add coreutils, findutils and inetutils.
-rw-r--r--gnu/packages/version-control.scm53
1 files changed, 52 insertions, 1 deletions
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 204ec403f6..d06055de45 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -1031,12 +1031,48 @@ also walk each side of a merge and test those changes individually.")
((" perl -")
(string-append " " perl " -")))
+ (substitute* (find-files "src/triggers" ".*")
+ ((" sed ")
+ (string-append " " (which "sed") " ")))
+
+ (substitute*
+ '("src/triggers/post-compile/update-gitweb-access-list"
+ "src/triggers/post-compile/ssh-authkeys-split"
+ "src/triggers/upstream")
+ ((" grep ")
+ (string-append " " (which "grep") " ")))
+
;; Avoid references to the store in authorized_keys.
;; This works because gitolite-shell is in the PATH.
(substitute* "src/triggers/post-compile/ssh-authkeys"
(("\\$glshell \\$user")
"gitolite-shell $user"))
#t)))
+ (add-before 'install 'patch-source
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Gitolite uses cat to test the readability of the
+ ;; pubkey
+ (substitute* "src/lib/Gitolite/Setup.pm"
+ (("\"cat ")
+ (string-append "\"" (which "cat") " "))
+ (("\"ssh-keygen")
+ (string-append "\"" (which "ssh-keygen"))))
+
+ (substitute* '("src/lib/Gitolite/Hooks/PostUpdate.pm"
+ "src/lib/Gitolite/Hooks/Update.pm")
+ (("/usr/bin/perl")
+ (string-append (assoc-ref inputs "perl")
+ "/bin/perl")))
+
+ (substitute* "src/lib/Gitolite/Common.pm"
+ (("\"ssh-keygen")
+ (string-append "\"" (which "ssh-keygen")))
+ (("\"logger\"")
+ (string-append "\""
+ (assoc-ref inputs "inetutils")
+ "/bin/logger\"")))
+
+ #t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((output (assoc-ref outputs "out"))
@@ -1050,9 +1086,24 @@ also walk each side of a merge and test those changes individually.")
(symlink (string-append sharedir "/" script)
(string-append bindir "/" script)))
'("gitolite" "gitolite-shell"))
+ #t)))
+ (add-after 'install 'wrap-scripts
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (coreutils (assoc-ref inputs "coreutils"))
+ (findutils (assoc-ref inputs "findutils"))
+ (git (assoc-ref inputs "git")))
+ (wrap-program (string-append out "/bin/gitolite")
+ `("PATH" ":" prefix
+ ,(map (lambda (dir)
+ (string-append dir "/bin"))
+ (list out coreutils findutils git))))
#t))))))
(inputs
- `(("perl" ,perl)))
+ `(("perl" ,perl)
+ ("coreutils" ,coreutils)
+ ("findutils" ,findutils)
+ ("inetutils" ,inetutils)))
;; git and openssh are propagated because trying to patch the source via
;; regexp matching is too brittle and prone to false positives.
(propagated-inputs