From: Alexey Morozov <alex-altlinux@idisys.iae.nsk.su> To: Mikhail Zabaluev <mhz@altlinux.org>, devel@altlinux.ru, cray@neural.ru Subject: Re: [devel] Q: Python packaging howto Date: Sun, 22 Feb 2004 06:05:00 +0600 Message-ID: <20040222000500.GB15706@localhost.localdomain> (raw) In-Reply-To: <20040221182533.GB14716@av1046.comex.ru> [-- Attachment #1: Type: text/plain, Size: 5726 bytes --] On Sat, Feb 21, 2004 at 09:25:33PM +0300, Mikhail Zabaluev wrote: > Мне не нравится идея, что основное имя (то, которое принимает > .src.rpm) зависит от ключей сборки. На самом-то деле исходный > пакет от этого не зависит. Ну, мне тоже не слишком нравится. > Может быть, лучше для Name: оставить имя модуля, без всяких python*-, > а для объявления бинарного пакета предусмотреть макросы? Впрочем, > это будет не очень удобно, если макрос для объявления бинарного пакета > не будет автоматически копировать %description основного пакета. > Я не знаю, можно ли это сделать в rpm. Вот именно потому, что я тоже не знаю, я и пошел по пути наименьшего сопротивления. > Есть ещё такая радикальная идея: бинарный пакет может именоваться и > по-человечески, именем tarball'а, но предоставлять также имя, > привязанное к версии ABI python. При этом могут использоваться > скобочные схемы, например: > python-abi(%modulename) = %__python_version > > После этого корректное прописывание зависимостей между пакетами > модулей останется предметом policy. Хочется не только решить проблему с зависимостями, но и решить проблему с неединовременным перетеканием всего питоньего хозяйства из одной версии в другую. > > Requires: python%__python_package_version-<anotherModule> > > > > Могу оформить все это дело в виде отдельного макроса. Предложения по > > наименованию принимаются. > > Помимо изложенного выше предложения, есть такой вариант: > > %{python_versioned_name anotherModule} > > а также > %__python_packagename python%__python_package_version Ну, ждем, пока остальные выскажутся. Мне, в общем, в данном случае, практически все равно, куда копать. > Насколько я понимаю, компиляция после %install необходима только для > тех скриптов, которые не используют схему установки из distutils > с опцией --root. Если так, то да, лучше её отключить. Да. > По идее, нужно добиться, чтобы RPM_PYTHON была установлена правильно > во всех случаях. Ну, я надеюсь, что это так (в смысле, уже установлена) > Как насчёт %set_python_version по примеру autoconf/automake/libtool? > Тогда /usr/bin/python из python-common запустит требуемую версию > или контролируемый альтернативами /usr/bin/python-default. > > Этот же трюк позволит избавиться от --with-pythonXY и таинственного > макроса setup_python_module: тем, кто захочет зафиксировать версию > python в своей сборке, достаточно будет вставить > %set_python_version X.Y в spec Нет. В спеке НЕ НУЖНО указывать версию питона, потому что в итоге хотелось добиться возможности сборки модуля под требуемую версию питона МИНИМАЛЬНЫМИ телодвижениями > > У меня есть идея оформить стандартные действия при инсталляции макросами, > > аналогичными %perl_vendor_build/%perl_vendor_install, которые бы покрывали > > основные нужды сборщиков (при использовании distutils). Вероятно, сегодня > > ближе к вечеру это будет сделано. Скорее всего, по умолчанию будут > > паковаться только .pyo, но, надеюсь :-), будет возможность, во-первых, > > собрать [отдельный] пакет с .py, а, во-вторых, переключиться на > > использование .pyc. > > Достаточно определить макрос для уровня оптимизации, %python_optlevel, > и использовать его в опции --optimize (с разумным fallback'ом). Не только. Нужно еще понять, выделять ли в отдельный пакет (автоматически, разумеется) .py. > > в данной схеме есть один, как мне кажется, недочет. Если некто > > пересобирает модуль вида pythonXY-pyModule-K.L.M-altN.src.rpm, не > > указывая --with pythonXY, то на выходе он получает модуль, привязанный к > > ТЕКУЩЕЙ версии питона, а не к версии X.Y. Имена и зависимости пакетов > > изменяются соответственно (то есть, будет > > python-pyModule-K.L.M-altN.i586.rpm, зависящий от python, запускаемого > > как /usr/bin/python). > Мне кажется, бинарный пакет с модулем должен всегда быть привязан > к конкретной версии python ABI, коль скоро он содержит байт-код > под этот ABI. Да, конечно. На самом деле, "...зависящий от python,запускаемого..." стоит переписать как "... зависящий от python, который запускался в момент сборки пакета как /usr/bin/python". > Точно так же, нет смысла в общем имени каталога /usr/lib/python Есть. Для исходников (.py). Они НЕ БУДУТ использоваться напрямую, а просто для "напосмотреть". > > %build > > mkdir -p buildroot > > > > # Unfortunately build and install steps should be done at once > > # because otherwise .pyo files won't get into INSTALLED_FILES > > # record > > > > CFLAGS="%optflags" %__python setup.py \ > > install --optimize=2 \ > > --root=`pwd`/buildroot \ > > --record=INSTALLED_FILES > > %install > > > > cp -pr buildroot %buildroot/ > Не увидел проблем при использовании обычной схемы: Ну, это место я еще не оптимизировал. К тому же, я игрался на 2.2, там, помнится, что-то странное происходило в этом месте. Ну и, я пока не понял, как отнести управляемую байт-компиляцию в %build stage. > %build > CFLAGS="$RPM_OPT_FLAGS" python setup.py build > > %install > python setup.py install \ > --optimize=%python_optlevel \ > --root=$RPM_BUILD_ROOT \ > --record=INSTALLED_FILES Ну и не python, а %__python, все-таки. > .pyo и .pyc исправно попадают в INSTALLED_FILES. > Проверял, правда, только на 2.3. Да, там все нормально. > P.S. Залил в Sisyphus python-doc версии 2.3.3. Было бы неплохо, если > бы maintainer Python своевременно обновлял также и этот пакет. > Там можно прочитать о хорошем способе генерации начального .spec > для модуля: > python setup.py bdist_rpm --spec-only Посмотрите на libAltDist :-) > Я думаю, об этом стоит написать в HOWTO. > А может быть, даже подправить шаблон для .spec'а для того, чтобы > он получался сразу готовым к употреблению. Уже подправили. Только мне не очень понравилось качество кодирования. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2004-02-22 0:05 UTC|newest] Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top 2004-02-20 12:00 Mikhail Zabaluev 2004-02-20 12:04 ` Klimchev Konstantin 2004-02-20 13:45 ` Andrey Orlov 2004-02-21 11:37 ` Alexey Morozov 2004-02-21 18:25 ` Mikhail Zabaluev 2004-02-21 19:14 ` Dmitry V. Levin 2004-02-22 0:26 ` Alexey Morozov 2004-02-22 19:59 ` [devel] " Mikhail Zabaluev 2004-02-22 20:15 ` Andrey Orlov 2004-02-23 22:58 ` Mikhail Zabaluev 2004-02-23 1:20 ` Alexey Morozov 2004-02-23 23:05 ` Mikhail Zabaluev 2004-02-22 0:05 ` Alexey Morozov [this message] 2004-02-22 22:05 ` Mikhail Zabaluev 2004-02-23 0:46 ` Alexey Morozov 2004-02-23 6:19 ` Andrey Orlov 2004-02-23 23:12 ` Mikhail Zabaluev 2004-02-24 7:28 ` Andrey Orlov 2004-02-23 23:16 ` Mikhail Zabaluev 2004-02-24 10:53 ` Michael Shigorin 2004-02-22 7:18 ` [devel] " Andrey Orlov 2004-02-22 13:39 ` Andrey Orlov 2004-02-22 13:40 ` Andrey Orlov 2004-02-22 16:20 ` Andrey Orlov 2004-02-22 17:58 ` [devel] [JT] " Michael Shigorin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20040222000500.GB15706@localhost.localdomain \ --to=alex-altlinux@idisys.iae.nsk.su \ --cc=cray@neural.ru \ --cc=devel@altlinux.ru \ --cc=mhz@altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git