如果你的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的包.
上一页 | 首页 | 下一页 |
特殊情况 | 共享库版本 |