bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #33034] "Makefile:23: *** mixed implicit and normal rules. Stop." f


From: Paul D. Smith
Subject: [bug #33034] "Makefile:23: *** mixed implicit and normal rules. Stop." for Linux kernel out of source builds
Date: Sat, 12 Oct 2013 16:25:09 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.66 Safari/537.36

Follow-up Comment #16, bug #33034 (project make):

I admit I didn't understand the frustration level with this change.  The Linux
kernel was the only package that ever reported any real issues, and there were
(by my count) a total of three patches (all minor) over the span of a couple
of months after the 3.82 release in 2010 to fix those problems.

The release-critical bug in Debian is, IMO, completely unjustified (and I
didn't know about it anyway).  That bug should (a) not be release-critical,
and (b) should be filed against the Linux kernel headers package, not GNU
make.

If it turns out that simply changing the fatal() to an error() is sufficient
to resolve this, I'm willing to make that change (I won't add a flag for it;
the message will simply say the syntax is unsupported and should be updated).

HOWEVER, I'm not willing to guarantee that this syntax will continue to be
supported going forward.  GNU make is not the kernel, and I reject attempts to
impose the development ethos of the kernel on GNU make.  The syntax of
makefiles is so free-form that virtually any enhancement that is made will be
a backward-compatibility issue and I'm simply not willing to commit to that
kind of restriction.  The kernel can always just introduce a different
function name with new semantics--not so for makefiles.  If people need that
level of backward-compatibility I recommend they simply keep around multiple
versions of GNU make to support older code; make's installation is trivial,
just the one program with no extra support files, and even after renaming it
works flawlessly.

In this particular case I expect that even if the syntax still can be made to
work now, when we support the ability to define explicit rules with multiple
targets generated from a single recipe invocation, this syntax might not
survive.  The fact is that this usage IS illegal according to the
documentation (it may not be explicitly proscribed but writing down all the
things that are NOT legal is an impossibility--it's easily, IMO, inferrable
that the syntax is not intended to be valid).

I am not willing, at this point, to embrace the idea of "fixing" it so this
syntax works fully and making it legal.  In my opinion it will be simply too
confusing and difficult to manage all the edge cases around trying to combine
two (or more, in the future) different rule models into a single statement. 
I'm willing to look at any proposals someone has, but I warn you I'll be
extremely skeptical.  I just don't think it's that big of a deal to write the
rules separately, so any proposal will have to be VERY compelling to justify
the complexity given the trivial alternative.

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?33034>

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]