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

Simon Josefsson simon at josefsson.org
Wed Jun 27 11:39:18 CEST 2007


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

> Hi,
>
> Simon Josefsson <simon at josefsson.org> writes:
>
>> After making the last release, I tried 'make install', but it failed:
>
>> This doesn't look right to me, 'make install' should never write outside
>> of $prefix by default; packages that do that is rather annoying at sites
>> with read-only /usr trees that use AFS or similar.
>
> Agreed.
>
> That said, Guile files must go in a directory that is in Guile's "load
> path".  The one directory that is known to be in Guile's load path is
> `$(GUILE_SITE)', hence the `GUILE_SITE_DIR' M4 macro.
>
> If Guile files goes to some arbitrary directory, e.g.,
> `$(pkgdatadir)/guile', then Guile simply won't be able to find them,
> unless the user manually updates their `GUILE_LOAD_PATH' environment
> variable or add `-L' switches when they run `guile'.
>
>   (To test whether Guile finds the relevant files, just type:
>
>      $ guile
>      guile> (use-modules (gnutls) (gnutls extra))
>
>    If no error message gets displayed, then everything's alright.)
>
> Thus, the patch doesn't look right to me.
>
> Now, I'm well aware that this `$(GUILE_SITE)' thing is annoying.  There
> were attempts in the past to improve on this on the Guile side but none
> of them were fruitful.
>
> AFAICS, Perl, Python and Emacs also have a fixed central `site'
> directory (at least, that's how files are laid out in Debian).  Now, if
> you have a better idea, I'm all ears.  ;-)

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.

3: Ask users to build using --prefix=/usr

4: Ask users to get their package built from some distribution that does
the right thing (--prefix=/usr).

The majority of users will do #4, and the others should be experienced
enough to be able to do #1-#3 or something different.

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.

Generally, I think it would be nice if Guile was changed to look into
/usr/local/share/guile/site as well.  Emacs and perl do this by default,
I believe:

jas at mocca:~$ emacs21 --no-site-file -q -eval '(pp load-path)' --batch
("/etc/emacs21" "/etc/emacs" "/usr/local/share/emacs/21.4/site-lisp" "/usr/local/share/emacs/site-lisp" "/usr/share/emacs/21.4/site-lisp" "/usr/share/emacs/21.4/site-lisp/dictionaries-common" "/usr/share/emacs/21.4/site-lisp/gtk-doc-tools" "/usr/share/emacs/21.4/site-lisp/w3m" "/usr/share/emacs/21.4/site-lisp/w3m/shimbun" "/usr/share/emacs/site-lisp" "/usr/share/emacs/21.4/leim" "/usr/share/emacs/21.4/lisp" "/usr/share/emacs/21.4/lisp/toolbar" "/usr/share/emacs/21.4/lisp/textmodes" "/usr/share/emacs/21.4/lisp/progmodes" "/usr/share/emacs/21.4/lisp/play" "/usr/share/emacs/21.4/lisp/obsolete" "/usr/share/emacs/21.4/lisp/net" "/usr/share/emacs/21.4/lisp/mail" "/usr/share/emacs/21.4/lisp/language" "/usr/share/emacs/21.4/lisp/international" "/usr/share/emacs/21.4/lisp/gnus" "/usr/share/emacs/21.4/lisp/eshell" "/usr/share/emacs/21.4/lisp/emulation" "/usr/share/emacs/21.4/lisp/emacs-lisp" "/usr/share/emacs/21.4/lisp/calendar")
jas at mocca:~$

jas at mocca:~$ perl -e 'foreach (@INC) { print "$_\n" }'
/etc/perl
/usr/local/lib/perl/5.8.8
/usr/local/share/perl/5.8.8
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.8
/usr/share/perl/5.8
/usr/local/lib/site_perl
.
jas at mocca:~$

/Simon




More information about the Gnutls-devel mailing list