7.2.使用 FLAVORS

要声明具有多个flavors的port,请将 FLAVORS 添加到其 Makefile。 FLAVORS 中的第一个flavor是默认的flavor。

FLAVOR?=	${FLAVORS:[1]}

示例 1. 基本Flavors用法

如果一个port有一个“精简”从属port,可以移除从属port,并且可以将port转换为flavors,使用如下命令:

FLAVORS=	default lite
lite_PKGNAMESUFFIX=	-lite
[...]
.if ${FLAVOR:U} != lite
[enable non lite features]
.endif

示例 2. 另一个基本 Flavors 使用

如果一个 port 有一个 -nox11 从属 port,则可以移除从属 port,并将 port 转换为 flavors:

FLAVORS=	x11 nox11
FLAVOR?=	${FLAVORS:[1]}
nox11_PKGNAMESUFFIX=	-nox11
[...]
.if ${FLAVOR} == x11
[enable x11 features]
.endif

示例 3. 更复杂的 Flavors 使用

这是在 devel/libpeas 中存在的内容的稍微编辑过的摘录,该port使用 Pythonflavors。 默认的 Python 2 和 3 版本分别为 2.7 和 3.6,它将自动获取 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

这个port不使用 USE_PYTHON=distutils ,但无论如何都需要 Pythonflavors。 为了防止 FLAVOR 为空,这会导致 make(1)错误,在字符串比较中使用 ${FLAVOR:U} 而不是 ${FLAVOR} 。 Gnome Python gobject3 绑定有两个不同的名称,一个用于 Python 2,pygobject3,一个用于 Python 3,py3gobject3。 configure 脚本必须在${WRKSRC}中运行,但我们只对构建和安装软件的 Python 2 或 Python 3 部分感兴趣,因此请适当设置构建和安装基本目录。 关于正确的 Python 3 配置脚本路径名称的提示。 当使用 Python 3 构建时,打包列表会有所不同。 由于有三个可能的 Python 3 版本,请使用助手为所有三个设置 PLIST

7.2.1. Flavors助手

为了更容易编写 Makefile,存在一些flavors助手。

这些助手列表将设置它们的变量:

  • flavor_PKGNAMEPREFIX

  • flavor_PKGNAMESUFFIX

  • flavor_PLIST

  • flavor_DESCR

这些助手列表将附加到它们的变量:

  • 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

示例 4. Flavor 特定 PKGNAME

由于所有软件包必须具有不同的软件包名称,flavors 必须更改它们的软件包名称,使用 flavor_PKGNAMEPREFIX 和 flavor_PKGNAMESUFFIX 可以轻松实现这一点:

FLAVORS=	normal lite
lite_PKGNAMESUFFIX=	-lite

最后更新于

FreeBSD 中文社区 2024