Subject: [bug#40426] [PATCH] Add g-golf

From: Mike Rosset <[email-masked]>
Date: Wed, 15 Apr 2020 09:47:01 -0700

Tobias Geerinckx-Rice via Guix-patches via writes:

> Vitaliy,
>
> Vitaliy Shatrov via Guix-patches via 写道：
>> str1ngs and nly want it to be submitted to guix, and i was proudly
>> take this task.  Package was copied "as-is", and tested as per Guix
>> manual.
>
> Thank you!

Tobias, this has already been merged with
dfe277a5ce60d487fe44840506206fea8507bc69. I will though address your
comments with this attached patch.

>From 1b230e6e000b57bfa3d2b4ef63a894e5e02195d5 Mon Sep 17 00:00:00 2001
From: Mike Rosset <[email-masked]>
Date: Wed, 15 Apr 2020 09:41:10 -0700
Subject: [PATCH] gnu: g-golf: Fix version to 0.0.0-0.4a4edf2

* gnu/packages/guile-xyz.scm (g-golf): Fix version to 0.0.0-0.4a4edf2.
---
 gnu/packages/guile-xyz.scm | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index ebd7d89dec..58938268e4 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -1652,10 +1652,13 @@ capabilities.")
     (license license:gpl3+)))
 
 (define-public g-golf
-  (let ((commit "4a4edf25e4877df9182c77843bdd98ab59e13ef7"))
+  (let ((commit "4a4edf25e4877df9182c77843bdd98ab59e13ef7")
+        (revision "0"))
     (package
       (name "g-golf")
-      (version (git-version "1" "683" commit))
+      (version (git-version "0.0.0" revision commit))
+      ;; g-golf is still work in progress.  Since there are no release
+      ;; tarballs we use git for sources.
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -1684,13 +1687,13 @@ capabilities.")
       (arguments
        `(#:phases
          (modify-phases %standard-phases
-           (add-before 'configure 'tests-work-arounds
+           (add-before 'configure 'substitue-tty-test
              (lambda* (#:key inputs #:allow-other-keys)
                ;; In build environment, There is no /dev/tty
-               (substitute*
-                   "test-suite/tests/gobject.scm"
-                 (("/dev/tty") "/dev/null"))))
-           (add-before 'configure 'substitute-libs
+               (substitute* "test-suite/tests/gobject.scm"
+                 (("/dev/tty") "/dev/null")
+                 #t)))
+           (add-before 'configure 'substitute-libriaries
              (lambda* (#:key inputs outputs #:allow-other-keys)
                (let* ((get (lambda (key lib)
                              (string-append (assoc-ref inputs key) "/lib/" lib)))
-- 
2.26.0

> Too clever for me :-)  It's a Guile library; hence the correct Guix
> name (and variable) is ‘guile-g-golf’.  We have plenty of
> ‘python-pyfoo’ packages to keep it company.
>

No.  I can't change this to guile-g-golf.  The author of g-golf has
explicated stated they would like the package name to be g-golf.

> Could you add a comment here explaining why we use a git commit,
> instead of a release tarball or tag?  I assume there are none; that
> would do as comment.  However…

I've added a comment for why git sources are used.

> …‘1’ means the project has released version 1 prior to this commit, or
> at least regards this commit as part of the ‘1’ series. I didn't spot
> any version number on the home page, NEWS file, git tags, …
>
> If there is no ‘1’ release, use ‘0.0.0’.
>
> The second field (REVISION) should be ‘0’, since this is the first
> *Guix* revision of this package.  The idea is that you increment the
> revision each time you change COMMIT, so Guix knows which commit is
> newer and can ‘guix package -u’ properly.
>
> Since the 2 should be updated together, bind them together:
>
>  (let ((commit "f00")
>        (revision "0")) …
>
> You obviously got ‘683’ from somewhere though.  Where?
>

This is fixed now, this got carried over from me tracking upstream
revisions. I've reset it to version 0.0.0 and revision 0. This is
probably the most important fix.

> Prefer ‘verb-thing’; makes it much easier to skim unfamiliar packages.
>

done

>
> For now, all phases must return #t.  SUBSTITUTE* doesn't, so we need
>
>             (lambda …
>               …
>               (substitute* "test-suite/tests/gobject.scm"
>                 (("/dev/tty") "/dev/null"))
>               #t)

done

> No need to put the file name on its own line here.
>
> +           (add-before 'configure 'substitute-libs

done