unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Marius Vollmer <marius.vollmer@uni-dortmund.de>
Cc: guile-devel <guile-devel@gnu.org>
Subject: Re: The load path
Date: Fri, 05 Nov 2004 16:05:25 +0100	[thread overview]
Message-ID: <ljis8knxoq.fsf@troy.dt.e-technik.uni-dortmund.de> (raw)
In-Reply-To: <1097949129.4178.31.camel@localhost> (Andy Wingo's message of "Sat, 16 Oct 2004 19:52:08 +0200")

[ Andy, I discussed this with rlb on #guile, but I guess you weren't
  there at the time.  The below is a (subjectively filtered)
  summary. 
]

Andy Wingo <wingo@pobox.com> writes:

> First off, the load path for a guile in /usr/bin/guile doesn't
> include /usr/local.

Yes.  I am not sure whether it is good to single out /usr/local, tho.
There might be any number of directories that people could reasonable
expect to be in the load path, such as /opt/<package>/guile for a
Guile using <package>.

We do currently support "init.scm": This file gets executed at startup
immediately after boot-9.scm.  It is looked for in the load path.
That file is intended for site-specific initialization such as adding
/usr/local, /opt/<package> etc to the load path.

This does not address what should be in that file _by_default_.  In
fact, the Debian approach is to have a directory of init files that
all get executed in order, so that different packages can cleanly
deposit their own actions.

We think we should support this directly in Guile.  What about
executing this code at the end of boot-9.scm:

  (define (list-directory dir pattern)
    (let ((port (opendir dir))
          (regexp (make-regexp pattern)))
      (do ((entry (readdir port) (readdir port))
           (res '() (if (regexp-exec regexp entry) (cons entry res) res)))
          ((eof-object? entry) res))))

  (define (run-directory dir)
    (if (file-exists? dir)
        (for-each (lambda (f)
                    (load (string-append dir "/" f)))
                  (sort (list-directory dir ".*\\.scm$") string<?))))

  (run-directory (string-append (assq-ref %guile-build-info 'sysconfdir)
                                "/guile-" (effective-version)"
                                "/init.d"))

This will run every *.scm file in ${sysconfdir}/guile-1.x/init.d/ in
lexicographic order.

There can be additional rules about the contents of init.d/: Files
with names matching *site-local.scm are reserved for the site admin.
All filenames must start with at least two-digits, etc.

You could then add /usr/local to the load path from within init.d.

Packagers could do what is appropriate for their system by installing
a suitable file into init.d.  Etc.

Opinions, everyone?

> Secondly, guile's load path includes ".". This is unexpected. The set of
> includes should not depend on the working directory of the user.

Yes agreed, I have removed "." in HEAD.


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


  parent reply	other threads:[~2004-11-05 15: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 [this message]
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
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=ljis8knxoq.fsf@troy.dt.e-technik.uni-dortmund.de \
    --to=marius.vollmer@uni-dortmund.de \
    --cc=guile-devel@gnu.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).