Date: Tue, 1 Apr 2014 21:24:43 +0200 From: Baptiste Daroussin <bapt@freebsd.org> To: "Simon J. Gerraty" <sjg@juniper.net> Cc: freebsd-arch@freebsd.org Subject: Re: make WITH[OUT]_* more useful? Message-ID: <20140401192443.GV99393@ivaldir.etoilebsd.net> In-Reply-To: <20140401162912.7A9D058097@chaos.jnpr.net> References: <20140401051327.F20F958097@chaos.jnpr.net> <20140401064316.GQ99393@ivaldir.etoilebsd.net> <766EFF76-7B41-423F-B447-DBA25BD14470@bsdimp.com> <20140401162912.7A9D058097@chaos.jnpr.net>
next in thread | previous in thread | raw e-mail | index | archive | help
--4QzzFpAwbwI4hdN6 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Apr 01, 2014 at 09:29:12AM -0700, Simon J. Gerraty wrote: >=20 > On Tue, 1 Apr 2014 08:22:18 -0600, Warner Losh writes: > >>> re-implement the WITH_* vs WITHOUT_* logic repeatedly. > > > >Where, exactly, do we do this? In my recent gripping I=3D92ve found almo= st >=20 > I hit this just about every possible way while trying to support > WITH[OUT]_BMAKE=20 > in such a way that people could build head on 9 etc. > Incluing in-tree bsd.own.mk so MK_BMAKE would get set - broke building > on 9 IIRC. >=20 > Being able to simply do MK_BMAKE?=3D {yes,no} would have been best soluti= on. >=20 > Also I normally want to built WITH_CTF, but of course you cannot simply > put that in make.conf you have to=20 >=20 > .if !defined(WITHOUT_CTF) && !defined(NO_CTF) > WITH_CTF=3Dyes > .endif >=20 > else you get errors during buildworld. >=20 > >>> It is also generally bad to include bsd.own.mk from sys.mk, which mea= ns > >>> any knobs you need early must re-implement the WITH_* vs WITHOUT_* lo= gic > >>> repeatedly. > > > >Again, I find no evidence of this in the tree, can you cite specific exa= mpl=3D >=20 > It isn't done anymore (was certainly done back in 2.x, don't recall when > it was removed), which is good, but means that sys.mk cannot use > any MK_* that the user can influence via WITH[OUT]_*. =20 > That's not so much a problem for existing options, but makes it > impractical to leverage the mechanism for things you might want to set > during sys.mk - like whether to use meta mode or auto objdir creation. >=20 > >I mostly hate this. Specifically, I don=3D92t like the DOMINANT bits. Th= ey ar=3D > >e unnecessary. >=20 > I mostly agree - I find it quite reasonable to simply allow WITHOUT to wi= n. > DOMINANT_* is just an "out" in case there's some future case I haven't > thought of. The default behavior remains that WITHOUT wins. >=20 > >WITH/WITHOUT is a user-only knob.=20 >=20 > Agreed, but the implementation renders it user unfriendly. > If everywhere I want to set a default (eg make.conf) I have to do a > dance like >=20 > .if !defined(WITHOUT_CTF) && !defined(NO_CTF) > WITH_CTF=3Dyes > .endif >=20 > it isn't exactly helping me as much as it could. > If the build stops using WITH/WITHOUT internally that probably helps. >=20 > >The build system should never use it, but always > >set MK_* directly.=20 >=20 > Agreed - that would be most useful and is one of the main changes in my > version. >=20 > >I recently fixed it so the build system can start doing =3D > >that. This solves > >the WITH and WITHOUT problem internally. >=20 > That's good - being able to set MK_* directly without causing error > does address the issue for the build itself. >=20 > Alone though it doesn't necessarily make life any better for users > who (per my example above) want to set defaults like > WITH_CTF=3D in make.conf but occasionally override them. Unless they too > are supposed to set MK_* directly but then what is the point of > WITH[OUT]_* ? >=20 > >I'm still not sure I see the big win. >=20 > I have a number of knobs to be set during sys.mk > AUTO_OBJ automatically create objdirs > META_MODE use meta mode >=20 > setting MK_* is fine, but it is nice if you allow the user to interact > using WITH[OUT]_*, and for that it is best if sys.mk can safely include > something like options.mk >=20 > Of course the user can learn to MK_AUTO_OBJ=3Dno but that simply devalues > WITH[OUT]_*=20 >=20 > It is a neat mechanism, that with some minor tweaks could be much more > useful. >=20 > Baptiste writes: > >> I would be interested in having your opinion on what we did for ports. >=20 > It is a bit more elaborate (422 lines vs 59 in options.mk) > that's probably a necessity for ports, but not so sure about inclusion > by sys.mk >=20 >=20 >=20 >=20 >=20 it is more elaborate because it sets ports only things which is not needed = at all for src. It also handles compat with precious versions of options. Extracting the pure framework will lead to around 30 lines no more. and pro= bably way less. I can make a PoC if you want regards, Bapt --4QzzFpAwbwI4hdN6 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (FreeBSD) iEYEARECAAYFAlM7EnsACgkQ8kTtMUmk6ExJFgCgrSL1uGMr4GiESjMyTJEs7fcD dgQAnAtv81RIu7mAU0+BPiTAdBsCbk6b =ccaq -----END PGP SIGNATURE----- --4QzzFpAwbwI4hdN6--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140401192443.GV99393>