summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--guix/forge/klaus.scm27
1 files changed, 26 insertions, 1 deletions
diff --git a/guix/forge/klaus.scm b/guix/forge/klaus.scm
index fcc63a5..099b42f 100644
--- a/guix/forge/klaus.scm
+++ b/guix/forge/klaus.scm
@@ -19,11 +19,14 @@
 
 (define-module (forge klaus)
   #:use-module ((gnu packages check) #:select (python-nose))
+  #:use-module ((gnu packages version-control) #:select (git-minimal))
   #:use-module (guix build-system pyproject)
   #:use-module (guix build-system python)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages))
+  #:use-module (guix packages)
+  #:use-module (guix utils))
 
 (define-public python-httpauth
   (package
@@ -42,3 +45,25 @@
     (description "@code{python-httpauth} is WSGI middleware that secures some/all
 routes using HTTP Digest Authentication.")
     (license license:bsd-2)))
+
+;; We use klaus to serve shared repositories. But, git's safe
+;; directory check does not permit us to use shared
+;; repositories. Disable it. The more long term solution is to rewrite
+;; klaus to not use the git CLI at all. See
+;; https://github.com/jonashaag/klaus/issues/322
+(define-public git-without-safe-directory-check
+  (package
+    (inherit git-minimal)
+    (name "git-without-safe-directory-check")
+    (arguments
+     (substitute-keyword-arguments (package-arguments git-minimal)
+       ((#:phases phases #~%standard-phases)
+        #~(modify-phases #$phases
+            (add-after 'unpack 'disable-safe-directory-check
+              (lambda _
+                ;; Disable the safe directory check.
+                (substitute* "setup.c"
+                  (("return data\\.is_safe;")
+                   "return 1;"))
+                ;; Disable tests broken by this change.
+                (setenv "GIT_SKIP_TESTS" "t0033 t9700")))))))))