15.02.2013 15:54, Paul Wolneykien пишет: > 15.02.2013 15:43, Aleksey Avdeev пишет: >> 15.02.2013 12:53, Paul Wolneykien пишет: >>> 15.02.2013 06:37, Dmitry V. Levin пишет: >>>> On Fri, Feb 15, 2013 at 06:12:13AM +0400, Aleksey Avdeev wrote: >>>>> ... >>>>>> Здесь ничего сказать не могу: ещё не лазил на столько глубоко в эту >>>>>> кухню (если полезу -- гарантированно сорву заданные сроки). >>>> На мой взгляд, не отведав этой кухни, в пасть питону лучше не лезть. >>> >>> Лёша, что именно за кухня? Работа prov и req парсеров в RPM? Что-то >>> специфичное для Питона? Если перовое, то на altlinux.org или около него >>> должна быть какая-то документация, рекомендации по сборке пакетов. А >>> если второе, то лучше спрашивай напрямую у питоноводов. У того же peet@ >>> к примеру, -- полагаю, что он лазал питону не только в пасть... >> >> Работа prov и req парсеров в RPM применительно к python*. Проблема ещё >> в том, что я не знаю как запретить rpm`у удалять временные >> файлы/каталоги, созданные при сборке пакета (что упростит анализ работы >> парсеров). >> >> Беглый забег по скриптам rpm-build-python{,3} что: >> >> 1. python.{prov,req}.files спокойно пропускает через себя модули и >> бинарники относящиеся к python3 (=> они обрабатываются через >> /usr/bin/python). Фильтр отстреливает только скрипты с _явным_ указанием >> что это python3 (признаком "#! /usr/bin/python3"), но только в том >> случаи, если в системе установлен file >= 4.26-alt8 (file < 4.26-alt8 >> выделять скрипты python3 не умеет). >> >> 2. В python3.{prov,req}.files ситуация аналогична: он тоже пропускает >> файлы в расположенные в */python2.* (т. е. заведомо не относящиеся к >> python3 => обрабатывает их через /usr/bin/python3). >> >> 3. В python3.req жёстко прошито использование /usr/bin/python3 >> установленного в сборочной системе. => свежесобранный python3 для поиска >> зависимостей не используется. (В отличии от python.req, где >> использованный python можно задать через $RPM_PYTHON >> >> Суммируя: >> >> * Из-за пп. 1 и 2 ситуация когда при поиске зависимостей скрипт >> обрабатывается не тем python`ом > > Э… Это из-за старого file? Так его просто обновить нужно. Для сборки под Сизиф не критично -- там hasher новый file вытягивает. Это на t6/p6 рвануть может: python3 там есть, в отличии от поддерживающего его file. > >> (/usr/bin/python обрабатывает содержимое >> */python3.*, а /usr/bin/python3 -- содержимое */python2.*) у нас >> штатная. И мне непонятно почему она каждый раз не взрывается (возможно >> нас защищает порядок вызова парсеров). >> >> * П. 3 ситуацию тоже похоже портит, > > Т.е. python.req использует свежесобранный python2.x, а python3.req — > системный старый? Про python2.x не знаю (детально не разбирал его спек и используемые макросы), но что ручка для этого в python.req есть -- факт. А в т. к. в python3.req ручка для данной цели вообще отсутсвует, то он гарантировано не может использовать не системный python3 => использует системный (т. е. старый). > > 15.02.2013 05:42, Dmitry V. Levin пишет: >> При сборке питона скрипты питон.{req,prov} должны исполняться >> свежесобранным питоном. Насколько я помню, так всегда было, >> и вряд ли стоит менять полезную традицию. > > А кто автор python3.req? Может быть просто ошибка там? Я ещё не смотрел историю rpm-build-python3. (Полезу туда после серии экспериментов.) > >> вынуждая смотреть в сторону bootstrap`а. > > А как собиралась текущая версия python3? Посмотри по тегам в > /gears/p/python3.git. Если там был bootstrap, то видимо его и нужно > использовать. При запаковывании python3-3.2.2-alt1 он был (т. к. это первая версия python3 в Сизифе). python3-3.2.2-alt2 похоже его завершает, в зависимостях появился rpm-build-python3 и пересборка с ним отмечена в %changelog`е: Wed Dec 21 2011 Vitaly Kuznetsov 3.2.2-alt2 - rebuild with rpm-build-python3 - split up, rename subpackages Обновление до python3-3.2.3-alt1 (3.2.2 -> 3.2.3) прошло без bootstrap`а, но там не менялись %pynameabi (python32mu) с %pylibdir (%_libdir/python32) . Сейчас же я провожу обновление с 3.2.x на 3.3.x (3.2.3 -> 3.3.0) и у меня меняются: %pynameabi -- python32mu -> python33m %pylibdir -- %_libdir/python32 -> %_libdir/python33 -- С уважением. Алексей.