Python — Управление установкой сторонних библиотек Переполнение стека

Мне интересно, как разумно управлять сборкой и установкой некоторых наших сторонних зависимостей C ++ от Linux (Ubuntu). В настоящее время я настроил его так: это git-lfs со всеми необходимыми сжатыми сторонними источниками. Затем я использую сценарий оболочки, который я написал, чтобы установить все необходимые системные зависимости, а затем разархивировать и собрать нужную библиотеку. Этот сценарий оболочки также заботится о настройке всех путей, чтобы наш исходный код мог легко ссылаться на сторонние библиотеки.

Примеры команд для нашего скрипта: ./install opencv или ./install everything

Однако за несколько месяцев сценарий стал достаточно большим и иногда ломался, когда определенные библиотеки уже установлены или возникли другие незначительные проблемы. Поэтому я хотел бы заменить это чем-то более умным и полезным. В настоящее время я пытаюсь написать какой-нибудь скрипт на python, но просто переключение языка с оболочки на python не так уж велико. Поэтому я смотрю, есть ли какие-нибудь конкретные библиотеки Python, которые могут помочь мне в управлении этими библиотеками.

Я изучал такие вещи, как chef и другие автоматизированные сборки, но это слишком для небольшого проекта, над которым я работаю.

Мне было интересно, что другие люди использовали для этого стороннего управления, так как, к сожалению, в C ++ нет ничего похожего на pip.

0

Решение

я использую jhbuild для такого рода вещей (если я понимаю, что вы делаете правильно). Он вышел из проекта GNOME (они используют его для создания всего рабочего стола из исходного кода), но его легко настроить для любого набора проектов. jhbuild упакованный в последнее время Ubuntus работает отлично.

Вы пишете небольшой XML для описания каждого проекта: где загрузить исходные коды, какие патчи применить, какие настроить флаги для использования, от каких проектов это зависит и т. Д .; затем, когда вы вводите jhbuild build mything он решает, что строить и в каком порядке, и уживается с этим. Он достаточно умен в отношении изменений, поэтому, если вы отредактируете исходный файл в одном из проектов, составляющих ваш стек, он будет перестраивать только затронутые части.

Например, у меня есть это для fftw3, отличной библиотеки быстрого преобразования Фурье:

  <autotools id="fftw3"autogen-sh="configure"autogenargs="--disable-static --enable-shared --disable-threads">
<branch
repo="fftw"module="fftw-3.3.4.tar.gz"/>
<dependencies>
<dep package="libiconv"/>
</dependencies>
</autotools>

С, вероятно, очевидными значениями. Это сборка из релизного архива, но она также может быть построена и из git. Счастлив cmake проекты. jhbuild написан на Python, поэтому его легко настроить. Благодаря GNOME, многие общие библиотеки включены.

Я на самом деле использую его для создания бинарных файлов Windows. Вы можете настроить его для сборки всего с помощью кросс-компилятора, а затем поместить его в Docker. Это позволяет любому пользователю создавать большие и сложные приложения практически на любой платформе. Конечно, вы можете использовать его и для автоматических ночных сборок.

Вокруг, наверное, есть вещи получше, но у меня все получилось.

0

Другие решения

Других решений пока нет …