如果你的port可以根据一些参数(如,纸张大小)的不同生成不同的包,为每个包创建一个目录是较好的,但应该尽可能的共享较多的文件.通常你只需要每个目录有一个简单的Makefile而不是每个目录都有一个完整的Makefile.在这个Makefile中,你可以使用MASTERDIR变量指定要共享的文件.也要定义一个PKGNAMESUFFIX 来表明不同的包.
这里有一个很好的范例,是japanese/xdvi300/Makefile的一部分:
PORTNAME= xdvi
PORTVERSION= 17
PKGNAMEPREFIX= ja-
PKGNAMESUFFIX= ${RESOLUTION}
:
# default
RESOLUTION?= 300
.if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \
${RESOLUTION} != 300 && ${RESOLUTION} != 400
@${ECHO} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\""
@${ECHO} "Possible values are: 118, 240, 300 (default) and 400."
@${FALSE}
.endif
japanese/xdvi300 也使用通常的patch等等.如果你输入make命令,会按照缺省的变量值resolution=300编译这个port.
对于其他的resolution值,这里是完整的xdvi118/Makefile:
RESOLUTION= 118
MASTERDIR= ${.CURDIR}/../xdvi300
.include "${MASTERDIR}/Makefile"
MASTERDIR告诉bsd.port.mk像FILEDIR和SCRIPTDIR可以在xdvi300中找到.RESOLUTION=118将覆盖RESOLUTION=300的定义,生成resolution=118的包.
| 上一页 | 首页 | 下一页 |
| 特殊情况 | 共享库版本 |