我有这个mypackage
已经捆绑在 Ubuntu 上的包。为了设置编译器,debian/rules
包含
DEB_CONFIGURE_SCRIPT_ENV += CC=gcc
我现在想扩展该包,因为我想在中添加更多目标debian/control
,即libmypackage-openmpi
等等libmypackage-mpich2
。理论上唯一需要更改的debian/rules
是上面的编译器行;
DEB_CONFIGURE_SCRIPT_ENV += CC=mpicc
有没有办法在构建目标之间进行debian/rules
动态if
设置 ?else
DEB_CONFIGURE_SCRIPT_ENV
如果不是,那么处理此问题的适当方法是什么?
答案1
常规
debian/rules
文件仅运行1个周期。您的案例似乎需要额外的周期(似乎 3 个),这里有官方教程,其中有 2 个构建周期的示例。
Debian 维基:PkgSplit,此处删除它的历史。它看上去已经过时了。
您可以查看更多真实的例子(正如 tumbleweed 所提到的):
搜索“.*-mpi”或
.*-openmpi
apt-cache search --names-only ".*-mpi"
然后下载源代码
apt source <packagename>
或者你可以上网查询:
- 搜索
mpi
通过描述在https://packages.ubuntu.com/。 - 以最后一套套房的山峰一为例mrbayes-mpi. 通常,软件包以使用的编译器或关键选项作为后缀。
- 跟随下载源码包链接。
- 下载德比安存档或检查其 Debian 软件包源代码存储库(可浏览)在上游 Debian/Ubuntu/外部站点上。
- 检查
control
、*.install
文件和最重要的rules
文件。
这里是多循环构建的基本部分:
override_dh_auto_configure: dh_auto_configure -- --with-beagle=/usr --enable-mpi=yes --enable-debug=yes override_dh_auto_build: # build mb-mpi (from initial config) LIBS="-Wl,--as-needed" dh_auto_build mv src/mb ./mb-mpi # Now - build mb ( cd src ; make clean ) dh_auto_configure -- --with-beagle=/usr --enable-mpi=no --enable-debug=yes LIBS="-Wl,--as-needed" dh_auto_build mv src/mb .
它覆盖默认值并使用 2 个循环(dh_auto_configure 和 dh_auto_build),然后用不同的名称存储它们。