Subject: Re: bug#30249: configure: “guile2” is checked before “guile”

From: [email-masked] (Ludovic Courtès)
Date: Thu, 25 Jan 2018 17:57:03 +0100

Ricardo Wurmus <[email-masked]> skribis:

> On Fedora there is /usr/bin/guile2.  When I want to configure Guix from
> source I run “guix environment guix” and run “./configure”.  This aborts
> because the configure script finds the system’s /usr/bin/guile2 before
> “guile” from the environment.
>
> Here’s the error:
>
> configure: checking for guile 2.2
> configure: found guile 2.2
> checking for guile-2.2... no
> checking for guile2.2... no
> checking for guile-2... no
> checking for guile2... /usr/bin/guile2
> configure: error: found development files for Guile 2.2, but /usr/bin/guile2 has effective version 2.0
> make: *** [Makefile:3071: config.status] Error 1

The code for this check is in the ‘GUILE_PROGS’ macro, defined in
meta/guile.m4 in Guile.

I think it makes sense for this macro to try version-specific program
names first, and only then to fall back to “guile”.  So I would suggest
leaving this macro unchanged.

That said, guile-2.2.pc and guile-2.0.pc both define ‘guile’ and
‘guild’.  So ‘GUILE_PROGS’ should probably use these when pkg-config is
being used, instead of trying to guess from $PATH.

Thoughts?

> To make this work I need to move /usr/bin/guile2 away or make it
> otherwise unaccessible (e.g. with “guix environment --container guix”).
>
> Is there something we can do about this to ensure that “guix environment
> guix” is sufficient to build Guix from source on Fedora?

We could encourage people to use --pure or -C.

Ludo’.