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

Attachment: pgpKH2mDyx4Xx.pgp
Description: PGP signature

Reply via email to