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

Nic*_*mer 5 packaging environment-variables

我有这个mypackage已经捆绑在 Ubuntu 上的软件包。用于设置编译器,debian/rules包含

DEB_CONFIGURE_SCRIPT_ENV += CC=gcc
Run Code Online (Sandbox Code Playgroud)

我现在想扩展包,因为我想在 中添加更多目标debian/control,即libmypackage-openmpilibmypackage-mpich2等等。理论上唯一需要更改的debian/rules是上面的编译器行;

DEB_CONFIGURE_SCRIPT_ENV += CC=mpicc
Run Code Online (Sandbox Code Playgroud)

是否有办法debian/rulesif-else构建目标与集之间DEB_CONFIGURE_SCRIPT_ENV 动态?

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

use*_*.dz 1

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

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

    Debian Wiki:PkgSplit,在这里删除了它的历史记录。这似乎已经过时了。

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

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

      apt-cache search --names-only ".*-mpi"
      
      Run Code Online (Sandbox Code Playgroud)
    2. 然后下载源码

      apt source <packagename>
      
      Run Code Online (Sandbox Code Playgroud)

    或者你可以上网查一下:

    1. https://packages.ubuntu.com/搜索mpi说明
    2. 最后一个套件中的峰值,例如mrbayes-mpi。通常,包的后缀是使用的编译器或关键选项。
    3. 点击下载源码包链接
    4. 下载debian存档或在上游 Debian/Ubuntu/外部站点上检查其 Debian 软件包源存储库(可浏览)
    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 .
    
    Run Code Online (Sandbox Code Playgroud)

    它会覆盖默认值并使用 (dh_auto_configure & dh_auto_build) 的 2 个周期,然后使用不同的名称存储它们。