FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 从入门到追忆
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章
  • 书籍
  • FreeBSD Port 开发者手册翻译项目
  • 编辑日志
  • 译者说明
  • FreeBSD Port 开发者手册
    • FreeBSD Port 开发者手册
  • 第1章 简介
    • 1.1.简介
  • 第2章 制作新的 port
    • 2.1.制作新的 port
  • 第3章 简单的 port
    • 3.1.编写 Makefile
    • 3.2.编写描述文件
    • 3.3.创建校验和文件
    • 3.4.测试 port
    • 3.5.用 portlint 来检查 port
    • 3.6.提交新的 port
  • 第4章 复杂的 Port
    • 4.1 Port 工作原理
    • 4.2.获取源代码
    • 4.3.修改 port
    • 4.4.打补丁
    • 4.5.配置
    • 4.6.处理用户输入
  • 第5章 配置 Makefile
    • 5.1.原始来源
    • 5.2.命名
    • 5.3.归类
    • 5.4.源代码包文件
    • 5.5.维护者(MAINTAINER)
    • 5.6.一句话说明(COMMENT)
    • 5.7.项目网站
    • 5.8.许可证
    • 5.9.PORTSCOUT
    • 5.10.依赖
    • 5.11.从属 port 和 MASTERDIR
    • 5.12.man 手册
    • 5.13.info 文件
    • 5.14.Makefile 参数
    • 5.15.特殊的工作目录
    • 5.16.解决冲突
    • 5.17.安装文件
    • 5.18. 使用 BINARY_ALIAS 来重命名命令,而不是在编译中打补丁
  • 第6章 特殊情况
    • 第6章 特殊情况
  • 第7章 Flavors
    • 7.1.Flavors 简介
    • 7.2.使用 FLAVORS
    • 7.3.USES=php 和 Flavors
    • 7.4.USES=python 和 Flavors
    • 7.5.USES=lua 和 Flavors
  • 第8章 高级 pkg-plist 实践
    • 8.1.根据 make 变量对 pkg-plist 进行修改
    • 8.2.空目录
    • 8.3.配置文件
    • 8.4.动态与静态软件包列表
    • 8.5.自动创建软件包列表
    • 8.6.用关键词扩展软件包列表
  • 第9章 pkg-*
    • 9.1.pkg-message(安装二进制包时显示的消息文件)
    • 9.2.pkg-install、pkg-pre-install 和 pkg-post-install(安装二进制包时执行的脚本文件)
    • 9.3.pkg-deinstall、pkg-pre-deinstall 和 pkg-post-deinstall(卸载时执行的脚本文件)
    • 9.4.修改 pkg-* 文件的名字
    • 9.5.使用 SUB_FILES 和 SUB_LIST
  • 第10章 测试 port
    • 10.1.运行 make describe
    • 10.2.运行 make test
    • 10.3.Portclippy / Portfmt
    • 10.4.Portlint
    • 10.5.Port 工具
    • 10.6.PREFIX 和 DESTDIR
    • 10.7.Poudriere
    • 10.8.调试 port
  • 第11章 升级 port
    • 11.1.使用 Git 制作补丁
    • 11.2.UPDATING 和 MOVED
  • 第12章 安全
    • 12.1.安全为何如此重要
    • 12.2.修复安全漏洞
    • 12.3.向社区通报情况
  • 第13章 该做什么和不该做什么
    • 第13章 该做什么和不该做什么
  • 第14章 一个简单的 port
    • 第14章 一个简单的 port
  • 第15章 在 Port Makefile 中变量的顺序
    • 第15章 在 Port Makefile 中变量的顺序
  • 第16章 保持更新
    • 第16章 保持更新
  • 第17章 使用 USES 宏
    • 第17章 使用 USES 宏
  • 第18章 __FreeBSD_version 的值
    • 第18章 __FreeBSD_version 的值
由 GitBook 提供支持
LogoLogo

FreeBSD 中文社区(CFC) 2025

在本页
  • 15.1. PORTNAME 区块
  • 15.2. PATCHFILES 区块
  • 15.3. MAINTAINER 区块
  • 15.4. LICENSE 块
  • 15.5. Generic BROKEN/IGNORE/DEPRECATED Messages
  • 15.6. 依赖项块
  • 15.7. Flavors
  • 15.8. USES 和 USE_x
  • 15.9. 标准 bsd.port.mk 变量
  • 15.10. 选项和辅助工具
  • 15.11. 其余变量
  • 15.12. 目标
在GitHub上编辑
导出为 PDF
  1. 第15章 在 Port Makefile 中变量的顺序

第15章 在 Port Makefile 中变量的顺序

上一页第14章 一个简单的 port下一页第16章 保持更新

