Subject: Re: [bug#40364] [PATCH] gnu: Add gnome-chess

From: Christopher Baines <[email-masked]>
Date: Wed, 01 Apr 2020 08:36:12 +0100

Jack Hill <[email-masked]> writes:

> * gnu/packages/games.scm (gnome-chess): New variable.
> ---
>  gnu/packages/games.scm | 40 ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 40 insertions(+)

Thanks for the patch Jack!

> diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
> index e818b851f4..dbc9e899b8 100644
> --- a/gnu/packages/games.scm
> +++ b/gnu/packages/games.scm
> @@ -49,6 +49,7 @@
>  ;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero <[email-masked]>
>  ;;; Copyright © 2020 Naga Malleswari <[email-masked]>
>  ;;; Copyright © 2020 Vitaliy Shatrov <[email-masked]>
> +;;; Copyright © 2020 Jack Hill <[email-masked]>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -1095,6 +1096,45 @@ destroying an ancient book using a special wand.")
>      ;; license.  The whole package is released under GPLv3+.
>      (license license:gpl3+)))
>
> +(define-public gnome-chess
> +  (package
> +    (name "gnome-chess")
> +    (version "3.36.0")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append "mirror://gnome/sources/" name "/"
> +                                  (version-major+minor version)  "/"
> +                                  name "-" version ".tar.xz"))
> +              (sha256
> +               (base32
> +                "1a9fgi749gy1f60vbcyrqqkab9vqs42hji70q73k1xx8rv0agmg0"))))
> +    (build-system meson-build-system)
> +    (arguments
> +     '(#:phases
> +       (modify-phases %standard-phases
> +         (add-after 'unpack 'skip-gtk-update-icon-cache
> +           ;; Don't create 'icon-theme.cache'.
> +           (lambda _
> +             (substitute* "meson_post_install.py"
> +               (("gtk-update-icon-cache") "true"))
> +             #t))))

It would be good to wrap gnome-chess to include it's own share directory
in the XDG_DATA_DIRS environment variable. Without that, I can't just
run it [1], but when I set that variable correctly [2], it works :)

1:
→ /gnu/store/jv8jpq23iic13j7zdl8mdc30vcv508wh-gnome-chess-3.36.0/bin/gnome-chess

(gnome-chess:10039): GLib-GIO-ERROR **: 08:31:52.482: Settings schema 'org.gnome.Chess' is not installed
Trace/breakpoint trap

2:
→ XDG_DATA_DIRS="$XDG_DATA_DIRS:/gnu/store/jv8jpq23iic13j7zdl8mdc30vcv508wh-gnome-chess-3.36.0/share" /gnu/store/jv8jpq23iic13j7zdl8mdc30vcv508wh-gnome-chess-3.36.0/bin/gnome-chess

This wrapping is something that would automatically be done through the
glib-or-gtk-build-system, but maybe not automatically through the meson
build system.

> +    (inputs
> +     `(("gtk+" ,gtk+)
> +       ("librsvg" ,librsvg)))
> +    (native-inputs
> +     `(("gettext" ,gettext-minimal)
> +       ("glib:bin" ,glib "bin") ; for desktop-file-validate and appstream-util
> +       ("itstool" ,itstool)
> +       ("pkg-config" ,pkg-config)
> +       ("vala" ,vala)))
> +    (home-page "https://wiki.gnome.org/Apps/Chess")
> +    (synopsis "Chess board for GNOME")
> +    (description "GNOME Chess provides a 2D board for playing chess games
> +against human or computer players.  It supports loading and saving games in
> +Portable Game Notation.  To play against a computer, install a chess engine
> +such as chess or stockfish.")
> +    (license license:gpl3+)))
> +
>  (define-public gnubg
>    (package
>      (name "gnubg")

Apart from the wrapping I mentioned above, this looks good to me :)

Thanks,

Chris