Subject: [bug#43194] [PATCH] gnu: publicly define freedink-engine and freedink-data

From: Jesse Gibbons <[email-masked]>
Date: Thu, 24 Sep 2020 21:55:01 -0600

Sorry it took so long. Updated patch is attached.

-Jesse.

On 9/24/20 9:18 AM, Ludovic Courtès wrote:
> Ping!  :-)
>
> Ludovic Courtès <[email-masked]> skribis:
>
>
...
>>> -> Freedink-engine installs desktop files to launch freedink without
>>> freedink-dfarc or the console. This is actually a new issue I will
>>> address in an updated patch: the desktop files fail because the data
>>> location is not hard-coded. I think the freedink desktop file can be
>>> patched if freedink-data is an input, but, like I said above, it's
>>> pointless to use dinkedit on a read-only directory, so I intend to
>>> remove it.
The patch removes both desktop files.
>> OK, makes sense—thanks for explaining.

>>>>>    (define-public freedink
>>>>>      ;; This is a wrapper that tells the engine where to find the data.
>>>>> -  (package (inherit freedink-engine)
>>>>> +  (package ;(inherit freedink-engine)
>>>> Is it intended?  Looks like inheriting avoids duplicating fields, no?
>>> Oops! I did not intend to leave (inherit freedink-engine) in a
>>> comment. I initially commented it out because freedink does nothing
>>> with the source anyway, and I wanted to see what would happen if I
>>> removed the inheritance. I guess I forgot to remove the semicolon and
>>> other additions.
The patch fixes this.

>>> As noted above, it is easiest to use freedink-dfarc to launch the
>>> editor, but freedink-dfarc must be told what editor to use, and it is
>>> easier to identify it if the editor is installed in a profile (or
>>> included as an input). Also, freedink-engine includes (broken) desktop
>>> files. Since freedink just installs a wrapper script around the
>>> engine, and does not include the editor or any desktop files, perhaps
>>> it would be better to put the wrapper script in freedink-engine (thus
>>> fixing the desktop file), completely remove the freedink package, and
>>> rename "freedink-engine" to just "freedink"? But freedink-dfarc would
>>> still need to be able to launch freedink without pointing to any
>>> read-only data if a user wants to test the edited freedink data.
>> Maybe, sounds like a reasonable option.
The patch does not do this. For now, I don't have the time (and probably 
won't have much time until late December), so I'll leave it as a to-do 
item for anyone who wants to accomplish this.

-Jesse

>From 438c2044f23e36fc1ddc07b388624194caebb077 Mon Sep 17 00:00:00 2001
From: Jesse Gibbons <[email-masked]>
Date: Wed, 26 Aug 2020 21:38:24 -0600
Subject: [PATCH 1/1] gnu: publicly define freedink-engine and freedink-data

* gnu/packages/games.scm: (freedink-engine): make public
(freedink-data): make public
---
 gnu/packages/games.scm | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 126539825c..8182bbbe6c 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -2861,7 +2861,7 @@ interface or via an external visual interface such as GNU XBoard.")
                   (ftp-directory . "/chess")))
     (license license:gpl3+)))
 
-(define freedink-engine
+(define-public freedink-engine
   (package
     (name "freedink-engine")
     (version "109.6")
@@ -2891,7 +2891,16 @@ interface or via an external visual interface such as GNU XBoard.")
 	     (invoke "autoreconf")
 	     ;; Build fails when autom4te.cache exists.
 	     (delete-file-recursively "autom4te.cache")
-             #t)))))
+             #t))
+         (add-after 'install 'delete-freedinkedit-desktop
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+             ;; freedinkedit does not know where to find freedink data
+             ;; freedink data is read-only, so it cannot be edited anyway.
+             ;; TODO: fix freedink.desktop
+             (delete-file-recursively (string-append
+                            out "/share/applications"))
+             #t))))))
     (native-inputs `(("autoconf" ,autoconf)
                      ("automake" ,automake)
                      ("cxxtest" ,cxxtest)
@@ -2913,7 +2922,7 @@ game data files but it also supports user-produced game mods or \"D-Mods\".
 To that extent, it also includes a front-end for managing all of your D-Mods.")
     (license license:gpl3+)))
 
-(define freedink-data
+(define-public freedink-data
   (package
     (name "freedink-data")
     (version "1.08.20190120")
@@ -2971,7 +2980,6 @@ and its numerous D-Mods.")
     (arguments
      '(#:builder (begin
                    (use-modules (guix build utils))
-
                    (let* ((output     (assoc-ref %outputs "out"))
                           (bin        (string-append output "/bin"))
                           (executable (string-append bin "/freedink")))
-- 
2.28.0