diff mbox series

[bug#47824,3/3] gnu: tsukundere: Update to 0.3.0.

Message ID 20210416110723.9938-3-leo.prikler@student.tugraz.at
State Accepted
Headers show
Series Happy hacking in the Spring 2021 LGJ | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Leo Prikler April 16, 2021, 11:07 a.m. UTC
* gnu/packages/game-development.scm (tsukundere): Update to 0.3.0.
[patch-command]: Patch path to guile.  Construct load paths directly from
inputs.
[propagated-inputs]: Remove.
[inputs]: Add guile (as guile-runtime) and guile-sdl2.
---
 gnu/packages/game-development.scm | 45 +++++++++++++++++++------------
 1 file changed, 28 insertions(+), 17 deletions(-)

Comments

Efraim Flashner April 19, 2021, 7:56 a.m. UTC | #1
On Fri, Apr 16, 2021 at 01:07:23PM +0200, Leo Prikler wrote:
> * gnu/packages/game-development.scm (tsukundere): Update to 0.3.0.
> [patch-command]: Patch path to guile.  Construct load paths directly from
> inputs.
> [propagated-inputs]: Remove.
> [inputs]: Add guile (as guile-runtime) and guile-sdl2.
> ---
>  gnu/packages/game-development.scm | 45 +++++++++++++++++++------------
>  1 file changed, 28 insertions(+), 17 deletions(-)
> 
> diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
> index 0d4855d275..98ef88971a 100644
> --- a/gnu/packages/game-development.scm
> +++ b/gnu/packages/game-development.scm
> @@ -493,7 +493,7 @@ clone.")
>  (define-public tsukundere
>    (package
>      (name "tsukundere")
> -    (version "0.2.3")
> +    (version "0.3.0")
>      (source (origin
>                (method git-fetch)
>                (uri (git-reference
> @@ -502,10 +502,11 @@ clone.")
>                (file-name (git-file-name name version))
>                (sha256
>                 (base32
> -                "05ckds2df810441wfavllx9lsw5jsc9h3nb7m31df01nsj56azdw"))))
> +                "06jiaylbnx8khicsaq2gwnd8wspjhjymbb5z6x5445krklk0jx18"))))
>      (build-system gnu-build-system)
>      (arguments
> -     `(#:modules (((guix build guile-build-system)
> +     `(#:modules ((srfi srfi-1)
> +                  ((guix build guile-build-system)
>                     #:select (target-guile-effective-version))
>                    ,@%gnu-build-system-modules)
>         #:imported-modules ((guix build guile-build-system)
> @@ -513,22 +514,31 @@ clone.")
>         #:phases
>         (modify-phases %standard-phases
>           (add-after 'unpack 'patch-command
> -           (lambda* (#:key outputs #:allow-other-keys)
> -             (let* ((out (assoc-ref outputs "out"))
> -                    (version (target-guile-effective-version))
> -                    (scm (string-append out "/share/guile/site/"
> -                                        version))
> -                    (go (string-append out "/lib/guile/"
> -                                       version "/site-ccache")))
> -
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (let* ((version (target-guile-effective-version))

I see that the code before uses version but I wouldn't overwrite the
version variable which normally points to the package's version. I
suggest guile-version or something similar.

> +                    (scm (lambda (in)
> +                           (string-append in "/share/guile/site/"
> +                                          version)))
> +                    (go (lambda (in)

Perhaps go-cache would be more descriptive
(I see that it was also 'go' before)

> +                          (string-append in "/lib/guile/" version
> +                                         "/site-ccache")))
> +                    (pkgs
> +                     (cons
> +                      (assoc-ref outputs "out")
> +                      (filter-map
> +                       (lambda (input)
> +                         (and (string-prefix? "guile-" (car input)) (cdr input)))

I'm not in love with this, I personally find it a bit hard to parse. I'm
not really sure what the (cdr input) is there for. (without testing it
myself) I'd suggest borrowing the filter-map code from guile-studio in
(gnu packages guile-xyz) where it searches for emacs packages.

> +                       inputs))))
>                 (substitute* "bin/tsukundere"
> -                 (("exec guile .*" all)
> +                 (("exec guile (.*)" _ args)
>                    (string-append
>                     (format #f "export GUILE_LOAD_PATH=~@?~%"
> -                           "\"~a:~a\"" scm (getenv "GUILE_LOAD_PATH"))
> +                           "\"~{~a~^:~}\"" (map scm pkgs))
>                     (format #f "export GUILE_LOAD_COMPILED_PATH=~@?~%"
> -                           "\"~a:~a\"" go (getenv "GUILE_LOAD_COMPILED_PATH"))
> -                   all)))
> +                           "\"~{~a~^:~}\"" (map go pkgs))
> +                   "exec "
> +                   (assoc-ref inputs "guile-runtime")
> +                   "/bin/guile " args)))
>                 #t))))))

(Again without really testing it) Perhaps it would be better to remove
this whole phase and to replace it with wrap-script.

Actually, forget all of that. There's a comment in (guix build utils)
saying that Guile scripts are not supported.

>      (native-inputs
>       `(("autoconf" ,autoconf)
> @@ -536,8 +546,9 @@ clone.")
>         ("guile" ,guile-3.0)
>         ("pkg-config" ,pkg-config)
>         ("texinfo" ,texinfo)))
> -    (propagated-inputs
> -     `(("guile-sdl2" ,guile3.0-sdl2)))
> +    (inputs
> +     `(("guile-sdl2" ,guile3.0-sdl2)
> +       ("guile-runtime" ,guile-3.0)))
>      (home-page "https://gitlab.com/leoprikler/tsukundere")
>      (synopsis "Visual novel engine")
>      (description "Tsukundere is a game engine geared heavily towards the
> -- 
> 2.31.1
> 
> 
> 
>
Leo Prikler April 19, 2021, 8:24 a.m. UTC | #2
Am Montag, den 19.04.2021, 10:56 +0300 schrieb Efraim Flashner:
> On Fri, Apr 16, 2021 at 01:07:23PM +0200, Leo Prikler wrote:
> > * gnu/packages/game-development.scm (tsukundere): Update to 0.3.0.
> > [patch-command]: Patch path to guile.  Construct load paths
> > directly from
> > inputs.
> > [propagated-inputs]: Remove.
> > [inputs]: Add guile (as guile-runtime) and guile-sdl2.
> > ---
> >  gnu/packages/game-development.scm | 45 +++++++++++++++++++------
> > ------
> >  1 file changed, 28 insertions(+), 17 deletions(-)
> > 
> > diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-
> > development.scm
> > index 0d4855d275..98ef88971a 100644
> > --- a/gnu/packages/game-development.scm
> > +++ b/gnu/packages/game-development.scm
> > @@ -493,7 +493,7 @@ clone.")
> >  (define-public tsukundere
> >    (package
> >      (name "tsukundere")
> > -    (version "0.2.3")
> > +    (version "0.3.0")
> >      (source (origin
> >                (method git-fetch)
> >                (uri (git-reference
> > @@ -502,10 +502,11 @@ clone.")
> >                (file-name (git-file-name name version))
> >                (sha256
> >                 (base32
> > -                "05ckds2df810441wfavllx9lsw5jsc9h3nb7m31df01nsj56a
> > zdw"))))
> > +                "06jiaylbnx8khicsaq2gwnd8wspjhjymbb5z6x5445krklk0j
> > x18"))))
> >      (build-system gnu-build-system)
> >      (arguments
> > -     `(#:modules (((guix build guile-build-system)
> > +     `(#:modules ((srfi srfi-1)
> > +                  ((guix build guile-build-system)
> >                     #:select (target-guile-effective-version))
> >                    ,@%gnu-build-system-modules)
> >         #:imported-modules ((guix build guile-build-system)
> > @@ -513,22 +514,31 @@ clone.")
> >         #:phases
> >         (modify-phases %standard-phases
> >           (add-after 'unpack 'patch-command
> > -           (lambda* (#:key outputs #:allow-other-keys)
> > -             (let* ((out (assoc-ref outputs "out"))
> > -                    (version (target-guile-effective-version))
> > -                    (scm (string-append out "/share/guile/site/"
> > -                                        version))
> > -                    (go (string-append out "/lib/guile/"
> > -                                       version "/site-ccache")))
> > -
> > +           (lambda* (#:key inputs outputs #:allow-other-keys)
> > +             (let* ((version (target-guile-effective-version))
> 
> I see that the code before uses version but I wouldn't overwrite the
> version variable which normally points to the package's version. I
> suggest guile-version or something similar.
Good point.  Since it's only used to construct scm and go (now ccache),
I've decided to inline (target-guile-effective-version).

> > +                    (scm (lambda (in)
> > +                           (string-append in "/share/guile/site/"
> > +                                          version)))
> > +                    (go (lambda (in)
> 
> Perhaps go-cache would be more descriptive
> (I see that it was also 'go' before)
Decided on ccache, YMMV.

> > +                          (string-append in "/lib/guile/" version
> > +                                         "/site-ccache")))
> > +                    (pkgs
> > +                     (cons
> > +                      (assoc-ref outputs "out")
> > +                      (filter-map
> > +                       (lambda (input)
> > +                         (and (string-prefix? "guile-" (car
> > input)) (cdr input)))
> 
> I'm not in love with this, I personally find it a bit hard to parse.
> I'm
> not really sure what the (cdr input) is there for. (without testing
> it
> myself) I'd suggest borrowing the filter-map code from guile-studio
> in
> (gnu packages guile-xyz) where it searches for emacs packages.
I wanted to avoid needing ice-9 match, but you're right, that looks
better.

> > +                       inputs))))
> >                 (substitute* "bin/tsukundere"
> > -                 (("exec guile .*" all)
> > +                 (("exec guile (.*)" _ args)
> >                    (string-append
> >                     (format #f "export GUILE_LOAD_PATH=~@?~%"
> > -                           "\"~a:~a\"" scm (getenv
> > "GUILE_LOAD_PATH"))
> > +                           "\"~{~a~^:~}\"" (map scm pkgs))
> >                     (format #f "export
> > GUILE_LOAD_COMPILED_PATH=~@?~%"
> > -                           "\"~a:~a\"" go (getenv
> > "GUILE_LOAD_COMPILED_PATH"))
> > -                   all)))
> > +                           "\"~{~a~^:~}\"" (map go pkgs))
> > +                   "exec "
> > +                   (assoc-ref inputs "guile-runtime")
> > +                   "/bin/guile " args)))
> >                 #t))))))
> 
> (Again without really testing it) Perhaps it would be better to
> remove
> this whole phase and to replace it with wrap-script.
> 
> Actually, forget all of that. There's a comment in (guix build utils)
> saying that Guile scripts are not supported.
That's why I'm implementing my custom wrapper here.  I'm not sure if
this is a general solution for guile scripts, but for those, that use
the "exec guile" trick, the phase I wrote should act similar to wrap-
program without needing to construct a wrapper script.

Regards,
Leo
diff mbox series

Patch

diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 0d4855d275..98ef88971a 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -493,7 +493,7 @@  clone.")
 (define-public tsukundere
   (package
     (name "tsukundere")
-    (version "0.2.3")
+    (version "0.3.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -502,10 +502,11 @@  clone.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "05ckds2df810441wfavllx9lsw5jsc9h3nb7m31df01nsj56azdw"))))
+                "06jiaylbnx8khicsaq2gwnd8wspjhjymbb5z6x5445krklk0jx18"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:modules (((guix build guile-build-system)
+     `(#:modules ((srfi srfi-1)
+                  ((guix build guile-build-system)
                    #:select (target-guile-effective-version))
                   ,@%gnu-build-system-modules)
        #:imported-modules ((guix build guile-build-system)
@@ -513,22 +514,31 @@  clone.")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-command
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (version (target-guile-effective-version))
-                    (scm (string-append out "/share/guile/site/"
-                                        version))
-                    (go (string-append out "/lib/guile/"
-                                       version "/site-ccache")))
-
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((version (target-guile-effective-version))
+                    (scm (lambda (in)
+                           (string-append in "/share/guile/site/"
+                                          version)))
+                    (go (lambda (in)
+                          (string-append in "/lib/guile/" version
+                                         "/site-ccache")))
+                    (pkgs
+                     (cons
+                      (assoc-ref outputs "out")
+                      (filter-map
+                       (lambda (input)
+                         (and (string-prefix? "guile-" (car input)) (cdr input)))
+                       inputs))))
                (substitute* "bin/tsukundere"
-                 (("exec guile .*" all)
+                 (("exec guile (.*)" _ args)
                   (string-append
                    (format #f "export GUILE_LOAD_PATH=~@?~%"
-                           "\"~a:~a\"" scm (getenv "GUILE_LOAD_PATH"))
+                           "\"~{~a~^:~}\"" (map scm pkgs))
                    (format #f "export GUILE_LOAD_COMPILED_PATH=~@?~%"
-                           "\"~a:~a\"" go (getenv "GUILE_LOAD_COMPILED_PATH"))
-                   all)))
+                           "\"~{~a~^:~}\"" (map go pkgs))
+                   "exec "
+                   (assoc-ref inputs "guile-runtime")
+                   "/bin/guile " args)))
                #t))))))
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -536,8 +546,9 @@  clone.")
        ("guile" ,guile-3.0)
        ("pkg-config" ,pkg-config)
        ("texinfo" ,texinfo)))
-    (propagated-inputs
-     `(("guile-sdl2" ,guile3.0-sdl2)))
+    (inputs
+     `(("guile-sdl2" ,guile3.0-sdl2)
+       ("guile-runtime" ,guile-3.0)))
     (home-page "https://gitlab.com/leoprikler/tsukundere")
     (synopsis "Visual novel engine")
     (description "Tsukundere is a game engine geared heavily towards the