[devel] sisyphus_check, сборка с python2.7 (Re: [#165052] FAILED syslog-ng.git=3.7.3-alt1)

Ivan Zakharyaschev imz на altlinux.org
Ср Май 25 01:41:47 MSK 2016


On Wed, 25 May 2016, Sergey Y. Afonin wrote:

> On Wednesday 25 May 2016, Girar Builder awaiter robot wrote:
>
>> #100 build 3.7.3-alt1 from /people/asy/packages/syslog-ng.git
>> 2016-May-24 21:36:22 :: [x86_64] #100 syslog-ng.git 3.7.3-alt1: build start
>> /.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.
>> 2016-May-24 21:39:57 :: [x86_64] syslog-ng.git 3.7.3-alt1: remote: build failed
> 
> А почему invalid x86_64 python module path ? Этот syslogng-1.0-py2.7.egg-info
> вполне себе текстовый. Паковать пытаюсь таким образом:
>
> %python_sitelibdir_noarch/syslogng-1.0-py2.7.egg-info

Может быть, в 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 "$rpm_arch" in
 		noarch|i?86|pentium*|athlon*)
 			bad_dirs='/usr/lib64/python[23]([.][0-9])?/site-packages/' ;;
 		x86_64|amd64)
 			noarch_pattern='^d[^ ]+ /usr/lib/python[23]([.][0-9])?/site-packages/|^-[^ ]+ /usr/lib/python[23]([.][0-9])?/site-packages/.*\.py([co])?$'
 			bad_dirs='/usr/lib/python[23]([.][0-9])?/site-packages/' ;;
 	esac

 	local bad_files=
 	if [ -n "$bad_dirs" ]; then
 		bad_files="$(printf %s "$rpm_perms_filenames" |
 			     egrep "^[^ ]+ $bad_dirs" ||:)"
 	fi
 	if [ -n "$bad_files" -a -n "$noarch_pattern" ]; then
 		bad_files="$(printf %s "$bad_files" |
 			     egrep -v "$noarch_pattern" ||:)"
 	fi
 	if [ -n "$bad_files" ]; then
 		bad_files="$(printf %s "$bad_files" |cut -d' ' -f2-)"
 		FileError "invalid $rpm_arch python module path: $(oneliner "$bad_files" |fmt -w 128 |head -n1)" "$f"
 		rc=1
 	fi


-- 
Best regards,
Ivan


Подробная информация о списке рассылки Devel