launchpad.net: Несколько зависимостей в одном большом проекте?

У меня есть большой проект, содержащий множество библиотек, от которых зависит основной двоичный файл. Я хотел бы знать, как правильно справиться с этим в панели запуска, чтобы я мог собрать библиотеки, затем основной двоичный файл и предложить каждый пакет debian в ppa.

Вы можете увидеть рассматриваемый проект по адресу lp:snapcpp (https://code.launchpad.net/snapcpp/). В snacpp у нас есть «snapwebsites», система C++ CMS, которая подключается к базе данных Cassandra через нашу библиотеку «libQtCassandra». «Snapwebsites» зависит от libQtCassandra, как и от libltd и других. Каждая из этих библиотек должна быть отдельным пакетом Debian. Каждый проект имеет свою собственную папку «debian», но в настоящее время корневой папки debian нет.

Как я могу заставить это работать на панели запуска, для которой требуется корневая папка Debian? Нужно ли мне создавать проект Debian в корне, в котором перечислены все зависимости? Если нет, нужно ли разбивать каждый проект на отдельную ветку с помощью bzr? Если я сделаю последнее, как мне вызвать эти depencency deb для сборки (другими словами, как мне сообщить рецепту для snapwebsites, что ему необходимо установить libQtCassandra и его пакеты зависимостей)?

Спасибо!


person Doug Barbieri    schedule 02.12.2013    source источник
comment
Доступны ли эти зависимости в стандартных основных репозиториях?   -  person Braiam    schedule 02.12.2013
comment
Брайам: нет, зависимости являются частью основного проекта. Просмотрите каждый подпроект в стволе: bazaar.launchpad.net/~doug/ snapcpp/trunk/files Например, snapCMakeModules — это зависимость исходного пакета, в которой мы устанавливаем пользовательские модули в путь поиска cmake. Все проекты snapcpp зависят от него. Или, в качестве другого примера, проверьте advgetopt, который позволяет синтаксический анализ командной строки в стиле C++ (который зависит от control_vars, также в том же проекте).   -  person Doug Barbieri    schedule 02.12.2013
comment
Похоже, вы должны иметь каждую зависимость в отдельном проекте?   -  person tripleee    schedule 02.12.2013
comment
Triplee: если я разобью их на множество подпроектов (проблема сама по себе, из-за того, что ветки bzr хотят быть из корня проекта git), я все равно столкнусь с той же проблемой. Если я создам, скажем, advgetopt, который зависит от контролируемых_варов, как мне сообщить системе сборки launchpad.net, что она требует, чтобы в первую очередь были собраны и установлены контролируемые_вары?   -  person Doug Barbieri    schedule 02.12.2013


Ответы (1)


Решение, которое я нашел самостоятельно, заключалось в использовании команды рецепта «nest-part», которая позволяет вам взять одну папку из ветки bzr и сопоставить ее с вашим проектом. Однако он не может сопоставляться с корнем вашей ветки.

Что я сделал, так это создал ветку, содержащую только информацию об упаковке, и файл CMakeLists.txt, содержащий «add_subdirectory(src)». Затем я сопоставляю основную ветку кода (lp:snapcpp), но только рассматриваемый проект. Например, вот рецепт для проекта «controller_vars» в snapcpp:

# bzr-builder format 0.3 deb-version {debupstream}+{revno}
lp:~snapcpp/snapcpp/controlled_vars
nest-part src lp:snapcpp controlled_vars src

Для каждого подпроекта должна быть ветвь с информацией об упаковке, но это одноразовая проблема с настройкой.

person Doug Barbieri    schedule 05.12.2013