好了, 也许工作没那么简单, port 需要做些修改才能够在 FreeBSD 上跑起来。 在这一章里, 我们将会一步步举例来介绍应该如何修改来使您的 port 能在 FreeBSD 上面运行。
首先, 这一系列的动作是由用户在您的
port 目录里敲入 make
后发生的。
您也许会发现在另外的一个窗口里阅读一下
bsd.port.mk
将会有助于您的理解。
要是您不是非常明白 bsd.port.mk
是做什么的话, 也不用太担心, 很多人都不知道的...
:->
fetch
会首先被执行。
fetch
将检查在本地的
DISTDIR
目录里是否存在
tar 包。 如果 fetch
没有找到就会查找 Makefile 中定义的
MASTER_SITES
URL, 还有我们的主
FTP 站点 ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/
,
在那里我们备份了所有被认可的 distfile。 假设那个
MASTER_SITES
站点是直接连在 Internet 上的,
就会试着用 FETCH
指定的程序取回
distfile。 如果成功的话, 文件会被保存在DISTDIR
所指定的目录以备稍后使用。
接下来会执行 extract
。
它会在 DISTDIR
中寻找您的
tar 包 (通常是用 gzip 压缩的 tar 包),然后解压缩到由
WRKDIR
所指定的临时目录里
(默认为work
目录)。
下一步是执行 patch
。
首先任何在 PATCHFILES
中定义的补丁都会被打上。
然后, 在由 PATCHDIR
指定的目录
(默认为 files
目录)
中发现的patch-*
,
它们将会以文件名的字母顺序被先后打上。
configure
会被执行。
这一步骤可能会有以下几种情形。
如果存在 scripts/configure
,
就会执行它
如果定义了 HAS_CONFIGURE
或者 GNU_CONFIGURE
, 就会执行
WRKSRC/configure
。
如果定义了USE_IMAGE
, 就会执行
XMKMF
(默认为: xmkmf
-a
)。
build
会被执行。
这一步将会进入ports的工作目录
(WRKSRC
)
然后进行编译。如果定义了USE_GMAKE
,
就会使用 GNU make
, 反之,
则会使用系统默认的 make
。
以上都是系统默认的步骤。 您也可以定义
pre-
或者
something
post-
,
或者把以此命名的脚本放到
something
scripts
目录,
它们会在默认的动作之前或之后被执行。
举个例子, 如果您在您的 Makefile
里定义了post-extract
, 并在
script
目录里放了一个
pre-build
脚本,
那么在 tar 包解开之后
post-extract
将被调用,
pre-build
脚本会在默认的编译之前被执行。
我们推荐您在 Makefile
定义所有的动作, 如果不是十分复杂的话,
这样, 别人能更容易明白您的 port
需要执行哪些非默认的动作。
默认的行为都是由 bsd.port.mk
定义的
do-
来表示的。 例如, port 中用来解压缩的命令是由
something
do-extract
来定义的。
如果您对默认的设置不满意, 可以通过在
Makefile
重新定义
do-
来做些改变。someting
“主” 动作 (例如
extract
、
configure
, 等等)
仅仅是用来确定所有相应的阶段都完成了,
以及调用真实的动作或脚本, 它们不应被修改。
如果您想要修改解压缩这个动作,
可以修改 do-extract
,
但永远都不要改变 extract
的操作!
我们已经介绍了在用户敲入 make
之后会发生哪些事情了。 接下来我们将进行进一步的学习,
来看一看如何创建一个理想的 port。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<questions@FreeBSD.org>.
关于本文档的问题请发信联系
<doc@FreeBSD.org>.