Сборка пакетов расширения Python для Launchpad

У меня есть проект autotools (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 файл?

Похоже, кто-то другой может подтвердить то же, что я вижу в этом списке.

1 ответ

Так что, действительно, оказалось, что проблема заключалась в параллельных сборках и, в частности, в конце, когда модуль 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 ищет библиотеку, которой еще нет (описано в ссылке выше) при перекомпоновке модуля python.

Другие вопросы по тегам