Subject: bug#64509: Guile packages should install versioned aliases for binaries (guile-X.Y, guild-X.Y, etc.)

From: "Zack Weinberg" <[email-masked]>
Date: Fri, 07 Jul 2023 08:59:10 -0400

The Guile packages currently install all their binaries under their
basic name only, e.g.

$ ls /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/bin
/gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/bin:
guild  guile  guile-config  guile-snarf  guile-tools

However, the Autoconf macro GUILE_PROGS (from guile.m4) looks first
for a guile binary with a version number suffix (e.g. ‘guile-3.0’).
If it finds one, then it looks *only* for a matching guild-X.Y and
errors out if it can’t find that.  This is a problem for building Guix
itself from source in a non-pure ‘guix shell -D guix’ on top of a
foreign distro that provides a ‘guile-3.0’ binary but not the other
four programs:

$ which guile || echo not found
/gnu/store/1yg0gg12m2cj2lj08r3qx8yx6zir4a38-profile/bin/guile

$ which guile-3.0 || echo not found
/usr/bin/guile-3.0

$ which guild || echo not found
/gnu/store/1yg0gg12m2cj2lj08r3qx8yx6zir4a38-profile/bin/guild

$ which guild-3.0 || echo not found
not found

$ ./configure --localstatedir=/var
...
checking pkg-config is at least version 0.9.0... yes
configure: checking for guile 3.0
configure: found guile 3.0
checking for guile-3.0... /usr/bin/guile-3.0
checking for Guile version >= 3.0... 3.0.8
checking for guild-3.0... no
checking for guile-config-3.0... no
checking for guile-tools-3.0... no
configure: error: 'guild' binary not found; please check your Guile installation.

Thus, I suggest that all of the Guix guile packages should be modified
to install ‘guile-X.Y’, ‘guild-X.Y’, etc. as well as the unsuffixed
program names.  I do not immediately see how to make this change in
gnu/packages/guile.scm.

zw