[asdf-devel] CCL build failure

Robert Goldman rpgoldman at sift.info
Thu Jan 10 04:43:56 UTC 2013


On 1/8/13 Jan 8 -11:39 PM, Faré wrote:
> Relevant CCL bugs are
> http://trac.clozure.com/ccl/ticket/953
> http://trac.clozure.com/ccl/ticket/978
> Ticket 953 is especially relevant if you're older than 15330,
> which may or may not have been backported to your release branch 1.8.
> 
> I've made changes to ASDF to make it more robust, but it's in my
> exploded branch,
> which doesn't handle package upgrade yet.

Sigh.

Unfortunately, SBCL is the only lisp I build from source revision control.

I just grab the CCL binaries when they make a release, since I don't use
it in my Real Work\tm, only in testing systems like ASDF and SHOP2.

I'm a bit puzzled by this, though.

Yes, I used a logical pathname when loading ASDF into a Clozure repl to
investigate the build failure in the asdf test runner.

But that logical pathname is not in place when I run the tests.

So I guess this is a red herring, and I still need to see why the build
failed in the contest of make testall-no-upgrade...

cheers,
r

> 
> —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
> It is deplorable that many people think that the best way to improve the world
> is to forbid something. However, they're morally more advanced than the people
> who think the best way to improve the world is to kill somebody.
>         — John McCarthy
> 
> 
> On Tue, Jan 8, 2013 at 9:43 PM, Faré <fare at tunes.org> wrote:
>>> I was using this:
>>> (setf (logical-pathname-translations "home")
>>>       (list
>>>        (list "**;*.*.*"
>>>                   "/Users/rpg/**/*.*")))
>>>
>>> Gives me portability across Mac (/Users) and Linux (/home).
>>>
>>> and doing
>>> (push "home:lisp;asdf;" asdf:*central-registry*)
>>> (asdf:load-system "asdf")
>>>
>>> viz:
>>>
>>> CL-USER> (logical-pathname-translations "home")
>>> ((#P"home:**;*.*.*" #P"/Users/rpg/**/*.*"))
>>> CL-USER> (push "home:lisp;asdf;" asdf:*central-registry*)
>>> ("home:lisp;asdf;" #P"/Users/rpg/lisp/xophe-clx/" "~/lisp/asdf-systems/"
>>> "~/lisp/asdf-install-systems/systems/" "~/lisp/asdf-systems/"
>>> "~/lisp/asdf-install-systems/systems/")
>>> CL-USER> (asdf:load-system "asdf")
>>>
>>> Unfortunately, on my copy of SLIME, attempts to inspect this "illegal
>>> logical pathname" object crashes the inspector.
>>>
>> I couldn't reproduce, and I don't fully understand this bug yet,
>> but the crux is that we're somehow trying to parse a physical namestring
>> in the context of either an explicit default
>> or the *default-pathname-defaults* being a logical-pathname,
>> and that's something that causes the bug.
>>
>> Are you perchance using (setf *resolve-symlinks* nil) ?
>>
>> I have worked around the same bug in the past, and
>> but maybe it resurfaced despite our testing test-logical-pathname.script.
>>
>> My understanding is that somehow at some unexpected point
>> your *default-pathname-defaults* is a logical-pathname,
>> and this causes confusion — even #p"" will then be a logical pathname.
>> It could also be that ASDF itself was compiled while
>> *default-pathname-defaults* was a logical pathname,
>> and that #p"" and/or other constants in there are then parsed
>> as logical pathnames, and fail. Or it could be anything.
>>
>> I think we need a function sane-physical-pathname
>> that takes anything in input, tries to turn it to a physical pathname,
>> then tries with *default-pathname-defaults*, then tries with
>> (user-homedir-pathname), maybe with (lisp-implementation-directory),
>> and finally fails with prejudice.
>> Then, we should wrap a lot of defaulting and
>> all our binding of *default-pathname-defaults* with it.
>>
>> Logical-pathnames are really a big can of worms and of fail.
>>
>> Alan Perlis quipped that "A programming language is low level
>> when its programs require attention to the irrelevant."
>> But if instead of requiring attention to irrelevant low-level details,
>> a language requires your attention on gratuitous bogosity,
>> what do you call it?
>>
>> Until we diagnose the exact issue and fix it, a workaround
>> to achieve what you want without logical pathnames is to use
>> :home for your physical home directory in the location DSL,
>> e.g. your ~/.config/common-lisp/source-registry.conf you read:
>>
>>         (:source-registry
>>          (:directory (:home "lisp" "asdf"))
>>          (:tree (:home "work" "cl"))
>>          :inherit-configuration)
>>
>> Or you could
>>         export CL_SOURCE_REGISTRY='(:source-registry ...)'
>>
>> Regards,
>>
>> —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
>> I'd rather write programs that write programs than write programs — Dick Sites





More information about the asdf-devel mailing list