[HEADSUP] Flavors, and specifically, Python flavors landing today

Mathieu Arnold mat at FreeBSD.org
Thu Nov 30 15:32:57 UTC 2017


|Hi,|
|
|
|TL;DR:|
|  See Ports now have flavors enabled|
|  Tool developers, see https://wiki.freebsd.org/Ports/FlavorsTools|
|  All Python dependencies must have @${PY_FLAVOR} appended to them|
|
||https://wiki.freebsd.org/Ports/FlavorsAndSubPackages|
||
|
|
|Flavors are a way to have multiple variations of a port.  The port is
built|
|multiple times, with the variations.  To declare flavors, set the FLAVORS|
|variable to the flavors you want defined.  The first flavor will be the|
|default:|
|    |
|  FLAVORS=   flavor1 flavor2|
|    |
|The flavors MUST be lowercase, and can contain [[:lower:][:digit:]_].|
|    |
|Then, when building the port, pass the FLAVOR as an argument after make to|
|select the flavor.|
|    |
|  $ make install FLAVOR=flavor2|
|    |
|In the port, you can then change the behavior depending on the value of
the|
|FLAVOR variable.  Note that the different flavors MUST have different|
|PKGNAMEs.  Be sure to guard against an empty FLAVOR variable by using|
|${FLAVOR:U}:|
|    |
|  .if ${FLAVOR:U} == flavor2|
|  PKGNAMESUFFIX=      -foo|
|  OPTIONS_DEFAULT+=   FOO|
|  .endif|
|  |
|Right now, adding FLAVORS to a port will need portmgr's approval, until we|
|figure precise guidelines so that the number of packages doesnot grow|
|exponentially.|
|  |
|
|
|  |
|
|
|=== Tools ===|
|    |
|Flavor support for ports-mgmt/poudriere was added in 3.2, be sure to
upgrade to the latest version.|
|
|
|  |
|=== Helpers ===|
|  |
|To help with flavored ports, helpers are available.  In these, replace <*>|
|with the flavor name.|
|    |
|*_PKGNAMEPREFIX *_PKGNAMESUFFIX *_PLIST *_DESCR will overwrite the
variable.|
|    |
|*_CONFLICTS *_CONFLICTS_BUILD *_CONFLICTS_INSTALL *_PKG_DEPENDS|
|*_EXTRACT_DEPENDS *_PATCH_DEPENDS *_FETCH_DEPENDS *_BUILD_DEPENDS|
|*_LIB_DEPENDS *_RUN_DEPENDS *_TEST_DEPENDS will append to the variable.|
|    |
|For example:|
|    |
|  flavor2_PKGNAMESUFFIX=      -foo|
|    |
|can replace:|
|    |
|  .if ${FLAVOR:U} == flavor2|
|  PKGNAMESUFFIX=      -foo|
|  .endif|
|  |
|
|
|  |
|
|
|  |
|=== Python ===|
|
|
|Ports using Python via USES=python are now flavored.  All the py3-* ports|
|have been removed and folded into their py-* master ports.|
|    |
|People using Poudriere and binary packages do not have to doanything.|
|    |
|For other people, to build the Python 3.6 version of, for example,|
|databases/py-gdbm, you need to run:|
|    |
|  # make FLAVOR=py36 install|
|  |
|  |
|Ports using USE_PYTHON=distutils are now flavored.  They will
automatically|
|flavors (py27, py34, py35, py36) depending on what versions they support.|
|
|
|There is also a USE_PYTHON=flavors for ports that do not use distutils but|
|need FLAVORS to be set.  A USE_PYTHON=noflavors can be set if the port is|
|using distutilsbut flavors are not wanted.|
|    |
|A new USE_PYTHON=optsuffix that addsPYTHON_PKGNAMESUFFIX has been added|
|to cope with Python ports that did not have the Python PKGNAMEPREFIX
but are|
|flavored.|
|    |
|USES=python now also exports a PY_FLAVOR variable that contains the
current|
|python flavor.  It can be used in dependency lines when the port itself is|
|not python flavored, for example, deskutils/calibre.|
|    |
|By default it will only generate flavors for the versions in
PYTHON2_DEFAULT|
|and PYTHON3_DEFAULT.  Define BUILD_ALL_PYTHON_FLAVORS in your make.conf to|
|generate all possible flavors.  A port can set USE_PYTHON=allflavors to
have|
|all the flavors and not simply the default ones.|
|  |
|In all the ports with Python dependencies, the *_DEPENDS entries MUST end|
|with the flavor so that the framework knows which to build/use.  This
is done|
|by appending '@${PY_FLAVOR}' after the origin (or @${FLAVOR} if in a
Python|
|module with Python flavors, as the content will be the same).  For
example:|
|
|
|  RUN_DEPENDS=       
${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR}|

-- 
Mathieu Arnold


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 949 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20171130/3ff6f62c/attachment.sig>


More information about the freebsd-ports mailing list