summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2018-09-29 21:18:45 -0400
committerMark H Weaver <mhw@netris.org>2018-09-29 21:18:45 -0400
commit17bea1803cf706d8db053d8d73302a4455684d29 (patch)
tree073d30a8ff065d4e08cc4901f7e97e72a9de68a6 /gnu
parente72ca4111fce4b05bf2a685e451f26e06680e36c (diff)
downloadguix-17bea1803cf706d8db053d8d73302a4455684d29.tar.gz
Revert "services: Add Gitolite."
This reverts commit 258a6d944ed891fa92fa87a16731e5dfe0bac477.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/services/version-control.scm179
-rw-r--r--gnu/tests/version-control.scm114
2 files changed, 2 insertions, 291 deletions
diff --git a/gnu/services/version-control.scm b/gnu/services/version-control.scm
index cc8cd22021..58274c8bee 100644
--- a/gnu/services/version-control.scm
+++ b/gnu/services/version-control.scm
@@ -3,7 +3,6 @@
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -41,23 +40,7 @@
 
             git-http-configuration
             git-http-configuration?
-            git-http-nginx-location-configuration
-
-            <gitolite-configuration>
-            gitolite-configuration
-            gitolite-configuration-package
-            gitolite-configuration-user
-            gitolite-configuration-rc-file
-            gitolite-configuration-admin-pubkey
-
-            <gitolite-rc-file>
-            gitolite-rc-file
-            gitolite-rc-file-umask
-            gitolite-rc-file-git-config-keys
-            gitolite-rc-file-roles
-            gitolite-rc-file-enable
-
-            gitolite-service-type))
+            git-http-nginx-location-configuration))
 
 ;;; Commentary:
 ;;;
@@ -214,163 +197,3 @@ access to exported repositories under @file{/srv/git}."
             "")
         (list "fastcgi_param GIT_PROJECT_ROOT " git-root ";")
         "fastcgi_param PATH_INFO $1;"))))))
