[asdf-devel] BUILD-OP

Faré fahree at gmail.com
Fri Mar 14 14:42:45 UTC 2014

>> Note that if we rename it make, it would also be nice to rename
>> build-op to make-op before anyone uses it.
>> We should also rename :build-operation to :make-operation or :make-op
>> or :make, and just have some #-asdf3.1 in asdf.asd to cope with
>> upgrade from the one and only current client of it, i.e. current
>> versions of asdf3.
> MAKE is less cumbersome than my proposed DO-DEFAULT-OPERATION.
> On the other hand, I have already code with a MAKE-OP (and a MAKE-SYSTEM
> class) defined, because I have an ASDF extension that allows ASDF to
> invoke a Makefile through make as part of a compilation.
Is your make-op in the package ASDF? If not, there is no conflict.

> MAKE-OP seems like not an unusual thing for people to want to do in
> their systems.....
> In this connection, it might be time to talk about the package protocol
> for ASDF extensions.  Forcing all such extensions into the ASDF package
> is not really a scalable approach for a set of code that's not centrally
> managed.  But can people effectively use package-qualified names for
> classes and operations in ASDF system definitions?  It may be that the
> answer to that is "naturally yes," but I'd have to investigate further.
>  I'm pretty sure that the current way we process DEFSYSTEM-DEPENDS-ON
> would not handle such names well (the package for the package-qualified
> name would not yet exist, causing a reader error), forcing people to
> back off to using procedural (ASDF:LOAD-SYSTEM "my-asdf-extension") in
> their .asd files...
That's a great question, and I had only thought about it yesterday.
Look at the build-op branch: I did improve the protocol so that
strings may be used as designators for either operation classes or
component classes, that will be read as a symbol while in package
ASDF, but a : or :: prefix can override the package. This makes the
component class parsing in parse-defsystem oh so slightly backward
incompatible, so we'll have to cl-test-grid the change, but I suspect
no one uses the undocumented corner cases that are backward
incompatible. Now you can:

(defsystem foo
  :defsystem-depends-on (foo-ext)
  :class "foo-ext:system"
  :components (("foo-ext:file" "file1")
                       (:some-class-in-package-asdf "file2")))

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
My dad encouraged us to fail. Growing up, he would ask us what we failed at
that week. If we didn't have something, he would be disappointed. It changed
my mindset at an early age that failure is not the outcome, failure is not
trying. Don't be afraid to fail. — Sara Blakely

More information about the asdf-devel mailing list