On Tue, Mar 30, 2010 at 4:19 PM, Robert Goldman rpgoldman@sift.info wrote:
On 3/29/10 Mar 29 -6:42 PM, Faré wrote:
One site per system looks like it will quickly pollute the host namespace. What about we instead use a single logical host with subdirectories?
#P"COMMON-LISP:SYSTEMS;CL-PPCRE;CL-PPCRE.ASD"
The problem I have with this approach with logical pathnames at all is that I don't understand whether or not mixed case and other characters are allowed at all.
They are not.
The syntax of logical pathname namestrings is
"word---one or more uppercase letters, digits, and hyphens."
This causes pain when working with people WhoLikeOtherProgrammingLanguages.
No, it does not cause any problem. If you have data that has weird names, but you know where they live in your system, then instead of using ASDF to query the paths you can simply query the logical hostname and merge the resulting path with the "nonstandard" components.
So, instead of calling ASDF to locate your system, query its pathname, etc, you would do
(defvar *my-code-base-path* (translate-logical-pathname "MY-SYSTEM:"))
(defvar *my-nonstandard-component* (merge-pathname "foo/MixedCaseWith#WeirdChars.dat" *my-code-base-path*))
The point is not whether logical pathnames satisfy everybody's requirements. I repeat again that the point is having the compiled or loaded systems have as few dependencies in any kind of ASDF API as possible, so that they can live with or without ASDF being present.
If we enforce that each compiled system gets an associated logical pathname it is very easy to set up a translation table at some point when systems are merged into a standalone program, or even do some kind of relocation "magic" to bundle multiple Common Lisp systems in a single Mac OS X applications where the location of things is determined when the application is launched.
Juanjo