第 15 章。端口 Makefile 中变量的顺序

Makefile 的前几个部分必须始终按照相同的顺序排列。这种标准使得每个人都可以轻松阅读任何端口,而无需以随机顺序搜索变量。

此处描述的部分和变量在普通端口中是必须的。在从属端口中,许多部分和变量可以跳过。

每个后续块必须用一个空行与前一个块隔开。

在以下块中,仅设置端口所需的变量。按照此处显示的顺序定义这些变量。

15.1. PORTNAME

此块最重要。它定义了端口名称、版本、发行文件位置和类别。变量必须按此顺序排列

只能使用 PORTVERSION 或 DISTVERSION 中的一个。

15.2. PATCHFILES

此块是可选的。变量为

15.3. MAINTAINER

此块是必须的。变量为

15.4. LICENSE

此块是可选的,尽管强烈建议使用。变量为

如果有多个许可证,请按许可证名称对不同的 LICENSE_VAR_NAME 变量进行排序。

15.5. 通用 BROKEN/IGNORE/DEPRECATED 消息

此块是可选的。变量为

BROKEN_*IGNORE_* 可以是任何通用变量,例如 IGNORE_amd64BROKEN_FreeBSD_10 等。除了依赖于 USES 的变量外,请将它们放在 USESUSE_x 中。例如,IGNORE_WITH_PHP 仅在设置了 php 时才有效,BROKEN_SSL 仅在设置了 ssl 时才有效。

如果在满足某些条件时将端口标记为 BROKEN,并且只有在包含 bsd.port.options.mkbsd.port.pre.mk 后才能测试这些条件,则应在稍后在 变量的其余部分 中设置这些变量。

15.6. 依赖项块

15.7. 风味

此块是可选的。

从定义 FLAVORS 开始此部分。继续使用可能的 Flavors 辅助工具。有关更多信息,请参阅 使用 FLAVORS

使用 .if ${FLAVOR:U} == foo 设置不可用作辅助工具的变量的结构应放在其各自的部分下方。

15.8. USESUSE_x

从定义 USES 开始此部分,然后是可能的 USE_x

使相关变量靠近在一起。例如,如果使用 USE_GITHUB,请始终将其后的 GH_* 变量放在其正下方。

15.9. 标准 bsd.port.mk 变量

此部分块用于可以在 bsd.port.mk 中定义的变量,这些变量不属于任何先前部分块。

顺序并不重要,但是尝试将类似的变量放在一起。例如,uid 和 gid 变量 USERSGROUPS。配置变量 CONFIGURE_**_CONFIGURE。文件和目录列表 PORTDOCSPORTEXAMPLES

15.10. 选项和辅助工具

如果端口使用 选项框架,则首先定义 OPTIONS_DEFINEOPTIONS_DEFAULT,然后定义其他 OPTIONS_* 变量,然后定义 *_DESC 描述,然后定义选项辅助工具。尝试按字母顺序对所有这些进行排序。

示例 1. 选项变量顺序示例

FOOBAR 选项没有标准描述,因此需要编写一个。其他选项在 Mk/bsd.options.desc.mk 中已经有了一个,因此不需要编写一个。DOCSEXAMPLES 使用目标辅助工具来安装其文件,它们在此处显示是为了完整性,尽管它们属于 目标,因此可以在它们之前插入其他变量和目标。

OPTIONS_DEFINE=	DOCS EXAMPLES FOO BAR
OPTIONS_DEFAULT=	FOO
OPTIONS_RADIO=	SSL
OPTIONS_RADIO_SSL=    OPENSSL GNUTLS
OPTIONS_SUB=	yes

BAR_DESC=		Enable bar support
FOO_DESC=		Enable foo support

BAR_CONFIGURE_WITH=	bar=${LOCALBASE}
FOO_CONFIGURE_ENABLE=	foo
GNUTLS_CONFIGURE_ON=	--with-ssl=gnutls
OPENSSL_CONFIGURE_ON=	--with-ssl=openssl

post-install-DOCS-on:
      ${MKDIR} ${STAGEDIR}${DOCSDIR}
      cd ${WRKSRC}/doc && ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR}

post-install-EXAMPLES-on:
      ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
      cd ${WRKSRC}/ex && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}

15.11. 变量的其余部分

然后,是前面块中未提及的其他变量。

15.12. 目标

定义所有变量后,可以定义可选的 make(1) 目标。保持 pre-post- 之前,并与运行的不同阶段的顺序相同

  • fetch

  • extract

  • patch

  • configure

  • build

  • install

  • test

当使用选项辅助工具目标时,请按字母顺序对其进行排序,但请保持 -on-off 之前。当也使用主目标时,请将主目标放在可选目标之前

post-install:
	# install generic bits

post-install-DOCS-on:
	# Install documentation

post-install-X11-on:
	# Install X11 related bits

post-install-X11-off:
	# Install bits that should be there if X11 is disabled

上次修改时间:2024 年 9 月 20 日,作者:Fernando Apesteguía