Subject: Re: [PATCH] gnu: games: Add robotfindskitten.

From: Roman Riabenko <[email-masked]>
Date: Thu, 24 Mar 2022 17:38:12 +0200

Hi Liliana

(Copying the mailing list.)

Thank you for helping to improve this!

У пн, 2022-03-21 у 07:59 +0100, Liliana Marie Prikler пише:
> Hi Roman,
> 
> Am Sonntag, dem 20.03.2022 um 16:28 +0200 schrieb Roman Riabenko:
> 
> > +    ;; Despite what guix lint says, version 2.8284271.702 is newer
> > then
> > +    ;; 1600003_201b. See ChangeLog for version history.
> > +    (version "2.8284271.702")
> > +    ;; The git version is the same as in the release tarball, but
> > it
> > bundles
> > +    ;; convenient .desktop files, which were requested for Debian.
> > +    (source (origin
> > +              (method git-fetch)
> > +              (uri (git-reference
> > +                    (url
> > +                    
> > "https://github.com/robotfindskitten/robotfindskitten")
> > +                    (commit
> > "1cae36621f9c19d19a40eacf63789913d4ef5d5c")))
> > +              (file-name (git-file-name name version))
> > +              (sha256
> > +               (base32
> > +               
> > "0ps3xrl1yh0h7jhl3bwhx5xw2hvhzync03y08i66rzw098r530qq"))))
> Looking at the git repository, those are *not* the same.  Use git-
> version or use the tag as commit, but don't mix conventions.

I thought the commit log is misleading. Before submitting the patch, I
checked the code and data files, but now that I checked documentation
too, I see that the release, including packages in Debian and Fedora,
do not have the latest fixes to documentation.

It bugged me as cruel towards users to package the release version with
wrong documentation, but, at a more thorough inspection, the
inconsistency in documentation can be figured out after all. If the
authors and maintainers did not deem it worth a release, I do not feel
confident to. After all, I cannot rule out that, theoretically, someone
may even rely on "man robotfindskitten" output for something.

The checkout of the git tag which corresponds to the release version
number is, strictly speaking, somewhat different from the release
tarball. Among other things, it has "contrib" directory with PalmOS
port code. Debian also has the same tarball for original source.
Considering all that, I'd rather go with the tarball than git.

> > +                  (replace 'bootstrap
> > +                    (lambda _
> > +                      (invoke "autoreconf" "-ifv"))) ;per
> > README.md
> The existing bootstrap should already correctly invoke autoreconf if
> no
> bootstrap script exists.

I recall having some issue without this modification, but I cannot
reproduce it now. Removing.

> > +                  (add-after 'unpack 'fix-install-path
> > +                    (lambda _
> > +                      ;; It is configured to install executable to
> > /games or
> > +                      ;; /usr/local/games per Filesystem Hierarchy
> > Standard.
> > +                      ;; We change that to get it in $PATH.
> > +                      (substitute* "src/Makefile.am"
> > +                        (("\\$\\(prefix\\)/games")
> > "$(prefix)/bin"))
> We could change this by using #:make-flags instead, I believe.

Thank you for the hint. I didn't expect it to be that simple.

> > +                      ;; When built with guix, all characters are
> > displayed in
> > +                      ;; the background colour pair. If it is not
> > set manually,
> > +                      ;; this is not happening, so we get back
> > colour into the
> > +                      ;; game. The background is redrawn anyway.
> > See
> > man bkgd.
> > +                      (substitute* "src/robotfindskitten.c"
> > +                        (("\\(void\\) bkgd \\( \\(chtype\\)
> > COLOR_PAIR\\(WHITE\\) \\);")
> > +                         "")))))
> This should probably go into a "patch-source" phase.

I moved this part to a source origin snippet.

