[asdf-devel] Changes to ASDF for LW6

Faré fahree at gmail.com
Fri Feb 26 19:33:25 UTC 2010


We were using DEFPACKAGE until recently. However, we had "interesting"
problems when upgrading from 1.604 to 1.620 or later, where I had
renamed ASDF-EXTENSIONS to ASDF-UTILITIES with ASDF-EXTENSIONS as a
nickname (as reported by tcr while using ecl). This was fixed by not
using DEFPACKAGE, but rolling our own version of it. But that fix had
a bug that hit you (plus others that apparently didn't).

[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
A nazi deathcamp survivor defined truth as follows:
believing it does not increase your chance of dying.

On 26 February 2010 14:26, David McClain <dbm at refined-audiometrics.com> wrote:
> So now... while I have deep admiration for the package synthesis code shown in asdf.lisp, for curiosity, why? What is the problem you had with just using CL:DEFPACKAGE?
>
> - DM
>
> On Feb 26, 2010, at 11:21 AM, Faré wrote:
>
>> David, thanks a lot for your help and your patience!
>>
>> That was a bug I just introduced in ASDF:
>> I forgot to put an explicit :use in my (make-package ...),
>> naively thinking it would lead to an empty use-list as in SBCL, but
>> the CLHS says:
>> http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_make-package.html
>> use---a list of package designators. The default is implementation-defined.
>> and in Lispworks, the default legitimately is
>> COMMON-LISP HARLEQUIN-COMMON-LISP LISPWORKS.
>>
>> It should be fixed in 1.627. Can you give it a try?
>>
>> My sincere apologies for the inconvenience.
>>
>> [ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
>> Atheism is a non-prophet organization.
>>
>>
>>
>>
>> On 26 February 2010 12:17, David McClain <dbm at refined-audiometrics.com> wrote:
>>>
>>> CL-USER 14 > (package-use-list (find-package :asdf))
>>> (#<The ASDF-UTILITIES package, 0/64 internal, 20/64 external>
>>>  #<The COMMON-LISP package, 2/4 internal, 978/1024 external>
>>>  #<The HARLEQUIN-COMMON-LISP package, 0/4 internal, 266/512 external>
>>>  #<The LISPWORKS package, 65/128 internal, 225/256 external>)
>>>
>>> CL-USER 15 > (package-use-list (find-package :asdf-utilities))
>>> (#<The COMMON-LISP package, 2/4 internal, 978/1024 external>
>>>  #<The HARLEQUIN-COMMON-LISP package, 0/4 internal, 266/512 external>
>>>  #<The LISPWORKS package, 65/128 internal, 225/256 external>)
>>>
>>>
>>> On Feb 26, 2010, at 10:09 AM, james anderson wrote:
>>>
>>>> good evening;
>>>>
>>>> On 2010-02-26, at 17:46 , David McClain wrote:
>>>>
>>>>> Hi Guys,
>>>>>
>>>>> I think I'm beginning to glean your sense of confusion here. Let me
>>>>> just have you try loading ASDF.lisp in a freshly booted LW6 image
>>>>> and see for yourselves.
>>>>
>>>> send me one, and i will.
>>>>
>>>>>
>>>>> The ASDF.lisp that I am using was take off the web last night,
>>>>>
>>>>> ;;; -- LICENSE START
>>>>> ;;; (This is the MIT / X Consortium license as taken from
>>>>> ;;;  http://www.opensource.org/licenses/mit-license.html on or about
>>>>> ;;;  Monday; July 13, 2009)
>>>>>
>>>>>
>>>>> For APPENDF and GET-ENV, if I don't conditionalize to *not* export
>>>>> those symbols from your list of exports, then I get the error message:
>>>>>
>>>>> "Redefining xxx visible from Lispworks"
>>>>>
>>>>> The same message appears once APPENDF and GET-ENV have been dealt
>>>>> with, regarding LOAD-SYSTEM, COMPILE-SYSTEM, and DEFSYSTEM. In
>>>>> those cases, however, you really want your own definitions to be in
>>>>> effect, and not just inherit behavior that already exists from
>>>>> Lispworks.
>>>>>
>>>>> What can I say here? The LW6 system behaves the way it does, right
>>>>> or wrong, and my changes seemed to be the least needed to get
>>>>> things rolling again.
>>>>
>>>> this approach is suspect.
>>>> it may be, that it succeeds sufficiently to get you past the
>>>> stumbling point, but it should not be committed to a release, as it
>>>> is a symptom of some other problem which would remain unresolved and
>>>> which could well reappear in variations.
>>>>
>>>> given just the information in the asdf definitions, the suspicion
>>>> arises, that either the lispworks release, lispworks site
>>>> installation, or the individual runtime has arranged package and
>>>> symbol visibility such that symbols from some lispworks extension
>>>> package are visible through the common-lisp package, as that is the
>>>> only package from which :asdf-extensions can inherit symbols. the
>>>> first two would surprise me, but without a runtime one cannot say.
>>>>
>>>> what do
>>>>     (package-use-list :asdf-utilities)
>>>>     (symbol-package (find-symbol (string :appendf) :asdf-utilities))
>>>> yield?
>>>> without the patches.
>>>>
>>>> in general, such a problem is to be resolved at the point which sets
>>>> the stage for the conflict, not in the asdf extension package
>>>> definition.
>>>> a more specific answer requires more information about the state of
>>>> the runtime at the point of the redefinition.
>>>>
>>>>>
>>>>> - DM
>>>>>
>>>>> On Feb 26, 2010, at 08:17 AM, Robert Goldman wrote:
>>>>>
>>>>>> On 2/26/10 Feb 26 -9:00 AM, David McClain wrote:
>>>>>>> No, I take a stock LW6 system and want to load up the ASDF
>>>>>>> package as soon as possible, so that I can then use ASDF to load
>>>>>>> in systems. When I take a look at the PACKAGE-USE-LIST of CL-
>>>>>>> USER, it shows COMMON-LISP, HARLEQUIN-COMMON-LISP, and LISPWORKS.
>>>>>>>
>>>>>>> Have a look at the very front of the asdf.lisp file --- it places
>>>>>>> itself into package :CL-USER. So we are screwed up from the get go.
>>>>>>>
>>>>>>> All I did was conditionalilze exports of two symbols that were
>>>>>>> already exported from another package and which performed
>>>>>>> identical functionality, and then I added a section to the rather
>>>>>>> elaborate package construction kit for ASDF to permit the
>>>>>>> declaration of some shadowed symbols. Simple. Effective. It works.
>>>>>>
>>>>>> Faré's right.  There's something mysterious here.  We are only
>>>>>> momentarily in CL-USER, and only while we construct (or modify)
>>>>>> the ASDF
>>>>>> package.  AFAICT the ASDF package modification/creation code only
>>>>>> manipulates uninterned symbols (if it doesn't, that's a bug), so
>>>>>> there's
>>>>>> no way it should be messing up the CL-USER package.
>>>>>>
>>>>>> Will you please clarify?
>>>>>>
>>>>>> thanks,
>>>>>> r
>>>>>>
>>>>>>>
>>>>>>> - DM
>>>>>>>
>>>>>>> On Feb 26, 2010, at 07:31 AM, Faré wrote:
>>>>>>>
>>>>>>>> I don't understand. Do you mean that there is a problem when you
>>>>>>>> (load
>>>>>>>> "asdf") itself, or are you trying to (use-package :asdf) from cl-
>>>>>>>> user?
>>>>>>>> The latter is probably a bad idea, and wasn't supported so far
>>>>>>>> (so far
>>>>>>>> I know).
>>>>>>>>
>>>>>>>> [ François-René ÐVB Rideau | Reflection&Cybernethics | http://
>>>>>>>> fare.tunes.org ]
>>>>>>>> Can anyone please squash this butterfly in Tokyo? I'm sick with
>>>>>>>> its flapping
>>>>>>>> wings changing the outcome of my life.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> 2010/2/26 David McClain <dbm at refined-audiometrics.com>:
>>>>>>>>> ... rather, in package :CL-USER, not :LW-USER. But apparently,
>>>>>>>>> LISPWORKS is automatically being used in CL-USER...
>>>>>>>>>
>>>>>>>>> - DM
>>>>>>>>>
>>>>>>>>> On Feb 26, 2010, at 01:13 AM, Chun Tian (binghe) wrote:
>>>>>>>>>
>>>>>>>>>> Hi, David
>>>>>>>>>>
>>>>>>>>>> I don't think it's necessary to make ASDF and LISPWORKS two
>>>>>>>>>> packages live together. What you met can only happen when you
>>>>>>>>>> try to defined a package which use above two packages at the
>>>>>>>>>> same time:
>>>>>>>>>>
>>>>>>>>>> (defpackage xxx
>>>>>>>>>> (:use :cl :asdf :lispworks))
>>>>>>>>>>
>>>>>>>>>> I don't think you have any good reason to use such a package.
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>>
>>>>>>>>>> Chun Tian (binghe)
>>>>>>>>>>
>>>>>>>>>> 在 2010-2-26,15:44, David McClain 写道:
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> I just installed the latest available source for ASDF and had
>>>>>>>>>>> to make a few minor changes to the way the ASDF Package was
>>>>>>>>>>> being defined, for compatibility with Lispworks 6.0: (changes
>>>>>>>>>>> highlighted in red -- if you can see them)
>>>>>>>>>>>
>>>>>>>>>>>       ...
>>>>>>>>>>>
>>>>>>>>>>>         (ensure-shadow (package symbols)
>>>>>>>>>>>           (shadow symbols package))
>>>>>>>>>>>
>>>>>>>>>>>         (ensure-package (name &key nicknames use export
>>>>>>>>>>> unintern shadow)
>>>>>>>>>>>           (let* ((p (ensure-exists name nicknames)))
>>>>>>>>>>>             (ensure-use p use)
>>>>>>>>>>>             (ensure-unintern p unintern)
>>>>>>>>>>>
>>>>>>>>>>>             (ensure-shadow p shadow)
>>>>>>>>>>>
>>>>>>>>>>>             (ensure-export p export)
>>>>>>>>>>>             p)))
>>>>>>>>>>>  (ensure-package
>>>>>>>>>>>   ':asdf-utilities
>>>>>>>>>>>   :nicknames '(#:asdf-extensions)
>>>>>>>>>>>   :use '(#:common-lisp)
>>>>>>>>>>>   :export
>>>>>>>>>>>   '(#:absolute-pathname-p
>>>>>>>>>>>     #:aif
>>>>>>>>>>>
>>>>>>>>>>>     #-:LISPWORKS #:appendf
>>>>>>>>>>>
>>>>>>>>>>>     #:asdf-message
>>>>>>>>>>>     #:coerce-name
>>>>>>>>>>>     #:directory-pathname-p
>>>>>>>>>>>     #:ends-with
>>>>>>>>>>>     #:ensure-directory-pathname
>>>>>>>>>>>
>>>>>>>>>>>     #-:LISPWORKS #:getenv
>>>>>>>>>>>
>>>>>>>>>>>     #:get-uid
>>>>>>>>>>>     #:length=n-p
>>>>>>>>>>>     #:make-collector
>>>>>>>>>>>     #:pathname-directory-pathname
>>>>>>>>>>>     #:pathname-sans-name+type ;; deprecated. Use pathname-
>>>>>>>>>>> directory-pathname
>>>>>>>>>>>     #:read-file-forms
>>>>>>>>>>>     #:remove-keys
>>>>>>>>>>>     #:remove-keyword
>>>>>>>>>>>     #:resolve-symlinks
>>>>>>>>>>>     #:split
>>>>>>>>>>>     #:component-name-to-pathname-components
>>>>>>>>>>>     #:system-registered-p
>>>>>>>>>>>     #:truenamize))
>>>>>>>>>>>  (ensure-package
>>>>>>>>>>>   ':asdf
>>>>>>>>>>>   :use '(:common-lisp :asdf-utilities)
>>>>>>>>>>>   :unintern '(#:*asdf-revision*)
>>>>>>>>>>>
>>>>>>>>>>>   :shadow #+:LISPWORKS '(#:load-system
>>>>>>>>>>>                          #:compile-system
>>>>>>>>>>>                          #:defsystem)
>>>>>>>>>>>   #-:LISPWORKS '()
>>>>>>>>>>>
>>>>>>>>>>>   :export
>>>>>>>>>>>   '(#:defsystem #:oos #:operate #:find-system #:run-shell-
>>>>>>>>>>> command
>>>>>>>>>>>     #:system-definition-pathname #:find-component ;
>>>>>>>>>>> miscellaneous
>>>>>>>>>>>     #:compile-system #:load-system #:test-system
>>>>>>>>>>>     #:compile-op #:load-op #:load-source-op




More information about the asdf-devel mailing list