Bug 26728 - exclude noarch python files from check-python arch path
Summary: exclude noarch python files from check-python arch path
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: sisyphus_check (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Dmitry V. Levin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-12-19 03:21 MSK by viy
Modified: 2011-12-21 01:21 MSK (History)
8 users (show)

See Also:


Attachments
python-module-libhocr (426.64 KB, application/x-rpm)
2011-12-19 19:48 MSK, viy
no flags Details
python-module-libsmbios (938.45 KB, application/x-rpm)
2011-12-19 19:49 MSK, viy
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description viy 2011-12-19 03:21:51 MSK
libhocr installed noarch python files into /usr/lib/python2.7
and arch-dependent file as /usr/lib64/python2.7/site-packages/_hocr.so
there is nothing wrong for python module having both arch-independent and arch dependent parts, so sisyphus_check should not complain.

$ find /usr/src/tmp/libhocr-buildroot/usr/lib*/py*
/usr/src/tmp/libhocr-buildroot/usr/lib/python2.7
/usr/src/tmp/libhocr-buildroot/usr/lib/python2.7/site-packages
/usr/src/tmp/libhocr-buildroot/usr/lib/python2.7/site-packages/hocr.pyo
/usr/src/tmp/libhocr-buildroot/usr/lib/python2.7/site-packages/hocr.pyc
/usr/src/tmp/libhocr-buildroot/usr/lib/python2.7/site-packages/hocr.py
/usr/src/tmp/libhocr-buildroot/usr/lib64/python2.7
/usr/src/tmp/libhocr-buildroot/usr/lib64/python2.7/site-packages
/usr/src/tmp/libhocr-buildroot/usr/lib64/python2.7/site-packages/_hocr.so

/.out/python-module-libhocr-0.10.17-alt1_9.x86_64.rpm: invalid x86_64 python module path: /usr/lib/python2.7/site-packages/hocr.py /usr/lib/python2.7/site-packages/hocr.pyc /usr/lib/python2.7/site-packages/hocr.pyo
sisyphus_check: check-python ERROR: python modules packaging violation
hsh-rebuild: libhocr-0.10.17-alt1_9.src.rpm: sisyphus_check failed.
hsh.log lines 1286-1303/1303 (END)
Comment 1 real@altlinux.org 2011-12-19 06:04:49 MSK
У меня были такие пакеты, заталкивание файлов *.py* в /usr/lib64/... решает проблему.
Comment 2 viy 2011-12-19 10:29:52 MSK
(В ответ на комментарий №1)
> У меня были такие пакеты, заталкивание файлов *.py* в /usr/lib64/... решает
> проблему.

это руками нужно делать, а хочется пакет собирать роботом :(
вопрос в том, что проблема искусственная, и создана некорректной реализацией самой указанной проверки.
Ведь файлы установлены корректно, это же не .so в /usr/lib.
Comment 3 Dmitry V. Levin 2011-12-19 10:32:57 MSK
Как отличить файлы, легально помещенные в /usr/lib/python2.7/, от файлов, помещенных туда по ошибке вместо /usr/lib64/python2.7/ ?
Comment 4 real@altlinux.org 2011-12-19 11:57:31 MSK
"Как отличить файлы, легально помещенные в /usr/lib/python2.7/, от файлов,
помещенных туда по ошибке вместо /usr/lib64/python2.7/ ?"

Мне тоже в голову ничего не идёт. На глаз можно, а вот робот вряд ли справится.
Comment 5 viy 2011-12-19 12:33:52 MSK
по расширению.
*.py, 
*.pyo, 
*.pyc, 
легальные,
все остальное -- нелегально
Comment 6 real@altlinux.org 2011-12-19 12:45:45 MSK
Разве *.pyo легален уже? :)
Comment 7 viy 2011-12-19 12:52:15 MSK
(В ответ на комментарий №5)
> по расширению. *.py, *.pyo, *.pyc, легальные,
> все остальное -- нелегально

или, вместо исключения на noarch files, добавить правило на отсутствие blobs
`file` !~ / ELF /: 

в крайнем случае правило на рсширение. почти все блобы - *.so,
но в rpmquery -l -p python-module-* 
попался /usr/lib64/python2.7/site-packages/Ft/Lib/DistExt/stubmain.exe
Comment 8 viy 2011-12-19 12:56:52 MSK
(В ответ на комментарий №6)
> Разве *.pyo легален уже? :)

