[bug#76377] gnu: packages: remove g-golf and nomad
Commit Message
Hello,
Attached is a patch to remove g-golf and nomad, the only package that
depends on g-golf (nomad was and still is reported to fail to build in
guix for quite a long time now, fwiw).
Please review and apply as soon as possible.
Thanks,
David
Comments
The context of this patch is a naming dispute.
David Pirotte, author of G-Golf, an excellent Guile interface to GTK,
Adwaita and GNOME libraries, insisted that Guix use the package name
g-golf when packaging his G-Golf project.
Guix currently uses the name guile-g-golf in accordance with its
not-written-down naming policy for pure Guile libraries, that should be
applied according to maintainers [1] and analogous to the written-down
policy for Python [2] and CommonLisp [3] and analogous to what its
semi-automatic package importers for other languages from CRAN, OPAM,
etc. do.
People suggested/discussed that David make a patch to just remove G-Golf
from Guix.
Gábor [5] and Maxim [6] proposed making g-golf an alias of guile-g-golf
(currently it is a deprecated alias)); Tobias [7] does not like but
would accept this compromise. David does not respond to the
suggestions, though, and private mails do not appear as if David intends
to respond.
In private mails, David announced his intention to put G-Golf in an
external Guix channel.
But this is not consensus. There is opposition to removing in [4].
Also I am myself a user of G-Golf for a tiny zenity-like Kodi launcher
in my Guix Home configuration and would like to keep it without some
third-party channel.
Further, lacking G-Golf in Guix would harm both Guix and G-Golf. G-Golf
should get more users and Guix should ship desired packages.
G-Golf is really a nicer interface to GTK, because it is in Guile and
well-maintained and has examples that I currently package [7], even
though I still recommend to understand GTK’s documentation for C even
when programming Guile.
Nomad does not build due to incompatibility with current Webkit, but I
still have hope someone might revive it.
Closing without apply.
Regards,
Florian
[1] https://lists.gnu.org/archive/html/guix-devel/2025-02/msg00241.html
[2] https://guix.gnu.org/manual/devel/en/html_node/Python-Modules.html
[3] https://guix.gnu.org/manual/devel/en/html_node/Build-Systems.html#index-asdf_002dbuild_002dsystem_002fsource
[4] https://lists.gnu.org/archive/html/guix-devel/2025-02/msg00321.html
[5] https://lists.gnu.org/archive/html/guix-devel/2025-02/msg00320.html
[6] https://lists.gnu.org/archive/html/guix-devel/2025-02/msg00296.html
[7] https://issues.guix.gnu.org/76246#32
On Sat, Feb 22, 2025 at 10:57:28AM +0100, pelzflorian (Florian Pelz) wrote:
> The context of this patch is a naming dispute.
[...]
This is bad for Guix. If the upstream developer of some software that we
package has a reasonable request for us, we should strongly consider
accepting their request.
It does not help the Guix project to be argumentative or ornery.
Let's work together to improve the world of free software, not dig in
our heels over minor issues like package names. It's a free software
project, not a package naming project.
Also, this would not be the first time we accept some kind of cosmetic
advice from upstream.
More context: Later on, we made a package named g-golf as an alternative
equally valid package but (in code comments) discouraged its use. This
was a unilateral “compromise”. Unilateral because David has not
accepted it and, in private mails, did not want to discuss it.
Leo Famulari <leo@famulari.name> writes:
> On Sat, Feb 22, 2025 at 10:57:28AM +0100, pelzflorian (Florian Pelz) wrote:
>> The context of this patch is a naming dispute.
> [...]
>
> This is bad for Guix. If the upstream developer of some software that we
> package has a reasonable request for us, we should strongly consider
> accepting their request.
>
> It does not help the Guix project to be argumentative or ornery.
>
Yes, this was not consensus decision making, but IMO is not Guix’ fault.
But David’s request, that we make g-golf the name of the guile-g-golf
package, can hardly be encouraged by Guix. That is, logically, Guix
cannot encourage not following its policy.
> Let's work together to improve the world of free software, not dig in
> our heels over minor issues like package names. It's a free software
> project, not a package naming project.
>
> Also, this would not be the first time we accept some kind of cosmetic
> advice from upstream.
The original request [1] suggested using package version
0.8.0-rc9-guile2.2 for the guile2.2 variant (well, likely without rc9
now), which would deviate much from the rest of Guix (and is version>?
than 0.8.0).
Regards,
Florian
[1] https://lists.gnu.org/archive/html/guix-devel/2025-02/msg00173.html
On Wed, Feb 26, 2025, at 01:56, pelzflorian (Florian Pelz) wrote:
> But David’s request, that we make g-golf the name of the guile-g-golf
> package, can hardly be encouraged by Guix. That is, logically, Guix
> cannot encourage not following its policy.
Earlier, you described this policy as "not written down". That's not a policy, in my opinion.
And we should consider deviating from it when people have strong feelings about it.
Already, we seem to have alienated the author of a Guile package, which is tragically counterproductive.
And really, what's so bad about naming the package of the g-golf program "g-golf"? We've deviated from these informal guidelines before and the world kept turning.
Hi Leo,
> > The context of this patch is a naming dispute.
> [...]
> This is bad for Guix. If the upstream developer of some software that
> we package has a reasonable request for us, we should strongly
> consider accepting their request.
> It does not help the Guix project to be argumentative or ornery.
> Let's work together to improve the world of free software, not dig in
> our heels over minor issues like package names. It's a free software
> project, not a package naming project.
> Also, this would not be the first time we accept some kind of cosmetic
> advice from upstream.
1+, for 'all the above'.
Please forward (or post) to guix-devel, and ask guix to name my package
g-golf, to deprecate and later remove guile-[X.Y-]g-golf pkgs.
Thanks,
David
> > But David’s request, that we make g-golf the name of the
> > guile-g-golf package, can hardly be encouraged by Guix. That is,
> > logically, Guix cannot encourage not following its policy.
> Earlier, you described this policy as "not written down". That's not
> a policy, in my opinion.
> And we should consider deviating from it when people have strong
> feelings about it.
> Already, we seem to have alienated the author of a Guile package,
> which is tragically counterproductive.
> And really, what's so bad about naming the package of the g-golf
> program "g-golf"? We've deviated from these informal guidelines
> before and the world kept turning.
1+
The first (created) guix g-golf package was (properly) named g-golf.
From e3b178e305434640ef903f571e8c324a414487bb Mon Sep 17 00:00:00 2001
From: David Pirotte <david@altosw.be>
Date: Mon, 17 Feb 2025 19:11:12 -0300
Subject: [PATCH] gnu: packages: remove g-golf and nomad
* gnu/packages/guile-xyz.scm: Remove g-golf. Remove nomad, which depends on
g-golf (nomad was and still is reported to fail to build in guix for quite a
long time now, fwiw).
---
gnu/packages/guile-xyz.scm | 218 -------------------------------------
1 file changed, 218 deletions(-)
@@ -2519,103 +2519,6 @@ (define-public guile-sly
(home-page "https://dthompson.us/projects/sly.html")
(license license:gpl3+)))
-(define-public guile-g-golf
- (package
- (name "guile-g-golf")
- (version "0.8.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://git.savannah.gnu.org/git/g-golf.git")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "14b6pjchra0axqifpm90m7jbxla2sarhd7bfhzqbn7d14b74sv2d"))))
- (build-system gnu-build-system)
- (arguments
- (list
- #:configure-flags
- #~(list "--with-guile-site=no")
- #:parallel-build? #f
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'fix-guile-site-directory
- (lambda _
- (substitute* "configure.ac"
- (("SITEDIR=.*$")
- "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\";\n")
- (("SITECCACHEDIR=\"\\$libdir/g-golf/")
- "SITECCACHEDIR=\"$libdir/"))))
- (add-before 'configure 'tests-work-arounds
- (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
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (define (get lib)
- (search-input-file inputs (string-append "lib/" lib ".so")))
-
- (let* ((libgi (get "libgirepository-1.0"))
- (libglib (get "libglib-2.0"))
- (libgobject (get "libgobject-2.0"))
- (libg-golf (string-append #$output "/lib/libg-golf")))
- (substitute* "g-golf/init.scm"
- (("libgirepository-1.0") libgi)
- (("libglib-2.0") libglib)
- (("libgobject-2.0") libgobject)
- (("\\(dynamic-link \"libg-golf\"\\)")
- (format #f "~s"
- `(catch #t
- (lambda ()
- (dynamic-link "libg-golf"))
- (lambda _
- (dynamic-link ,libg-golf))))))
- (setenv "GUILE_AUTO_COMPILE" "0")
- #t)))
- (add-before 'check 'start-xorg-server
- (lambda* (#:key inputs #:allow-other-keys)
- ;; The test suite requires a running X server.
- (system "Xvfb :1 &")
- (setenv "DISPLAY" ":1")
- #t)))))
- (inputs
- (list guile-3.0 guile-lib glib))
- (native-inputs
- (list autoconf
- automake
- texinfo
- gettext-minimal
- libtool
- pkg-config
- ;; required for tests
- gtk+
- xorg-server-for-tests))
- (propagated-inputs
- (list gobject-introspection))
- (home-page "https://www.gnu.org/software/g-golf/")
- (synopsis "Guile bindings for GObject Introspection")
- (description
- "G-Golf (Gnome: (Guile Object Library for)) is a library for developing
-modern applications in Guile Scheme. It comprises a direct binding to the
-GObject Introspection API and higher-level functionality for importing Gnome
-libraries and making GObject classes (and methods) available in Guile's
-object-oriented programming system, GOOPS.")
- (license license:lgpl3+)))
-
-(define-public g-golf
- (deprecated-package "g-golf" guile-g-golf))
-
-(define-public guile2.2-g-golf
- (package
- (inherit guile-g-golf)
- (name "guile2.2-g-golf")
- (inputs
- (modify-inputs (package-inputs guile-g-golf)
- (replace "guile" guile-2.2)
- (replace "guile-lib" guile2.2-lib)))))
-
(define-public g-wrap
(package
(name "g-wrap")
@@ -4425,127 +4328,6 @@ (define-public guile-png
processing filters.")
(license license:gpl3+)))
-(define-public nomad
- (package
- (name "nomad")
- (version "0.2.0-alpha-199-g3e7a475")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://git.savannah.gnu.org/git/nomad.git/")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0p0ha6prp7pyadp61clbhc6b55023vxzfwy14j2qygb2mkq7fhic"))))
- (build-system gnu-build-system)
- (native-inputs
- `(("autoconf" ,autoconf)
- ("automake" ,automake)
- ("bash" ,bash)
- ("pkg-config" ,pkg-config)
- ("libtool" ,libtool)
- ("guile" ,guile-2.2)
- ("glib:bin" ,glib "bin")
- ("texinfo" ,texinfo)
- ("gettext" ,gettext-minimal)
- ("perl" ,perl)))
- (inputs
- `(("bash" ,bash-minimal) ; for wrap-program
- ;; Guile
- ("guile" ,guile-2.2)
- ("guile-lib" ,guile2.2-lib)
- ("guile-readline" ,guile2.2-readline)
- ("guile-gcrypt" ,guile2.2-gcrypt)
- ("gnutls" ,gnutls)
- ("g-golf" ,guile2.2-g-golf)
- ("shroud" ,shroud)
- ("emacsy" ,emacsy-minimal)
- ;; Gtk
- ("glib" ,glib)
- ("dbus-glib" ,dbus-glib)
- ("glib-networking" ,glib-networking)
- ("gtk+" ,gtk+)
- ("gtk+:bin" ,gtk+ "bin")
- ("webkitgtk" ,webkitgtk-for-gtk3)
- ("gtksourceview" ,gtksourceview-4)
- ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
- ("vte" ,vte)
- ;; Gstreamer
- ("gstreamer" ,gstreamer)
- ("gst-plugins-base" ,gst-plugins-base)
- ("gst-plugins-good" ,gst-plugins-good)
- ("gst-plugins-bad" ,gst-plugins-bad)
- ("gst-plugins-ugly" ,gst-plugins-ugly)
- ;; Util
- ("xorg-server" ,xorg-server)))
- (arguments
- `(#:modules ((guix build gnu-build-system)
- (guix build utils)
- (ice-9 popen)
- (ice-9 rdelim)
- (srfi srfi-26))
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-webkitgtk
- (lambda _
- ;; Adapt to the version we have in Guix.
- (substitute* "configure.ac"
- (("webkit2gtk-4\\.0") "webkit2gtk-4.1")
- (("webkit2gtk-web-extension-4\\.0")
- "webkit2gtk-web-extension-4.1"))
-
- (substitute* "typelib/Makefile.am"
- (("WebKit2-4\\.0") "WebKit2-4.1"))))
- (add-before 'check 'start-xorg-server
- (lambda* (#:key inputs #:allow-other-keys)
- ;; The test suite requires a running X server.
- (system (format #f "~a/bin/Xvfb :1 &"
- (assoc-ref inputs "xorg-server")))
- (setenv "DISPLAY" ":1")
- #t))
- (add-after 'install 'wrap-binaries
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (effective (read-line (open-pipe*
- OPEN_READ
- "guile" "-c"
- "(display (effective-version))")))
- (gst-plugins (map (lambda (i)
- (string-append (assoc-ref inputs i)
- "/lib/gstreamer-1.0"))
- `("gstreamer"
- "gst-plugins-base"
- "gst-plugins-good"
- "gst-plugins-bad"
- "gst-plugins-ugly")))
- (out-append (lambda (. args)
- (apply string-append out args)))
- (gi-path (out-append "/lib/girepository-1.0"))
- (load-path (out-append "/share/guile/site/" effective))
- (comp-path (out-append "/lib/guile/"
- effective "/site-ccache"))
- (ext-path (out-append "/libexec/nomad")))
- (wrap-program (string-append out "/bin/nomad")
- `("GUILE_LOAD_PATH" ":" prefix
- (,load-path
- ,(getenv "GUILE_LOAD_PATH")))
- `("GUILE_LOAD_COMPILED_PATH" ":" prefix
- (,comp-path
- ,(getenv "GUILE_LOAD_COMPILED_PATH")))
- `("GI_TYPELIB_PATH" ":" prefix
- (,gi-path ,(getenv "GI_TYPELIB_PATH")))
- `("GIO_EXTRA_MODULES" ":" prefix
- (,(getenv "GIO_EXTRA_MODULES")))
- `("GST_PLUGIN_SYSTEM_PATH" ":" prefix ,gst-plugins)
- `("NOMAD_WEB_EXTENSION_DIR" ":" prefix (,ext-path)))
- #t))))))
- (home-page "https://savannah.nongnu.org/projects/nomad/")
- (synopsis "Extensible Web Browser in Guile Scheme")
- (description "Nomad is a Emacs-like web browser that consists of a modular
-feature-set, fully programmable in Guile Scheme.")
- (license license:gpl3+)))
-
(define-public guile-cv
(package
(name "guile-cv")
--
2.47.2