-
-
-;;;
-;;; Gitolite
-;;;
-
-(define-record-type* <gitolite-rc-file>
-  gitolite-rc-file make-gitolite-rc-file
-  gitolite-rc-file?
-  (umask           gitolite-rc-file-umask
-                   (default #o0077))
-  (git-config-keys gitolite-rc-file-git-config-keys
-                   (default ""))
-  (roles           gitolite-rc-file-roles
-                   (default '(("READERS" . 1)
-                              ("WRITERS" . 1))))
-  (enable          gitolite-rc-file-enable
-                   (default '("help"
-                              "desc"
-                              "info"
-                              "perms"
-                              "writable"
-                              "ssh-authkeys"
-                              "git-config"
-                              "daemon"
-                              "gitweb"))))
-
-(define-gexp-compiler (gitolite-rc-file-compiler
-                       (file <gitolite-rc-file>) system target)
-  (match file
-    (($ <gitolite-rc-file> umask git-config-keys roles enable)
-     (apply text-file* "gitolite.rc"
-      `("%RC = (\n"
-        "    UMASK => " ,(format #f "~4,'0o" umask) ",\n"
-        "    GIT_CONFIG_KEYS => '" ,git-config-keys "',\n"
-        "    ROLES => {\n"
-        ,@(map (match-lambda
-                 ((role . value)
-                  (simple-format #f "        ~A => ~A,\n" role value)))
-               roles)
-        "    },\n"
-        "\n"
-        "    ENABLE => [\n"
-        ,@(map (lambda (value)
-                 (simple-format #f "        '~A',\n" value))
-               enable)
-        "    ],\n"
-        ");\n"
-        "\n"
-        "1;\n")))))
-
-(define-record-type* <gitolite-configuration>
-  gitolite-configuration make-gitolite-configuration
-  gitolite-configuration?
-  (package        gitolite-configuration-package
-                  (default gitolite))
-  (user           gitolite-configuration-user
-                  (default "git"))
-  (group          gitolite-configuration-group
-                  (default "git"))
-  (home-directory gitolite-configuration-home-directory
-                  (default "/var/lib/gitolite"))
-  (rc-file        gitolite-configuration-rc-file
-                  (default (gitolite-rc-file)))
-  (admin-pubkey   gitolite-configuration-admin-pubkey))
-
-(define gitolite-accounts
-  (match-lambda
-    (($ <gitolite-configuration> package user group home-directory
-                                 rc-file admin-pubkey)
-     ;; User group and account to run Gitolite.
-     (list (user-group (name user) (system? #t))
-           (user-account
-            (name user)
-            (group group)
-            (system? #t)
-            (comment "Gitolite user")
-            (home-directory home-directory))))))
-
-(define gitolite-activation
-  (match-lambda
-    (($ <gitolite-configuration> package user group home
-                                 rc-file admin-pubkey)
-     #~(begin
-         (use-modules (ice-9 match)
-                      (guix build utils))
-
-         (let* ((user-info (getpwnam #$user))
-                (admin-pubkey #$admin-pubkey)
-                (pubkey-file (string-append
-                              #$home "/"
-                              (basename
-                               (strip-store-file-name admin-pubkey)))))
-
-           (simple-format #t "guix: gitolite: installing ~A\n" #$rc-file)
-           (copy-file #$rc-file #$(string-append home "/.gitolite.rc"))
-
-           ;; The key must be writable, so copy it from the store
-           (copy-file admin-pubkey pubkey-file)
-
-           (chmod pubkey-file #o500)
-           (chown pubkey-file
-                  (passwd:uid user-info)
-                  (passwd:gid user-info))
-
-           ;; Set the git configuration, to avoid gitolite trying to use
-           ;; the hostname command, as the network might not be up yet
-           (with-output-to-file #$(string-append home "/.gitconfig")
-             (lambda ()
-               (display "[user]
-        name = GNU Guix
-        email = guix@localhost
-")))
-           ;; Run Gitolite setup, as this updates the hooks and include the
-           ;; admin pubkey if specified. The admin pubkey is required for
-           ;; initial setup, and will replace the previous key if run after
-           ;; initial setup
-           (match (primitive-fork)
-             (0
-              ;; Exit with a non-zero status code if an exception is thrown.
-              (dynamic-wind
-                (const #t)
-                (lambda ()
-                  (setenv "HOME" (passwd:dir user-info))
-                  (setenv "USER" #$user)
-                  (setgid (passwd:gid user-info))
-                  (setuid (passwd:uid user-info))
-                  (primitive-exit
-                   (system* #$(file-append package "/bin/gitolite")
-                            "setup"
-                            "-m" "gitolite setup by GNU Guix"
-                            "-pk" pubkey-file)))
-                (lambda ()
-                  (primitive-exit 1))))
-             (pid (waitpid pid)))
-
-           (when (file-exists? pubkey-file)
-             (delete-file pubkey-file)))))))
-
-(define gitolite-service-type
-  (service-type
-   (name 'gitolite)
-   (extensions
-    (list (service-extension activation-service-type
-                             gitolite-activation)
-          (service-extension account-service-type
-                             gitolite-accounts)
-          (service-extension profile-service-type
-                             ;; The Gitolite package in Guix uses
-                             ;; gitolite-shell in the authorized_keys file, so
-                             ;; gitolite-shell needs to be on the PATH for
-                             ;; gitolite to work.
-                             (lambda (config)
-                               (list
-                                (gitolite-configuration-package config))))))
-   (description
-    "Setup @command{gitolite}, a Git hosting tool providing access over SSH..
-By default, the @code{git} user is used, but this is configurable.
-Additionally, Gitolite can integrate with with tools like gitweb or cgit to
-provide a web interface to view selected repositories.")))
diff --git a/gnu/tests/version-control.scm b/gnu/tests/version-control.scm
index 4409b8a12b..3b935a1b48 100644
--- a/gnu/tests/version-control.scm
+++ b/gnu/tests/version-control.scm
@@ -2,7 +2,6 @@
 ;;; Copyright © 2017, 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,17 +27,14 @@
   #:use-module (gnu services)
   #:use-module (gnu services version-control)
   #:use-module (gnu services cgit)
-  #:use-module (gnu services ssh)
   #:use-module (gnu services web)
   #:use-module (gnu services networking)
   #:use-module (gnu packages version-control)
-  #:use-module (gnu packages ssh)
   #:use-module (guix gexp)
   #:use-module (guix store)
   #:use-module (guix modules)
   #:export (%test-cgit
-            %test-git-http
-            %test-gitolite))
+            %test-git-http))
 
 (define README-contents
   "Hello!  This is what goes inside the 'README' file.")
@@ -304,111 +300,3 @@ HTTP-PORT."
    (name "git-http")
    (description "Connect to a running Git HTTP server.")
    (value (run-git-http-test))))
-
-
-;;;
-;;; Gitolite.
-;;;
-
-(define %gitolite-test-admin-keypair
-  (computed-file
-   "gitolite-test-admin-keypair"
-   (with-imported-modules (source-module-closure
-                           '((guix build utils)))
-     #~(begin
-         (use-modules (ice-9 match) (srfi srfi-26)
-                      (guix build utils))
-
-         (mkdir #$output)
-         (invoke #$(file-append openssh "/bin/ssh-keygen")
-                 "-f" (string-append #$output "/test-admin")
-                 "-t" "rsa"
-                 "-q"
-                 "-N" "")))))
-
-(define %gitolite-os
-  (simple-operating-system
-   (dhcp-client-service)
-   (service openssh-service-type)
-   (service gitolite-service-type
-            (gitolite-configuration
-             (admin-pubkey
-              (file-append %gitolite-test-admin-keypair "/test-admin.pub"))))))
-
-(define (run-gitolite-test)
-  (define os
-    (marionette-operating-system
-     %gitolite-os
-     #:imported-modules '((gnu services herd)
-                          (guix combinators))))
-
-  (define vm
-    (virtual-machine
-     (operating-system os)
-     (port-forwardings `((2222 . 22)))))
-
-  (define test
-    (with-imported-modules '((gnu build marionette)
-                             (guix build utils))
-      #~(begin
-          (use-modules (srfi srfi-64)
-                       (rnrs io ports)
-                       (gnu build marionette)
-                       (guix build utils))
-
-          (define marionette
-            (make-marionette (list #$vm)))
-
-          (mkdir #$output)
-          (chdir #$output)
-
-          (test-begin "gitolite")
-
-          ;; Wait for sshd to be up and running.
-          (test-assert "service running"
-            (marionette-eval
-             '(begin
-                (use-modules (gnu services herd))
-                (start-service 'ssh-daemon))
-             marionette))
-
-          (display #$%gitolite-test-admin-keypair)
-
-          (setenv "GIT_SSH_VARIANT" "ssh")
-          (setenv "GIT_SSH_COMMAND"
-                  (string-join
-                   '(#$(file-append openssh "/bin/ssh")
-                     "-i" #$(file-append %gitolite-test-admin-keypair
-                                         "/test-admin")
-                     "-o" "UserKnownHostsFile=/dev/null"
-                     "-o" "StrictHostKeyChecking=no")))
-
-          (test-assert "cloning the admin repository"
-            (invoke #$(file-append git "/bin/git")
-                    "clone" "-v"
-                    "ssh://git@localhost:2222/gitolite-admin"
-                    "/tmp/clone"))
-
-          (test-assert "admin key exists"
-            (file-exists? "/tmp/clone/keydir/test-admin.pub"))
-
-          (with-directory-excursion "/tmp/clone"
-            (invoke #$(file-append git "/bin/git")
-                    "-c" "user.name=Guix" "-c" "user.email=guix"
-                    "commit"
-                    "-m" "Test commit"
-                    "--allow-empty")
-
-            (test-assert "pushing, and the associated hooks"
-              (invoke #$(file-append git "/bin/git") "push")))
-
-          (test-end)
-          (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
-
-  (gexp->derivation "gitolite" test))
-
-(define %test-gitolite
-  (system-test
-   (name "gitolite")
-   (description "Clone the Gitolite admin repository.")
-   (value (run-gitolite-test))))