Для /usr/bin/maliit-exampleapp-gtk3-python.py успешно цепляется зависомость на python2.7(gi), а для аналогичного "from gi.repository import" из Python3-скрипта /usr/bin/maliit-exampleapp-settings-python3.py на цепляется python3.2(gi). Сейчас скрипт в пакете maliit-framework-examples, но скоро переместится в maliit-framework-settings.
Workaround: %add_python3_path %_bindir Не понимаю, почему %_bindir нет в %_python3_path по умолчанию. Наверное забыли. Ещё меньше понимаю, почему фильтрацией путей занимается python3.req.py, а не python3.req.files.
(In reply to comment #1) > Workaround: > > %add_python3_path %_bindir > > Не понимаю, почему %_bindir нет в %_python3_path по умолчанию. Наверное забыли. > > Ещё меньше понимаю, почему фильтрацией путей занимается python3.req.py, а не > python3.req.files. По идее, %_python3_path не нужен, python3.req.py должен обрабатывать все, что к нему приехало. Эх, автора бы спросить...
(В ответ на комментарий №2) ... > По идее, %_python3_path не нужен, python3.req.py должен обрабатывать все, что к > нему приехало. Эх, автора бы спросить... При отладке картина вообще странная: После python3.req.files, python3.req.py (через python3.req) передаётся только один файл (только строка "/usr/src/tmp/maliit-framework-buildroot/usr/bin/maliit-exampleapp-settings-python3.py"). Но в переменную files (куда должен попадать весь in, если я правельно понял код) данная строка не попадает! Содержимое files, формируется так: files = sys.argv[1:] or [ x.strip() for x in sys.stdin.readlines() ] files = [p for p in files if is_python3(os.path.abspath(p))]
(В ответ на комментарий №3) ... > При отладке картина вообще странная: После python3.req.files, python3.req.py > (через python3.req) передаётся только один файл (только строка > "/usr/src/tmp/maliit-framework-buildroot/usr/bin/maliit-exampleapp-settings-python3.py"). > Но в переменную files (куда должен попадать весь in, если я правельно понял > код) данная строка не попадает! Точнее: > > Содержимое files, формируется так: > > files = sys.argv[1:] or [ x.strip() for x in sys.stdin.readlines() ] Здесь, есть. > files = [p for p in files if is_python3(os.path.abspath(p))] А здесь -- уже нет.
> > files = sys.argv[1:] or [ x.strip() for x in sys.stdin.readlines() ] > > Здесь, есть. Видимо потому, что читаем из stdin всё, без проверки условий. > > > files = [p for p in files if is_python3(os.path.abspath(p))] > > А здесь -- уже нет. Ну тут уже есть ограничения в виде условия is_python3. А ещё странный p перед for. Я не являюсь носителем питоньего языка, но кажется, что эта конструкция может заносить в итоговый список ровно один элемент, нет?
(В ответ на комментарий №5) > > > files = sys.argv[1:] or [ x.strip() for x in sys.stdin.readlines() ] > > > > Здесь, есть. > > Видимо потому, что читаем из stdin всё, без проверки условий. У меня ляп был при отладке -- был уверен что сюда ничего не попадает. > > > > > > files = [p for p in files if is_python3(os.path.abspath(p))] > > > > А здесь -- уже нет. > > Ну тут уже есть ограничения в виде условия is_python3. А ещё странный p перед > for. Я не являюсь носителем питоньего языка, но кажется, что эта конструкция > может заносить в итоговый список ровно один элемент, нет? Это один из способов записи цикла для обработки всего списка. Т. е. данная конструкция -- фильтр: оставляет только строки для которых is_python3(os.path.abspath(p)) истина. (В ответ на комментарий №1) ... > Ещё меньше понимаю, почему фильтрацией путей занимается python3.req.py, а не > python3.req.files. Похоже, что это связано с тем, что python скрипты тоже попадают на вход python3.req.py (при отладке наблюдаю на входе "/usr/src/tmp/maliit-framework-buildroot/usr/bin/maliit-exampleapp-gtk3-python.py"). Возможно это попытка убрать их... Где сдеь причина, а где следствие и к чему приведёт закрутка гаек у python3.req.files -- ещё не разобрался.
Try rpm-build-python3 commit 0.1.5-alt1-4-g33f386f.
rpm-build-python3-0.1.6-alt1 -> sisyphus: * Sat Apr 06 2013 Dmitry V. Levin <ldv@altlinux> 0.1.6-alt1 - python3.{prov,req}.files: + skip files of type "python script text executable"; + enhanced "python3 script text executable" type check; + added is_python3_path check from python3.{prov,req}.py, which is now applied only to files of uncertain type. - python3.{prov,req}.py: removed is_python3 check (closes: #28762).
Теперь правильно цепляет зависимости при плюрализме в одном пакете.