To declare a port having multiple flavors, add
FLAVORS to its Makefile.
The first flavor in FLAVORS is the default
flavor.
It can help simplify the logic of the
Makefile to also define
FLAVOR as:
FLAVOR?= ${FLAVORS:[1]}To distinguish flavors from options, which are always
uppercase letters, flavor names can only
contain lowercase letters, numbers, and the underscore
_.
If a port has a “lite” slave port, the slave port can be removed, and the port can be converted to flavors with:
FLAVORS= default lite
lite_PKGNAMESUFFIX= -lite
[...]
.if ${FLAVOR:U} != lite
[enable non lite features]
.endifThe first flavor is the default one, and is called,
here, default. It is not an obligation,
and if possible, use a more specific flavor name, like in
Example 7.2, “Another Basic Flavors Usage”.
If a port has a -nox11 slave port, the
slave port can be removed, and the port can be converted to
flavors with:
FLAVORS= x11 nox11
FLAVOR?= ${FLAVORS:[1]}
nox11_PKGNAMESUFFIX= -nox11
[...]
.if ${FLAVOR} == x11
[enable x11 features]
.endifHere is a slightly edited excerpt of what is present in
devel/libpeas, a port that
uses the Python
flavors. With the default
Python 2 and 3 versions being 2.7
and 3.6, it will automatically get FLAVORS=py27
py36
USES= gnome python USE_PYTHON= flavors.if ${FLAVOR:Upy27:Mpy2*}
USE_GNOME= pygobject3
CONFIGURE_ARGS+= --enable-python2 --disable-python3 BUILD_WRKSRC= ${WRKSRC}/loaders/python
INSTALL_WRKSRC= ${WRKSRC}/loaders/python
.else # py3* USE_GNOME+= py3gobject3
CONFIGURE_ARGS+= --disable-python2 --enable-python3 \ ac_cv_path_PYTHON3_CONFIG=${LOCALBASE}/bin/python${PYTHON_VER}-config
BUILD_WRKSRC= ${WRKSRC}/loaders/python3
INSTALL_WRKSRC= ${WRKSRC}/loaders/python3
.endif py34_PLIST= ${.CURDIR}/pkg-plist-py3
py35_PLIST= ${.CURDIR}/pkg-plist-py3
py36_PLIST= ${.CURDIR}/pkg-plist-py3
This port does not use
| |
To guard against | |
The Gnome Python gobject3 bindings have two different names, one for Python 2, pygobject3 and one for Python 3, py3gobject3. | |
The | |
Hint about the correct Python 3 config script path name. | |
The packing list is different when the built with
Python 3. As there are three
possible Python 3 versions, set
|
To make the Makefile easier to write,
a few flavors helpers exist.
This list of helpers will set their variable:
flavor_PKGNAMEPREFIX
flavor_PKGNAMESUFFIX
flavor_PLIST
flavor_DESCR
This list of helpers will append to their variable:
flavor_CONFLICTS
flavor_CONFLICTS_BUILD
flavor_CONFLICTS_INSTALL
flavor_PKG_DEPENDS
flavor_EXTRACT_DEPENDS
flavor_PATCH_DEPENDS
flavor_FETCH_DEPENDS
flavor_BUILD_DEPENDS
flavor_LIB_DEPENDS
flavor_RUN_DEPENDS
flavor_TEST_DEPENDS
PKGNAMEAs all packages must have a different package name,
flavors must change theirs, using
and
flavor_PKGNAMEPREFIX
makes this easy:flavor_PKGNAMESUFFIX
FLAVORS= normal lite lite_PKGNAMESUFFIX= -lite
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.