У меня есть проект автоинструментов (C++), для которого я создаю пакеты на панели запуска ppa
Недавно я попытался добавить пакет Python к тому архиву. Я протестировал его локально с bzr dh-make
и также использование pbuilder
. Обе работы фантастически. На панели запуска, хотя никакая радость.
Один из журналов сборок здесь
Вы будете видеть, что проблема с автоматически сгенерированной целью установки. Когда это идет для установки модуля Python, это дает предупреждение и затем повторно связывает модуль. Я внес свою лепту исследования, и это казалось полностью хорошо
Вот Makefile.am
с добавленной целью модуля Python: ошибка в панели запуска входа в систему сборки заканчивает тем, что говорила:
/usr/bin/ld: cannot find -lvalhalla
collect2: error: ld returned 1 exit status
libtool: error: error: relink 'valhalla.la' with the above command before installing it
Makefile:2265: recipe for target 'install-pyexecLTLIBRARIES' failed
make[3]: *** [install-pyexecLTLIBRARIES] Error 1
То, что нечетно, - то, что не все они перестали работать. Возможно, это - что-то, чтобы сделать с параллелизмом.
Я заметил, что команда, которую это выполняет, make -j4 install
и затем при пересоединении это, кажется, говорит, не может найти -lvalhalla
который является названием основной библиотеки, проект создает. Это, кажется, устанавливает несколько вещей одновременно, возможно, это - проблема. Возможно, я могу переопределить просто dh_auto_install
цель в debian/rules
файл?
Похож на кого-то еще, может подтвердить то же как, что я вижу в этом списке.
Так действительно действительно оказывалось, что проблема относилась к параллельным сборкам и в особенности в конце, когда модуль Python повторно связывается, другой материал еще не был установлен. Фиксация была также действительно меньшим количеством фиксации и большим количеством работы вокруг и точно, что я предложил.
А именно, я просто добавил эту цель к моему debian/rules
файл:
#because python module depends on main library and somehow dependency is not known we must limit parallelism
override_dh_auto_install:
dh_auto_install --max-parallel=1
Эти --max-parallel=1
бит ограничит его выполнением make -j1 install
, который избежит состояния состязания, где libtool ищет lib, который еще не является там (описан в ссылке выше) при пересоединении модуля Python.