Я разрабатываю на программном обеспечении, который зависит от программного обеспечения B и C, программное обеспечение B зависит от D, который поставляет копию удобства C также. Для моей работы над A и B, я хотел бы иметь непрерывную интеграцию с GitHub. Это может быть обеспечено Travis CI легко.
Моя проблема с Travis, который CI - то, что она работает на Надежном человеке Ubuntu. Моя рабочая станция выполняет Fedora, суперкомпьютер, который я развертываю на CentOS 7 выполнений. Компиляции кода C/C++ на всех платформах, это разнообразие просто означает намного больше работы.
Здание единственной библиотеки по Travis, CI не является проблемой, я могу сделать это. В настоящее время я создаю все те зависимости, когда я создаю A, который является тратой ресурсов и время. “Надлежащее” решение имело бы пакеты Надежного человека Ubuntu зависимых библиотек в некоторой версии выпуска.'
При создании этих пакетов я нашел, что пакеты 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
, что означает, что я не могу создать его на Панели запуска PPA, что означает, что я не могу установить тот пакет на Travis CI.
Что разумный путь состоит в том, чтобы получить простой, неаккуратный пакет Ubuntu из моих проектов Автоинструментов GNU (часто вкладываемые подпроекты)?