From: David L. <da...@li...> - 2007-03-10 19:31:44
Attachments:
asdf.diff
|
Hi, ASDF users typically symlink .asd files into a central registry directory. Since Windows does not have symlinks, ASDF on Windows is currently much less user-friendly than on Unix. However, Windows has "shortcuts", which are actually just regular files with an .lnk suffix. Cygwin also creates these files to implement its symlinks, so that Windows displays them as proper shortcuts. Attached a patch that hacks ASDF's central registry search function to look for .asd.lnk files. With this patch, clbuild works in cygwin. d. |
From: Stefan L. <lan...@gm...> - 2007-03-11 00:15:55
Attachments:
asdf.diff
|
On Saturday 10 March 2007 20:31, David Lichteblau wrote: > Hi, > > ASDF users typically symlink .asd files into a central registry > directory. Since Windows does not have symlinks, ASDF on Windows > is currently much less user-friendly than on Unix. > > However, Windows has "shortcuts", which are actually just regular > files with an .lnk suffix. Cygwin also creates these files to > implement its symlinks, so that Windows displays them as proper > shortcuts. > > Attached a patch that hacks ASDF's central registry search function > to look for .asd.lnk files. > > With this patch, clbuild works in cygwin. Hi, I have an alternative patch for asdf and asdf-install attached. It alters the sysdef-central-registry-search to read from asd files and if the first s-exp in the file is of the form (:asd-link <pathspec>) it treats the file as if it were a symbolic link to <pathspec>. This has the advantage that it works on all platforms and a third party installer can simply create such pseudo-links on all platforms without worrying about symbolic links. The asdf-install::install-package function is modified to create such pseudo-links on windows, which should make asdf-install more useful on windows. Unfortunately, I could test this patch only on Linux (I swapped #+win32/#-win32 in asdf-install::install-package for testing). Stefan |
From: Anton <ya...@ya...> - 2007-03-12 00:37:59
|
Hello all, One another thought about making asdf more crossplatform. While I used it on Windows without cygwin, I just had a file setup-asdf-registry.lisp that sets up asdf registry (load "c:/path-to-asdf/asdf.lisp") (pushnew "C:/some-path/araneida-version-0.90.1/" asdf:*central-registry* :test #'equal) (pushnew "C:/another-path/asdf-install/asdf-install/" asdf:*central-registry* :test #'equal) and so on. Perhaps we can make asdf managing such kind of file? It may be simpler than to introduce self-made symlinks and will work in any environment where lisp works. BTW: I heard that NTFS on Windows Vista supports symlinks. Regards, -Anton |
From: <me...@re...> - 2007-03-12 08:45:12
|
On Monday 12 March 2007 01:37, Anton wrote: > Hello all, > > One another thought about making asdf more crossplatform. > While I used it on Windows without cygwin, I just had > a file setup-asdf-registry.lisp that sets up asdf registry > > (load "c:/path-to-asdf/asdf.lisp") > (pushnew "C:/some-path/araneida-version-0.90.1/" > asdf:*central-registry* > > :test #'equal) > > (pushnew "C:/another-path/asdf-install/asdf-install/" > asdf:*central-registry* > > :test #'equal) > > and so on. > > Perhaps we can make asdf managing such kind of file? > > It may be simpler than to introduce self-made symlinks and will > work in any environment where lisp works. It seems time has come to do something about this. I, too, have=20 implemented something that serves my purposes that are slightly=20 different from what's been described here. I want to basically check in a system/ directory into version control.=20 The problems with this are that some platforms and version control=20 systems do not support symlinks and absolute paths are not very=20 meaningful, so instead of symlinks I put the 'relativized' name->path=20 mapping into a file that looks like this: (:INSTALL-LOCATION ((:UP "site") NIL NIL) :SYSTEM-MAP (("asdf-world" ((:UP :UP) "asdf-world" "asd")) ("salza" ((:UP "site" "salza-0.7.4") "salza" "asd")))) This simply means that relative to the location of this file salza.asd=20 can be found in ../site/salza-0.7.4/. It also provides an install=20 location for adsf-install but that's not important here. This file is hopefully portable between at least unix and windows so it=20 can safely be put under version control. I'll publish the code once my employer agrees to it. Cheers, G=E1bor |
From: <me...@re...> - 2007-03-29 17:56:49
|
On Monday 12 March 2007 09:44, G=E1bor Melis wrote: > I'll publish the code once my employer agrees to it. http://www.cliki.net/asdf-world What it needs is support for adding putting asdf-installed packages into=20 a local repository of some kind and support for easy upgrades. In other=20 words, it only does the easy part. > Cheers, G=E1bor |
From: <me...@re...> - 2007-03-12 08:51:22
|
What I forgot to say is that the point here is that, as demonstrated by this very thread, putting a system into a collection of systems is the main concept here and it can be done in a lot of ways. Exposing this functionality while keeping the default symlinking behaviour should be easy. |
From: David L. <da...@li...> - 2007-03-17 14:22:47
|
Hi, I am happy to see that I am not alone with the windows symlink problem, and that there are many people looking for solutions to this problem and other related central registry issues. Quoting G?bor Melis (me...@re...): > What I forgot to say is that the point here is that, as demonstrated by > this very thread, putting a system into a collection of systems is the > main concept here and it can be done in a lot of ways. Exposing this > functionality while keeping the default symlinking behaviour should be > easy. It seems valuable to me to keep the default symlink method in place, and to repair it on Windows, instead of suggesting to Windows users that they have to use a different mechanism than users of Unix-style filesystems. I would agree that such a patch can co-exist with new approaches; after all, ASDF makes it very easy to add as many special system search functions as needed for a particular application. Personally, repairing the existing central registry search function on Windows seems more urgent to me than adding new mechanisms. Now, I was hoping to receive some feedback not on the overall idea of central registry searching, but also on the particular implementation I chose for my initial patch. If you agree that support for Windows shortcuts is a good idea, there are still different ways to do it: (i) Hack ASDF to support shortcuts directly. (My current patch.) (ii) Add a new central registry search function just like with (i), but avoid patching upstream ASDF, and put this new search function into a separate file. (iii) Change the lisp implementation to transparently follow shortcuts as if they were real symbolic links. Note that some implementations actually chose (iii). Users of CLISP should find that ASDF already works for them as intended, since (probe-file "example.asd") returns T when there is, in fact, no example.asd, only a shortcut "example.asd.lnk". OPEN also works and creates a stream for the shortcut's target, just as if it was a symbolic link. Given CLISP's behaviour, my current patch is probably not an ideal solution, since it would add workaround code to upstream ASDF which is not even needed with some implementations. It might be better to do (ii), which would mean to add this just to SBCL, as a new file contrib/asdf/shortcuts.lisp, to be compiled as part of the contrib. Basically, I am hoping to hear from SBCL hackers whether they: - are against any kind of symlink support (in that case, I would move my shortcut code into clbuild) - prefer shortcut support as outlined in (ii) (I can send an updated patch for that) - or prefer CLISP-like shortcut support (no idea how to do that) d. |
From: Yaroslav K. <kav...@je...> - 2007-03-29 09:39:19
|
David Lichteblau wrote: > I am happy to see that I am not alone with the windows symlink problem, > and that there are many people looking for solutions to this problem and > other related central registry issues. > ... Many thanks! May be You state it as article on cliki.net? All interested will add to its offers. -- WBR, Yaroslav Kavenchuk. |
From: Luis O. <lu...@gm...> - 2007-03-12 01:56:30
|
Anton <ya...@ya...> writes: > It may be simpler than to introduce self-made symlinks and will > work in any environment where lisp works. FWIW, I use something like what's described in <http://weitz.de/corman-asdf/> that basically searches for #p"/some-path/*/foo.asd". I find it very convenient since that way I don't have to symlink anything. <http://common-lisp.net/~loliveira/misc/asdf-addons.lisp> -- Luís Oliveira http://student.dei.uc.pt/~lmoliv/ |