[asdf-devel] component-property

Faré fahree at gmail.com
Thu Jan 31 21:51:59 UTC 2013


I did an analysis of how system properties are used in Quicklisp systems,
and this suggests that the following initargs be added:
:website-url <=== widely requested. the URL suffix makes it less ambiguous.
:bug-tracker-url <=== Zach's request that makes a *whole* lot of sense
:development-email <=== More actionable name than :author-email.
                       Or maybe just use mailto: URL in bug-tracker-url?
:long-name <=== we have :long-description already, so why not?

I believe some kind of :source-control slot might be useful,
though between SVN, GIT, Mercurial, etc., there is no common URL pattern,
so we'd have to specify some structure.
Either a list of `(,vcs-keyword , at url+options)
or a command to checkout / clone the repository to be parsed,
or something.

Here are the uses of component properties in Quicklisp systems:

asd's that directly use asdf:component-property:
*** yaclml
=> :features <=== property for version comparison. See arnesi below.
*** amazon-ecs
=> :website <=== Yes, need to be added to ASDF 3.
*** hemlock.asd
=> :last-loaded-as-source <=== bad implementation of latin1 encodings with
 lifted from ASDF 1's bad implementation of load-source-op.
 Let's just use asdf-encodings for that, and/or use UTF-8, furgossake.

asd's that use :properties in defsystem:
*** arnesi, arnesi+
=> :features
 <=== misguided property used for version comparison and pseudo #+features
 version comparison should use :version.
 The pseudo-features should probably be replaced by either
 having separate systems or actual features, depending on their use pattern.
 If actually useful, create a subclass with a :component-features initarg.
*** lkcas, thopter
=> :long-name <=== used by the Makefile through component-property.
  I could add that to defclass system, or he could use a subclass.
*** cl-irc cliki-bot rss cl-syslog com.informatimago.clext
   com.informatimago.clisp com.informatimago.clmisc
   com.informatimago.common-lisp.arithmetic
   om.informatimago.common-lisp.bank
   com.informatimago.common-lisp.cesarum
   com.informatimago.common-lisp com.informatimago.common-lisp.csv
   com.informatimago.common-lisp.cxx
   com.informatimago.common-lisp.data-encoding
   com.informatimago.common-lisp.diagram
   com.informatimago.common-lisp.ed
   com.informatimago.common-lisp.graphviz
   com.informatimago.common-lisp.heap
   com.informatimago.common-lisp.html-base
   com.informatimago.common-lisp.html-generator
   com.informatimago.common-lisp.html-parser
   com.informatimago.common-lisp.http
   com.informatimago.common-lisp.interactive
   com.informatimago.common-lisp.invoice
   com.informatimago.common-lisp.lisp
   com.informatimago.common-lisp.lisp.ibcl
   com.informatimago.common-lisp.lisp.stepper
   com.informatimago.common-lisp.lisp-reader
   com.informatimago.common-lisp.lisp-sexp
   com.informatimago.common-lisp.lisp-text
   com.informatimago.common-lisp.parser
   com.informatimago.common-lisp.picture
   com.informatimago.common-lisp.regexp
   com.informatimago.common-lisp.rfc2822
   com.informatimago.common-lisp.rfc3548
   com.informatimago.common-lisp.telnet
   com.informatimago.common-lisp.unix
   linc
   com.informatimago.lispdoc
   com.informatimago.lua
   com.informatimago.cocoa-playground
   com.informatimago.objcl
   com.informatimago.rdp
   com.informatimago.rdp.basic
   com.informatimago.rdp.basic.example
   com.informatimago.rdp.example
   com.informatimago.susv3
   com.informatimago.common-lisp.tools.make-depends
   com.informatimago.xcode
   spartns
   xlunit
   => (WTF???? uninterned symbols, really?)
   #:author-email <=== somewhat useful piece of data
   #:date <=== You're never going to get anything but stale information here.
   (#:albert #:output-dirs) <=== An absolute pathname in a .asd? Braindamage!
   (#:albert #:formats) <=== should be moved to some albert-system class slots
   (#:albert #:docbook #:template)
   (#:albert #:docbook #:bgcolor)
   (#:albert #:docbook #:textcolor)
   (#:albert #:docbook #:dtd)
*** portableaserve
   => (WTF???? The same albert thing, just incompatibly?)
   ("system" "author" "email")
   ("albert" "presentation" "output-dir")
   ("albert" "presentation" "formats")
   ("albert" "docbook" "dtd")
   ("albert" "docbook" "template")
   !! Albert should probably use its own subclass to put its information
*** com.clearly-useful.generic-collection-interface
   => :com.clearly-useful <=== whatever you're doing, use a subclass.
*** metatilities
   => :ait-timeout :system-applicable-p <=== same comment
*** ucw ucw-core
   => it.bese.ucw.system::version <=== WTF? use :version instead.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
"On two occasions I have been asked [by members of Parliament!], `Pray,
Mr.  Babbage, if you put into the machine wrong figures, will the right
answers come out?'  I am not able rightly to apprehend the kind of
confusion of ideas that could provoke such a question."
		— Charles Babbage




More information about the asdf-devel mailing list