[CFT+BRAINSTORM] One USE_ to rule them all

Dewayne Geraghty dewayne.geraghty at heuristicsystems.com.au
Mon Feb 11 12:59:48 UTC 2013


> -----Original Message-----
> From: owner-freebsd-ports at freebsd.org 
> [mailto:owner-freebsd-ports at freebsd.org] On Behalf Of 
> Baptiste Daroussin
> Sent: Tuesday, 5 February 2013 5:20 AM
> To: ports at freebsd.org
> Subject: [CFT+BRAINSTORM] One USE_ to rule them all
> 
> Hi,
> 
> I have some improvements to the ports tree to propose, and 
> I'm looking for testers/opinions
> 
> First let me explain:
> 
> I want to introduce a new USE_FEATURES macro into the ports tree
> 
> The goal of this macros is to be able to standardize how we 
> call all the USE_* things as well as creating some "load on 
> demand" code for a corresponding feature.
> 
> What I expect in long term is to get a more readable 
> bsd.port.mk & friends, meaning easier to maintain
> 
> I except some performance improvements given that make will 
> have to parse less things.
> 
> I also expect less complexity if bsd.*.mk code.
> 
> What will have is all/most of the code corresponding to a 
> USE_SOMETHING right now will endup in a 
> Mk/features/something.mk which will be loaded only if the 
> ports defines:
> USE_FEATURES=	something
> 
> the loading is done at the very early stage of 
> bsd.port.post.mk to allow one to load modify USE_FEATURES 
> depending on some options etc.
> 
> each features/*.mk is itself protected by a variable to avoid 
> multi loading of the same file
> 
> if a feature depends on another one the feature itself just 
> have to ".include"
> the other one.
> 
> As a proof of concept I made the following:
> USE_FEATURES=	gmake (with a compatibility for USE_GMAKE to 
> allow migration)
> USE_FEATURES=	iconv (with a compatibility for USE_ICONV to 
> allow migration)
> USE_FEATURES=	motif (with no compatibility as I have switched 
> all the USE_MOTIF
> ports to use it)
> USE_FEATURES=	fise (with no compatibility as I have switched 
> all the USE_FUSE
> to use it)
> USE_FEATURES=	display (with no compatibilify as I have 
> switched all the
> USE_DISPLAY to use it)
> USE_FEATURES=	pathfix (which is the equivalent of USE_GNOME= 
> gnomehack without
> the need to loading the whole bsd.gnome.mk)
> 
> The very long term goal will be to switch as much code as 
> possible to be turn into a feature (when it makes sens of course)
> 
> The USE_FEATURES itself:
> http://people.freebsd.org/~bapt/features.diff
> 
> The modified ports for the PoC:
> http://people.freebsd.org/~bapt/features-chase.diff
> 
> regards,
> Bapt
> 

Baptiste,
The original question is a functional change to Mk/*, which seems beneficial.  The specificity of USE_FEATURE is in keeping with the
long term goal of "> The very long term goal will be to switch as much code as 
> possible to be turn into a feature (when it makes sens of course)"

A generic use of "USE" makes less clear for those developers and users that are familiar and maintain USE_${FEATURE} in their port.
I appreciate the improvements that are being made, but small steps are easier for the large numbers of people that are familiar with
the existing system.

Also are their any foreseeable adverse side-effects of making this change?  

Regards, Dewayne.



More information about the freebsd-ports mailing list