Are FORCE and FORCE-NOT semantics right?

Bug #1184002 reported by Robert P. Goldman
This bug affects 2 people
Affects Status Importance Assigned to Milestone

Bug Description

The manual specifies that FORCE takes precedence over FORCE-NOT, and a half-baked test by me seems to indicate that this is right.

Is this The Right Thing? I would imagine a common case is that someone wishes to rebuild all of the dependencies of some system, with some chosen exceptions. This is what suggested the issue to me, because I wanted to rebuild a system of mine on SBCL. My system depends transitively on SB-GROVEL, which is a built-in, and cannot be rebuilt by a normal user, since it's installed in /usr/local.

So it seemed like (asdf:load-system "foo" :force t :force-not (list "sb-grovel")) would be just the ticket. Unfortunately, if the manual is correct (and behavior of SBCL 1.1.7+ from git suggests it is), this cannot be done.

Is there any reason why the precedence shouldn't be FORCE-NOT overriding FORCE? I.e., build blocking being winning over building?

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

Note: closed duplicate bug #1227261

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

You are right indeed: both the case you cite (amendment to :force :all) and the case by Erik Pearson that prompted the feature (don't recompile systems in the dumped image) are about knowing a list of systems for which you trust the current image more than the filesystem and/or filesystem access is going to be painfully slow, at which point the force-not should take precedence over force.

My apologies for not thinking this matter through before.

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

A persistent default to :force-not, and/or a list of systems that is merged to it or a hash-table consulted in addition to it, might also provide a real solution to this formerly erroneously(?) closed bug, a case similar to that of Erik Pearson:

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

OK, fix committed in, including a new variable *immutable-systems*. Enjoy!

Changed in asdf:
assignee: nobody → Faré (fahree)
importance: Undecided → Medium
milestone: none → version4
status: New → Fix Committed
Changed in asdf:
milestone: version4 → asdf3-1
Changed in asdf:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers