Hi,
The ASDF manual says that the name of a system is a lowercase string. Is that actually a requirement?
I was trying to create an .asd system which has a name with mixed upper- and lowercase characters and the system is stored in a file of the same name on a case-sensitive file system (Linux). But I get "Component Foo not found" for that. If I change the name of the system and the name of the file to lowercase, the system is found.
For the record, I've pasted the would-be mixed-case named system below. It contains stuff that will make it generally unloadable since you don't have my maxima-file hackery. If it turns out we need to go into this in more detail, I will devise a more minimal example. But first maybe someone can say what the name requirement is.
best,
Robert Dodier
PS. (defsystem "SolveSolvable2" :defsystem-depends-on ("maxima-file") :author "Yasuaki Honda" :license "GNU Lesser General Public License, version 2" :description "Program SolveSolvable2 of GaloisGroupSolver, a Maxima package for solving polynomials based on their Galois Groups"
:components ((:maxima-file "Gal") (:maxima-file "FiniteGroup") (:maxima-file "ExtendedField") (:maxima-file "Stage3") (:maxima-file "Verify") (:maxima-file "SolveSolvable2")))
Quick response for now: yes, lowercase naming is a requirement. There are a number of reasons for this, including the fact that CL's logical pathnames are case-insensitive.
Best, R
Sent from my iPhone
On Feb 17, 2019, at 01:21, Robert Dodier robert.dodier@gmail.com wrote:
Hi,
The ASDF manual says that the name of a system is a lowercase string. Is that actually a requirement?
I was trying to create an .asd system which has a name with mixed upper- and lowercase characters and the system is stored in a file of the same name on a case-sensitive file system (Linux). But I get "Component Foo not found" for that. If I change the name of the system and the name of the file to lowercase, the system is found.
For the record, I've pasted the would-be mixed-case named system below. It contains stuff that will make it generally unloadable since you don't have my maxima-file hackery. If it turns out we need to go into this in more detail, I will devise a more minimal example. But first maybe someone can say what the name requirement is.
best,
Robert Dodier
PS. (defsystem "SolveSolvable2" :defsystem-depends-on ("maxima-file") :author "Yasuaki Honda" :license "GNU Lesser General Public License, version 2" :description "Program SolveSolvable2 of GaloisGroupSolver, a Maxima package for solving polynomials based on their Galois Groups"
:components ((:maxima-file "Gal") (:maxima-file "FiniteGroup") (:maxima-file "ExtendedField") (:maxima-file "Stage3") (:maxima-file "Verify") (:maxima-file "SolveSolvable2")))
Another reason is that we allow the programmer to refer to systems with symbols as well as strings, and symbols are not -- without a substantial nuisance -- case-sensitive.
I'm afraid you are better off with "solve-solvable2". And avoid "solve_solvable" because underscores are not legal characters in logical pathnames.
Best, R
On 17 Feb 2019, at 8:24, Robert P. Goldman wrote:
Quick response for now: yes, lowercase naming is a requirement. There are a number of reasons for this, including the fact that CL's logical pathnames are case-insensitive.
Best, R
Sent from my iPhone
On Feb 17, 2019, at 01:21, Robert Dodier robert.dodier@gmail.com wrote:
Hi,
The ASDF manual says that the name of a system is a lowercase string. Is that actually a requirement?
I was trying to create an .asd system which has a name with mixed upper- and lowercase characters and the system is stored in a file of the same name on a case-sensitive file system (Linux). But I get "Component Foo not found" for that. If I change the name of the system and the name of the file to lowercase, the system is found.
For the record, I've pasted the would-be mixed-case named system below. It contains stuff that will make it generally unloadable since you don't have my maxima-file hackery. If it turns out we need to go into this in more detail, I will devise a more minimal example. But first maybe someone can say what the name requirement is.
best,
Robert Dodier
PS. (defsystem "SolveSolvable2" :defsystem-depends-on ("maxima-file") :author "Yasuaki Honda" :license "GNU Lesser General Public License, version 2" :description "Program SolveSolvable2 of GaloisGroupSolver, a Maxima package for solving polynomials based on their Galois Groups"
:components ((:maxima-file "Gal") (:maxima-file "FiniteGroup") (:maxima-file "ExtendedField") (:maxima-file "Stage3") (:maxima-file "Verify") (:maxima-file "SolveSolvable2")))
Robert P. Goldman Research Fellow Smart Information Flow Technologies (d/b/a SIFT, LLC)
319 N. First Ave., Suite 400 Minneapolis, MN 55401
Voice: (612) 326-3934 Email: rpgoldman@SIFT.net
On Sun, Feb 17, 2019 at 6:25 AM Robert P. Goldman rpgoldman@sift.net wrote:
Quick response for now: yes, lowercase naming is a requirement.
Hi Robert, thanks for your reply. Got it, no problem. I will adjust my stuff accordingly.
It would really help a lot if the policy for the name of the system and the corresponding .asd filename were spelled out in the ASDF manual. As it stands, the manual doesn't say anything about requirements for system-designator; there are incidental comments suggesting using lowercase but not a specification or requirement. If names are indeed restricted to lowercase letters, digits, and hyphens, it would be great to say so.
On a separate topic, are there any restrictions on the names of components? As it stands the manual says only that component names may be either strings or symbols. Mixed case component names appear to work OK but that may be only fortuitous.
Thanks again, and best wishes. Robert Dodier
Hi,
On Sun, Feb 17, 2019 at 9:54 PM Robert Dodier robert.dodier@gmail.com wrote:
On Sun, Feb 17, 2019 at 6:25 AM Robert P. Goldman rpgoldman@sift.net wrote:
Quick response for now: yes, lowercase naming is a requirement.
Hi Robert, thanks for your reply. Got it, no problem. I will adjust my stuff accordingly.
It would really help a lot if the policy for the name of the system and the corresponding .asd filename were spelled out in the ASDF manual. As it stands, the manual doesn't say anything about requirements for system-designator; there are incidental comments suggesting using lowercase but not a specification or requirement. If names are indeed restricted to lowercase letters, digits, and hyphens, it would be great to say so.
At least this exists, although I'm not sure how easy to find it is: https://gitlab.common-lisp.net/asdf/asdf/blob/master/doc/best_practices.md
Cheers,
I plan to import this into the manual.
... in my copious free time.
Best, R
On 17 Feb 2019, at 15:01, Florian Margaine wrote:
Hi,
On Sun, Feb 17, 2019 at 9:54 PM Robert Dodier robert.dodier@gmail.com wrote:
On Sun, Feb 17, 2019 at 6:25 AM Robert P. Goldman rpgoldman@sift.net wrote:
Quick response for now: yes, lowercase naming is a requirement.
Hi Robert, thanks for your reply. Got it, no problem. I will adjust my stuff accordingly.
It would really help a lot if the policy for the name of the system and the corresponding .asd filename were spelled out in the ASDF manual. As it stands, the manual doesn't say anything about requirements for system-designator; there are incidental comments suggesting using lowercase but not a specification or requirement. If names are indeed restricted to lowercase letters, digits, and hyphens, it would be great to say so.
At least this exists, although I'm not sure how easy to find it is: https://gitlab.common-lisp.net/asdf/asdf/blob/master/doc/best_practices.md
Cheers,
Florian Margaine
Robert P. Goldman Research Fellow Smart Information Flow Technologies (d/b/a SIFT, LLC)
319 N. First Ave., Suite 400 Minneapolis, MN 55401
Voice: (612) 326-3934 Email: rpgoldman@SIFT.net
It's actually there, at least if you are looking for it.
Looking for "lower" I found this, but in the discussion of `asdf:load-system`, which isn't great placement.
``` Note that the canonical name of a system is a string, conventionally lowercase. A system name can also be specified as a symbol (including a keyword), in which case its @code{symbol-name} is taken and lowercased. The name must be a suitable value for the @code{:name} initarg to @code{make-pathname} in whatever filesystem the system is to be found.
The lower-casing-symbols behaviour is unconventional, but was selected after some consideration. The type of systems we want to support either have lowercase as customary case (Unix, Mac, Windows) or silently convert lowercase to uppercase (lpns). ```
This material is largely repeated in the "Pathname specifiers" section.
I have clarified this a little in the latest draft of the manual, and made sure that it's explained clearly in the defsystem grammar chapter. I will push this update and make sure that the copy of the manual on the web site is up-to-date.
On 17 Feb 2019, at 14:53, Robert Dodier wrote:
On Sun, Feb 17, 2019 at 6:25 AM Robert P. Goldman rpgoldman@sift.net wrote:
Quick response for now: yes, lowercase naming is a requirement.
Hi Robert, thanks for your reply. Got it, no problem. I will adjust my stuff accordingly.
It would really help a lot if the policy for the name of the system and the corresponding .asd filename were spelled out in the ASDF manual. As it stands, the manual doesn't say anything about requirements for system-designator; there are incidental comments suggesting using lowercase but not a specification or requirement. If names are indeed restricted to lowercase letters, digits, and hyphens, it would be great to say so.
On a separate topic, are there any restrictions on the names of components? As it stands the manual says only that component names may be either strings or symbols. Mixed case component names appear to work OK but that may be only fortuitous.
Thanks again, and best wishes. Robert Dodier
Robert P. Goldman Research Fellow Smart Information Flow Technologies (d/b/a SIFT, LLC)
319 N. First Ave., Suite 400 Minneapolis, MN 55401
Voice: (612) 326-3934 Email: rpgoldman@SIFT.net
On Sun, Feb 17, 2019 at 4:08 PM Robert Goldman rpgoldman@sift.net wrote:
It's actually there, at least if you are looking for it.
In my own defense: I did look for it and I did find that text, but didn't find it helpful. It says the name of a system is conventionally lowercase -- this is not the same as saying that it is required to be lowercase.
I found the text about pathname specifiers as well. I didn't see a requirement there because neither the system name nor component names were specified by the grammar or the commentary on the grammar to be pathname specifiers.
Thanks again for your help, Robert Dodier
Yes, these are good points, and that's why I have pushed an update to the manual. Please have a look at the "The defsystem grammar" ASDF manual page here:
https://www.common-lisp.net/project/asdf/asdf/The-defsystem-grammar.html#The...
Only the first four entries have changed.
Please also have a look at the subsections immediately below: 6.3.1, 6.3.2, and 6.3.3.
I would welcome any comments you (or anyone receiving this message -- the more the merrier!) have. The previous discussion was not as clear as it should have been.
The manual could definitely use an extensive overhaul, but this band-aid is well better than nothing.
Best regards, Robert
On 19 Feb 2019, at 13:30, Robert Dodier wrote:
On Sun, Feb 17, 2019 at 4:08 PM Robert Goldman rpgoldman@sift.net wrote:
It's actually there, at least if you are looking for it.
In my own defense: I did look for it and I did find that text, but didn't find it helpful. It says the name of a system is conventionally lowercase -- this is not the same as saying that it is required to be lowercase.
I found the text about pathname specifiers as well. I didn't see a requirement there because neither the system name nor component names were specified by the grammar or the commentary on the grammar to be pathname specifiers.
Thanks again for your help, Robert Dodier
Robert P. Goldman Research Fellow Smart Information Flow Technologies (d/b/a SIFT, LLC)
319 N. First Ave., Suite 400 Minneapolis, MN 55401
Voice: (612) 326-3934 Email: rpgoldman@SIFT.net
On 17 Feb 2019, at 14:53, Robert Dodier wrote:
On Sun, Feb 17, 2019 at 6:25 AM Robert P. Goldman rpgoldman@sift.net wrote:
Quick response for now: yes, lowercase naming is a requirement.
Hi Robert, thanks for your reply. Got it, no problem. I will adjust my stuff accordingly.
It would really help a lot if the policy for the name of the system and the corresponding .asd filename were spelled out in the ASDF manual. As it stands, the manual doesn't say anything about requirements for system-designator; there are incidental comments suggesting using lowercase but not a specification or requirement. If names are indeed restricted to lowercase letters, digits, and hyphens, it would be great to say so.
On a separate topic, are there any restrictions on the names of components? As it stands the manual says only that component names may be either strings or symbols. Mixed case component names appear to work OK but that may be only fortuitous.
That *is* only fortuitous. If a user of your system was to configure ASDF using logical pathnames for their source repository, these would not work. Also underscores would cause failures.
That's at least true for SBCL. ACL does some DWIMing when it can figure out logical pathnames that aren't strictly kosher. I don't know about other CL implementations.
Thanks again, and best wishes. Robert Dodier
Robert P. Goldman Research Fellow Smart Information Flow Technologies (d/b/a SIFT, LLC)
319 N. First Ave., Suite 400 Minneapolis, MN 55401
Voice: (612) 326-3934 Email: rpgoldman@SIFT.net