Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Feb 2013 19:19:47 +0100
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        ports@FreeBSD.org
Subject:   [CFT+BRAINSTORM] One USE_ to rule them all
Message-ID:  <20130204181946.GF67687@ithaqua.etoilebsd.net>

next in thread | raw e-mail | index | archive | help

--L2Brqb15TUChFOBK
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

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

--L2Brqb15TUChFOBK
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iEYEARECAAYFAlEP+8IACgkQ8kTtMUmk6Ex/IgCguOe+WKS63ugGlFsZ8QlinvgW
klwAnA2IUFmEHGUA9MqteCreH8svZDE1
=yILF
-----END PGP SIGNATURE-----

--L2Brqb15TUChFOBK--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130204181946.GF67687>