[CFT+BRAINSTORM] One USE_ to rule them all

Baptiste Daroussin bapt at FreeBSD.org
Mon Feb 4 18:19:59 UTC 2013


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20130204/5ed0ff0e/attachment.sig>


More information about the freebsd-ports mailing list