Наступает эра python3 и от rpm-build-python, который неизбежно оказывается в сборочной системе, практически невозможно предохраниться. Необходимо иметь способ отключить rpm-build-python вообще, либо оторвать его от rpm-build.
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.