3.0alpha24: make bug (or more...)
David Lee
t.d.lee at durham.ac.uk
Fri May 16 09:52:24 GMT 2003
On Fri, 16 May 2003, Andrew Bartlett wrote:
> I'm not fussed on this bit - just don't jump thought hoops to include
> build_options.c. Instead patch includes.h to include that particular
> prototype.
>
> This should result in a simpler patch.
Thanks.
(STOP PRESS: STOP PRESS: I have discovered a minor weakness of a detail
in my patch. The detail is irrelevant to what follows, but needs to be
corrected before the patch is applied. Its "sed ... '/.../.../'" should
be "sed ... ,...,...,".)
I take your point. (Are you ready for the inevitable "but"?...)
But... "mkproto.sh" was already inherently flawed: Vance's build_options.c
has simply exposed its pre-existing weakness. My patch fixes this
structural weakness. Surely a good thing? (And, as a mere side-effect,
it allows "build_options.c" to find its way, automatically and
maintainably, into "proto.h".)
So what is the inherent structural weakness in mkproto.sh which I allege?
(Forget "build_options.c" for the moment). Imagine it as a black box.
Its purpose is to obtain subroutine definitions from a list of files.
But the list of files supplied is object files! Surely this is, ahem,
less than ideal. So it first had to back-translate the ".o" into ".c".
Further: "mkproto.sh" seemed unclear in its own mind which of its files
(supplied, builtin and output) were relative to make's $(srcdir) and which
to $(builddir). It included a mixture of them and seemed based on some
unclear assumptions.
The main element of my patch (although perhaps I failed to draw your
attention explicitly to it) was that it cleaned up this interface.
"mkproto.sh", whose primary job is to read *source* (.c) files was having
to not being given the necessary ".c" information, was was having to
attempt to second-guess it from suboptimal ".o" information.
Re-read my patch with this in mind: Its purpose is to clean up the
interface from "Makefile.in" to "mkproto.sh", supplying it with the
appropriate ".c", rather than the inappropriate ".o" files. A cleaner and
stronger structure. Full stop. That's it. Nothing more.
(Oh, and by the way, now that it cleanly uses ".c" rather than ".o", then
"build_options.c" is cleanly and automatically catered for: icing on the
cake.)
--
: David Lee I.T. Service :
: Systems Programmer Computer Centre :
: University of Durham :
: http://www.dur.ac.uk/t.d.lee/ South Road :
: Durham :
: Phone: +44 191 334 2752 U.K. :
More information about the samba-technical
mailing list