[bug #18139] make chooses wrong pattern rule

2006-10-30 Thread Paul D. Smith

Follow-up Comment #5, bug #18139 (project make):

Boris, I don't see why %.o being intermediate makes a difference.  Make can
and does chain implicit rules.  I re-read the section on chaining and I don't
see anything that would contradict the basic premise of chaining, which is
that the length of the chain doesn't matter, only the order in which they're
defined in the makefile.  Of course I could be forgetting something.

I realize that just because someone works differently in 3.81 doesn't mean
it's broken; however in this case I really do think that 3.80 was correct...
unless, as I mentioned, I'm missing some special case.

___

Reply to this item at:

  

___
  Message sent via/by Savannah
  http://savannah.gnu.org/



___
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make


[bug #18124] make-3.81 isn't parallel build safe

2006-10-30 Thread Paul D. Smith

Follow-up Comment #2, bug #18124 (project make):

FYI, there's some conversation on this bug over in the Red Hat Bugzilla
database.  I don't understand the bug and the patch doesn't enlighten me, so
I'm asking for some more detail.

___

Reply to this item at:

  

___
  Message sent via/by Savannah
  http://savannah.gnu.org/



___
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make


[bug #15919] Make-3.81 rc1 hangs with -j 2 but not with -j 1

2006-10-30 Thread Icarus Sparry

Follow-up Comment #9, bug #15919 (project make):

I have a fix, which works with the two Makefiles that are attached to this
bug, plus my stripped down makefile, plus the real life makefile that it was
stripped from.

It also passes the "make check" stage.

It also fixes another old bug.

Paul, how do I get commit access to CVS?



___

Reply to this item at:

  

___
  Message sent via/by Savannah
  http://savannah.gnu.org/



___
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make


[bug #18139] make chooses wrong pattern rule

2006-10-30 Thread Boris Kolpackov

Follow-up Comment #6, bug #18139 (project make):

When GNU make is trying to match a target to an implicit rule it does it in
two passes (implicit.c:432): first without intermediate prerequisites and
then with them. If %.o results in an interemdiate  then, on the first pass,
the first rule will be ignored and the second one will be used.

___

Reply to this item at:

  

___
  Message sent via/by Savannah
  http://savannah.gnu.org/



___
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make


[bug #18139] make chooses wrong pattern rule

2006-10-30 Thread anonymous

Follow-up Comment #7, bug #18139 (project make):

I think the confusion comes from that the top-goal in the makefile is not
what it actually should be, that is just:

  all: $(LIBS)

Normally you would expect this to work but by the implications that Boris
mentionned it doesn't. 

Tnen, there are (at least) 3 criteria make uses on search for a pattern rule:

- file exists
- file "ought to exist"
- file can be made (intermediate) 

Unfortunately what "ought to exist" means and when its applied remains highly
unobvious in normal practice, but it is actually the point of change between
3.80/81.

--- grischka


___

Reply to this item at:

  

___
  Message sent via/by Savannah
  http://savannah.gnu.org/



___
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make


[bug #18139] make chooses wrong pattern rule

2006-10-30 Thread Paul D. Smith

Follow-up Comment #8, bug #18139 (project make):

Hm.  Boris, is that the way it's always worked or is it something we changed
recently?  According to the docs as far as I can tell there's no such
distinction between rules that require intermediates and those that don't. 
In fact, it seems pretty clear that this distinction is not intended; the
docs on chaining say:

>There are some special implicit rules to optimize certain cases that
> would otherwise be handled by rule chains.  For example, making `foo'
> from `foo.c' could be handled by compiling and linking with separate
> chained rules, using `foo.o' as an intermediate file.  But what
> actually happens is that a special rule for this case does the
> compilation and linking with a single `cc' command.  The optimized rule
> is used in preference to the step-by-step chain because it comes
> earlier in the ordering of rules.

The last sentence would not be necessary if the two passes model were in
place, since the "no intermediates" path would be chosen regardless of which
order it appeared in.

___

Reply to this item at:

  

___
  Message sent via/by Savannah
  http://savannah.gnu.org/



___
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make


[bug #15919] Make-3.81 rc1 hangs with -j 2 but not with -j 1

2006-10-30 Thread Paul D. Smith

Follow-up Comment #10, bug #15919 (project make):

Hi Icarus.  The easiest way to get a patch into GNU make is to attach it to
the bug report and/or create a separate patch item (the first is preferred). 
We'll review it and apply it as-is or else discuss it with you if necessary.

Also, if the patch involves significant amounts of new code you will need to
assign copyright to the FSF, and your employer will also need to do so if
you're employed for programming at all.  If you're concerned about this
contact me to discuss it.

Thanks for making the effort to fix this!

___

Reply to this item at:

  

___
  Message sent via/by Savannah
  http://savannah.gnu.org/



___
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make