根据 debian/control 目标更改 debian/rules 中的环境变量

根据 debian/control 目标更改 debian/rules 中的环境变量

我有这个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设置 ?elseDEB_CONFIGURE_SCRIPT_ENV

如果不是,那么处理此问题的适当方法是什么?

答案1

  • 常规debian/rules文件仅运行1个周期。

  • 您的案例似乎需要额外的周期(似乎 3 个),这里有官方教程,其中有 2 个构建周期的示例。

    Debian 维基:PkgSplit,此处删除它的历史。它看上去已经过时了。

  • 您可以查看更多真实的例子(正如 tumbleweed 所提到的):

    1. 搜索“.*-mpi”或.*-openmpi

      apt-cache search --names-only ".*-mpi"
      
    2. 然后下载源代码

      apt source <packagename>
      

    或者你可以上网查询:

    1. 搜索mpi通过描述https://packages.ubuntu.com/
    2. 以最后一套套房的山峰一为例mrbayes-mpi. 通常,软件包以使用的编译器或关键选项作为后缀。
    3. 跟随下载源码包链接
    4. 下载德比安存档或检查其 Debian 软件包源代码存储库(可浏览)在上游 Debian/Ubuntu/外部站点上。
    5. 检查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),然后用不同的名称存储它们。

相关内容