Чесно говоря, не знаю, не понимаю.
Немного офтопик, про *.pyo, но хотелось бы разобраться.
я хочу научить робота корректно конвертировать python-* модули,
но наше текущее python policy непонятно где и какое.
Comment 9 real@altlinux.org 2011-12-19 13:00:14 MSK
Похоже, до сих пор никому это полиси так и не понадобилось сильно, что до сих пор
его и не существует ;)
Comment 10 viy 2011-12-19 13:01:49 MSK
(В ответ на комментарий №8)
> > Разве *.pyo легален уже? :)
> Чесно говоря, не знаю, не понимаю.
> Немного офтопик, про *.pyo, но хотелось бы разобраться.
> я хочу научить робота корректно конвертировать python-* модули,
> но наше текущее python policy непонятно где и какое.

т.е. приложение установило *.py файл. 
1) надо ли этот файл компилировать на стадии install?
2) если надо, то кто это делает штатно?
3) что из откомпилированного упаковывать?
Comment 11 viy 2011-12-19 13:06:12 MSK
думаю, что тема с *.pyo/*.pyc несколько офтопик в этом баге, 
стоит наверное в devel@ перенести.

(В ответ на комментарий №9)
> Похоже, до сих пор никому это полиси так и не понадобилось сильно, что до сих
> пор его и не существует ;)

вот народ вроде меня и пакует что попало, как попало, где попало, 
потому что нет полиси, которое его бы просвещало.
например, я бы с удовольствием узнал бы, какими граблями чревата упаковка *.pyc.
Comment 12 viy 2011-12-19 13:09:06 MSK
(В ответ на комментарий №10)
> т.е. приложение установило *.py файл. 
> 1) надо ли этот файл компилировать на стадии install?
> 2) если надо, то кто это делает штатно?
> 3) что из откомпилированного упаковывать?

на самом деле, очень полезно было бы обсудить, понять и решить.
те же *.pyc файлы. если с ними грабли --
надо их удалять принудительно еще на стадии %install в brp-fix=python.
Comment 13 real@altlinux.org 2011-12-19 13:13:12 MSK
"вот народ вроде меня и пакует что попало, как попало, где попало, 
потому что нет полиси"

Ну есть драфт, лично я им руководствуюсь. Писал не я, и там многое, наверно, уже поменять надо. Вот кто бы взялся за это...

PS. *.pyc ничем не чревато, в отличие от *.pyo (хотя я не на 100% уверен, что это так, глядя на python-module-pexpect).
Comment 14 real@altlinux.org 2011-12-19 13:13:49 MSK
"т.е. приложение установило *.py файл. 
1) надо ли этот файл компилировать на стадии install?"

Не надо, оно само после verify-elf компилируется.
Comment 15 viy 2011-12-19 13:16:37 MSK
(В ответ на комментарий №3)
> Как отличить файлы, легально помещенные в /usr/lib/python2.7/, от файлов,
> помещенных туда по ошибке вместо /usr/lib64/python2.7/ ?

можно ослабить проверку до `file $1` not match ' ELF '
Comment 16 viy 2011-12-19 13:18:09 MSK
(В ответ на комментарий №14)
> "т.е. приложение установило *.py файл. 
> 1) надо ли этот файл компилировать на стадии install?"
> Не надо, оно само после verify-elf компилируется.
спасибо, дальше разбираемся,
надо ли паковать 
1) *.pyo файлы
2) *.pyс файлы
?
Comment 17 real@altlinux.org 2011-12-19 13:21:03 MSK
В случае noarch *.pyo можно не паковать, для верности. Но лучше пусть выскажутся более просвещённые.
Comment 18 viy 2011-12-19 13:29:06 MSK
(В ответ на комментарий №17)
> В случае noarch *.pyo можно не паковать, для верности. Но лучше пусть
> выскажутся более просвещённые.

надо бы понять и разобраться - там много тонкостей.
я вот интересные грабли вытоптал.
когда-то я в hplip паковал только *.py файлы.
а некоторые пользователи в каких-то ситуациях пускали hplip-tools от рута.
при этом от рута создавали *.py[oc] файлы. Потом обновлялись и у них ничего не работало.
стал паковать все, чтобы такого не повторилось.
Comment 19 viy 2011-12-19 16:14:01 MSK
по поводу *.pyc / *.pyo и python-policy это отдельная тема,
не связанная напрямую с данным багом.

Данный баг о том, что sisyphus_check превышает свои полномочия, запрещая 
вместе с патологическими случаями и вполне разумную политику упаковки.
Более того, эта же проблема вылезла и в libsmbios, и как оказалось,
этот пакет родом из SuSE Build Factory. т.е. указанная схема упаковки 
(с раздельными noarch и arch частями) - это не выдумки федоры,
а распространенная дистрибутивная практика.

предлагаю ослабить проверку до проверки на отсутствие blobs,
т. е. для этих файлов в выводе file(1) не должно быть строки / ELF /.

Дмитрий, если дадите добро, готов подготовить патч.
Comment 20 Dmitry V. Levin 2011-12-19 16:18:11 MSK
(In reply to comment #19)
> предлагаю ослабить проверку до проверки на отсутствие blobs,
> т. е. для этих файлов в выводе file(1) не должно быть строки / ELF /.

как вы себе представляете применение file(1) в sisyphus_check?
Comment 21 Evgenii Terechkov 2011-12-19 16:22:26 MSK
2viy: PYTHONDONTWRITEBYTECODE=yes ?
Comment 22 viy 2011-12-19 16:27:55 MSK
(В ответ на комментарий №20)
> (In reply to comment #19)
> > предлагаю ослабить проверку до проверки на отсутствие blobs,
> > т. е. для этих файлов в выводе file(1) не должно быть строки / ELF /.
> как вы себе представляете применение file(1) в sisyphus_check?

Да, стормозил. Перепутал с repocop :)
тогда по расширениям -- разрешить *.py *.pyo *.pyc файлы
Comment 23 viy 2011-12-19 16:30:21 MSK
(В ответ на комментарий №21)
> 2viy: PYTHONDONTWRITEBYTECODE=yes ?

Спасибо! буду знать.

Вообще хорошо бы обновить полиси по питону...
пока руки не доходят сесть и разобраться.
не  так часто с питоном сталкиваюсь.
Comment 24 Dmitry V. Levin 2011-12-19 19:37:31 MSK
(In reply to comment #22)
> (В ответ на комментарий №20)
> > (In reply to comment #19)
> > > предлагаю ослабить проверку до проверки на отсутствие blobs,
> > > т. е. для этих файлов в выводе file(1) не должно быть строки / ELF /.
> > как вы себе представляете применение file(1) в sisyphus_check?
> 
> Да, стормозил. Перепутал с repocop :)
> тогда по расширениям -- разрешить *.py *.pyo *.pyc файлы

Хорошо.

Просьба каким-нибудь образом передать мне исходный код какого-нибудь пакета, на котором это изменение можно было бы проверить.
Comment 25 viy 2011-12-19 19:48:41 MSK
Created attachment 5268 [details]
python-module-libhocr
Comment 26 viy 2011-12-19 19:49:55 MSK
Created attachment 5269 [details]
python-module-libsmbios

прикладываю src.rpm пакеты
Comment 27 Repository Robot 2011-12-20 20:54:54 MSK
sisyphus_check-0.8.29-alt1 -> sisyphus:

* Tue Dec 20 2011 Dmitry V. Levin <ldv@altlinux> 0.8.29-alt1
- 220-check-python: allow packaging of *.py* files in the
  arch-independent site-packages directory on x86-64 (closes: #26728).
Comment 28 Dmitry V. Levin 2011-12-20 21:05:49 MSK
(In reply to comment #25)
> Created an attachment (id=5268) [details]
> python-module-libhocr

Должен признать, что с целью тестирования я был вынужден увидеть этот libhocr.spec, и он пробудил во мне самые отвратительные чувства.
Comment 29 viy 2011-12-20 23:59:25 MSK
(В ответ на комментарий №28)
Спасибо!
> Должен признать, что с целью тестирования я был вынужден увидеть этот
> libhocr.spec, и он пробудил во мне самые отвратительные чувства.
я в devel@ поднял эту тему.
Comment 30 viy 2011-12-21 00:09:24 MSK
еще в сборочнице надо обновить:
http://git.altlinux.org/tasks/60714/logs/events.1.1.log
2011-Dec-21 00:06:17 :: [x86_64] #100 libhocr-0.10.17-alt1_9.src.rpm: build OK
x86_64/rpms/python-module-libhocr-0.10.17-alt1_9.x86_64.rpm: invalid x86_64 python module path: /usr/lib/python2.7/site-packages/hocr.py /usr/lib/python2.7/site-packages/hocr.pyc /usr/lib/python2.7/site-packages/hocr.pyo
sisyphus_check: check-python ERROR: python modules packaging violation
2011-Dec-21 00:06:21 :: #100: libhocr-0.10.17-alt1_9.src.rpm: sisyphus_check FAILED
Comment 31 Dmitry V. Levin 2011-12-21 01:21:00 MSK
Обновил.