So I am using ASDF 2.31 which puts the symbol "defsystem" into asdf/defsystem package instead of plain asdf package (Franz already includes ASDF 2.31 in their patches for Allegro CL).
I have a little utility which emits the .asd files for me, with a form like:
`(asdf:defsystem ,(something-to-make-my-system-name) :description "blah" … )
and now the asdf:defsystem symbol is coming out as asdf/defsystem:defsystem instead,
which makes the .asd file non backwards-compatible with slightly older asdf versions,
because (symbol-package 'asdf:defsystem) --> #<The asdf/defsystem package>
So the Question is, what is the best way to get asdf:defsystem to print as asdf:defsystem,
when its home package is :asdf/defsystem and apparently it is now just re-exported from :asdf.
Or should this symbol now be officially printed as asdf/defsystem:defsystem ?
Or should I put some (in-package ...) statement at the top of the .asd file, and use plain defsystem with no package prefix?
Of course I think for the time being the .asd file should be compatible with all ASDF versions from recent history...
Dave Cooper david.cooper@genworks.com writes:
So I am using ASDF 2.31 which puts the symbol "defsystem" into asdf/defsystem package instead of plain asdf package (Franz already includes ASDF 2.31 in their patches for Allegro CL).
I have a little utility which emits the .asd files for me, with a form like:
`(asdf:defsystem ,(something-to-make-my-system-name) :description "blah" … )
and now the asdf:defsystem symbol is coming out as asdf/defsystem:defsystem instead,
which makes the .asd file non backwards-compatible with slightly older asdf versions,
because (symbol-package 'asdf:defsystem) --> #<The asdf/defsystem package>
So the Question is, what is the best way to get asdf:defsystem to print as asdf:defsystem,
when its home package is :asdf/defsystem and apparently it is now just re-exported from :asdf.
Or should this symbol now be officially printed as asdf/defsystem:defsystem ?
Or should I put some (in-package ...) statement at the top of the .asd file, and use plain defsystem with no package prefix?
Of course I think for the time being the .asd file should be compatible with all ASDF versions from recent history...
You don't need to have prefixes already, when .asd is loaded ASDF creates a temporary package, which uses ASDF package.
: Dave Cooper I have a little utility which emits the .asd files for me, with a form like:
`(asdf:defsystem ,(something-to-make-my-system-name) :description "blah" … )
If you print that form while *package* is bound to something that uses ASDF, (such as ASDF-USER, on 2.31), then it will omit the prefix.
Or should I put some (in-package ...) statement at the top of the .asd file, and use plain defsystem with no package prefix?
: stassats You don't need to have prefixes already, when .asd is loaded ASDF creates a temporary package, which uses ASDF package.
In ASDF1 and ASDF2, indeed, .asd files are read from a temporary package ASDF~D that uses ASDF. In ASDF3, we're using a permanent package ASDF-USER instead, and usual hygiene rules apply.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Any time you're asking the user to make a choice they don't care about, you have failed the user — Jeff Atwood
Faré fahree@gmail.com writes:
: Dave Cooper I have a little utility which emits the .asd files for me, with a form like:
`(asdf:defsystem ,(something-to-make-my-system-name) :description "blah" … )
If you print that form while *package* is bound to something that uses ASDF, (such as ASDF-USER, on 2.31), then it will omit the prefix.
Or should I put some (in-package ...) statement at the top of the .asd file, and use plain defsystem with no package prefix?
: stassats You don't need to have prefixes already, when .asd is loaded ASDF creates a temporary package, which uses ASDF package.
In ASDF1 and ASDF2, indeed, .asd files are read from a temporary package ASDF~D that uses ASDF. In ASDF3, we're using a permanent package ASDF-USER instead, and usual hygiene rules apply.
So, if you define your own operation classes, you need to create a new package?
In ASDF1 and ASDF2, indeed, .asd files are read from a temporary package ASDF~D that uses ASDF. In ASDF3, we're using a permanent package ASDF-USER instead, and usual hygiene rules apply.
So, if you define your own operation classes, you need to create a new package?
You already needed to, to be able to name, modify or redefine them afterwards.
In practice, everyone already did, at least in Quicklisp.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org The major advances in civilization are processes that all but wreck the societies in which they occur. — A.N. Whitehead
On Sun, Mar 3, 2013 at 8:32 AM, Faré fahree@gmail.com wrote:
: Dave Cooper I have a little utility which emits the .asd files for me, with a form
like:
`(asdf:defsystem ,(something-to-make-my-system-name) :description
"blah"
… )
If you print that form while *package* is bound to something that uses ASDF, (such as ASDF-USER, on 2.31), then it will omit the prefix.
I don't want it to omit the prefix. I want:
(asdf:defsystem ...)
Or should I put some (in-package ...) statement at the top of the .asd file, and use plain defsystem with no package prefix?
: stassats You don't need to have prefixes already, when .asd is loaded ASDF creates a temporary package, which uses ASDF package.
In ASDF1 and ASDF2, indeed, .asd files are read from a temporary package ASDF~D that uses ASDF. In ASDF3, we're using a permanent package ASDF-USER instead, and usual hygiene rules apply.
Does "usual hygiene rules" mean that I do or do not need any prefix on the defsystem in
(defsystem ... )
?
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Any time you're asking the user to make a choice they don't care about, you have failed the user — Jeff Atwood
I don't want it to omit the prefix. I want:
(asdf:defsystem ...)
(format t "(asdf:defsystem ...)" ...)
Does "usual hygiene rules" mean that I do or do not need any prefix on the defsystem in
(defsystem ... )
You do NOT need the prefix, unless you've explicitly changed package to one that doesn't :use :asdf.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Individualism is thus an attitude of humility before this social process and of tolerance to other opinions, and is the exact opposite of that intellectual hubris which is at the root of the demand for comprehensive direction of the social process. — Friedrich August Hayek, The Road to Serfdom
Faré fahree@gmail.com writes:
You do NOT need the prefix, unless you've explicitly changed package to one that doesn't :use :asdf.
Or unless you want SLIME auto-indentation to work.
Zach
Or you could fix SLIME's package guessing heuristics.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Laziness is mother of Intelligence. Father unknown. [Rumor has it it's Greed.]
On Sun, Mar 3, 2013 at 10:46 AM, Zach Beane xach@xach.com wrote:
Faré fahree@gmail.com writes:
You do NOT need the prefix, unless you've explicitly changed package to one that doesn't :use :asdf.
Or unless you want SLIME auto-indentation to work.
Zach
I'm not seeing any difference in SLIME's indentation between:
(defsystem #:gdl-ent :description "Auto-generated asdf defsys from Genworks GDL cl-lite." :author "Genworks and Dave Cooper unless otherwise indicated" :serial t :version "2013030200" :depends-on (:gdl-build) :components ((:file "source/package") (:file "source/assembly") (:file "source/controller") (:file "source/agent")))
and:
(asdf:defsystem #:gdl-ent :description "Auto-generated asdf defsys from Genworks GDL cl-lite." :author "Genworks and Dave Cooper unless otherwise indicated" :serial t :version "2013030200" :depends-on (:gdl-build) :components ((:file "source/package") (:file "source/assembly") (:file "source/controller") (:file "source/agent")))
This is with no (in-package ...) form at the beginning.
In any case, it looks like as long as the .asd files are used as intended, then no package prefix is needed on the (defsystem ...), and no (in-package ...) is needed at the top (when using any ASDF version).
I think the confusion started at a time when we were, for some reason, manually loading .asd files ourselves by calling (load ...), which according to my understanding is not and has never been an intended use of .asd files -- they are strictly to be considered as data files for use with supported ASDF (and Quicklisp) operators which expect to find .asd files. Although normal CL expressions are also allowed inside .asd files, the .asd files are never intended to be loaded with (load ...) by the user.
On Sun, Mar 3, 2013 at 11:20 AM, Faré fahree@gmail.com wrote:
Or you could fix SLIME's package guessing heuristics.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Laziness is mother of Intelligence. Father unknown. [Rumor has it it's Greed.]
On Sun, Mar 3, 2013 at 10:46 AM, Zach Beane xach@xach.com wrote:
Faré fahree@gmail.com writes:
You do NOT need the prefix, unless you've explicitly changed package to one that doesn't :use :asdf.
Or unless you want SLIME auto-indentation to work.
Zach
I think the confusion started at a time when we were, for some reason, manually loading .asd files ourselves by calling (load ...), which according to my understanding is not and has never been an intended use of .asd files -- they are strictly to be considered as data files for use with supported ASDF (and Quicklisp) operators which expect to find .asd files. Although normal CL expressions are also allowed inside .asd files, the .asd files are never intended to be loaded with (load ...) by the user.
Yes. I recently modified SLIME to do the right thing when you C-c C-k a .asd file, i.e. (asdf:load-asd pathname)
Note that load-asd is an ASDF3-ism. Later ASDF2 versions only have a slightly less practical load-sysdef, and ASDF1 doesn't expose any separate abstraction for that.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Our system is defined to prevent majority politicians from overtly oppressing minorities. However, our system is also overtly defined to let majorities elect majority politicians and not let minorities wield electoral power. Kinda funny... one part of our constitution tries to fix a problem which the other half of the constitution tries to create! — Lee Salzman eihrul@tunes.org, about the US political system.
Dave Cooper david.cooper@genworks.com writes:
This is with no (in-package ...) form at the beginning.
In any case, it looks like as long as the .asd files are used as intended, then no package prefix is needed on the (defsystem ...), and no (in-package ...) is needed at the top (when using any ASDF version).
I think the confusion started at a time when we were, for some reason, manually loading .asd files ourselves by calling (load ...), ...
Not for me - I had problems with indentation when using plain (defsystem ...) and no problems with (asdf:defsystem ...), so I always used the latter.
Zach