A new implementation was just uploaded which implements the :logical-pathname argument for defsystem. It constructs four definitions, one using Faré's favourite no-namespace-clobbering scheme and three other ones that gives a bit more freedom to the developer, separating sources from "automatically" generated files. The code does minimal collision checks. It will basically complain when there exists a translation that matches the one we are proposing but was not created by ASDF. If the user selects the CONTINUE restart, those translations will be deleted. (defsystem :foo :logical-pathname "FOO:BASE" :components ((:file "faa"))) (let ((x "COMMON-LISP:SYSTEMS;FOO;FAA.LISP")) (format t "~&;;; Pathname ~S~%;;; translates into ~S" x (translate-logical-pathname x))) (let ((x "FOO:BASE;SOURCE;FAA.LISP")) ;; BASE;DATA;FAA.LISP is a synonym (format t "~&;;; Pathname ~S~%;;; translates into ~S" x (translate-logical-pathname x))) (let ((x "FOO:BASE;OUTPUT-FILES;FAA.LISP")) (format t "~&;;; Pathname ~S~%;;; translates into ~S" x (translate-logical-pathname x))) (terpri) ;;; Pathname "COMMON-LISP:SYSTEMS;FOO;FAA.LISP" ;;; translates into #P"/Users/jjgarcia/devel/asdf/faa.lisp" ;;; Pathname "FOO:BASE;SOURCE;FAA.LISP" ;;; translates into #P"/Users/jjgarcia/devel/asdf/faa.lisp" ;;; Pathname "FOO:BASE;OUTPUT-FILES;FAA.LISP" ;;; translates into #P"/Users/jjgarcia/devel/asdf/faa.lisp" The attitude here is probably that this is useless and should be totally hidden in a contribution directory Placing it in a "contrib" section means accepting it because of "politeness" or insistence of the submitter, but effectively making this useless, because then no library will be able to depend on it, for the :logical-pathname keyword will only be available when the user loads the appropriate extension. Juanjo -- Instituto de Física Fundamental, CSIC c/ Serrano, 113b, Madrid 28006 (Spain) http://tream.dreamhosters.com