<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>32133</bug_id>
          
          <creation_ts>2016-05-25 09:04:10 +0300</creation_ts>
          <short_desc>[python] Используется архитектурозависимая приаязка для текстового файла egg-info</short_desc>
          <delta_ts>2016-05-26 17:38:11 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>sisyphus_check</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergey Y. Afonin">asy</reporter>
          <assigned_to name="Dmitry V. Levin">ldv</assigned_to>
          <cc>at</cc>
    
    <cc>george</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>ldv</cc>
    
    <cc>legion</cc>
    
    <cc>placeholder</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>156991</commentid>
    <comment_count>0</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2016-05-25 09:04:10 +0300</bug_when>
    <thetext>Не собирается новый syslog-ng (3.7). В спеке файл описывается так:
%python_sitelibdir_noarch/syslogng-1.0-py2.7.egg-info
При сборке не проходит проверка для x86_64

http://git.altlinux.org/tasks/165052/logs/events.1.1.log

/.out/syslog-ng-python-3.7.3-alt1.x86_64.rpm: invalid x86_64 python module path: /usr/lib/python2.7/site-packages/syslogng-1.0-py2.7.egg-info
sisyphus_check: check-python ERROR: python modules packaging violation
hsh-rebuild: pkg.tar: sisyphus_check failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156992</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2016-05-25 10:58:10 +0300</bug_when>
    <thetext>Ваше мнение о том, что можно пропускать внутри /usr/lib/ в x86_64 пакете?

https://lists.altlinux.org/pipermail/devel/2016-May/201463.html :

Может быть, в sisyphus_check недостаточно разумная проверка?.. Когда её 
писали, не знали про существование .egg-info?

Там на x86_64 сначала считаются плохими все файлы в /usr/lib/, потом это 
отменяется для .py[co] (потому что считается, что они 
архитектурно-независимы и имеют права лежат в общем месте). А .egg-info 
забыто? Разумно ли добавить? А что-то ещё тогда не нужно ли тоже добавить? 
Там и просто всякие README могут лежать.

Хотелось бы, чтобы те, кто практикуют упаковку питона, поделились мыслями 
на этот счёт (ещё лучше -- вместе с патчами на sisyphus_check, если такие 
изменения оправданы).

