Samba 4 buildsystem; patch in progress
Jelmer Vernooij
jelmer at samba.org
Sun Jan 6 13:10:39 GMT 2008
Hi James,
Am Samstag, den 05.01.2008, 23:11 -0800 schrieb James Peach:
> On 05/01/2008, at 5:32 PM, Jelmer Vernooij wrote:
> > After discussing this with various people over the last week, I
> > decided
> > to try and see how hard it would be to get Samba 4 to use a simple
> > Makefile again.
> >
> > I've now got something partially working, heavily based on the
> > "include"
> Is "include" portable? According to <http://www.freebsd.org/cgi/man.cgi?query=make&sektion=1
> >, BSD make uses ".include".
I tested in in smb-build on the buildfarm a while ago. If it really
turns out include is problematic, we could always just write a perl
script that just folds the Makefile for us.
> > and double-colon features in make (portable across all makes we build
> > on, afaik).
>
> This is a weird one. <http://www.freebsd.org/cgi/man.cgi?query=make&sektion=1
> > describes :: in a way that conflicts with your use of it to
> accumulate target dependencies and rules. However, <http://www.opengroup.org/onlinepubs/009695399/utilities/make.html
> > claims that the accumulation behaviour is a BSD make-ism.
The definition in the FreeBSD manpage doesn't seem to conflict with our
use of it, though it is incomplete (it doesn't mention the fact that
double-colon targets can occur more than once). However, we already
use :: in Samba 4 to accumulate target dependencies, so I'm sure it has
that behaviour. Samba 4 uses if for clean at the moment.
> > So far I've managed to avoid most beartraps; it should work portably
> > across all platforms, doesn't use recursive make, doesn't use libtool
> > and variables and rules don't use a lot of magic.
> I have to say that I don't think a truly portable Makefile is a good
> idea.
>
> First, I'm not convinced that the portable subset of make has the
> features we would want to use in the build.
>
> Second, even if we narrow the scope to 3 or 4 make implementations, I
> think there will be a continual support cost from folks building on
> platforms without these implementation, as well as the likelihood of
> GNU make-isms constantly leaking in from the 99% of Samba developers
> who use GNU make exclusively.
> Finally, I think that using the full vocabulary of a single make
> implementation (particularly GNU make), is too useful to ignore, eg.
> "$^".
I really wish we could switch to GNU make, too. $^, % rules, += and
per-target variables are really nice features that would allow us to
remove what redundancy we have left in the Makefile.
The problem is that while 99% of the developers may be running GNU
make, far less than 99% of the build farm hosts run it. Moving to GNU
make would mean losing some of the more exotic build farm hosts.
> You could include a GNU make download/bootstrap script with installs
> a
> temporary copy of GNU make automatically if configure doesn't find
> it.
> Then you could use GNU make features like per-target variables.
> Would
> this make a GNU make dependency more acceptable?
It's an interesting suggestion, but I'm not sure I want to go there.
It's non-trivial to get right, especially if it has to work out of the
box. I'm also not sure how much I personally would appreciate some app
downloading and building another as part of its build process...
Thanks for your comments.
Cheers,
Jelmer
--
Jelmer Vernooij <jelmer at samba.org> - http://samba.org/~jelmer/
Jabber: jelmer at jabber.fsfe.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 307 bytes
Desc: Dies ist ein digital signierter Nachrichtenteil
Url : http://lists.samba.org/archive/samba-technical/attachments/20080106/0df49c29/attachment.bin
More information about the samba-technical
mailing list