Hello,
QUESTION: 1. Could someone add a system naming convention section to the ASDF documentation, to help future users with similar problems? 2. If someone knows whether my rules-of-thumb (below) are right or wrong, let me know.
EXPLANATION: I've been porting a large code base from Franz/Allegro's defsystem to ASDF 2.012. I was originally writing the .ASD files on Windows and recently tried testing the build with the same .ASD files on the Linux variant, Fedora 14, but had some problems with various missing-components. I realized the problem had something to do with the treatment of case in filenames, and ended up fixing problem by examining the ASDF code and inventing some rules-of-thumb:
1. When using Strings to name a system, make sure the filename of the ASD file, the name of the system defined in that file, and any uses of the system-name in other ASD files all have the same case. i.e.:
In the file "SyStEmA.asd": (asdf:defsystem "SyStEmA" ...) In the file "SyStEmB.asd" (asdf:defsystem "SyStEmB" :depends-on ("SyStEmA"))
2. If you ever want to use a Symbol to name a system, make sure the filename of the ASD file is all lowercase. The name of the system defined in that file and any uses of the system-name in other ASD files should either be a symbol or a lowercase string.
In the file "systema.asd": (asdf:defsystem #:SYSTEMA ...) In the file "systemb.asd" (asdf:defsystem "systemb" :depends-on ("systema"))
I don't know if they are correct for all combinations of OSes, CL-variants, and system names, but from my limited knowledge of ASDF's code I think they'll work well.
- Thanks! - David Wang
P.S. Thanks for helping develop ASDF. I couldn't imagine a [Lisp] world in which it didn't exist.
On 1/24/11 Jan 24 -9:03 AM, David Wang wrote:
Hello,
QUESTION:
- Could someone add a system naming convention section to the ASDF
documentation, to help future users with similar problems? 2. If someone knows whether my rules-of-thumb (below) are right or wrong, let me know.
EXPLANATION: I've been porting a large code base from Franz/Allegro's defsystem to ASDF 2.012. I was originally writing the .ASD files on Windows and recently tried testing the build with the same .ASD files on the Linux variant, Fedora 14, but had some problems with various missing-components. I realized the problem had something to do with the treatment of case in filenames, and ended up fixing problem by examining the ASDF code and inventing some rules-of-thumb:
- When using Strings to name a system, make sure the filename of the ASD
file, the name of the system defined in that file, and any uses of the system-name in other ASD files all have the same case. i.e.:
In the file "SyStEmA.asd": (asdf:defsystem "SyStEmA" ...) In the file "SyStEmB.asd" (asdf:defsystem "SyStEmB" :depends-on ("SyStEmA"))
Isn't this going to be unhappy if it hits logical pathnames, at least for portability? ACL and SBCL have rather different policies about mixed-case names in logical pathnames, IIRC. I just try to avoid mixed-case now. Minor nuisance, but it is guaranteed to be safe.
best, r