wanted: shallow recursiveness for :FORCE keyword

Bug #479483 reported by Tobias C. Rittweiler
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
ASDF
Fix Released
Wishlist
Faré

Bug Description

When I use :FORCE, in most cases I do want to recompile solely the
specified system, not all its dependencies.

In my ideal world, :FORCE T would recompile the specified system only,
and :FORCE :ALL would recompile it along its dependencies.

Of course that would be backwards-incompatible, so perhaps better stick
with the current behaviour for :FORCE T, but add :FORCE :SYSTEM, or
:FORCE :SHALLOW, or similiar.

(Original posting: http://thread.gmane.org/gmane.lisp.asdf.devel/31)

Revision history for this message
Nikodemus Siivola (nikodemus) wrote :

Actually, I don't think breaking backwards compatibility would be too terrible here: my assumption is that :FORCE is in 99% of cases called manually, so as long as users are made aware of the change it should break very little.

That said, easiest way might be to make it

 :FORCE-RECURSIVE <boolean>
 :FORCE-SHALLOW <boolean>

and deprecate :FORCE, but keep it as an alias for :FORCE-RECURSIVE for a year or so.

Changed in asdf:
status: New → Confirmed
importance: Undecided → Wishlist
Revision history for this message
Robert P. Goldman (rpgoldman) wrote :

How about keeping the argument as :FORCE and making it accept :recursive or :shallow as an argument? Then keep t as a synonym for :recursive?

Also, what about making it :deep versus :shallow or :recursive versus :immediate?

Not a big deal, but I prefer the alternatives to be parallel....

cheers!

Revision history for this message
Nikodemus Siivola (nikodemus) wrote : Re: [Bug 479483] Re: wanted: shallow recursiveness for :FORCE keyword

2009/12/21 Robert P. Goldman <email address hidden>:
> How about keeping the argument as :FORCE and making it accept :recursive
> or :shallow as an argument?  Then keep t as a synonym for :recursive?
>
> Also, what about making it :deep versus :shallow or :recursive versus
> :immediate?

The reason why I prefer :FORCE-RECURSIVE and :FORCE-SHALLOW is that there is less room for mistake, and the meaning is always clear -- no wondering about what T means, and a clear upgrade path.

Also, if we support T, :RECURSIVE and :SHALLOW, we should signal an error for all others -- otherwise it's far too easy to accidentally pass in :SYSTEM or similar bogus argument and have it do the wrong thing.

No biggie, though. I will not cry if we go your route.

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

Quite some time ago (2.014.4), I fixed the :FORCE (SYSTEM1 SYSTEM2 ...) feature, and less long ago (2.20.21), I added a :FORCE-NOT (SYSTEM3 SYSTEM4 ...) feature.

Can we say that this is now a solved issue?

Changed in asdf:
assignee: nobody → Faré (fahree)
status: Confirmed → In Progress
Revision history for this message
Robert P. Goldman (rpgoldman) wrote :

One thing we might want to do is to document these. :force doesn't seem well documented in the manual.

I'm afraid I'm a travel monster this month, but if someone would like to assign me a ticket to write this up, and I can do it in November, LMK.

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

OK, still not documented in the manual, but now fixed in 2.26.8 and documented in the operate docstring.

:force t only forces the current system.
:force :all forces everything, recursively.

Changed in asdf:
milestone: none → version2.1
status: In Progress → Fix Committed
Revision history for this message
Faré (fahree) wrote :

Note that these are as Dan Barlow specified them back in his e0d02781 commit from 2003-03-16, but which never actually worked completely as specified until 2.26.8 from 2012-12-06.

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

Fix released in 2.27

Changed in asdf:
status: Fix Committed → Fix Released
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.