Bad interaction between CCL 1.9 rc1 internal ASDF and Debian ASDF package
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ASDF |
Won't Fix
|
Wishlist
|
Unassigned |
Bug Description
[Submitting this at the recommendation of Robert Goldman.]
Hi,
When testing the CCL 1.9 rc release on Debian squeeze, I ran into a
problem.
My installation has the Debian ASDF package installed. This is version
2.22.
ii cl-asdf 2:2.22-1 Another System Definition Facility
orwell:
[...]
/usr/share/
[...]
The following transcript is using a checkout from upstream's svn repos.
I initially load CCL's internal copy of ASDF (in tools). Then, when I
attempt to load cl-rmath, which is locally installed at
/usr/local/
upgrade, finds the Debian ASDF, and tries to load it. This fails.
I'm not sure what the right solution is here. However, some comments.
1) I don't understand why it is necessary for ASDF to update or
upgrade itself in this fashion. I believe it didn't do so before. In
any case, can this behavior be made optional?
2) The attempted upgrade happens in this case to a version that is
actually *older*. I.e. Debian's ASDF is 2.22, while the internal ASDF
in CCL 1.9 rc1 is 2.28. A reasonable sanity check might be to not
attempt an update/upgrade if your only options are older versions of
ASDF.
3) I've been working on a CCL Debian package. One of the reasons
Debian's packaging system exists is so a large variety of software can
work together without bad interactions happening. I don't see Debian
pulling its ASDF package. Therefore, this issue as it stands is a
showstopper as far as getting a CCL 1.9 package into Debian
goes. However, if upstream does not make a change that fixes this
issue, it is still Ok to patch the Debian package to fix it for
Debian, as long as a reasonable solution can be found. Of course, in
that case, Debian users using the upstream version directly will still
have problems.
4) As I have commented elsewhere, one other possible (not good)
solution to this is to not use the Debian ASDF package, or indeed any
other "external" ASDF, and rely only on the internal ASDF. There are
at least two problems with that currently. a) Debian CL packages (some
of them anyway) depend on cl-asdf. I personally consider that a
misfeature; it should be a Recommends at most. However, given that is
the case, without cl-asdf many CL Debian packages are not
installable. b) CL implementations are not guaranteed to have an
internal copy of ASDF. So, the Debian ASDF (or some other copy of
ASDF) may be needed to use with them. However, Robert Goldman said
that all CL implementations now ship ASDF, so I don't know if this is
a problem in practice or not.
#######
faheem@
Path: .
URL: http://
Repository Root: http://
Repository UUID: 8bdb8f1d-
Revision: 15701
Node Kind: directory
Schedule: normal
Last Changed Author: gb
Last Changed Rev: 15687
Last Changed Date: 2013-02-05 06:32:05 +0530 (Tue, 05 Feb 2013)
faheem@
Welcome to Clozure Common Lisp Version 1.9-rc1-r15685 (LinuxX8632)!
? (require 'asdf)
ASDF
("ASDF")
? (quit)
faheem@
Welcome to Clozure Common Lisp Version 1.9-rc1-r15685 (LinuxX8632)!
? (setf *load-verbose* t)
T
? (require 'asdf)
;Loading #P"/usr/
ASDF
("ASDF")
? (asdf:asdf-version)
"2.28"
? (trace asdf:upgrade-asdf)
NIL
? (require 'cl-rmath)
;Loading #P"/usr/
0> Calling (ASDF/UPGRADE:
;Loading #P"/usr/
;Loading #P"/usr/
nction ASDF/PACKAGE:
3 arguments provided, at most 2 accepted.
> While executing: ASDF/PACKAGE:
> Type :POP to abort, :R for a list of available restarts.
> Type :? for other options.
1 > (asdf:asdf-version)
> Error: Reader error: No external symbol named "ASDF-VERSION" in package #<Package "ASDF"> .
> While executing: CCL::%PARSE-TOKEN, in process listener(1).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Create and use the internal symbol ASDF::ASDF-VERSION
> Type :? for other options.
That is NOT a bug in ASDF.
That is a bug in Debian.
Someone needs to publish a new cl-asdf 2.28 package for Debian. I don't have a debian machine anymore, so that won't be me, and I'm traveling, so I definitely won't do it in the next two weeks.
If you're producing a debian package for CCL, you can easily produce a debian package for ASDF as well. Check the "make debian-package" target of asdf. Since it hasn't been used in a while, it might require some bit rot scrubbing.