Subject: [PATCH v8] gnu: Add got.

From: Ashish SHUKLA <[email-masked]>
Date: Tue, 17 Sep 2024 20:31:43 +0000

* gnu/packages/version-control.scm (got): New variable.

Change-Id: I34d19d90ab36e8831fa88668676aa2399356b002
---
Hi,

Following changes are made in this revision:

 - guix style -S inputs --input-simplification=always got

 - switched configure-flags to make-flags, and split CFLAGS in multiple values

 - removed the trailing #t

Thanks for reviewing.

 gnu/packages/version-control.scm | 52 ++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 3bec28c4f7..5ab577d3cf 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -57,6 +57,7 @@
 ;;; Copyright © 2024 Suhail Singh <[email-masked]>
 ;;; Copyright © 2024 Simon Tournier <[email-masked]>
 ;;; Copyright © 2024 Javier Olaechea <[email-masked]>
+;;; Copyright © 2024 Ashish SHUKLA <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -103,6 +104,7 @@ (define-module (gnu packages version-control)
   #:use-module (gnu packages cook)
   #:use-module (gnu packages crates-io)
   #:use-module (gnu packages crates-vcs)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages docbook)
@@ -125,6 +127,8 @@ (define-module (gnu packages version-control)
   #:use-module (gnu packages guile-xyz)
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages libbsd)
+  #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages mail)
   #:use-module (gnu packages man)
@@ -964,6 +968,54 @@ (define-public git-tools
 @end itemize")
     (license license:gpl3+)))
 
+(define-public got
+  (package
+    (name "got")
+    (version "0.103")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://gameoftrees.org/releases/portable/got-portable-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0y18961xrj4rja850i31gadiaps2qnkfb4jlramlz9akyf9mwh1j"))))
+    (inputs
+     (list libevent
+           `(,util-linux "lib")
+           zlib
+           libressl
+           libmd
+           libbsd
+           ncurses))
+    (native-inputs
+     (list pkg-config perl))
+    (arguments
+     `(;; disable runpath validation, courtesy: libbsd's special
+       ;; treatment of libmd, as it embeds path to libmd.so
+       #:validate-runpath? #f
+       ;; default values of GOT_*_PATH_* point to /usr/bin
+       #:make-flags
+       '("CFLAGS+=-DGOT_DIAL_PATH_SSH=\\\"ssh\\\""
+         "CFLAGS+=-DGOT_TAG_PATH_SSH_KEYGEN=\\\"ssh-keygen\\\""
+         "CFLAGS+=-DGOT_TAG_PATH_SIGNIFY=\\\"signify\\\"")
+      #:phases ,#~(modify-phases %standard-phases
+                    (add-after 'unpack 'patch-execv-to-execvp
+                      (lambda _
+                        ;; got sources has paths hardcoded to /usr/bin
+                        (substitute* "lib/dial.c"
+                          (("execv\\(GOT_DIAL_") "execvp(GOT_DIAL_")
+                          (("execv %s\", GOT_DIAL") "execvp %s\", GOT_DIAL"))
+                        (substitute* "lib/sigs.c"
+                          (("execv\\(GOT_TAG") "execvp(GOT_TAG")
+                          (("execv %s\", GOT_TAG") "execvp %s\", GOT_TAG")))))))
+    (build-system gnu-build-system)
+    (synopsis "Distributed version control system")
+    (description
+     "Game of Trees (Got) is a version control system which prioritizes ease of use
+and simplicity over flexibility.")
+    (license license:bsd-3)
+    (home-page "https://gameoftrees.org/")))
+
 (define-public xdiff
   (let ((revision "0")
         (commit "a137bc7ee6c76618ed1737c257548eaa10ac0089"))

base-commit: 5bc1fff8f1d1bd68be3183e64b06c8b85f60d96b
-- 
2.46.1