unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Greg Troxel <gdt@ir.bbn.com>
Cc: guile-devel <guile-devel@gnu.org>, Rob Browning <rlb@defaultvalue.org>
Subject: Re: The load path
Date: 14 Nov 2004 09:05:37 -0500	[thread overview]
Message-ID: <rmi65481q6m.fsf@fnord.ir.bbn.com> (raw)
In-Reply-To: <41973B3A.8080008@ossau.uklinux.net>

Neil Jerram <neil@ossau.uklinux.net> writes:

> - it seems to me there isn't a strong need for extra prefixes: the
> point about .../1.6 versus .../site is to provide a distinction
> between code installed by the Guile install itself, and code installed
> by third parties; so $additional_prefix/share/guile/1.6 would usually
> be pointless and unused

The situation tha motivates this comment is e.g. when one installs
guile with --prefix=/usr/pkg (perhaps as part of pkgsrc, so it's semi
part of the OS), and then installs some guile module "foo bar" as
--prefix=/usr/y0 (not choosing /usr/pkg because every file in /usr/pkg
is supposed to be registered as part of the pkg db).  Then, one wants
to be able to (use-modules (foo bar)) in guile without fuss.  the foo
bar module source is nominally expecting to install in the same prefix
as guile, so it might have installed things in either
$prefix/share/guile or $prefix/share/guile/site.  (If it's not ok to
install in the former, a) please point me to the docs that say this
and b) explain why it's in the load path :-)

So, in the general case, to suppport packages in /usr/y0, one needs to
add /usr/y0/share/guile and /usr/y0/share/guile/site to %load-path -
the "standard" locations within the load path.
/usr/y0/share/guile/1.6 would be for _parts of guile_, and I agree
that this makes no sense for alternate prefixes.

I view 'site' as being a directory that can be shared among a group of
admin'd machines, but really it's like site-lisp in emacs and thus
local.  I put things in /usr/pkg/share/guile (no site) when they are
packaged rather than local.

> - in the case where one explicitly wants to include the non-site
> directory of another Guile installation (dangerous though this
> sounds!), one can do so by listing it as an "actual directory"; also
> note that if one is doing such strange things, the $effective_version
> of the other Guile install might be different from the one being
> configured, so the prefix approach wouldn't help anyway.

Sure, and I agree that this is odd.

> >It would also be nice to be able to include $prefix/lib/guile/site, so
> >that packages intended for guile ttn-1.4 work without needing a
> >symlink into share.

> Out of interest, can you expand on this? What kind of file is
> installed there, and is that the only thing needed to make ttn-guile
> packages work?

Sorry, I was too brief and used the wrong word.

ttn's guile supports binary modules (which I think are a cool thing,
despite also seeing the merits of the arguments that one should use a
scheme shim to load them and export symbols).  These are deprecated in
guile 1.6, but I really hope they don't go away, because it would make
guile-pg (PostgreSQL interface with automatic type conversion - very
spiffy) harder to use under the upcoming 1.8, and I don't see the harm
in leaving them as a deprecated feature.  Because these modules are
shlibs, rather than scheme, they are arch-dependent and can't go in
$prefix/share, and in ttn-guile they belong in LIBSITE_DIR, which is
normally $prefix/lib/guile/site:

> l -R /usr/pkg/lib/guile/site/
total 1
drwxr-xr-x  2 root  wheel  512 Nov 13 10:44 database

/usr/pkg/lib/guile/site//database:
total 144
lrwxr-xr-x  1 root  wheel     11 Nov 13 10:43 libpostgres.la -> postgres.la
-r--r--r--  1 root  wheel   2806 Nov 13 10:43 postgres-col-defs.scm
-r--r--r--  1 root  wheel   9882 Nov 13 10:43 postgres-meta.scm
-r--r--r--  1 root  wheel   3644 Nov 13 10:43 postgres-resx.scm
-r--r--r--  1 root  wheel  24073 Nov 13 10:43 postgres-table.scm
-r--r--r--  1 root  wheel  11345 Nov 13 10:43 postgres-types.scm
-rw-r--r--  1 root  wheel  43368 Nov 13 10:43 postgres.a
-rwxr-xr-x  1 root  wheel    898 Nov 13 10:43 postgres.la
lrwxr-xr-x  1 root  wheel     17 Nov 13 10:43 postgres.so -> postgres.so.0.0.0
lrwxr-xr-x  1 root  wheel     17 Nov 13 10:43 postgres.so.0 -> postgres.so.0.0.0
-rwxr-xr-x  1 root  wheel  47248 Nov 13 10:43 postgres.so.0.0.0

This is in ttn-guile's %load-path, but not in 1.6.  So, I symlinked
/usr/pkg/lib/guile/site/database into /usr/pkg/share/guile/site in the
pkgsrc entry for guile-pg:

> l /usr/pkg/share/guile/site/database
lrwxr-xr-x  1 root  wheel  32 Nov 13 10:43 /usr/pkg/share/guile/site/database -> ../../../lib/guile/site/database

This is a bit hackish, but was simpler and more self-contained than
adding a patch to guile's pkgsrc entry or trying to make guile-pg
install things someplace else.  (In general, pkgsrc entries try to
munge upstream software as little as possible, or at least that's my
philosophy for it.)

-- 
        Greg Troxel <gdt@ir.bbn.com>


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


  reply	other threads:[~2004-11-14 14:05 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-10-16 17:52 The load path Andy Wingo
2004-10-17 19:40 ` Rob Browning
2004-10-17 23:13 ` Greg Troxel
2004-11-05 15:05 ` Marius Vollmer
2004-11-05 15:25   ` Paul Jarc
2004-11-05 16:43     ` Rob Browning
2004-11-05 17:43       ` Paul Jarc
2004-11-05 18:59         ` Rob Browning
2004-11-05 19:22           ` Paul Jarc
2004-11-05 22:05             ` Rob Browning
2004-11-06  7:25               ` Paul Jarc
2004-11-06 16:19                 ` Rob Browning
2004-11-06 22:58                   ` Rob Browning
2004-11-05 16:15   ` Rob Browning
2004-11-05 17:31   ` Andreas Rottmann
2004-11-05 18:57     ` Greg Troxel
2004-11-05 19:07     ` Rob Browning
2004-11-05 19:19   ` Greg Troxel
2004-11-05 23:53     ` Neil Jerram
2004-11-06  4:54       ` Rob Browning
2004-11-06 14:38         ` Andreas Vögele
2004-11-06 17:49         ` Neil Jerram
2004-11-06 21:21           ` Rob Browning
2004-11-07 18:46             ` Neil Jerram
2004-11-07 21:16               ` Rob Browning
2004-11-09 15:22               ` Paul Jarc
2004-11-10 18:43           ` Andy Wingo
2004-11-11 13:23             ` Greg Troxel
2004-11-12 21:31             ` Neil Jerram
2004-11-13  0:22               ` Greg Troxel
2004-11-13  1:08                 ` Rob Browning
2004-11-13 16:12                   ` Greg Troxel
2004-11-14 11:02                     ` Neil Jerram
2004-11-14 14:05                       ` Greg Troxel [this message]
2004-11-18 19:44                         ` Neil Jerram
2004-11-19 14:46                           ` Greg Troxel
2004-11-14 10:48                   ` Neil Jerram
2004-11-15 16:43                     ` Andy Wingo
2004-11-18 19:54                       ` Neil Jerram

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=rmi65481q6m.fsf@fnord.ir.bbn.com \
    --to=gdt@ir.bbn.com \
    --cc=guile-devel@gnu.org \
    --cc=rlb@defaultvalue.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).