[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: add-relative-load-path ?
From: |
Neil Jerram |
Subject: |
Re: add-relative-load-path ? |
Date: |
Mon, 23 Jan 2012 20:19:04 +0000 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) |
Andy Wingo <address@hidden> writes:
> Hi Neil,
>
> Thanks for the feedback!
>
> On Sun 22 Jan 2012 00:17, Neil Jerram <address@hidden> writes:
>
>> Thing 1 is that (current-filename) can return a relative filename, or a
>> filename with a "./" in its middle
> [...]
>>
>> Would there be any downside from putting [canonicalize-path] inside
>> current-filename, so that current-filename always returns a canonical
>> file name?
>
> No, and I think that is the right thing to do in this case, because it
> avoids embedding assumptions about the current working directory into
> compiled .go files. I have made this change.
Thanks.
>> Thing 2 is that it remains slightly inelegant to cater for both 1.8 and
>> 2.0. I think the minimal complete solution is to write
>>
>> (cond-expand (guile-2 (include "setup-load-path.scm"))
>> (else (load "setup-load-path.scm")))
>>
>> at top level in every uninstalled script, and then something like
>>
>> (cond-expand (guile-2
>> (add-to-load-path
>> (dirname
>> (dirname
>> (canonicalize-path (current-filename))))))
>> (else
>> ;; Less elegant code for 1.8...
>> (let* ((bindir (dirname (car (command-line))))
>> (absdir (cond ((string=? bindir ".")
>> (getcwd))
>> ((string-match "^/" bindir)
>> bindir)
>> (else
>> (in-vicinity (getcwd) bindir)))))
>> (set! %load-path (cons (in-vicinity absdir "..")
>> %load-path)))))
>>
>> in setup-load-path.scm.
>>
>> But without a time machine I don't think anything can be done to make
>> either of those fragments more concise.
>
> Well, you could instead do:
>
> (cond-expand ((not guile-2) (load "guile-2.0-compat.scm")))
Well it seems it has to be
(cond-expand (guile-2)
(else (load "guile-2.0-compat.scm")))
because cond-expand errors if no clause is satisfied.
> (add-to-load-path (dirname (dirname (current-filename))))
>
> Then in guile-2.0-compat.scm you have shims to make guile 1.8 offer a
> 2.0 interface (in this case, current-filename and add-to-load-path).
But yes, indeed that is nicer, and it obviously generalises to other
compatibility issues too. Thanks for the idea!
Regards,
Neil
- Re: add-relative-load-path ?, (continued)
- Re: add-relative-load-path ?, Andy Wingo, 2012/01/20
- Re: add-relative-load-path ?, Neil Jerram, 2012/01/21
- Re: add-relative-load-path ?, Andy Wingo, 2012/01/23
- Re: add-relative-load-path ?, Ludovic Courtès, 2012/01/23
- Re: add-relative-load-path ?, Andy Wingo, 2012/01/23
- Re: add-relative-load-path ?, Neil Jerram, 2012/01/23
- Re: add-relative-load-path ?, Ludovic Courtès, 2012/01/25
- Re: add-relative-load-path ?, Andy Wingo, 2012/01/25
- Re: add-relative-load-path ?, Ludovic Courtès, 2012/01/25
- Re: add-relative-load-path ?, Andy Wingo, 2012/01/25
- Re: add-relative-load-path ?,
Neil Jerram <=
Re: add-relative-load-path ? - scm_add_load_path too?, Ian Hulin, 2012/01/30