为 Travis CI 创建一个粗糙的 Ubuntu 包

为 Travis CI 创建一个粗糙的 Ubuntu 包

我在软件 A 上进行开发,该软件依赖于软件 B 和 C,软件 B 依赖于 D,D 也附带了 C 的便捷副本。对于我在 A 和 B 上的工作,我希望与 GitHub 进行持续集成。Travis CI 可以轻松提供这一点。

我对 Travis CI 的问题是它在 Ubuntu Trusty 上运行。我的工作站运行 Fedora,我部署到的超级计算机运行 CentOS 7。C/C++ 代码在所有平台上编译,这种多样性意味着更多的工作。

在 Travis CI 上构建单个库不是问题,我可以做到这一点。目前,我在构建 A 时构建所有这些依赖项,这浪费了资源和时间。“正确”的解决方案是在某个发布版本中拥有依赖库的 Ubuntu Trusty 包。'

在构建这些软件包时,我发现 Debian 软件包比 RPM 软件包麻烦得多。在 RPM 软件包中,我只需执行以下操作:

%build

aclocal
autoreconf -f
./configure \
        --disable-testing \
        --enable-clover \
        --enable-mm-malloc \
        --enable-openmp \
        --enable-parallel-arch=scalar \
        --enable-proc=AVX \
        --enable-soalen=4 \
        --libdir=%{_libdir} \
        --prefix=/usr/ \
        CXX=/usr/bin/g++ CC=/usr/bin/gcc  \
        CXXFLAGS="-O2 -finline-limit=50000 -Wall -Wpedantic -fmax-errors=1 -fopenmp --std=c++11 -Drestrict=__restrict__" \
        || cat config.log

make %{?_smp_mflags}

%install
%make_install

然后它将执行所有这些步骤。使用 Debian,这可能只需在文件build:中覆盖即可debian/rules。但是,它仍会尝试运行dh_auto_clean,然后会找到树内构建工件(显然……)。但是,make clean在调用之前我无法运行autoreconf

这意味着我无法运行debuild -S,这意味着我无法在 Launchpad PPA 上构建它,这意味着我无法在 Travis CI 上安装该包。

从我的 GNU Autotools 项目(通常是嵌套的子项目)中获取简单、随意的 Ubuntu 包的合理方法是什么?

相关内容