[devel] Library + Python bindings build
Mikhail Yakshin
=?iso-8859-1?q?greycat_=CE=C1_altlinux=2Eorg?=
Вт Май 17 01:34:13 MSD 2005
Приветствую!
Есть такая задачка: есть новый libtunepimp, который нужно по хорошему
разделить на 2 пакета:
1. Собственно libtunepimp - это бинарно-собираемая библиотека на C/C++,
собирается средствами autoconf/automake/libtool и ставится относительно
безпроблемно;
2. В поддиректории python у исходного тарболла есть по сути совершенно
отдельный пакет, собирающийся в принципе абсолютно отдельно от исходного
и представляющего собой стандартный питоновский модуль (биндинги к этой
C-шной библиотеке посредством ctypes), который бы хотелось оформить в
отдельный пакет python-module-tunepimp и к которому хотелось бы иметь
спек в виде простой и понятной почти копии со стандартного спека из
Python Policy.
Вариантов решения я пока вижу 2, и оба они мне не нравятся, но я
склоняюсь ко второму, несмотря на некий оверхед для Сизифа:
1. Сделать %package python в libtunepimp, получив таким образом
libtunepimp-python и решив какими-то полукустарными методами проблемы
билда и инсталла такого пакета, запихнув какие-то особо хитрые
конструкции в %build и %install основного пакета libtunepimp.
Минусы: нарушаем по сути Python policy, обретаем массу (по крайней мере
потенциальных) проблем с обновлениями и корректными зависимостями на
попиленный Питон.
Плюсы: компактно, все-таки более-менее штатный способ построения всего
из одного тарболла.
2. Запаковать отдельно пакет libtunepimp (порождающий 3 вполне понятных
пакета - libtunepimp, libtunepimp-devel и libtunepimp-utils) и оставить
его таким. Запаковать тот же самый тарболл отдельно, после чего сделать
ему нормальный спек нормального питонного пакета, соответствующий полиси
и примеру спека, с единственной разницей в %setup вроде:
%setup -q -n %name-%version-pre4/python
вместо обычного %setup -q, скажем.
Минусы: пакуем один не очень маленький (~850 кил) тарболл два раза, во
втором случае из всего 850-килобайтного тарболла нам нужны десять
килобайт одного маленького питонного враппера над этой самой либой;
Плюсы: проще, больше соответствует policy.
Посоветуйте, как быть?..
Есть еще метод 3, но он мне совсем не нравится: плюнуть на все полиси,
setup.py и любые подобия мейкфайлов как таковые и просто поставить этот
несчастный .py файл ручками в директорию, куда надо. Еще более
quick-n-dirty, но проще всего...
--
WBR, Mikhail Yakshin AKA GreyCat
ALT Linux [http://www.altlinux.ru] [xmpp:greycat на altlinux.org]
Подробная информация о списке рассылки Devel