Crie um pacote Ubuntu desleixado para o Travis CI

1

Eu desenvolvo o software A, que depende dos softwares B e C, e o software B depende de D, que também traz uma cópia conveniente de C. Para o meu trabalho em A e B, gostaria de ter uma integração contínua com o GitHub. Isso pode ser fornecido pelo Travis CI facilmente.

Meu problema com o Travis CI é que ele é executado no Ubuntu Trusty. Minha estação de trabalho executa o Fedora, o supercomputador que eu implemento para rodar o CentOS 7. O código C / C ++ é compilado em todas as plataformas, essa diversidade significa muito mais trabalho.

Construir uma única biblioteca no Travis CI não é um problema, eu posso fazer isso. Atualmente eu construo todas essas dependências quando eu construo A, o que é um desperdício de recursos e tempo. A solução “adequada” seria ter pacotes Ubuntu Trusty das bibliotecas dependentes em alguma versão de lançamento. '

Ao construir estes pacotes, descobri que os pacotes Debian são muito mais complicados que os pacotes RPM. No pacote RPM, apenas faço o seguinte:

%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

Em seguida, ele fará todas essas etapas. Com o Debian, isso é provavelmente possível apenas sobrescrevendo build: no arquivo debian/rules . No entanto, ele ainda tenta executar dh_auto_clean , que então encontrará os artefatos de construção na árvore (obviamente…). No entanto, não posso executar make clean antes de chamar autoreconf .

Isso significa que não posso executar debuild -S , o que significa que não posso construí-lo em um PPA do Launchpad, o que significa que não posso instalar esse pacote no Travis CI.

O que é uma maneira sensata de obter um pacote simples e desleixado do Ubuntu de meus projetos GNU Autotools (geralmente subprojetos aninhados)?

    
por Martin Ueding 22.04.2017 / 14:28

0 respostas