Summary: | способ выключить rpm-build-python | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Yuri N. Sedunov <aris> |
Component: | rpm-build | Assignee: | placeholder <placeholder> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | major | ||
Priority: | P3 | CC: | arseny, glebfm, imz, ldv, placeholder, real.altlinux.org, vt |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Yuri N. Sedunov
2013-02-26 19:26:06 MSK
python.{req,prov} отключается обычным nopython'ом. А весь rpm-build-python зачем отключать? (In reply to comment #1) > python.{req,prov} отключается обычным nopython'ом. > А весь rpm-build-python зачем отключать? Затем, что он лезет компилять и вычислять зависимости в python3-файлы. Нужен глобальный рубильник. (In reply to comment #2) > (In reply to comment #1) > > python.{req,prov} отключается обычным nopython'ом. > > А весь rpm-build-python зачем отключать? > > Затем, что он лезет компилять и вычислять зависимости в python3-файлы. Он вряд ли станет смотреть на python3-файлы, находящиеся в отведенных для них частях файловой системы. Есть пример, когда это работает неправильно? > Нужен глобальный рубильник. Напротив, автоматика должна работать сама. (In reply to comment #3) > (In reply to comment #2) > > (In reply to comment #1) > > > python.{req,prov} отключается обычным nopython'ом. > > > А весь rpm-build-python зачем отключать? > > > > Затем, что он лезет компилять и вычислять зависимости в python3-файлы. > > Он вряд ли станет смотреть на python3-файлы, находящиеся в отведенных для них > частях файловой системы. Есть пример, когда это работает неправильно? > Про отведенные места, разумеется, и речи нет. > > Нужен глобальный рубильник. > > Напротив, автоматика должна работать сама. Как в нештатных местах будет работать автоматика? (In reply to comment #4) > (In reply to comment #3) > > (In reply to comment #2) > > > (In reply to comment #1) > > > > python.{req,prov} отключается обычным nopython'ом. > > > > А весь rpm-build-python зачем отключать? > > > > > > Затем, что он лезет компилять и вычислять зависимости в python3-файлы. > > > > Он вряд ли станет смотреть на python3-файлы, находящиеся в отведенных для них > > частях файловой системы. Есть пример, когда это работает неправильно? > > > Про отведенные места, разумеется, и речи нет. > > > > Нужен глобальный рубильник. > > > > Напротив, автоматика должна работать сама. > > Как в нештатных местах будет работать автоматика? Для нештатных случаев есть рубильники вроде AutoReqProv: nopython и %define __python %nil Но если таких случаев перестанет быть мало, значит, надо автоматику совершенствовать. (In reply to comment #5) > > Для нештатных случаев есть рубильники вроде Таких "нештатных" ситуаций будет больше и больше. > AutoReqProv: nopython > и > %define __python %nil Эти два заклинания следует объединить в одно типа %nopython или %nopython2 -- на сейчас устроит. > Но если таких случаев перестанет быть мало, значит, надо автоматику > совершенствовать. (In reply to comment #6) > (In reply to comment #5) > > > > Для нештатных случаев есть рубильники вроде > Таких "нештатных" ситуаций будет больше и больше. Почему? Может, примеры есть какие-нибудь? (In reply to comment #7) > (In reply to comment #6) > > (In reply to comment #5) > > > > > > Для нештатных случаев есть рубильники вроде > > Таких "нештатных" ситуаций будет больше и больше. > > Почему? Может, примеры есть какие-нибудь? Вот, сейчас собираю новые gedit и gedit-plugins, -- штепсели, написанные на третьем питоне, разложены по папкам в /usr/lib/gedit. Следующий будет totem, видимо с такой же иерархией плагинов. rpm-build-python-0.36.2-alt1 -> sisyphus: * Sat Apr 06 2013 Dmitry V. Levin <ldv@altlinux> 0.36.2-alt1 - python.compileall.py: + removed python version <= 2.2 py_compile workaround; + fixed file executability check (by iv@). - python.{prov,req}.files: + enhanced "python script text executable" type check; + added is_python3_path check from python.{prov,req}.py, which is now applied only to files of uncertain type. - python.{prov,req}.py: removed is_python3 check. - brp-bytecompile_python: added $RPM_PYTHON3_COMPILE_INCLUDE to the exclude list (closes: #28606). (In reply to comment #6) > (In reply to comment #5) > > > > Для нештатных случаев есть рубильники вроде > Таких "нештатных" ситуаций будет больше и больше. > > > AutoReqProv: nopython > > и > > %define __python %nil > > Эти два заклинания следует объединить в одно типа %nopython или %nopython2 -- > на сейчас устроит. Недостаточно выключить один питон, надо ведь еще и включить на полную катушку другой питон. Не представляю себе ни интерфейса, ни реализации подобного трюка. > Вот, сейчас собираю новые gedit и gedit-plugins, -- штепсели, написанные на > третьем питоне, разложены по папкам в /usr/lib/gedit. Следующий будет totem, > видимо с такой же иерархией плагинов. С теми изменениями, которые сейчас в Сизифе, достаточно было бы написать: %add_python3_compile_include /usr/lib/gedit Этого достаточно, чтобы, с одной стороны, скрипты python2 утратили интерес к /usr/lib/gedit, и, с другой стороны, скрипты python3 сделали с /usr/lib/gedit все, что они считают нужным. Сейчас используется скрипт без этой фичи: [root@c253 ~]# rpm -qf /usr/lib/rpm/brp.d/072-bytecompile_python.brp rpm-build-4.0.4-alt100.88 [root@c253 ~]# fgrep -i python3 /usr/lib/rpm/brp.d/072-bytecompile_python.brp [root@c253 ~]# Так и задумано? Я так понимаю, для сборки gedit автоматику как-то насильно вырубили (ведь на эту фичи нельзя полагаться), потому что он даже не делает попытки компилировать python-ом (не 3): $ fgrep Bytecompiling /beehive/logs/Sisyphus-x86_64/latest/success/gedit-* /beehive/logs/Sisyphus-x86_64/latest/success/gedit-3.18.3-alt1:Bytecompiling python3 modules in /usr/src/tmp/gedit-buildroot using python3 /beehive/logs/Sisyphus-x86_64/latest/success/gedit-3.18.3-alt1:Bytecompiling python3 modules with optimization in /usr/src/tmp/gedit-buildroot using python3 -O /beehive/logs/Sisyphus-x86_64/latest/success/gedit-plugins-3.18.0-alt1:Bytecompiling python3 modules in /usr/src/tmp/gedit-plugins-buildroot using python3 /beehive/logs/Sisyphus-x86_64/latest/success/gedit-plugins-3.18.0-alt1:Bytecompiling python3 modules with optimization in /usr/src/tmp/gedit-plugins-buildroot using python3 -O /beehive/logs/Sisyphus-x86_64/latest/success/gedit-plugins-latex-3.4.1-alt1:Bytecompiling python modules in /usr/src/tmp/gedit-plugins-latex-buildroot using /usr/bin/python /beehive/logs/Sisyphus-x86_64/latest/success/gedit-plugins-latex-3.4.1-alt1:Bytecompiling python modules with optimization in /usr/src/tmp/gedit-plugins-latex-buildroot using /usr/bin/python -O Только для gedit-plugins-latex наоборот: там про python3 не знают. Зато python работает. (Тоже странно, что разные версии плагинов к одной программе...) Если бы не george@ полез смотреть скрипт у себя, я бы так и продолжил читать неактивную версию из rpm-build-python и не понимать, почему оно не действует. rpm-4.0.4-alt100.89 -> sisyphus: * Wed Mar 09 2016 Dmitry V. Levin <ldv@altlinux> 4.0.4-alt100.89 - brp-bytecompile_python: exclude paths listed in $RPM_PYTHON3_COMPILE_INCLUDE (ALT#28606). - ldd: pass --list to rtld. |