最后更新于10个月前

Makefile 的第一个部分必须按相同顺序进行。这个标准使得每个人都可以很容易地阅读任何port,而不必按随机顺序搜索变量。

每个后续区块必须与前一个区块用一个空行分隔。 在下面的区块中,只设置port所需的变量。按照这里显示的顺序定义这些变量。

15.1. PORTNAME 区块

这个区块是最重要的。它定义了port名称、版本、分发文件位置和类别。变量必须按照这个顺序:

  • []

  • []

  • MASTER_SITE_SUBDIR (弃用)

15.2. PATCHFILES 区块

这个区块是可选的。变量有:

15.3. MAINTAINER 区块

此块是强制性的。变量包括:

15.4. LICENSE 块

此块是可选的,尽管强烈推荐。变量包括:

  • LICENSE_GROUPS 或 LICENSE_GROUPS_NAME

  • LICENSE_NAME 或 LICENSE_NAME_NAME

  • LICENSE_TEXT 或 LICENSE_TEXT_NAME

  • LICENSE_FILE 或 LICENSE_FILE_NAME

  • LICENSE_PERMS 或 LICENSE_PERMS_NAME_

  • LICENSE_DISTFILES 或 LICENSE_DISTFILES_NAME

If there are multiple licenses, sort the different LICENSE_VAR_NAME variables by license name.

15.5. Generic BROKEN/IGNORE/DEPRECATED Messages

This block is optional. The variables are:

BROKEN_* 和 IGNORE_* 可以是任意通用变量,例如, IGNORE_amd64 , BROKEN_FreeBSD_10 等。除了依赖于 USES 的变量,将其放在 USES 和 USE_x 中。例如,只有当设置 php 时, IGNORE_WITH_PHP 才有效,只有当设置 ssl 时, BROKEN_SSL 才有效。 如果port在满足某些条件时标记为 BROKEN,并且只能在包含 bsd.port.options.mk 或 bsd.port.pre.mk 后才能测试这些条件,则应稍后设置这些变量,即其余变量。

15.6. 依赖项块

这个区块是可选的。变量为:

  • TEST_DEPENDS

15.7. Flavors

这个区块是可选的。

从定义 FLAVORS 开始这一部分。继续使用可能的 Flavors 助手。查看更多信息,请参阅 FLAVORS 。

构造设置变量,不能使用 .if ${FLAVOR:U} == foo 作为助手的应放在各自的下面部分。

15.8. USES 和 USE_x

从定义 USES 开始,然后可能是 USE_x

将相关变量放在一起。例如,如果使用 USE_GITHUB ,请紧接着放 GH_* 变量。

15.9. 标准 bsd.port.mk 变量

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

顺序并不重要,但尽量将类似的变量放在一起。例如,uid 和 gid 变量 USERS 和 GROUPS 。配置变量 CONFIGURE_* 和 *_CONFIGURE 。文件和目录列表 PORTDOCS 和 PORTEXAMPLES 。

15.10. 选项和辅助工具

如果port使用选项框架,请先定义 OPTIONS_DEFINE 和 OPTIONS_DEFAULT ,然后先定义其他 OPTIONS_* 变量,然后是 *_DESC 描述,最后是选项助手。尝试按字母顺序对所有这些进行排序。

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

FOO 和 BAR 选项没有标准描述,因此需要编写一个。其他选项已在 Mk/bsd.options.desc.mk 中有描述,因此不需要编写。 DOCS 和 EXAMPLES 使用目标助手安装它们的文件,尽管它们属于目标,但为了完整起见,这里显示它们,因此其他变量和目标可以在它们之前插入。

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

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

PORTNAME
PORTVERSION
1
DISTVERSIONPREFIX
DISTVERSION
1
DISTVERSIONSUFFIX
PORTREVISION
PORTEPOCH
CATEGORIES
MASTER_SITES
PKGNAMEPREFIX
PKGNAMESUFFIX
DISTNAME
EXTRACT_SUFX
DISTFILES
DIST_SUBDIR
EXTRACT_ONLY
PATCH_SITES
PATCHFILES
PATCH_DIST_STRIP
MAINTAINER
COMMENT
WWW
LICENSE
LICENSE_COMB
DEPRECATED
EXPIRATION_DATE
FORBIDDEN
BROKEN
BROKEN_*
IGNORE
IGNORE_*
ONLY_FOR_ARCHS
ONLY_FOR_ARCHS_REASON*
NOT_FOR_ARCHS
NOT_FOR_ARCHS_REASON*
FETCH_DEPENDS
EXTRACT_DEPENDS
PATCH_DEPENDS
BUILD_DEPENDS
LIB_DEPENDS
RUN_DEPENDS