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@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-p... 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@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@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