LINUX.ORG.RU

Ъ организация сборки и установки библиотеки в многопользовательском режиме с поддержкой нескольких версий?

 , ,


0

2

Есть некая библиотека, написана на плюсах (с кучей шаблонов) и питоне. Шаблонные классы инстанцируются и протаскиваются в питон через SWIG по мере необходимости, соответственно библиотека поставляется в исходниках.

Для сборки модулей есть хитровыкрученный Makefile, скажем если набрать в директории библиотеки

make vctr13
будет собран для питон модуль с 13-ти мерным декартовым вектором. Аналогично для контейнеров (многомерных массивов) и всякого такого. Часть модулей собирается «из коробки» (например vctr2 и vctr3 нужны вьюверам), остальное может собираться юзером по мере необходимости. Каждый модуль это .so-шка + питонья оболочка к ней, все модули вместе выглядят как пакет (лежат в одной директории в которой есть ище __init__.py).

Сейчас архитектура у этого хозяйства довольно кривая - требуется создавать для библиотеки отдельного юзера, настраивать sudo и много шаманить с бубном. Хочется организовать сборку так, что бы:

1) любой пользователь мог дособирать какие то модули по мере необходимости без всякого шаманства. Для этого ему надо иметь право записи в каталог где все эти модули лежат. Можно конечно, что бы для каждого юзера был свой каталог, но не очень понятно где его размещать и как туда цеплять уже собранные модули «из коробки» - понятно что это можно сделать 33мя способами, но все как то кривовато выглядит.

2) Была возможность независимой установки и использования нескольких версий, в т.ч. из под юзера без рута.

3) Все это хозяйство было просто поддерживать. Сейчас поддерживать очень просто - библиотека установлена при помощи нескольких мягких ссылок, достаточно обновить библиотеку и вызвать make, и новая версия доступна всем. Хотелось бы что стало не сильно сложнее.

★★★★★

Последнее исправление: AIv (всего исправлений: 1)

Ответ на: комментарий от anonymous

Зачем? Меня gnu make полностью устраивает. Вопрос то не в этом.

AIv ★★★★★
() автор топика

Я не работал с плюсовыми модулями на питоне, но по-моему virtualenv тебе подойдет.

pi11 ★★★★★
()
Ответ на: комментарий от dib2

Какое забытое слово;-) И на них, родимых, тоже.

AIv ★★★★★
() автор топика

То есть сам модуль не обязательно лежит где-то в системном каталоге, где его пользователь видит, раз используются ссылки?

Почему бы вместо специального пользователя не использовать специальную группу? Любой пользователь группы сможет обновить/дособрать модуль если у группы будут права на запись в нужные каталоги. Для отдельных версий свои подкаталоги.

nowhere
()

Можно конечно, что бы для каждого юзера был свой каталог, но не очень понятно где его размещать и как туда цеплять уже собранные модули «из коробки» - понятно что это можно сделать 33мя способами, но все как то кривовато выглядит.

Оно кривовато или кривовато в сравнении с «требуется создавать для библиотеки отдельного юзера, настраивать sudo и много шаманить с бубном»?

tailgunner ★★★★★
()
Ответ на: комментарий от nowhere

потому что тогда один член группы сможет хакнуть всех остальных

AIv ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

по сравнению C этим все решения прямые как рельса. Но мне хотелось услышать таки как это делают правильно.

AIv ★★★★★
() автор топика
Ответ на: комментарий от AIv

Но мне хотелось услышать таки как это делают правильно.

Найдите компетентного Unix-прогера или админа, подробно объясните ему задачу, и он вам скажет.

tailgunner ★★★★★
()
Ответ на: комментарий от AIv

A тут таких нет?:-)

Найдутся, но тут нет приличной постановки задачи. Хедпост написан в почти грибном стиле, хотя и он, и скупое последующее обсуждение заставляют подозревать какие-то неочевидные подводные камни (типа недружестенных юзеров). Объяснение всего этого потребует ХЗ сколько итераций, которые IRL живые люди проведут на порядок быстрее. Можно попробовать и хдесь, но будет долго и шанс на успех невелик, ИМХО.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: hudson? buildbot? от anonymous

Думаю что велосипед на gnu make. Все самое сложное уже сделано, осталось понять как правильно сделать эту ерунду с неск пользователями и неск версиями. Не вижу смысла для этого тащить какие то вундервафли.

AIv ★★★★★
() автор топика
Ответ на: комментарий от AIv

удачи в поисках нелёгких путей...

...а спрашивали как делают Ъ

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.