Can't use extended package options with package-inferred-system

Bug #1579980 reported by Paul M. Rodriguez
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ASDF
New
Undecided
Unassigned

Bug Description

If you try to use package-inferred-system with a package definition containing (:lock t), which SBCL supports for locking a package, you get an error to the effect that :lock fell through an ecase expression.

This case is easy to work around by explicitly locking the package, but since the standard explicitly permits implementations to support extended package options, using `ecase` to process package options seems like a bug.

Revision history for this message
Faré (fahree) wrote :

Can you (anyone) offer a patch?

You'd have to edit the ecase in function package-dependencies, and replace it with something better. Probably with plenty of #+ collected for each implementation's extensions. Good luck.

Revision history for this message
Paul M. Rodriguez (pmr-v) wrote :

My thought was that, since the possible set of package options is defined to be open-ended, the sensible thing to do would be to replace `ecase` with `case`.

Alternatively, since ASDF uses `read` to snarf the package form, you could rebind `*features*` to add something specific and require any extended package options to be prefixed with a negative reader conditional. Then you would write something like:

    #-asdf-standard-package-options (:lock t)

Revision history for this message
Faré (fahree) wrote :

The problem with case instead of ecase is that then erroneous treatment of some extensions might go unnoticed until too late.

I believe it's better to go look for a definitive list of package options.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.