[gnutls-dev] Guile related 'make install' failure

Simon Josefsson simon at josefsson.org
Thu Jun 28 17:15:59 CEST 2007


ludo at gnu.org (Ludovic Courtès) writes:

> Hi,
>
> Simon Josefsson <simon at josefsson.org> writes:
>
>> Right, it is the same problem as for perl, python, emacs etc and other
>> similar systems that use a local package repository.  I think the best
>> we can do is to offer these options:
>>
>> 1: Install GnuTLS guile bindings under our $prefix, and ask users to put
>> the directory in their load-path.
>>
>> 2: Ask users to configure using
>> --with-guile-site-dir=/usr/share/guile/site and getting the proper
>> rights to that directory.
>
> The idea of having something that purposefully fails by default seems
> questionable.  :-)

Hm, it wouldn't fail if the user did acquire the proper rights on the
directory, would it?  Some people do './configure && make' as a user,
and then run 'make install' as root.  Then #2 would work.

>> 3: Ask users to build using --prefix=/usr
>
> Why?  Isn't it equivalent to removing the `--prefix' option altogether?

No, the default --prefix us /usr/local.  If the user builds with
--prefix=/usr, the guile paths will be correct.  Although the user will
have the same problem as in #2 regarding write access.

>> Do you think we could add something about this to the manual?  How would
>> a user append the load-path in Guile?  There is no 'load-path'
>> variable...  Maybe an example would be useful.
>
> It's called `%load-path':
>
>   http://www.gnu.org/software/guile/manual/html_node/Build-Config.html
>
> Rather than writing a Scheme snipped that modifies `%load-path', people
> would rather change the `GUILE_LOAD_PATH' environment variable or add
> `-L' switches to the Guile command-line.  Having to do one of these is
> not convenient, though.

Still, if one assumes that one cannot write outside of $prefix (i.e.,
/usr/local), I don't see what else we can do.

> What I initially did was to add `--with-guile-site-dir'.  Its purpose
> was two-fold:
>
>   1. Allow `distcheck' to work, by automatically using it (through
>      Automake's `DISTCHECK_CONFIGURE_FLAGS').
>
>   2. Allow users who really don't want to install to `$(GUILE_SITE)' and
>      who know what they are doing to specify another installation
>      directory.
>
> Doesn't it seem reasonable?

I believe it is more important to not install anything outside of
$prefix by default.  From the GNU coding standards:

   Installers are expected to override these values when calling `make'
(e.g., `make prefix=/usr install' or `configure' (e.g., `configure
--prefix=/usr').  GNU packages should not try to guess which value
should be appropriate for these variables on the system they are being
installed onto: use the default settings specified here so that all GNU
packages behave identically, allowing the installer to achieve any
desired layout.

   These two variables set the root for the installation.  All the other
installation directories should be subdirectories of one of these two,
and nothing should be directly installed into these two directories.

`prefix'
...

> Perhaps `--with-guile-site-dir' should be mentioned in the manual?

Yes, although I now believe it has a slightly different purpose as
described in the NEWS entry:

** Guile bindings are now installed under $prefix by default.
Use --without-guile-site-dir to install it under $pkgdatadir/site/
where $pkgdatadir is as returned by "guile-config info pkgdatadir".
Use --with-guile-site-dir=/your/own/path to specify the path manually.
The default, --with-guile-site-dir, will install the Guile bindings
under $datadir/guile/site.

This really belongs in the manual though.

>> Generally, I think it would be nice if Guile was changed to look into
>> /usr/local/share/guile/site as well.
>
> Hmm, not sure if that would help much.  And then why not
> `/opt/guile/site' as well, or `/gnu/guile/site', etc.?

/usr/local is intended for local additions, so it makes some sense.

/Simon




More information about the Gnutls-devel mailing list