From: Zach B. <xa...@xa...> - 2011-11-05 17:10:37
|
I have a directory entry foo/bar that is a symlink to src/bar. A file src/bar/baz.asd exists. I expected (directory "foo/*/*.asd") to return baz.asd, but it doesn't - is there any combination of options I can use to get the result I want? Thanks, Zach |
From: Faré <fa...@gm...> - 2011-11-05 17:44:45
|
On Sat, Nov 5, 2011 at 12:44, Zach Beane <xa...@xa...> wrote: > I have a directory entry foo/bar that is a symlink to src/bar. A file > src/bar/baz.asd exists. I expected (directory "foo/*/*.asd") to return > baz.asd, but it doesn't - is there any combination of options I can use > to get the result I want? > I ran into this problem and related problems on other implementations. Possibly not the answer you want, but this invocation will give you what you want somewhat portably: (asdf:while-collecting (c) (asdf::collect-sub*directories-asd-files "/tmp/" :collect #'c)) —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org There is one rule for the industrialist and that is: Make the best quality of goods possible at the lowest cost possible, paying the highest wages possible. — Henry Ford |
From: Faré <fa...@gm...> - 2011-11-05 17:53:40
|
On Sat, Nov 5, 2011 at 13:44, Faré <fa...@gm...> wrote: > On Sat, Nov 5, 2011 at 12:44, Zach Beane <xa...@xa...> wrote: >> I have a directory entry foo/bar that is a symlink to src/bar. A file >> src/bar/baz.asd exists. I expected (directory "foo/*/*.asd") to return >> baz.asd, but it doesn't - is there any combination of options I can use >> to get the result I want? >> > I ran into this problem and related problems on other implementations. > > Possibly not the answer you want, but this invocation will give you > what you want somewhat portably: > > (asdf:while-collecting (c) (asdf::collect-sub*directories-asd-files > "/tmp/" :collect #'c)) > Oops, apparently, you'd need to use *.* instead of */ as a pattern to list files in SBCL, so that would be adding sbcl to the #+(or abcl allegro cmu lispworks scl xcl) in subdirectories. Ahem. I wonder if I want to commit that to ASDF... —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org An anarchist is a man who is careful to always use pedestrian crossings, because he utterly detests talking with policemen. — Georges Brassens |
From: Faré <fa...@gm...> - 2011-11-05 19:03:17
|
>> (asdf:while-collecting (c) (asdf::collect-sub*directories-asd-files >> "/tmp/" :collect #'c)) >> > Oops, apparently, you'd need to use *.* instead of */ as a pattern to > list files in SBCL, > so that would be adding sbcl to the #+(or abcl allegro cmu lispworks > scl xcl) in subdirectories. > Ahem. I wonder if I want to commit that to ASDF... > Considering that CMUCL and other implementations were following symlinks, I committed the same behavior for SBCL in ASDF 2.018.8. —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Money doesn't change men, it merely unmasks them. If a man is naturally selfish or arrogant or greedy, the money brings that out, that's all. — Henry Ford |
From: Jeffrey C. <je...@jk...> - 2011-11-05 18:07:53
|
On Sat, 05 Nov 2011 09:44:39 -0700, Zach Beane <xa...@xa...> wrote: > I have a directory entry foo/bar that is a symlink to src/bar. A file > src/bar/baz.asd exists. I expected (directory "foo/*/*.asd") to return > baz.asd, but it doesn't - is there any combination of options I can use > to get the result I want? > > Thanks, > Zach I don't think you can do it with options limited to directory, but here's a way to do it with a couple more functions thrown in: (mapcan #'(lambda (d) (mapcar #'(lambda (f) (enough-namestring f d)) (directory (merge-pathnames "*.asd" d) :resolve-symlinks nil))) (directory "foo/*" :resolve-symlinks nil)) Jeff |
From: Nikodemus S. <nik...@ra...> - 2011-11-09 10:22:37
|
On Saturday, 5 November 2011, Zach Beane <xa...@xa...> wrote: > I have a directory entry foo/bar that is a symlink to src/bar. A file > src/bar/baz.asd exists. I expected (directory "foo/*/*.asd") to return > baz.asd, but it doesn't - is there any combination of options I can use > to get the result I want? FWIW, I think this is actually a bug. ...so heads-up for anyone intending to rely on this... Cheers, -- nikodemus -- Cheers, -- Nikodemus |
From: Nikodemus S. <nik...@ra...> - 2011-11-09 12:15:56
|
On 9 November 2011 12:22, Nikodemus Siivola <nik...@ra...> wrote: > On Saturday, 5 November 2011, Zach Beane <xa...@xa...> wrote: >> I have a directory entry foo/bar that is a symlink to src/bar. A file >> src/bar/baz.asd exists. I expected (directory "foo/*/*.asd") to return >> baz.asd, but it doesn't - is there any combination of options I can use >> to get the result I want? > > FWIW, I think this is actually a bug. Fixed. Apropos: I'm increasingly tempted to export our MAP-DIRECTORY from SB-EXT. It has proven to be work very nicely, and I think it would be a much nicer substrate for many applications than CL:DIRECTORY. commit 3f47602cbbfdb31c59252008b5f2dbe91ca43d7f Author: Nikodemus Siivola <nik...@ra...> Date: Wed Nov 9 13:24:54 2011 +0200 MAP-DIRECTORY didn't :CLASSIFY-SYMLINKS by default ...even though it said it did. Given foo/bar => ../src/bar src/bar/quux.asd now (directory "foo/*/*.asd") finds the .asd as expected. Cheers, -- Nikodemus |