(Возможно, часть случаев, с которыми я сейчас массово борюсь, пряча их -- 
mv в spec-ах из /usr/lib в /usr/lib64, объясняется тем, что мейнтейнеры 
столкнулись с этой проверкой? У меня ещё есть подозрение, что всякие 
namespace-ы для чего-то вроде zope.чего-то-там не заработают, если они 
окажутся в разных физических директориях. Это было бы объяснением части 
случаев.)

 	local bad_dirs= noarch_pattern=
 	case &quot;$rpm_arch&quot; in
 		noarch|i?86|pentium*|athlon*)
 			bad_dirs=&apos;/usr/lib64/python[23]([.][0-9])?/site-packages/&apos; ;;
 		x86_64|amd64)
 			noarch_pattern=&apos;^d[^ ]+ /usr/lib/python[23]([.][0-9])?/site-packages/|^-[^ ]+ /usr/lib/python[23]([.][0-9])?/site-packages/.*\.py([co])?$&apos;
 			bad_dirs=&apos;/usr/lib/python[23]([.][0-9])?/site-packages/&apos; ;;
 	esac

 	local bad_files=
 	if [ -n &quot;$bad_dirs&quot; ]; then
 		bad_files=&quot;$(printf %s &quot;$rpm_perms_filenames&quot; |
 			     egrep &quot;^[^ ]+ $bad_dirs&quot; ||:)&quot;
 	fi
 	if [ -n &quot;$bad_files&quot; -a -n &quot;$noarch_pattern&quot; ]; then
 		bad_files=&quot;$(printf %s &quot;$bad_files&quot; |
 			     egrep -v &quot;$noarch_pattern&quot; ||:)&quot;
 	fi
 	if [ -n &quot;$bad_files&quot; ]; then
 		bad_files=&quot;$(printf %s &quot;$bad_files&quot; |cut -d&apos; &apos; -f2-)&quot;
 		FileError &quot;invalid $rpm_arch python module path: $(oneliner &quot;$bad_files&quot; |fmt -w 128 |head -n1)&quot; &quot;$f&quot;
 		rc=1
 	fi</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156999</commentid>
    <comment_count>2</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2016-05-25 15:49:02 +0300</bug_when>
    <thetext>(In reply to comment #1)

&gt; Ваше мнение о том, что можно пропускать внутри /usr/lib/ в x86_64 пакете?

Текстовые файлы, наверное. Но вот как их корректно определять... Если us-ascii, то понятно, но если начинаются национальные кодировки, или uft8, то могут, наверное, возникнуть проблемы.

&gt; Хотелось бы, чтобы те, кто практикуют упаковку питона, поделились мыслями 
&gt; на этот счёт (ещё лучше -- вместе с патчами на sisyphus_check, если такие 
&gt; изменения оправданы).

Честно говоря, я пытаюсь паковать компоненты пакетов на Питоне только тогда, когда они попападаются. У упомянутого syslog-ng 3.7 таковой компонент просто появился, а нужен ли он, я не знаю. Мне он пока, думаю, не очень нужен, хотя, вроде бы, это отладочный компонент для syslog-ng.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157004</commentid>
    <comment_count>3</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2016-05-25 16:50:31 +0300</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; 
&gt; &gt; Ваше мнение о том, что можно пропускать внутри /usr/lib/ в x86_64 пакете?

&gt; &gt; Хотелось бы, чтобы те, кто практикуют упаковку питона, поделились мыслями 
&gt; &gt; на этот счёт (ещё лучше -- вместе с патчами на sisyphus_check, если такие 
&gt; &gt; изменения оправданы).
&gt; 
&gt; Честно говоря, я пытаюсь паковать компоненты пакетов на Питоне только тогда,
&gt; когда они попападаются. У упомянутого syslog-ng 3.7 таковой компонент просто
&gt; появился, а нужен ли он, я не знаю. Мне он пока, думаю, не очень нужен, хотя,
&gt; вроде бы, это отладочный компонент для syslog-ng.

Пока policy не найдено, которое бы разрешило такие файлы, могу предложить запаковать всю питоновскую часть в настоящий noarch пакет (python?-module-NNNN). Вроде тогда честно и понятно: noarch он и есть noacrh.

(Это возможно. Например, [http://git.altlinux.org/gears/e/emacs24.git?p=emacs24.git;a=blob;f=.gear/emacs.spec;h=ac103c9f93e228e6a8fea17b2787e3ae2220ddc6;hb=HEAD#l230 emacs24-el] с Emacs Lisp собирается как noarch-подпакет вместе с другими архитектурно-зависимыми пакетами, в т.ч главным, из одного спека.)

Если главный пакет архитектурно-зависимый, придётся использовать %python{,3}_sitelibdir_noarch. (А если главный -- noarch, макрос переключился бы сам.) А, ну да. Это я лишнее пишу, у Вас уже так сделано.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157040</commentid>
    <comment_count>4</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2016-05-26 15:04:43 +0300</bug_when>
    <thetext>(In reply to comment #3)

&gt; могу предложить запаковать всю питоновскую часть в настоящий noarch пакет
&gt; (python?-module-NNNN). Вроде тогда честно и понятно: noarch он и есть noacrh.

/.out/python2.7-module-syslog-ng-debuggercli-3.7.3-alt1.noarch.rpm: package NAME should start with the &quot;python-module-&quot; prefix
sisyphus_check: check-python ERROR: python modules packaging violation

Решили python и python3 делать ?

В общем, собралось с noacrh python-module-syslog-ng-debuggercli, отправил в репозиторий.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157045</commentid>
    <comment_count>5</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2016-05-26 17:38:11 +0300</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; 
&gt; &gt; могу предложить запаковать всю питоновскую часть в настоящий noarch пакет
&gt; &gt; (python?-module-NNNN). Вроде тогда честно и понятно: noarch он и есть noacrh.
&gt; 
&gt; /.out/python2.7-module-syslog-ng-debuggercli-3.7.3-alt1.noarch.rpm: package
&gt; NAME should start with the &quot;python-module-&quot; prefix
&gt; sisyphus_check: check-python ERROR: python modules packaging violation
&gt; 
&gt; Решили python и python3 делать ?

Так сложилось (довольно давно).

&gt; В общем, собралось с noacrh python-module-syslog-ng-debuggercli, отправил в
&gt; репозиторий.

Хорошо!</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>