[asdf-devel] compile-with-nicknames
Сергей Катревич
linkfly1 at newmail.ru
Tue Oct 18 14:22:33 UTC 2011
:around-compile - wonderful solve of problem! Can add the :around-load for similar purpose? This it seems logical.
Втр 18 Окт 2011 09:44:17 +0400, Far <fahree at gmail.com> написал:
> > I don't see how can you manipulate things by defining subclasses of
> > cl-source-file.
>
> (defpackage :my-system-system
> (:use :asdf :cl))
>
> (in-package :my-system-system)
>
> (defclass my-cl-source-file (cl-source-file) ())
>
> (defmethod perform ((op compile-op) (c my-cl-source-file))
> ...) ;; wrapping!
>
> (defsystem :my-system
> :default-component-class my-cl-source-file
> :components
> ((cl-source-file "package") ;; override the new default, so this one
> isn't wrapped!
> (:file "macros" :depends-on ("package"))
> ...))
>
> > I have to admit that I don't understand how components are created in asdf.
> > My best guess (by looking at the class-for-type function) is that everything
> > defined in the defsystem by :file and having .lisp extension becomes
> > *default-component-class* which is cl-source-file.
> >
> Yup. ASDF is really straightforward. Especially after all the
> refactoring we did for ASDF 2,
> for the only way we managed to make sense of the code we inherited was
> to simplify it.
> See also the article Robert and I wrote on ASDF:
> http://common-lisp.net/project/asdf/ilc2010draft.pdf
>
> > And I neither want to introduce a new syntax next to :file, nor change my
> > lisp file extensions to something else.
> > So I don't see how your components can become subclasses of cl-source-file
> > at all.
> >
>
> Doing it with the new :around-compile feature, it would be:
>
> (defun my-package-frob-hook (thunk)
> (call-with-package-renamings
> '((long-name-1 shrtnm1)
> (long-name-2 shrtnm2))
> (funcall thunk)))
>
> (defsystem :my-system
> :depends-on ((:version :asdf "2.017.18"))
> :around-compile my-package-frob-hook
> :components
> ((:file "package" :around-compile nil) ;; no frobbing around this one
> (:file "macros" :depends-on ("package"))
> ...))
>
> —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
> The reason why we must be tolerant is NOT that everyone is as right as
> everyone else. It is that no system allows to reliably distinguish right
> and wrong beforehand. Only by having the right to err can one have the
> right to be correct. The attitude of toleration is thus to let the fools be
> victims of their own folly rather than of ours, as long as they in turn
> do not impose their folly upon us.
> — Faré
>
> _______________________________________________
> asdf-devel mailing list
> asdf-devel at common-lisp.net
> http://lists.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel
More information about the asdf-devel
mailing list