summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2013-01-10 17:30:38 +0100
committerAndy Wingo <wingo@pobox.com>2013-01-10 17:30:38 +0100
commitb194b59fa10574868f7b1663a1f2d447baa18c5e (patch)
tree633d9d0ba595b87dd77b716bfef475757a18e934
parent921cd222b992f719dc870239bc196688b8d3d507 (diff)
downloadguile-b194b59fa10574868f7b1663a1f2d447baa18c5e.tar.gz
fix ice-9/slib
* module/ice-9/slib.scm: Change to just load up slib.init directly. The recently submitted patch to slib-discuss and guile-user should make this work correctly.
-rw-r--r--module/ice-9/slib.scm37
1 files changed, 14 insertions, 23 deletions
diff --git a/module/ice-9/slib.scm b/module/ice-9/slib.scm
index 78c734e2a..766418010 100644
--- a/module/ice-9/slib.scm
+++ b/module/ice-9/slib.scm
@@ -1,6 +1,6 @@
;;;; slib.scm --- definitions needed to get SLIB to work with Guile
;;;;
-;;;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+;;;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2013 Free Software Foundation, Inc.
;;;;
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
@@ -16,27 +16,18 @@
;;;; License along with this library; if not, write to the Free Software
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
;;;;
-(define-module (ice-9 slib)
- :export (slib:load slib:load-source defmacro:load
- implementation-vicinity library-vicinity home-vicinity
- scheme-implementation-type scheme-implementation-version
- output-port-width output-port-height array-indexes
- make-random-state
- -1+ <? <=? =? >? >=?
- require slib:error slib:exit slib:warn slib:eval
- defmacro:eval logical:logand logical:logior logical:logxor
- logical:lognot logical:ash logical:logcount logical:integer-length
- logical:bit-extract logical:integer-expt logical:ipow-by-squaring
- slib:eval-load slib:tab slib:form-feed difftime offset-time
- software-type)
- :no-backtrace)
-
-;; Initialize SLIB.
-(load-from-path "slib/guile.init")
+;;; Look for slib.init in the $datadir, in /usr/share, and finally in
+;;; the load path. It's not usually in the load path on common distros,
+;;; but it could be if the user put it there. The init file takes care
+;;; of defining the module.
-;; SLIB redefines a few core symbols based on their default definition.
-;; Thus, we only replace them at this point so that their previous definition
-;; is visible when `guile.init' is loaded.
-(module-replace! (current-module)
- '(delete-file open-file provide provided? system))
+(let ((try-load (lambda (dir)
+ (let ((init (string-append dir "/slib/guile.init")))
+ (and (file-exists? init)
+ (begin
+ (load init)
+ #t))))))
+ (or (try-load (assq-ref %guile-build-info 'datadir))
+ (try-load "/usr/share")
+ (load-from-path "slib/guile.init")))