第 17 章 使用 USES 宏
最后更新于
最后更新于
USES
的介绍USES
宏简化了声明 Ports 依赖和设置的过程。它们可以添加依赖关系、修改构建行为、向包添加元数据等,所有这些都通过选择简单的预设值来完成。
本章的每个部分都描述了 USES
的一个可能值及其可能的参数。参数在值后通过冒号(:
)附加。多个参数之间用逗号(,
)分隔。
示例 1. 使用多个值
示例 2. 添加一个参数
示例 3. 添加多个参数
示例 4. 综合使用
7z
可能的参数:(无),p7zip
,partial
使用 代替 提取文件,并将 EXTRACT_SUFX
设置为 .7z
。如果基本系统中的 7z
无法提取文件,p7zip
选项会强制依赖于来自 的 7z
。如果使用 partial
选项,则 EXTRACT_SUFX
不会改变,这对于主分发文件没有 .7z 扩展名时非常有用。
ada
可能的参数:(无),6
,12
,(run)
依赖一个支持 Ada 的编译器,并相应地设置 CC
。默认使用来自 Ports 的 gcc6-aux
。
angr
可能的参数:binaries
,nose
如果存在 binaries
参数,则该 Port 需要特殊的 angr
二进制文件进行测试。
如果存在 nose
参数,则该 Port 使用 nosetests
作为测试目标。该参数隐式地意味着 USES=python:test
。
该框架提供以下变量供 Port 设置:
ANGR_VERSION
:angr
项目程序的版本。
ANGR_BINARIES_TAGNAME
:angr
二进制文件的标签名。
ANGR_NOSETESTS
:nosetests
程序的路径。
ansible
可能的参数:env
,module
,plugin
如果存在 module
参数,则该 Port 是一个 Ansible 模块。
如果存在 plugin
参数,则该 Port 是一个 Ansible 插件。
该框架向 Port 暴露以下变量:
ANSIBLE_CMD
:ansible 程序的路径。
ANSIBLE_DOC_CMD
:ansible-doc 程序的路径。
ANSIBLE_RUN_DEPENDS
:与 Ansible 相关的 RUN_DEPENDS。
ANSIBLE_DATADIR
:Ansible 模块和插件所在的目录结构的根路径。
ANSIBLE_ETCDIR
:Ansible 配置文件目录的路径。
ANSIBLE_PLUGINS_PREFIX
:${ANSIBLE_DATADIR}
中 "plugins" 目录的路径。
ANSIBLE_MODULESDIR
:本地 Ansible 模块的目录路径。
ANSIBLE_PLUGINSDIR
:本地 Ansible 插件的目录路径。
ANSIBLE_PLUGIN_TYPE
:Ansible 插件类型(例如,“connection”,“inventory”或“vars”)。
apache
可能的参数:(无),2.4
,build
,run
,server
为依赖 Apache Web 服务器的 Ports 提供支持。
版本参数可用于要求特定版本的 Apache httpd。可以设置特定版本(USES=apache:2.4
),最低版本(USES=apache:2.4+
)或最高版本(USES=apache:-2.4
)。
如果提供 build
参数,则会将构建依赖项添加到 Port。
如果提供 run
参数,则会将运行时依赖项添加到 Port。
如果提供 server
参数,则表示该 Port 是一个服务器 Port。
该框架提供以下变量供 Port 设置:
AP_FAST_BUILD
:自动模块构建。
AP_GENPLIST
:自动生成 PLIST
,并将禁用的模块添加到 httpd.conf 中(仅在没有 pkg-plist
文件时)。
MODULENAME
:Apache 模块的名称。默认值:${PORTNAME}
。
SHORTMODNAME
:Apache 模块的简短名称。默认值:${MODULENAME:S/mod_//}
。
SRC_FILE
:Apache 模块的源文件。默认值:${MODULENAME}.c
。
以下变量可以被 Port 访问:
APACHE_VERSION
:所选 Apache 服务器的主版本号和次版本号,例如 2.4。
APACHEETCDIR
:Apache 配置目录的位置。默认值:${LOCALBASE}/etc/apache24。
APACHEINCLUDEDIR
:Apache 包含文件的位置。默认值:${LOCALBASE}/include/apache24。
APACHEMODDIR
:Apache 模块的位置。默认值:${LOCALBASE}/libxexec/apache24。
APACHE_DEFAULT
:默认的 Apache 版本。
autoreconf
可能的参数:(无),build
运行 autoreconf
。它封装了 aclocal
、autoconf
、autoheader
、automake
、autopoint
和 libtoolize
命令。每个命令都应用于 ${AUTORECONF_WRKSRC}/configure.ac 或其旧名称 ${AUTORECONF_WRKSRC}/configure.in。如果 configure.ac 使用 AC_CONFIG_SUBDIRS
定义了子目录并有自己的 configure.ac,则 autoreconf
将递归更新这些子目录。:build
参数仅添加对这些工具的构建时依赖项,但不运行 autoreconf
。如果 WRKSRC
中不包含 configure.ac 的路径,可以通过设置 AUTORECONF_WRKSRC
来指定路径。
azurepy
可能的参数:(无)
为 py-azure*
Ports 提供支持。移除 azure
命名空间并清理常见文件。
blaslapack
可能的参数:(无),atlas
,netlib
(默认),gotoblas
,openblas
添加对 Blas / Lapack 库的依赖。
bdb
可能的参数:(无),5
(默认),18
BDB_VER
:检测到的 Berkeley DB 版本。例如,如果使用 USES=bdb:5+
并安装了 Berkeley DB 18,则它包含 18
。
重要
bison
可能的参数:(无),build
,run
,both
budgie
可能的参数:(无)
cabal
重要
可能的参数:(无),hpack
,nodefault
框架提供以下变量:
CABAL_REVISION
:Haskell 包在 Hackage 上可能有修订版本。将此选项设置为整数以拉取修订后的包描述。
CABAL_FLAGS
:在配置和构建阶段传递给 cabal-install
的标志列表。标志按原样传递。此变量通常用于启用或禁用 .cabal 文件中声明的标志。使用 foo
启用 foo
标志,使用 -foo
禁用它。
CABAL_EXECUTABLES
:Port 安装的可执行文件列表。默认值:${PORTNAME}
。请参阅项目的 .cabal 文件,获取此变量可能的值。每个值对应 .cabal 文件中的 executable
项。此列表中的项目会自动添加到 pkg-plist。
SKIP_CABAL_PLIST
:如果定义了此变量,则不会将 ${CABAL_EXECUTABLES}
中的项目添加到 pkg-plist。
opt_USE_CABAL
:根据 opt
选项向 ${USE_CABAL}
中添加项目。
opt_CABAL_EXECUTABLES
:根据 opt
选项向 ${CABAL_EXECUTABLES}
中添加项目。
opt_CABAL_FLAGS
:如果启用了 opt
,则将该值追加到 ${CABAL_FLAGS}
中。否则,追加 -value
以禁用该标志。请注意,此行为与普通的 CABAL_FLAGS
略有不同,因为它不接受以 -
开头的值。
CABAL_WRAPPER_SCRIPTS
:${CABAL_EXECUTABLES}
的子集,包含要包装到 shell 脚本中的 Haskell 程序,该脚本在运行程序之前设置 *_datadir
环境变量。这还会导致实际的 Haskell 二进制文件安装到 libexec/cabal/
目录。对于将数据文件安装到 share/
目录中的 Haskell 程序,必须使用此选项。
FOO_DATADIR_VARS
:其他 Haskell 包的列表,其数据文件应由名为 FOO
的可执行文件访问。该可执行文件应是 ${CABAL_WRAPPER_SCRIPTS}
的一部分。列出的 Haskell 包不应有版本后缀。
CABAL_PROJECT
:某些 Haskell 项目可能已经有一个 cabal.project
文件,该文件也由 Ports 框架生成。如果是这种情况,请使用此变量指定如何处理原始的 cabal.project
。将此变量设置为 remove
将导致原始文件在提取阶段被删除。将此变量设置为 append
将:
在提取阶段将原始文件移动到 cabal.project.${PORTNAME}
。
在补丁阶段将原始的 cabal.project.${PORTNAME}
和生成的 cabal.project
合并成一个文件。使用 append
可以在合并之前对原始文件进行补丁处理。
cargo
可能的参数:(无)
charsetfix
可能的参数:(无)
cl
可能的参数:(无)
为 Common Lisp Port 提供支持。
框架提供以下变量,Port 可以设置:
ASDF_MODULES
:当设置 FASL_TARGET
(默认为 PORTNAME
)时,要构建的 ASDF
模块列表。
FASL_TARGET
:构建 Port 的 fasl 变体(可以是 ccl
、clisp
或 sbcl
)。
USE_ASDF_FASL
:依赖 devel/cl-asdf-<FASL_TARGET>
。
框架提供以下变量,Port 可以读取:
ASDF_PATHNAME
:CL 源代码路径。
ASDF_REGISTRY
:包含 asd 文件的 CL 注册表路径。
CCL
:Clozure Common Lisp 编译器的路径。
CLISP
:GNU Common Lisp 编译器的路径。
CL_LIBDIR_REL
:相对于 LOCALBASE
或 PREFIX
的 CL 库目录。
FASL_DIR_REL
:编译后的 fasl 文件的相对路径,取决于 FASL_TARGET
。
FASL_PATHNAME
:CL fasl 文件的路径。
LISP_EXTRA_ARG
:构建 fasl 时使用的额外参数。
SBCL
:Steel Bank Common Lisp 编译器的路径。
cmake
可能的参数:(无),insource
,noninja
,run
,testing
使用 CMake 配置 Port 并生成构建系统。
默认情况下,执行的是源代码外构建,将源代码中的构建产物与源代码分离。使用 insource
参数时,将执行源代码内构建。该参数应仅作为例外,在常规的源代码外构建无法工作时使用。
使用 run
参数时,除了构建依赖外,还会注册一个运行时依赖。
使用 testing
参数时,将添加一个测试目标,该目标使用 CTest。当运行测试时,Port 将为测试重新配置并重新构建。
compiler
可能的参数:(无),env
(默认,隐式),C++17-lang
,C++14-lang
,C++11-lang
,gcc-C++11-lib
,C++11-lib
,C++0x
,c11
,nestedfct
,features
根据给定的需求确定要使用的编译器。如果 Port 需要支持 C++17 的编译器,请使用 C++17-lang
;如果需要支持 C++14 的编译器,请使用 C++14-lang
;如果需要支持 C++11 的编译器,请使用 C++11-lang
;如果需要带有 C++11 库的 g++
编译器,请使用 gcc-C++11-lib
;如果需要支持 C++11 标准库的编译器,请使用 C++11-lib
。如果 Port 需要支持 C++0x、C11 或嵌套函数,应使用相应的参数。
使用 features
请求默认编译器支持的特性列表。在包含 bsd.port.pre.mk 后,Port 可以使用以下变量检查结果:
COMPILER_TYPE
:系统上的默认编译器,可能是 gcc 或 clang。
ALT_COMPILER_TYPE
:系统上的替代编译器,可能是 gcc 或 clang,仅在系统中存在两个编译器时设置。
COMPILER_VERSION
:默认编译器版本的前两位数字。
ALT_COMPILER_VERSION
:替代编译器的前两位版本数字(如果存在)。
CHOSEN_COMPILER_TYPE
:选择的编译器,可能是 gcc 或 clang。
COMPILER_FEATURES
:默认编译器支持的特性,目前列出 C++ 库。
cpe
可能的参数:(无)
将 cpe
添加到 USES
中,并使用 make -V CPE_STR
检查结果,确保它与 CPE 字典条目一致。逐步调整直到 make -V CPE_STR
正确。
如果产品名称(第二个字段,默认为 PORTNAME
)不正确,定义 CPE_PRODUCT
。
如果厂商名称(第一个字段,默认为 CPE_PRODUCT
)不正确,定义 CPE_VENDOR
。
如果版本字段(第三个字段,默认为 PORTVERSION
)不正确,定义 CPE_VERSION
。
如果更新字段(第四个字段,默认为空)不正确,定义 CPE_UPDATE
。
尽可能从现有变量(如 PORTNAME
和 PORTVERSION
)中推导出 CPE 名称。使用变量修饰符提取这些变量的相关部分,而不是硬编码名称。
始终在提交任何更改(如更改 PORTNAME
或 PORTVERSION
或任何其他用于推导 CPE_STR
的变量)之前,运行 make -V CPE_STR
并检查输出。
cran
可能的参数:(无),auto-plist
,compiles
使用综合 R 存档网络。指定 auto-plist
以自动生成 pkg-plist。如果 Port 包含需要编译的代码,请指定 compiles
。
desktop-file-utils
可能的参数:(无)
desthack
可能的参数:(无)
更改 GNU configure 的行为,以便在原始软件不支持 DESTDIR
时正确处理。
display
可能的参数:(无),ARGS
设置虚拟显示环境。如果环境变量 DISPLAY
未设置,则会将 Xvfb 添加为构建依赖,并将 CONFIGURE_ENV
扩展为当前运行的 Xvfb 实例的 Port 号。ARGS 参数默认值为 install
,控制何时启动和停止虚拟显示。
dos2unix
可能的参数:(无)
DOS2UNIX_REGEX
:根据正则表达式匹配文件名。
DOS2UNIX_FILES
:匹配字面文件名。
DOS2UNIX_GLOB
:根据 glob 模式匹配文件名。
DOS2UNIX_WRKSRC
:开始转换的目录,默认为 ${WRKSRC}
。
drupal
可能的参数:7
,module
,theme
自动化安装作为 Drupal 主题或模块的 Port。使用 Port 所期望的 Drupal 版本。例如,USES=drupal:7,module
表示该 Port 创建一个 Drupal 7 模块。可以使用 USES=drupal:7,theme
指定 Drupal 7 主题。
ebur128
可能的参数:(无),build
,lib
,run
,test
当不使用任何参数时,行为与提供 lib
参数时相同。其余参数提供相应的依赖类别。
eigen
可能的参数:2,3,build(默认),run
electronfix
可能的参数:31
,32
,33
该框架提供以下变量,Port 可以设置:
ELECTRONFIX_SYMLINK_FILES
:要从 Electron 分发版创建符号链接的文件列表。
ELECTRONFIX_MAIN_EXECUTABLE
:要替换为原始 Electron 二进制文件的主可执行文件名。
elfctl
可能的参数:(无),build
(默认),stage
通过设置 ELF_FEATURES
设置 ELF 二进制文件功能控制注释。
当没有参数或提供 build
参数时,将操作 BUILD_WRKSRC
中的二进制文件,ELF_FEATURES
中列出的文件相对于 BUILD_WRKSRC
。当提供 stage
参数时,将操作 STAGEDIR
中的二进制文件,ELF_FEATURES
中列出的文件相对于 STAGEDIR
。
示例 5. 使用 elfctl
elixir
可能的参数:(无)
框架提供的变量:
ELIXIR_APP_NAME
:Elixir 应用程序名称,安装在 Elixir 的 lib 目录中。
ELIXIR_LIB_ROOT
:Elixir 默认库路径。
ELIXIR_APP_ROOT
:此 Elixir 应用程序的根目录。
ELIXIR_HIDDEN
:要从代码路径中隐藏的应用程序;通常是 ${PORTNAME}。
ELIXIR_LOCALE
:构建期间 Elixir 使用的 UTF-8 本地化(任何 UTF-8 本地化都可以)。
MIX_CMD
:mix
命令。
MIX_COMPILE
:用于编译 Elixir 应用程序的 mix
命令。
MIX_REWRITE
:自动替换 Mix 依赖项与代码路径。
MIX_BUILD_DEPS
:以类别/portname 格式列出 BUILD_DEPENDS
(通常称为 Erlang 和 Elixir 中的 "deps")。
MIX_RUN_DEPS
:以类别/portname 格式列出 RUN_DEPENDS
。
MIX_DOC_DIRS
:要安装到 DOCSDIR
的额外文档目录。
MIX_DOC_FILES
:要安装到 DOCSDIR
的额外文档文件(通常是 README.md)。
MIX_ENV
:Mix 构建的环境(与 MAKE_ENV
相同格式)。
MIX_ENV_NAME
:Mix 构建环境的名称,通常为 "prod"。
MIX_BUILD_NAME
:输出的构建名称,位于 _build/ 中,通常是 ${MIX_ENV_NAME}
。
MIX_TARGET
:Mix 目标的名称,通常为 "compile"。
MIX_EXTRA_APPS
:要构建的子应用程序列表(如果有)。
MIX_EXTRA_DIRS
:要安装到 ELIXIR_APP_ROOT
的额外目录列表。
MIX_EXTRA_FILES
:要安装到 ELIXIR_APP_ROOT
的额外文件列表。
emacs
可能的参数:(无)(默认),build
,run
,noflavors
为需要 Emacs 的 Port 提供支持。build
参数创建对 Emacs 的构建依赖。run
参数创建对 Emacs 的运行时依赖。如果 build
和 run
参数都缺失,则会创建对 Emacs 的构建和运行时依赖。noflavors
参数会防止使用 flavors,如果没有对 Emacs 的运行时依赖,则隐含此参数。
可以在 make.conf 中定义使用 USES=emacs
的 Port 的默认 Emacs flavor。例如,对于 nox
flavor,可以使用 DEFAULT_VERSIONS+= emacs=nox
。有效的 flavors 有:full
,canna
,nox
,wayland
,devel_full
,devel_nox
。
可以由 Port 设置的变量:
EMACS_FLAVORS_EXCLUDE
:不要构建这些 Emacs flavors。如果未定义 EMACS_FLAVORS_EXCLUDE
且:
有对 Emacs 的运行时依赖
未指定 noflavors
参数
则假设所有有效的 Emacs flavors。
EMACS_NO_DEPENDS
:不要添加对 Emacs 的构建或运行时依赖。这将防止使用 flavors,并且不会生成字节码文件作为包的一部分。
Port 可以读取的变量:
EMACS_CMD
:Emacs 命令的完整路径(例如 /usr/local/bin/emacs-30.1)
EMACS_FLAVOR
:用于依赖的 Emacs flavor(例如 BUILD_DEPENDS= dash.el${EMACS_PKGNAMESUFFIX}>0:devel/dash@${EMACS_FLAVOR}
)
EMACS_LIBDIR
:不包括 ${PREFIX}
的 Emacs 库目录(例如 share/emacs)
EMACS_LIBDIR_WITH_VER
:不包括 ${PREFIX}
的库目录,包含版本(例如 share/emacs/30.1)
EMACS_MAJOR_VER
:Emacs 主版本(例如 30)
EMACS_PKGNAMESUFFIX
:PKGNAMESUFFIX
用于区分 Emacs flavors
EMACS_SITE_LISPDIR
:不包括 ${PREFIX}
的 Emacs site-lisp 目录(例如 share/emacs/site-lisp)
EMACS_VER
:Emacs 版本(例如 30.1)
EMACS_VERSION_SITE_LISPDIR
:包括版本的目录(例如 share/emacs/30.1/site-lisp)
erlang
可能的参数:(无),enc
,rebar
,rebar3
此外,Port 可以使用以下变量:
ERL_APP_NAME
:Erlang 应用程序名称,安装在 Erlang 的 lib 目录中(去掉版本)
ERL_APP_ROOT
:此 Erlang 应用程序的根目录
REBAR_CMD
:rebar
命令的路径
REBAR3_CMD
:rebar3
命令的路径
REBAR_PROFILE
:Rebar 配置文件
REBAR_TARGETS
:Rebar 目标列表(通常是 compile,也可能是 escriptize)
ERL_BUILD_NAME
:Rebar3 的构建名称
ERL_BUILD_DEPS
:以类别/portname 格式列出的 BUILD_DEPENDS
ERL_RUN_DEPS
:以类别/portname 格式列出的 RUN_DEPENDS
ERL_DOCS
:文档文件和目录列表
fakeroot
可能的参数:(无)
fam
可能的参数:(无),fam
,gamin
firebird
可能的参数:(无),25
添加对 Firebird 数据库客户端库的依赖。
fonts
可能的参数:(无),fc
,fontsdir
(默认),none
添加一个运行时依赖,所需工具用于注册字体。根据不同的参数,添加 @fc ${FONTSDIR}
行,@fontsdir ${FONTSDIR}
行,或者如果参数是 none
则不添加任何行到 plist。FONTSDIR
默认为 ${PREFIX}/share/fonts/${FONTNAME},FONTNAME
默认为 ${PORTNAME}
。将 FONTSDIR
添加到 PLIST_SUB
和 SUB_LIST
。
fortran
可能的参数:gcc
(默认)
使用 GNU Fortran 编译器。
fpc
可能的参数:(无),run
为基于 Free Pascal 的 Port 提供支持。它将安装 Free Pascal 编译器和单元。
如果指定了 run
参数,则还会添加运行时依赖。
fuse
可能的参数:2
(默认),3
该 Port 将依赖 FUSE 库,并根据 FreeBSD 的版本处理对内核模块的依赖。
gem
可能的参数:(无),noautoplist
处理 RubyGems 的构建。如果使用 noautoplist
,则不会自动生成 packing list。
这意味着需要使用 USES=ruby
。
gettext
可能的参数:(无)
已弃用。将同时包含 gettext-runtime
和 gettext-tools
。
gettext-runtime
可能的参数:(无),lib
(默认),build
,run
使用 devel/gettext-runtime
。默认情况下,未指定参数或使用 lib
参数时,会添加对 libintl.so 的库依赖。build
和 run
参数分别表示构建时和运行时依赖 gettext。
gettext-tools
可能的参数:(无),build
(默认),run
使用 devel/gettext-tools
。默认情况下,未指定参数或使用 build
参数时,会注册构建时依赖 msgfmt。使用 run
参数时,注册运行时依赖。
ghostscript
可能的参数:*X*
,build
,run
,nox11
可以使用特定版本 X。可选版本有 7
,8
,9
,以及 agpl
(默认)。nox11
表示需要使用 -nox11
版本的 Port。build
和 run
分别会添加构建时和运行时的 Ghostscript 依赖。默认情况下,两者都会添加。
gl
可能的参数:(无)
提供了一种轻松方式来依赖 GL 组件。组件应该列出在 USE_GL
中。可用的组件有:
egl
:添加对 graphics/libglvnd
的 libEGL.so 库的依赖。
gbm
:添加对 graphics/mesa-libs
的 libgbm.so 库的依赖。
gl
:添加对 graphics/libglvnd
的 libGL.so 库的依赖。
glesv2
:添加对 graphics/libglvnd
的 libGLESv2.so 库的依赖。
glew
:添加对 graphics/glew
的 libGLEW.so 库的依赖。
glu
:添加对 graphics/libGLU
的 libGLU.so 库的依赖。
glut
:添加对 graphics/freeglut
的 libglut.so 库的依赖。
opengl
:添加对 graphics/libglvnd
的 libOpenGL.so 库的依赖。
gmake
可能的参数:(无)
gnome
可能的参数:(无)
提供一种简便的方式来依赖 GNOME 组件。组件应列在 USE_GNOME
中。可用的组件有:
atk
atkmm
cairo
cairomm
dconf
esound
evolutiondataserver3
gconf2
gconfmm26
gdkpixbuf
gdkpixbuf2
glib12
glib20
glibmm
gnomecontrolcenter3
gnomedesktop3
gnomedocutils
gnomemenus3
gnomemimedata
gnomeprefix
gnomesharp20
gnomevfs2
gsound
gtk-update-icon-cache
gtk12
gtk20
gtk30
gtkhtml3
gtkhtml4
gtkmm20
gtkmm24
gtkmm30
gtksharp20
gtksourceview
gtksourceview2
gtksourceview3
gtksourceviewmm3
gvfs
intlhack
intltool
introspection
libartlgpl2
libbonobo
libbonoboui
libgda5
libgda5-ui
libgdamm5
libglade2
libgnome
libgnomecanvas
libgnomekbd
libgnomeprint
libgnomeprintui
libgnomeui
libgsf
libgtkhtml
libgtksourceviewmm
libidl
librsvg2
libsigc++12
libsigc++20
libwnck
libwnck3
libxml++26
libxml2
libxslt
metacity
nautilus3
orbit2
pango
pangomm
pangox-compat
py3gobject3
pygnome2
pygobject
pygobject3
pygtk2
pygtksourceview
referencehack
vte
vte3
默认依赖是构建时和运行时依赖,可以通过 :build
或 :run
来更改。例如:
go
重要
可能的参数:(无),N.NN
,N.NN-devel
,modules
,no_targets
,run
设置用于构建 Go 软件的默认值和目标。添加对 Go 编译器 Port 的构建依赖,Port 维护者可以设置所需的版本。默认情况下,构建是在 GOPATH 模式下执行的。如果 Go 软件使用模块,可以通过 modules
参数启用模块感知模式。no_targets
将设置构建环境(如 GO_ENV
、GO_BUILDFLAGS
),但跳过创建提取和构建目标。run
还将添加对 Go 编译器 Port 的运行时依赖。
构建过程由多个变量控制:
GO_MODULE
作为 go.mod
中的 module
指令指定的应用模块名称。在大多数情况下,这是使用 Go 模块的 Port 所需的唯一变量。
GO_PKGNAME
在 GOPATH 模式下构建时的 Go 包名称。这是将在 ${GOPATH}/src
中创建的目录。如果没有显式设置,并且存在 GH_SUBDIR
或 GL_SUBDIR
,则将从中推断 GO_PKGNAME
。在模块感知模式下不需要此设置。
GO_TARGET
要构建的包。默认值为 ${GO_PKGNAME}
。GO_TARGET
也可以是一个元组,形式为 package:path
,其中 path 可以是一个简单的文件名或从 ${PREFIX}
开始的完整路径。
GO_TESTTARGET
要测试的包。默认值为 ./…
(当前包及所有子包)。
CGO_CFLAGS
要传递给 C 编译器的额外 CFLAGS
值。
CGO_LDFLAGS
要传递给 C 编译器的额外 LDFLAGS
值。
GO_BUILDFLAGS
要传递给 go build
的额外构建参数。
GO_TESTFLAGS
要传递给 go test
的额外构建参数。
gperf
可能的参数:(无)
grantlee
可能的参数:5
,selfbuild
groff
可能的参数:build
,run
,both
gssapi
可能的参数:(无),base
(默认),heimdal
,mit
,flags
,bootstrap
当本地 Kerberos 安装不在 LOCALBASE
中时,请设置 HEIMDAL_HOME
(用于 heimdal
)或 KRB5_HOME
(用于 krb5
)到 Kerberos 安装的位置。
这些变量会被导出供 Port 使用:
GSSAPIBASEDIR
GSSAPICPPFLAGS
GSSAPIINCDIR
GSSAPILDFLAGS
GSSAPILIBDIR
GSSAPILIBS
GSSAPI_CONFIGURE_ARGS
flags
选项可以与 base
、heimdal
或 mit
一起使用,以自动将 GSSAPICPPFLAGS
、GSSAPILDFLAGS
和 GSSAPILIBS
添加到 CFLAGS
、LDFLAGS
和 LDADD
中。例如,使用 base,flags
。
示例 6. 常见用法
gstreamer
可能的参数:(无)
提供一种简便的方法来依赖 GStreamer 组件。组件应列在 USE_GSTREAMER
中。可用的组件有:
a52dec
aalib
amrnb
amrwbdec
aom
assrender
bad
bs2b
cairo
cdio
cdparanoia
chromaprint
curl
dash
dtls
dts
dv
dvd
dvdread
editing-services
faac
faad
flac
flite
gdkpixbuf
gl
gme
gnonlin
good
gsm
gtk4
gtk
hal
hls
jack
jpeg
kate
kms
ladspa
lame
libav
libcaca
libde265
libmms
libvisual
lv2
mm
modplug
mpeg2dec
mpeg2enc
mpg123
mplex
musepack
neon
ogg
opencv
openexr
openh264
openjpeg
openmpt
opus
pango
png
pulse
qt
resindvd
rsvg
rtmp
shout2
sidplay
smoothstreaming
sndfile
sndio
soundtouch
soup
spandsp
speex
srtp
taglib
theora
ttml
twolame
ugly
v4l2
vorbis
vpx
vulkan
wavpack
webp
webrtcdsp
x264
x265
x
ximagesrc
zbar
guile
可能的参数:(无),X.Y
,flavors
,build
,run
,alias
,conflicts
默认版本通过常规的 DEFAULT_VERSIONS
机制设置;如果默认版本不是列表中的版本之一,则使用可用的最新版本。
使用 Guile 的应用程序通常只构建单一版本的 Guile。然而,扩展或库模块应使用 flavors
选项,以构建多个版本的 Guile。
horde
可能的参数:(无)
iconv
可能的参数:(无),lib
,build
,patch
,translit
,wchar_t
imake
可能的参数:(无),env
,notall
,noman
java
可能的参数:(无),ant
,build
,extract
,run
如果没有提供参数且未定义 NO_BUILD
,则默认使用 USES=java:build,run
。如果定义了 NO_BUILD
,则使用 USES=java:run
。如果指定了 ant
参数,则 Port 使用 Apache Ant。如果指定了 build
参数,则会将 JDK Port 添加到构建依赖中。如果指定了 extract
参数,则会将 JDK Port 添加到提取依赖中。如果指定了 run
参数,则会将 JDK Port 添加到运行时依赖中。
该框架提供以下变量供 Port 设置:
JAVA_VERSION
Port 适用的 Java 版本列表,空格分隔。可选的 +
可以用来指定版本范围。(允许的值:8[+]
,11[+]
,17[+]
,18[+]
,19[+]
,20[+]
,21[+]
,22[+]
)
JAVA_OS
Port 适用的 JDK 操作系统列表,空格分隔。(允许的值:native
,linux
)
JAVA_VENDOR
Port 适用的 JDK 供应商列表,空格分隔。(允许的值:openjdk
,oracle
)
该框架为 Port 提供以下变量以供读取:
JAVA_PORT
JDK Port 的名称。(例如 java/openjdk8
)
JAVA_PORT_VERSION
JDK Port 的版本。(例如 8
)
JAVA_PORT_OS
JDK Port 使用的操作系统。(例如 linux
)
JAVA_PORT_VENDOR
JDK Port 的供应商。(例如 openjdk
)
JAVA_PORT_OS_DESCRIPTION
JDK Port 使用的操作系统描述。(例如 Linux
)
JAVA_PORT_VENDOR_DESCRIPTION
JDK Port 供应商的描述。(例如 OpenJDK BSD Porting Team
)
JAVA_HOME
JDK 安装目录的路径。(例如 /usr/local/openjdk8)
JAVAC
使用的 Java 编译器路径。(例如 /usr/local/openjdk8/bin/javac 或 /usr/local/bin/javac)
JAR
使用的 JAR 工具路径。(例如 /usr/local/openjdk8/bin/jar 或 /usr/local/bin/fastjar)
APPLETVIEWER
appletviewer 工具的路径。(例如 /usr/local/linux-jdk1.8.0/bin/appletviewer)
JAVA
java
可执行文件的路径。用于执行 Java 程序。(例如 /usr/local/openjdk8/bin/java)
JAVADOC
javadoc
工具程序的路径。
JAVAH
javah
程序的路径。
JAVAP
javap
程序的路径。
JAVA_KEYTOOL
keytool
工具程序的路径。
JAVA_N2A
native2ascii
工具的路径。
JAVA_POLICYTOOL
policytool
程序的路径。
JAVA_SERIALVER
serialver
工具程序的路径。
RMIC
RMI stub/skeleton 生成器 rmic
的路径。
RMIREGISTRY
RMI 注册程序的路径,rmiregistry
。
RMID
RMI 守护进程程序的路径。
JAVA_CLASSES
包含 JDK 类文件的归档路径。在大多数 JDK 中,这是 ${JAVA_HOME}/jre/lib/rt.jar。
JAVASHAREDIR
所有共享 Java 资源的基本目录。
JAVAJARDIR
Port 应安装 JAR 文件的目录。
JAVALIBDIR
由其他 Port 安装的 JAR 文件所在的目录。
jpeg
可能的参数:lib
(default, implicit), build
, run
帮助处理对 jpeg
的依赖。
如果提供了 lib
参数或没有提供参数,则会向 Port 添加库依赖。
如果提供了 build
参数,则会向 Port 添加构建时依赖。
如果提供了 run
参数,则会向 Port 添加运行时依赖。
如果提供了 both
参数,则会向 Port 添加构建时依赖和运行时依赖。
该框架提供了以下可以由 Port 设置的变量:
JPEG_PORT
指定要使用的 JPEG 实现。可选值包括:
kde
可能的参数:5
kmod
可能的参数:(none), debug
为内核模块 Port 填充模板,当前包括:
将 kld
添加到 CATEGORIES
。
设置 SSP_UNSAFE
。
如果在 SRC_BASE
中找不到内核源代码,则设置 IGNORE
。
默认情况下,将 KMODDIR
定义为 /boot/modules,并将其添加到 PLIST_SUB
和 MAKE_ENV
中,安装时创建该目录。如果将 KMODDIR
设置为 /boot/kernel,则会重写为 /boot/modules。这样可以防止在升级内核时破坏包,因为 /boot/kernel 会在此过程中重命名为 /boot/kernel.old。
如果提供了 debug
参数,则 Port 可以将调试版本的模块安装到 KERN_DEBUGDIR/KMODDIR 中。默认情况下,KERN_DEBUGDIR
从 DEBUGDIR
复制并设置为 /usr/lib/debug。框架将负责创建和删除所需的目录。
kodi
可能的参数:(none), noautoplist
lazarus
可能的参数:(none), gtk2
(default), qt5
, qt6
, flavors
如果提供了 qt5
参数,则 lazarus-app 将使用 qt5
界面构建。
如果提供了 qt6
参数,则 lazarus-app 将使用 qt6
界面构建。
如果提供了 flavors
参数,则 lazarus-app 将使用 flavors 特性构建。
如果 Port 不需要自动编译 lazarus 项目文件,则可以定义以下变量:
NO_LAZBUILD
= yes
以下变量可供 Port 使用:
LAZARUS_PROJECT_FILES
:lpi 文件列表。不能为空。默认值:空
LAZARUS_DIR
:lazarus 安装目录的路径,默认值:${LOCALBASE}/share/lazarus-${LAZARUS_VER}
LAZARUS_NO_FLAVORS
:不构建这些 lazarus flavors。如果未定义 LAZARUS_NO_FLAVORS
,则假定构建所有有效的 lazarus flavors。
ldap
可能的参数:(none), <版本>, client, server
Port 可以访问以下变量:
IGNORE_WITH_OPENLDAP
:如果 Port 不支持某个版本的 OpenLDAP,可以定义此变量。
WITH_OPENLDAP_VER
:用户定义的变量,用于设置 OpenLDAP 版本。
OPENLDAP_VER
:检测到的 OpenLDAP 版本。
lha
可能的参数:(none)
将 EXTRACT_SUFX
设置为 .lzh
libarchive
可能的参数:(none)
libedit
可能的参数:(none)
libtool
可能的参数:(none), keepla
, build
linux
可能的参数:c6
, c7
Linux 兼容性框架 Port。指定 c6
以依赖于 CentOS 6 包。指定 c7
以依赖于 CentOS 7 包。可用的包有:
allegro
alsa-plugins-oss
alsa-plugins-pulseaudio
alsalib
atk
avahi-libs
base
cairo
cups-libs
curl
cyrus-sasl2
dbusglib
dbuslibs
devtools
dri
expat
flac
fontconfig
gdkpixbuf2
gnutls
graphite2
gtk2
harfbuzz
jasper
jbigkit
jpeg
libasyncns
libaudiofile
libelf
libgcrypt
libgfortran
libgpg-error
libmng
libogg
libpciaccess
libsndfile
libsoup
libssh2
libtasn1
libthai
libtheora
libv4l
libvorbis
libxml2
mikmod
naslibs
ncurses-base
nspr
nss
openal
openal-soft
openldap
openmotif
openssl
pango
pixman
png
pulseaudio-libs
qt
qt-x11
qtwebkit
scimlibs
sdl12
sdlimage
sdlmixer
sqlite3
tcl85
tcp_wrappers-libs
tiff
tk85
ucl
xorglibs
llvm
可能的参数: (无), XY
, min=XY
, max=XY
, build, run, lib
添加对 LLVM 的依赖。默认情况下,这是一个构建依赖,除非使用 run
或 lib
选项覆盖。默认版本是通过 LLVM_DEFAULT
设置的。也可以指定特定版本。最小和最大版本可以分别通过 min
和 max
参数指定。Ports 框架将以下变量导出到该 Port:
LLVM_VERSION
通过 llvm.mk 选择的版本
LLVM_PORT
选择的 llvm Port
LLVM_CONFIG
选择的 Port 的 llvm-config
LLVM_LIBLLVM
选择的 Port 的 libLLVM.so
LLVM_PREFIX
选择的 Port 的安装前缀
localbase
可能的参数: (无), ldflags
确保使用来自 LOCALBASE
的库,而不是来自基本系统的库。指定 ldflags
可以将 -L${LOCALBASE}/lib
添加到 LDFLAGS
,而不是 LIBS
。依赖于基本系统中也存在的库的 Ports 应该使用此选项。它也被其他一些 USES
内部使用。
lua
可能的参数: (无), XY
, XY+
, -XY
, XY-ZA
, module
, flavors
, build
, run
, env
添加对 Lua 的依赖。默认情况下,这是一个库依赖,除非通过 build
和/或 run
选项覆盖。env
选项防止添加任何依赖,但仍定义所有常规变量。
默认版本由通常的 DEFAULT_VERSIONS
机制设置,除非指定了版本或版本范围作为参数,例如 51
或 51-54
。
使用 Lua 的应用程序通常仅为单个 Lua 版本构建。然而,旨在通过 Lua 代码加载的库模块应使用 module
选项以构建多个版本。
luajit
可能的参数: (无), X
添加对 luajit 运行时的依赖。可以使用特定版本 X。可用版本为 luajit
,luajit-devel
,luajit-openresty
。
在包含 bsd.port.options.mk 或 bsd.port.pre.mk 后,Port 可以检查以下变量:
LUAJIT_VER
选择的 luajit 版本
LUAJIT_INCDIR
luajit 的头文件路径
LUAJIT_LUAVER
选择的 luajit 规范版本(luajit
为 2.0,其他为 2.1)
lxqt
可能的参数: (无)
magick
可能的参数: (无), X
, build
, nox11
, run
, test
添加对 ImageMagick
的库依赖。可以使用特定版本 X。可用版本为 6
和 7
(默认)。nox11
表示需要使用 -nox11
版本的 Port。build
,run
和 test
分别添加对 ImageMagick 的构建、运行时和测试依赖。
makeinfo
可能的参数: (无)
如果基本系统中没有 makeinfo
,则添加一个构建时依赖。
makeself
可能的参数: (无)
表示分发文件是 makeself 存档,并设置相应的依赖。
mate
可能的参数: (无)
提供一种简单的方法来依赖 MATE 组件。组件应列在 USE_MATE
中。可用的组件有:
autogen
caja
common
controlcenter
desktop
dialogs
docutils
icontheme
intlhack
intltool
libmatekbd
libmateweather
marco
menus
notificationdaemon
panel
pluma
polkit
session
settingsdaemon
默认的依赖关系是构建和运行时的,可以通过 :build
或 :run
进行更改。例如:
meson
可能的参数: (无)
metaport
可能的参数: (无)
设置以下变量以简化创建 metaport: MASTER_SITES
,DISTFILES
,EXTRACT_ONLY
,NO_BUILD
,NO_INSTALL
,NO_MTREE
,NO_ARCH
。
minizip
可能的参数: (无), ng
mlt
可能的参数: 7
, nodepend
如果提供了 nodepend
参数,则不生成库依赖。此参数仅对 multimedia/mlt7* Ports 有意义。
mysql
可能的参数: (无), version
, client
(默认), server
, embedded
为 MySQL 提供支持。如果未指定版本,则尝试查找当前安装的版本。回退到默认版本 MySQL-5.6。可用的版本为 55
,55m
,55p
,56
,56p
,56w
,57
,57p
,80
,100m
,101m
,102m
。其中 m
和 p
后缀分别表示 MariaDB 和 Percona 变种的 MySQL。server
和 embedded
会添加对 MySQL 服务器的构建和运行时依赖。在使用 server
或 embedded
时,添加 client
以同时添加对 libmysqlclient.so 的依赖。如果某些版本不受支持,Port 可以设置 IGNORE_WITH_MYSQL
。
该框架将 MYSQL_VER
设置为检测到的 MySQL 版本。
mono
可能的参数: (无), nuget
通过设置适当的依赖,添加对 Mono(当前仅支持 C#)框架的依赖。
当 Port 使用 nuget 包时,指定 nuget
。需要设置 NUGET_DEPENDS
,其格式为 name=version
,包含 nuget 包的名称和版本。可以使用 name=version:_origin_
添加可选的包源。
辅助目标 buildnuget
将基于提供的 packages.config 输出 NUGET_DEPENDS
的内容。
motif
可能的参数: (无)
mpi
可能的参数: mpich
(默认), openmpi
为依赖 MPI
的 Ports 提供支持。
Ports 框架提供以下变量,Port 可以读取:
MPI_LIBS
用于链接使用 MPI
的程序所需的库。
MPI_CFLAGS
编译器标志,用于构建使用 MPI
的程序。
MPICC
mpicc
可执行文件的位置。默认: ${MPI_HOME}/bin/mpicc。
MPICXX
mpicxx
可执行文件的位置。默认: ${MPI_HOME}/bin/mpicxx。
MPIF90
mpif90
可执行文件的位置。默认: ${MPI_HOME}/bin/mpif90。
MPIFC
与上述相同。
MPI_HOME
MPI
的安装目录。对于 MPICH
默认值为 ${LOCALBASE}
。
MPIEXEC
mpiexec
可执行文件的位置。默认: ${MPI_HOME}/bin/mpiexec。
MPIRUN
mpirun
可执行文件的位置。默认: ${MPI_HOME}/bin/mpirun。
ncurses
可能的参数: (无), base
, port
使用 ncurses,并设置一些有用的变量。
nextcloud
可能的参数: (无)
ninja
可能的参数: (无), build
, make
(默认), run
nodejs
可能的参数: (无), build
, run
, current
, lts
, 10
, 14
, 16
, 17
objc
可能的参数: (无)
如果基本系统不支持,则添加 Objective C 依赖(编译器、运行时库)。
ocaml
可能的参数: (无)、build
、camlp4
、dune
、findlib
、findplist
、ldconfig
、run
、tk
、tkbuild
、tkrun
、wash
提供对 OCaml 的支持。
如果没有提供任何参数,默认使用 build
和 run
。
如果提供 findlib
参数,则使用 ocamlfind
来安装包。包目录会自动删除。
如果提供 findplist
参数,则会自动添加 findlib
目标目录的内容。
如果提供 ldconfig
参数,则会自动处理 OCaml 的 ld.conf 文件。当使用 dune
时,Dune 可能会将 stublibs 安装到 site-lib 包目录或在 DUNE_LIBDIR
site-lib 目录下的单一目录中。如果你的 port 安装了共享库到 OCaml 目录,请设置此项。
如果提供 run
参数,则将 ocamlc
添加到 RUN_DEPENDS
。
如果提供 wash
参数,则会在卸载时清理 Ocaml 的共享目录。当安装到非标准 PREFIX
时,使用此选项。
可以由 port 设置以下变量:
OCAML_PKGDIRS
:如果指定了 findlib
参数,将处理 site-lib 下的目录。默认值:${PORTNAME}
OCAML_LDLIBS
:会自动添加/删除从 ld.conf 中的目录。默认值:${OCAML_SITELIBDIR}/${PORTNAME}
OCAML_PACKAGES
:要构建和安装的包列表。默认值:${PORTNAME}
octave
可能的参数: (无)、env
openal
可能的参数:al
、soft
(默认)、si
、alut
使用 OpenAL。可以指定后端,默认使用软件实现。用户可以通过设置 WANT_OPENAL
来指定首选后端。有效的值包括 soft
(默认)和 si
。
pathfix
可能的参数: (无)
查找 PATHFIX_WRKSRC
中的 Makefile.in 和 configure 文件(默认为 WRKSRC
),并修复常见路径,以确保它们遵循 FreeBSD 的层次结构。例如,它会修复 pkgconfig
的 .pc
文件的安装目录为 ${PREFIX}/libdata/pkgconfig
。如果 port 使用了 USES=autoreconf
,则会自动将 Makefile.am 添加到 PATHFIX_MAKEFILEIN
中。
pear
可能的参数:env
perl5
可能的参数: (无)
依赖于 Perl。配置通过 USE_PERL5
进行。
USE_PERL5
可以包含使用 Perl 的阶段,包括 extract
、patch
、build
、run
或 test
。
USE_PERL5
还可以包含 configure
、modbuild
或 modbuildtiny
,当需要 Makefile.PL、Build.PL 或 Module::Build::Tiny 的版本时。
USE_PERL5
默认为 build run
。当使用 configure
、modbuild
或 modbuildtiny
时,build
和 run
是隐式的。
pgsql
可能的参数: (无)、X.Y
、X.Y+
、X.Y-
、X.Y-Z.A
提供对 PostgreSQL 的支持。Port 维护者可以设置所需的版本。可以指定最小版本、最大版本或版本范围;例如,9.0-
、8.4+
、8.4-9.2.
默认情况下,添加的依赖项将是客户端,但如果 port 需要其他组件,可以通过 WANT_PGSQL=component[:target]
来指定。例如,WANT_PGSQL=server:configure pltcl plperl
。可用组件包括:
client
contrib
docs
pgtcl
plperl
plpython
pltcl
server
php
可能的参数: (无)、phpize
、ext
、zend
、build
、cli
、cgi
、mod
、web
、embed
、pecl
、flavors
、noflavors
phpize
:用于构建 PHP 扩展。启用 flavors。
ext
:用于构建、安装和注册 PHP 扩展。启用 flavors。
zend
:用于构建、安装和注册 Zend 扩展。启用 flavors。
build
:将 PHP 也作为构建时的依赖项。
cli
:需要 PHP 的 CLI 版本。
cgi
:需要 PHP 的 CGI 版本。
mod
:需要 PHP 的 Apache 模块。
web
:需要 PHP 的 Apache 模块或 CGI 版本。
embed
:需要 PHP 的嵌入式库版本。
pecl
:提供从 PECL 仓库获取 PHP 扩展的默认配置。启用 flavors。
noflavors
:禁用自动生成 PHP flavors。仅与 PHP 本身提供的扩展一起使用。
使用变量来指定所需的 PHP 模块,以及支持的 PHP 版本。
USE_PHP
:运行时所需的 PHP 扩展列表。可以通过在扩展名称后添加 :build
来添加构建时依赖项。例如:pcre xml:build gettext
。
IGNORE_WITH_PHP
:该 port 不与给定版本的 PHP 一起使用。有关可能的值,请查看 Mk/Uses/php.mk 中的 _ALL_PHP_VERSIONS
内容。
在使用 :ext
或 :zend
构建 PHP 或 Zend 扩展时,可以设置以下变量:
PHP_MODNAME
:PHP 或 Zend 扩展的名称。默认值是 ${PORTNAME}
。
PHP_HEADER_DIRS
:安装头文件的子目录列表。框架将始终安装与扩展位于同一目录中的头文件。
PHP_MOD_PRIO
:加载扩展的优先级。它是一个介于 00
和 99
之间的数字。
这些变量可以用于 PKGNAMEPREFIX
或 PKGNAMESUFFIX
:
PHP_PKGNAMEPREFIX
:包含 php_XY_-
,其中 XY 是当前 flavor 的 PHP 版本。用于 PHP 扩展和模块。
PHP_PKGNAMESUFFIX
:包含 -php_XY_
,其中 XY 是当前 flavor 的 PHP 版本。用于 PHP 应用程序。
PECL_PKGNAMEPREFIX
:包含 php_XY_-pecl-
,其中 XY 是当前 flavor 的 PHP 版本。用于 PECL 模块。
重要
使用 flavors 时,所有 PHP 扩展、PECL 扩展、PEAR 模块 必须具有不同的包名称,因此它们必须在
PKGNAMEPREFIX
或PKGNAMESUFFIX
中使用这三个变量之一。
pkgconfig
可能的参数: (无)、build
(默认)、run
、both
pure
可能的参数: (无)、ffi
pyqt
可能的参数: (无)、4
、5
使用 PyQt。如果 port 是 PyQt 的一部分,请设置 PYQT_DIST
。使用 USE_PYQT
来选择 port 需要的组件。可用的组件包括:
core
dbus
dbussupport
demo
designer
designerplugin
doc
gui
multimedia
network
opengl
qscintilla2
sip
sql
svg
test
webkit
xml
xmlpatterns
这些组件仅在 PyQt4 中可用:
assistant
declarative
help
phonon
script
scripttools
这些组件仅在 PyQt5 中可用:
multimediawidgets
printsupport
qml
serialport
webkitwidgets
widgets
每个组件的默认依赖项是构建时和运行时的依赖项,要选择仅构建或仅运行,请在组件名称后添加 _build
或 _run
。例如:
pytest
可能的参数: (无)、4
PYTEST_ARGS
:传递给 pytest 的额外参数(默认为空)。
PYTEST_IGNORED_TESTS
:列出需要忽略的 pytest -k
测试模式(默认为空)。适用于那些预期不通过的测试,比如需要数据库访问的测试。
PYTEST_BROKEN_TESTS
:列出需要忽略的 pytest -k
损坏测试模式(默认为空)。适用于那些有问题的测试,需要修复。
此外,用户可以设置以下变量:
PYTEST_ENABLE_IGNORED_TESTS
:启用那些通常会被 PYTEST_IGNORED_TESTS
忽略的测试。
PYTEST_ENABLE_BROKEN_TESTS
:启用那些通常会被 PYTEST_BROKEN_TESTS
忽略的测试。
PYTEST_ENABLE_ALL_TESTS
:启用所有那些通常会被 PYTEST_IGNORED_TESTS
和 PYTEST_BROKEN_TESTS
忽略的测试。
python
可能的参数: (无)、X.Y
、X.Y+
、-X.Y
、X.Y-Z.A
、patch
、build
、run
、test
qmail
可能的参数: (无)、build
、run
、both
、vars
qmake
可能的参数: (无)、norecursive
、outsource
、no_env
、no_configure
qt
可能的参数: 5
、6
、no_env
qt-dist
可能的参数: (无) 或 5
和 (无) 或 6
和 (无) 或下列之一: 3d
、5compat
、base
、charts
、connectivity
、datavis3d
、declarative
、doc
、languageserver
、gamepad
、graphicaleffects
、imageformats
、location
、lottie
、multimedia
、networkauth
、positioning
、quick3d
、quickcontrols2
、quickcontrols
、quicktimeline
、remoteobjects
、script
、scxml
、sensors
、serialbus
、serialport
、shadertools
、speech
、svg
、tools
、translations
、virtualkeyboard
、wayland
、webchannel
、webengine
、webglplugin
、websockets
、webview
、x11extras
、xmlpatterns
。
提供构建 Qt 5 和 Qt 6 组件的支持。它负责为 port 构建设置适当的配置环境。
示例 7. 构建 Qt 5 组件
该 port 是 Qt 5 的 networkauth
组件,属于 networkauth
分发文件。
示例 8. 构建 Qt 6 组件
该 port 是 Qt 6 的 websockets
组件,属于 websockets
分发文件。
如果 PORTNAME
与组件名称不匹配,则可以将其作为参数传递给 qt-dist
。
示例 9. 使用不同名称构建 Qt 5 组件
该 port 是 Qt 5 的 gui
组件,属于 base
分发文件。
readline
可能的参数: (无)、port
ruby
可能的参数: (无)、build
、extconf
、run
、setup
用户可以定义以下变量:
RUBY_VER
Ruby 的替代短版本,以 x.y
形式表示。
RUBY_DEFAULT_VER
设置为(例如)2.7
,则默认使用 ruby27
。
RUBY_ARCH
设置架构名称(例如 i386-freebsd7
)。
以下变量会被导出供 Port 使用:
RUBY
设置为 ruby 的完整路径。如果设置了此变量,则以下变量的值将自动从 ruby 执行文件中获得:RUBY_ARCH
、RUBY_ARCHLIBDIR
、RUBY_LIBDIR
、RUBY_SITEARCHLIBDIR
、RUBY_SITELIBDIR
、RUBY_VER
和 RUBY_VERSION
。
RUBY_VER
设置为 Ruby 的替代短版本,以 x.y
形式表示。
RUBY_EXTCONF
设置为 extconf.rb
的替代名称(默认:extconf.rb
)。
RUBY_EXTCONF_SUBDIRS
设置为子目录列表,如果包含多个模块。
RUBY_SETUP
设置为 setup.rb
的替代名称(默认:setup.rb
)。
samba
可能的参数: build
、env
、lib
、run
处理对 Samba 的依赖。env
不会添加任何依赖项,仅设置变量。build
和 run
分别会添加构建时和运行时对 smbd 的依赖。lib
会添加对 libsmbclient.so 的依赖。导出的变量包括:
SAMBA_PORT
Samba 默认 port 的来源。
SAMBA_INCLUDEDIR
Samba 头文件的位置。
SAMBA_LIBS
Samba 共享库所在目录。
SAMBA_TALLOC_PORT
选定 Samba 版本使用的 talloc port 的来源。如果一个 port 需要依赖于与选定 Samba 版本相同的 talloc 版本,应该使用此变量。
SAMBA_TDB_PORT
选定 Samba 版本使用的 TDB port 的来源。如果一个 port 需要依赖于与选定 Samba 版本相同的 TDB 版本,应该使用此变量。
SAMBA_TEVENT_PORT
选定 Samba 版本使用的 tevent port 的来源。如果一个 port 需要依赖于与选定 Samba 版本相同的 tevent 版本,应该使用此变量。
scons
可能的参数: (无)
sdl
可能的参数: sdl
为使用 SDL
软件包提供支持。变量 USE_SDL
是强制性的,并指定要添加为依赖的组件。
当前支持的 SDL1.2
模块有:
sdl
console
gfx
image
mixer
mm
net
pango
sound
ttf
当前支持的 SDL2
模块有:
sdl2
gfx2
image2
mixer2
net2
sound2
ttf2
当前支持的 SDL3
模块有:
sdl3
image3
ttf3
shared-mime-info
可能的参数: (无)
shebangfix
可能的参数: (无)
许多软件使用错误的脚本解释器位置,特别是 /usr/bin/perl 和 /bin/bash。shebangfix
宏修复脚本中的 shebang 行,这些脚本包含在 SHEBANG_REGEX
、SHEBANG_GLOB
或 SHEBANG_FILES
中。
当前默认支持的解释器包括:Bash、Java、Ksh、Lua、Perl、PHP、Python、Ruby、Tcl 和 Tk。
有三个配置变量:
SHEBANG_LANG
支持的解释器列表。
_interp__CMD
在 FreeBSD 上的命令解释器路径。默认值是 ${LOCALBASE}/bin/<interp>
。
_interp__OLD_CMD
错误的解释器调用列表。这些通常是过时的路径,或在 FreeBSD 上不正确的路径,它们将被 _interp__CMD
中的正确路径所替换。
注意
这些路径始终是
_interp__OLD_CMD
的一部分:"/usr/bin/env _interp"
/bin/interp/usr/bin/interp
/usr/local/bin/interp
。
技巧
重要
shebang 修复在
patch
阶段完成。如果在build
阶段创建了错误的 shebang(例如,configure
脚本或Makefiles
),则必须修补或给定正确的路径(例如,通过CONFIGURE_ENV
、CONFIGURE_ARGS
、MAKE_ENV
或MAKE_ARGS
)来生成正确的 shebang。支持的解释器的正确路径可以在
_interp__CMD
中找到。
技巧
示例 10. 向 USES=shebangfix
添加另一个解释器
要添加另一个解释器,设置 SHEBANG_LANG
。例如:
示例 11. 在向 USES=shebangfix
添加解释器时指定所有路径
如果未定义,并且 _interpOLD_CMD
和 _interp
*CMD
没有默认值,则 Ksh 条目可以定义如下:
示例 12. 添加一个解释器的奇怪位置
有些软件使用解释器的奇怪位置。例如,应用程序可能期望 Python 位于 /opt/bin/python2.7。可以在 port Makefile 中声明需要替换的奇怪路径:
示例 13. USES=shebangfix
与 SHEBANG_REGEX
要修复 ${WRKSRC}/scripts
中所有以 .pl、.sh 或 .cgi 结尾的文件,可以执行:
注意
示例 14. USES=shebangfix
与 SHEBANG_GLOB
要修复 ${WRKSRC}
中所有以 .pl 或 .sh 结尾的文件,可以执行:
示例 15. USES=shebangfix
与 SHEBANG_FILES
要修复 ${WRKSRC}
中的 script/foobar.pl 和 script/*.sh 文件,可以执行:
sqlite
可能的参数: (无), 2
, 3
添加对 SQLite 的依赖。默认使用版本 3,但也可以使用 :2
修饰符来指定版本 2。
sbrk
可能的参数: (无)
标记该 port 在 aarch64
和 riscv64
上为 BROKEN
。
ssl
可能的参数: (无), build
, run
提供对 OpenSSL 的支持。可以使用 build
或 run
来指定仅在构建时或运行时需要的依赖。这些变量对 port 可用,也会被添加到 MAKE_ENV
中:
OPENSSLBASE
OpenSSL 安装基础路径。
OPENSSLDIR
OpenSSL 配置文件路径。
OPENSSLLIB
OpenSSL 库路径。
OPENSSLINC
OpenSSL 包含文件路径。
OPENSSLRPATH
如果定义,链接器需要使用的 OpenSSL 库路径。
技巧
如果一个 port 在使用 OpenSSL flavor 时无法构建,请设置
BROKEN_SSL
变量,并可能设置BROKEN_SSL_REASON__flavor_
:
tar
可能的参数:(无),Z
,bz2
,bzip2
,lzma
,tbz
,tbz2
,tgz
,txz
,xz
,zst
,zstd
将 EXTRACT_SUFX
设置为 .tar
,.tar.Z
,.tar.bz2
,.tar.bz2
,.tar.lzma
,.tbz
,.tbz2
,.tgz
,.txz
,.tar.xz
,.tar.zst
或 .tar.zstd
。
tcl
可能的参数:version,wrapper
,build
,run
,tea
添加对 Tcl 的依赖。可以使用 version 来请求特定版本。版本可以为空、一个或多个精确版本号(当前为 84
、85
或 86
),或一个最小版本号(当前为 84+
、85+
或 86+
)。如果只请求一个非版本特定的 wrapper,可以使用 wrapper
。可以使用 build
或 run
来指定构建时或运行时的依赖。要使用 Tcl 扩展架构构建该 Port,使用 tea
。在包含 bsd.port.pre.mk 后,该 Port 可以使用以下变量检查结果:
TCL_VER
:选择的 Tcl 的主次版本
TCLSH
:Tcl 解释器的完整路径
TCL_LIBDIR
:Tcl 库的路径
TCL_INCLUDEDIR
:Tcl C 头文件的路径
TCL_PKG_LIB_PREFIX
:根据 TIP595 的库前缀
TCL_PKG_STUB_POSTFIX
:Stub 库后缀
TK_VER
:选择的 Tk 的主次版本
WISH
:Tk 解释器的完整路径
TK_LIBDIR
:Tk 库的路径
TK_INCLUDEDIR
:Tk C 头文件的路径
terminfo
可能的参数:(无)
tex
可能的参数:(无)
提供对 tex 的支持。加载所有与 TEX 相关的默认变量,并且不添加任何对其他 Ports 的依赖。
变量用于指定需要哪些 TEX 模块。
USE_TEX
运行时所需的 TEX 扩展列表。在扩展名后添加 :build
来添加构建时依赖,:run
添加运行时依赖,:test
添加测试时依赖,:extract
添加提取时依赖。例如:base texmf:build source:run
当前可能的参数如下:
base
texmf
source
docs
web2c
kpathsea
ptexenc
basic
tlmgr
texlua
texluajit
synctex
xpdfopen
dvipsk
dvipdfmx
xdvik
gbklatex
formats
tex
latex
pdftex
jadetex
luatex
ptex
xetex
xmltex
texhash
updmap
fmtutil
tk
与 tcl
的参数相同
当同时使用 Tcl 和 Tk 时的小包装器。返回的变量与使用 Tcl 时相同。
trigger
可能的参数:(无)
可以通过 Ports 设置以下变量:
TRIGGERS
打包的触发器列表。默认为 ${PORTNAME}
。
触发器以 UCL 格式指定,通常放置在 Port 的 files/ 目录中。
uidfix
可能的参数:(无)
uniquefiles
可能的参数:(无),dirs
通过添加前缀或后缀使文件或目录“唯一”。如果使用 dirs
参数,Port 需要一个基于 UNIQUE_PREFIX
的前缀(且仅需前缀),适用于标准目录 DOCSDIR
、EXAMPLESDIR
、DATADIR
、WWWDIR
、ETCDIR
。以下变量可供 Port 使用:
UNIQUE_PREFIX
:用于目录和文件的前缀。默认值:${PKGNAMEPREFIX}
。
UNIQUE_PREFIX_FILES
:需要添加前缀的文件列表。默认值:空。
UNIQUE_SUFFIX
:用于文件的后缀。默认值:${PKGNAMESUFFIX}
。
UNIQUE_SUFFIX_FILES
:需要添加后缀的文件列表。默认值:空。
vala
可能的参数:build
,lib
,no_depend
varnish
可能的参数:4
(默认),6
,7
waf
可能的参数:(无)
为使用 waf
构建系统的 Ports 提供支持。
它意味着 USES=python:build
。
以下变量会被导出以供 Port 使用:
WAF_CMD
:waf
脚本的位置。如果 waf
脚本不在 WRKSRC/waf 中,请设置此项。
CONFIGURE_TARGET
:Configure
目标。默认值:configure
。
ALL_TARGET
:All
目标。默认值:build
。
INSTALL_TARGET
:Install
目标。默认值:install
。
webplugin
可能的参数:(无),ARGS
自动为支持 webplugin 框架的每个应用程序创建和删除符号链接。ARGS
可以是以下之一:
gecko
:支持基于 Gecko 的插件
native
:支持 Gecko、Opera 和 WebKit-GTK 插件
linux
:支持 Linux 插件
all
(默认,隐式):支持所有插件类型
(单独的条目):仅支持列出的浏览器
以下变量可以调整:
WEBPLUGIN_FILES
:没有默认值,必须手动设置。要安装的插件文件。
WEBPLUGIN_DIR
:安装插件文件的目录,默认值 PREFIX/lib/browser_plugins/WEBPLUGIN_NAME。如果 Port 安装插件文件到默认目录以外的地方,请设置此项,以避免损坏的符号链接。
WEBPLUGIN_NAME
:安装插件文件的最终目录,默认值 PKGBASE
。
xfce
可能的参数:(无),gtk2
xorg
可能的参数:(无)
提供一种简便的方法来依赖 X.org 组件。这些组件应列在 USE_XORG
中。可用的组件有:
表 1. 可用的 X.Org 组件
dmx
DMX 扩展库
fontenc
字体编码库
fontutil
在目录中创建 X 字体文件的索引
ice
X11 的客户端交换库
libfs
FS 库
pciaccess
通用 PCI 访问库
pixman
低级像素操作库
sm
X11 会话管理库
x11
X11 库
xau
X11 身份验证协议库
xaw
X Athena 小部件库
xaw6
X Athena 小部件库
xaw7
X Athena 小部件库
xbitmaps
X.Org 位图数据
xcb
X 协议 C 语言绑定 (XCB) 库
xcomposite
X 复合扩展库
xcursor
X 客户端光标加载库
xdamage
X 损坏扩展库
xdmcp
X 显示管理器控制协议库
xext
X11 扩展库
xfixes
X 修复扩展库
xfont
X 字体库
xfont2
X 字体库
xft
客户端字体 API,用于 X 应用程序
xi
X 输入扩展库
xinerama
X11 Xinerama 库
xkbfile
XKB 文件库
xmu
X 杂项实用程序库
xmuu
X 杂项实用程序库
xorg-macros
X.Org 开发 aclocal 宏
xorg-server
X.Org X 服务器及相关程序
xorgproto
Xorg 协议头文件
xpm
X Pixmap 库
xpresent
X Present 扩展库
xrandr
X 调整大小和旋转扩展库
xrender
X 渲染扩展库
xres
X 资源使用库
xscrnsaver
XScrnSaver 库
xshmfence
共享内存“SyncFence”同步原语
xt
X 工具包库
xtrans
X 的抽象网络代码
xtst
X 测试扩展
xv
X 视频扩展库
xvmc
X 视频扩展运动补偿库
xxf86dga
X DGA 扩展
xxf86vm
X Vidmode 扩展
xorg-cat
可能的参数:app
,data
,doc
,driver
,font
,lib
,proto
,util
,xserver
和(无)或单独的 autotools
(默认),meson
提供对构建 Xorg 组件的支持。它会设置所需的常见依赖项和适当的配置环境。此选项仅适用于 Xorg 组件。
类别必须与上游类别匹配。
第二个参数是要使用的构建系统。默认是 autotools,但也支持 meson。
zip
可能的参数:(无),infozip
指示分发文件使用 ZIP 压缩算法。对于使用 InfoZip 算法的文件,必须传递 infozip
参数以设置适当的依赖关系。
为需要 的 Ports 提供支持。
为依赖 的 Ports 提供支持。
如果存在 env
参数,则该 Port 不依赖 ,但需要设置一些 Ansible 变量。
添加对 Berkeley DB 库的依赖。默认为 。在使用 :18
参数时,也可以依赖于 。可以声明一个接受值的范围,:5+
会查找安装的最高版本,如果没有其他版本则回退到 5。INVALID_BDB_VER
可用于指定与此 Port 不兼容的版本。该框架向 Port 暴露以下变量:
BDB_LIB_NAME
:Berkeley DB 库的名称。例如,使用 时,它包含 db-5.3
。
BDB_LIB_CXX_NAME
:Berkeley DBC++ 库的名称。例如,使用 时,它包含 db_cxx-5.3
。
BDB_INCLUDE_DIR
:Berkeley DB 包含目录的位置。例如,使用 时,它包含 ${LOCALBASE}/include/db5
。
BDB_LIB_DIR
:Berkeley DB 库目录的位置。例如,使用 时,它包含 ${LOCALBASE}/lib
。
已弃用并且不再支持。任何 Port 都不得使用它
使用 。默认情况下,未指定参数或指定 build
参数时,表示 bison
是构建时依赖;run
表示运行时依赖;both
表示同时是构建时和运行时依赖。
为 Budgie 桌面环境提供支持。使用 USE_BUDGIE
选择 Port 所需的组件。有关更多信息,请参见 。
不应为 Haskell 库创建 Port,详情见 。
设置用于构建 Haskell 软件的默认值和目标,使用 Cabal。添加对 Haskell 编译器 Port()的构建依赖。如果 BUILD_DEPENDS
变量中已经列出了其他版本的 GHC(例如 ),则使用该版本。如果提供了 hpack
参数,则添加对 的构建依赖,并在配置步骤中调用 hpack
生成 .cabal 文件。如果提供了 nodefault
参数,框架将不会尝试从 Hackage 拉取主分发文件。如果存在 USE_GITHUB
或 USE_GITLAB
,则此参数会隐式添加。
USE_CABAL
:如果软件使用 Haskell 依赖项,则在此变量中列出它们。每个项目应以 packagename-0.1.2
的形式列出。依赖项也可以有修订版本,修订版本在 _
符号后指定。支持自动生成依赖项列表,详情见 。
使用 Cargo 进行配置、构建和测试。它可以用于 Port 化使用 Cargo 构建系统的 Rust 应用程序。更多信息请参见 。
防止 Port 安装 charset.alias。该文件必须仅由 安装。如果 charset.alias 不是由 ${WRKSRC}/Makefile.in 安装的,可以通过设置 CHARSETFIX_MAKEFILEIN
来指定相对于 WRKSRC
的路径。
USE_ASDF
:依赖 。
USE_CCL
:依赖 ;当 FASL_TARGET=ccl
时,隐式依赖。
USE_CLISP
:依赖 ;当 FASL_TARGET=clisp
时,隐式依赖。
USE_SBCL
:依赖 ;当 FASL_TARGET=SBCL
时,隐式依赖。
默认情况下,使用 Ninja()进行构建。在某些情况下,这可能无法正确工作。使用 noninja
参数时,构建将使用常规的 make
。只有当基于 Ninja 的构建不工作时,才应使用此参数。
有关更多信息,请参见 。
在包清单中包含 Common Platform Enumeration (CPE) 信息,以 CPE 2.3 格式的字符串表示。有关详细信息,请参见 。要将 CPE 信息添加到 Port,请按照以下步骤操作:
通过使用 NVD 的 或在 中搜索软件产品的官方 CPE 条目(警告,此文件为非常大的 XML 文件)。切勿自行编造 CPE 数据。
如果仍然不正确,请检查 Mk/Uses/cpe.mk 以获取更多细节,或联系 Ports 安全团队 []。
使用来自 的 update-desktop-database。在不干扰 Port Makefile 中任何其他安装后步骤的情况下,将运行额外的安装后步骤。会在 plist 中添加一行 。仅在 Port 提供包含 MimeType
条目的 .desktop
文件时使用此宏。
Port 中包含需要转换为 Unix 格式的 DOS 行结束符。可以设置多个变量来控制哪些文件将被转换。默认情况下,将转换 所有 文件,包括二进制文件。有关示例,请参见 。
添加对 的依赖。它允许通过使用 make.conf 中的 DEFAULT_VERSIONS
来透明地依赖 rust
或 legacy
版本。例如,要使用传统版本,可以在 DEFAULT_VERSIONS+=ebur128=legacy
中设置。
添加对 的依赖。
为容易移植以二进制形式分发的 Electron 应用程序提供支持。根据使用的参数,添加对 ,,或 的构建和运行时依赖。
featurelist
的格式描述见 。
为使用 的 Port 提供支持。添加对 的构建和运行时依赖。
为 添加构建和运行时依赖。根据参数不同,添加额外的构建依赖。enc
添加对 的依赖,rebar
添加对 的依赖,rebar3
添加对 的依赖。
更改构建系统的一些默认行为,以允许以用户身份安装。有关 fakeroot
的更多信息,请参见 。
使用文件修改监视器作为库依赖,可以选择使用 或 。最终用户可以设置 WITH_FAM_SYSTEM
来指定其首选项。
添加对 的构建依赖。
使用 作为构建时依赖,并设置环境以使用 gmake
作为构建的默认 make
。
有关更多信息,请参阅 。
不应为 Go 库创建 Ports,更多信息请参阅 。
有关使用示例,请参阅 。
如果 gperf
不在基本系统中,添加对 的构建时依赖。
处理对 Grantlee 的依赖。指定 5
以依赖基于 Qt5 的版本,。selfbuild
用于 来获取其版本号。
如果基本系统中没有 groff
,则注册对 的依赖。
处理 GSS-API 消费者所需的依赖项。仅提供 Kerberos 机制的库。默认情况下,或设置为 base
,使用基本系统中的 GSS-API 库。也可以设置为 heimdal
来使用 ,或设置为 mit
来使用 。
bootstrap
选项是一个仅供 和 使用的特殊前缀。例如,使用 bootstrap,mit
。
添加对 Guile 的依赖。默认情况下,这是对适当的 libguile*.so
的库依赖,除非通过 build
和/或 run
选项覆盖。alias
选项根据需要配置 BINARY_ALIAS
(请参见 )。
更多信息请参见 。
添加对 的构建时和运行时依赖。如果需要,可以使用 USE_HORDE_BUILD
和 USE_HORDE_RUN
添加其他 Horde 依赖项。更多信息请参见 。
使用 iconv
函数,来自 Port 的构建时和运行时依赖,或者来自基本系统的 iconv
。默认情况下,如果没有指定参数或指定了 lib
参数,则表示使用 iconv
作为构建时和运行时依赖。build
表示仅作为构建时依赖,patch
表示仅作为补丁时依赖。如果 Port 使用 WCHAR_T
或 //TRANSLIT
iconv 扩展,请添加相关参数以确保使用正确的 iconv。更多信息请参见 。
将 添加为构建时依赖,并在 configure
阶段运行 xmkmf -a
。如果指定了 env
参数,则不会设置 configure
目标。如果 -a
标志对 Port 有问题,请添加 notall
参数。如果 xmkmf
无法生成 install.man
目标,则添加 noman
参数。
(默认)
添加对 KDE 组件的依赖。更多信息请参见 。
在安装和卸载时处理内核模块的交叉引用,使用 。
提供对 插件的支持。如果提供了 noautoplist
参数,则不会自动生成 plist
。
为 基础的 Port 提供支持。
如果未提供参数或提供了 gtk2
参数,则 lazarus-app 将使用 gtk2
界面构建, Port 将使用 gtk2
界面构建。
LAZBUILD_ARGS
:lazbuild 额外参数。大多数情况下可以是 -d
。更多信息请参见 。默认值:空
WANT_LAZARUS_DEVEL
:如果设置为 yes
,则使用 作为构建依赖。
注册对 的依赖。如果设置了特定的 <版本>
(无点号表示法),则使用该版本。否则,它会尝试找到当前安装的版本。如果需要,它会回退到 bsd.default-versions.mk
中找到的默认版本。client
指定对客户端库的运行时依赖,这是默认行为。server
指定对服务器的运行时依赖。
注册对 的依赖。任何依赖 libarchive 的 Port 必须包含 USES=libarchive
。
注册对 的依赖。任何依赖 libedit 的 Port 必须包含 USES=libedit
。
修补 libtool
脚本。所有使用 libtool
的 Port 必须添加此项。keepla
参数可用于保留 .la 文件。一些 Port 没有自己的 libtool 副本,需要对 进行构建时依赖,使用 :build
参数添加此依赖。
有关更多信息,请参见 。
有关更多信息,请参见 。
处理 LXQt 桌面环境的依赖。使用 USE_LXQT
来选择所需的组件。有关更多信息,请参见 。
为基于 Meson 的项目提供支持。有关更多信息,请参见 。
分别添加对 或 的库依赖。
为依赖 的 Ports 提供支持。
使用 作为库依赖。最终用户可以在 make.conf 中设置 WANT_LESSTIF
来使用 作为依赖,而不是 。同样,在 make.conf 中设置 WANT_OPEN_MOTIF_DEVEL
将添加对 的依赖。
如果提供 mpich
参数,则添加对 的依赖。
如果提供 openmpi
参数,则添加对 的依赖。
通过添加对 的运行时依赖,添加对 Nextcloud 应用程序的支持。
如果指定了 build
或 run
参数,则分别添加对 的构建或运行时依赖。如果提供 make
或没有参数,则使用 ninja 来构建该 Port,而不是 make。make
隐含了 build
。如果 NINJA_DEFAULT
变量设置为 samurai
,则将依赖关系设置为 。
使用 nodejs。添加对 的依赖。如果指定了受支持的版本,则必须同时指定 run
和/或 build
。
如果提供 build
参数,则会将 添加到 BUILD_DEPENDS
、EXTRACT
和 PATCH_DEPENDS
。
如果提供 camlp4
参数,则使用 来构建。
如果提供 dune
参数,则使用 作为构建系统。
如果提供 tk
参数,则会添加 的构建和运行时依赖。此参数隐式包含 tkbuild
和 tkrun
。
如果提供 tkbuild
参数,则会将 添加到 BUILD_DEPENDS
、EXTRACT
和 PATCH_DEPENDS
。
如果提供 tkrun
参数,则会将 添加到 RUN_DEPENDS
。
使用 。env
仅加载一个 OCTAVE_VERSION
环境变量。
如果 port 使用了 ,则会查找 PATHFIX_WRKSRC
中的 CMakeLists.txt。如有需要,可以通过 PATHFIX_CMAKELISTSTXT
更改默认文件名。
添加对 的依赖。它将为使用 PHP 扩展和应用程序仓库的软件设置默认行为。使用 env
参数仅设置 PEAR 环境变量。有关更多信息,请参见 。
有关更多信息,请参见 。
提供对 PHP 的支持。为默认的 PHP 版本 添加运行时依赖。
flavors
:启用自动生成 PHP flavors。除非出现在 中的 PHP 版本,否则将为所有 PHP 版本生成 flavors。
对于不依赖其他扩展的扩展,优先级自动设置为 20
,对于依赖其他扩展的扩展,优先级自动设置为 30
。一些扩展可能需要在其他扩展之前加载,例如 。一些可能需要在优先级为 30
的扩展之后加载。在这种情况下,可以在 port 的 Makefile 中添加 PHP_MOD_PRIO=XX
。例如:
使用 。如果没有参数或使用 build
参数,则意味着将 pkg-config
作为构建时的依赖项。run
表示运行时依赖项,both
表示构建时和运行时的依赖项。
使用 。主要用于构建相关的 pure port。使用 ffi
参数时,它意味着将 作为运行时依赖项。
引入了对 的新依赖。它定义了一个 do-test
目标,用于正确运行测试。使用该参数依赖于特定版本的 。对于使用 的 port,建议使用此方式,而不是使用特定的 do-test
目标。框架向 port 暴露了以下变量:
使用 Python。可以指定支持的版本或版本范围。如果 Python 只在构建时、运行时或测试时需要,可以将其设置为构建、运行或测试依赖项,使用 build
、run
或 test
。如果 Python 在补丁阶段也需要,则使用 patch
。更多信息请参见 。
USES=python:env
可以在需要框架导出的变量但不依赖于 Python 时使用。通常用于与 配合使用,目标是仅修复 shebang,而不是添加对 Python 的依赖。
使用 。使用 build
参数时,意味着将 qmail
作为构建时的依赖项。run
表示运行时依赖项。如果不带参数或使用 both
参数,则表示构建时和运行时的依赖项。vars
将仅设置 QMAIL 变量供 port 使用。
使用 QMake 进行配置。更多信息请参见 。
添加对 Qt 组件的依赖。no_env
参数直接传递给 USES= qmake
。更多信息请参见 。
将 readline 作为库依赖项,并根据需要设置 CPPFLAGS
和 LDFLAGS
。如果使用 port
参数,或如果基本系统中没有 readline,则会添加对 的依赖。
为 Ruby 相关的 Port 提供支持。(无)
参数时,会添加对 的运行时依赖。build
添加对 的构建时依赖。extconf
表示该 port 使用 extconf.rb
来配置。run
添加对 的运行时依赖,这是默认设置。setup
表示该 port 使用 setup.rb
来配置和构建。
SAMBA_LDB_PORT
选定 Samba 版本使用的 ldb port 的来源(例如, )。如果一个 port 需要依赖于与选定 Samba 版本相同的 ldb 版本,应该使用此变量。
为使用 提供支持。更多信息请参见 。
使用来自 的 update-mime-database
。此宏会自动在安装后步骤中添加,以确保该 port 在需要时仍能指定自己的安装后步骤。同时,它还会将 条目添加到 plist 中。
SHEBANG_REGEX
包含一个扩展正则表达式,并与 的 -iregex
参数一起使用。参见 。
SHEBANG_GLOB
包含一个使用 的 -name
参数的模式列表。参见 。
SHEBANG_FILES
包含文件列表或 模式。shebangfix
宏在 ${WRKSRC}
中运行,因此 SHEBANG_FILES
可以包含相对于 ${WRKSRC}
的路径。如果需要修补 ${WRKSRC}
之外的文件,也可以处理绝对路径。参见 。
_interp__OLD_CMD
包含多个值。任何包含空格的条目必须加引号。参见 。
当与 一起使用时,如果仅仅是修复 shebang,但不希望依赖于 Python 本身,可以使用 USES=python:env
。
SHEBANG_REGEX
是通过运行 find -E
来使用的,它使用现代正则表达式,也称为扩展正则表达式。更多信息参见 。
将 添加到 plist。当该 Port 安装 *.terminfo 文件到 ${PREFIX}/share/misc 时使用。
提供对需要由 执行触发器的 Ports 的支持。触发器在事务结束时执行,如果条件满足。
更改构建系统的一些默认行为(主要是变量),以允许以普通用户身份安装该 Port。在使用 或补丁之前,请先尝试此方法。
添加对 的构建或库依赖。no_depend
参数保留给 本身。
处理 Varnish Cache 的依赖关系。添加对 的依赖。
为 Xfce 相关 Ports 提供支持。有关详细信息,请参阅 。
gtk2
参数指定该 Port 需要 GTK2 支持。它添加了一些核心组件提供的额外功能,例如 和 。