> > +    (synopsis "Zen Simulation of robot finding kitten")
> > +    (description
> > +     "In this simulation, you play the part of robot.  Your task
> > is
> > to
> > +complete the simulation by finding kitten, as is your destiny, and
> > indeed your
> > +wont.  You (robot) are represented by the # character, and you
> > move
> > around with
> > +the arrow keys touching things.  If the thing you touch is kitten,
> > you get a
> > +cute little animation (which was cuter in the DOS version) and the
> > simulation
> > +ends.  Otherwise, you get a brief description of what it is you
> > touched.")
> Both synopsis and description could use some love.  Plain copypasta
> with grammatical errors is not good optics.

My first impression was that it needs some improvement. But I was
quickly discouraged and here is why.

The problem I have with it is that it apparently attempts to pretend to
be something more, not even a game at all, but the Zen Simulation. The
authors invite the audience to a make-believe and this starts with the
synopsis and description and continues in the game and in its
documentation. The story begins with such synopsis and description in
other distributions and package managers too. I really feel as
intruding into the game against the authors intentions by attempting to
modify those.

As to the grammar and spelling, I am embarrassed of my ignorance and
fond of learning something new, which is one of the reasons that I like
this game. When I saw the word "wont", I couldn't imagine that it is a
valid English word, until I verified it with a dictionary. The words
"robot" and "kitten" are consistently used without an article
(including in-game texts and documentation) treating them specially as
characters of the story. The same goes for both words of "Zen
Simulation" being capitalised.

So I leave it as is for now.

I attach a different patch as my new offer.

Roman
From 7e29f26288bf2a6764f0b90cd7eb36c2b48e5e7e Mon Sep 17 00:00:00 2001
From: Roman Riabenko <[email-masked]>
Date: Thu, 24 Mar 2022 17:12:30 +0200
Subject: [PATCH] gnu: games: Add robotfindskitten.

* gnu/packages/games.scm (robotfindskitten): New variable.
---
 gnu/packages/games.scm | 53 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 8cc29b3487..f13523a190 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -69,6 +69,7 @@
 ;;; Copyright © 2021 Christopher Baines <[email-masked]>
 ;;; Copyright © 2021 Foo Chuan Wei <[email-masked]>
 ;;; Copyright © 2022 Yovan Naumovski <[email-masked]>
+;;; Copyright © 2022 Roman Riabenko <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2250,6 +2251,58 @@ (define-public retux
                      license:gpl2+
                      license:gpl3+)))))
 
+(define-public robotfindskitten
+  ;; Despite what guix lint says, version 2.8284271.702 is newer than
+  ;; 1600003_201b. See ChangeLog for version history.
+  (package
+    (name "robotfindskitten")
+    (version "2.8284271.702")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://github.com/"
+                            name
+                            "/"
+                            name
+                            "/releases/download/"
+                            version
+                            "/"
+                            name
+                            "-"
+                            version
+                            ".tar.gz"))
+        (sha256
+         (base32
+          "1bwrkxm83r9ajpkd6x03nqvmdfpf5vz6yfy0c97pq3v3ykj74082"))
+        ;; When built with guix, all characters are displayed in the background
+        ;; colour pair for some reason. If it is not set by the program, this
+        ;; is not happening, so the game is coloured properly.
+        (modules '((guix build utils)))
+        (snippet
+         #~(begin
+            (substitute* "src/robotfindskitten.c"
+             (("\\(void\\) bkgd \\( \\(chtype\\) COLOR_PAIR\\(WHITE\\) \\);")
+               ""))))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--enable-silent-rules")
+       #:make-flags ;install to /bin instead of /game
+       (list (string-append "execgamesdir="
+                            (assoc-ref %outputs "out") "/bin"))))
+    (inputs (list ncurses))
+    (outputs '("out" "debug"))
+    ;; The following are the original synopsis and description by the authors.
+    (synopsis "Zen Simulation of robot finding kitten")
+    (description
+     "In this simulation, you play the part of robot.  Your task is to
+complete the simulation by finding kitten, as is your destiny, and indeed your
+wont.  You (robot) are represented by the # character, and you move around with
+the arrow keys touching things.  If the thing you touch is kitten, you get a
+cute little animation (which was cuter in the DOS version) and the simulation
+ends.  Otherwise, you get a brief description of what it is you touched.")
+    (home-page "http://robotfindskitten.org/")
+    (license license:gpl2+)))
+
 (define-public roguebox-adventures
   (package
     (name "roguebox-adventures")

base-commit: 18119fe288166ff480ca27a1351b09e9c31c1463
-- 
2.34.0