ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] I: autoreqs in %_python3_path vs %_python3_compile_include
@ 2016-05-08 14:51 Ivan Zakharyaschev
  2016-05-08 15:23 ` Ivan Zakharyaschev
    0 siblings, 2 replies; 8+ messages in thread
From: Ivan Zakharyaschev @ 2016-05-08 14:51 UTC (permalink / raw)
  To: devel; +Cc: aris

[-- Attachment #1: Type: text/plain, Size: 15015 bytes --]

Кортко мои рекомендайии сейчас такие:

Чтобы включить Python3 в нестандартных местах, добавляйте его в 
%_python3_path .

Чтобы отключить автокомпиляцию, добавляйте путь в 
%_python3_compile_exclude .

Чтобы отключить автопоиск зависимостей (или Provides), есть 
(соответственно) %_findreq_skiplist (или %_findprov_skiplist).

А %_python3_compile_include более внутренняя вещь, использовать не 
рекомендуется. Разница по сравнению с %_python3_path будет теперь в том, 
что питоновские автозависимости там не будут искаться. (Если нет других 
причин для этого, например, это не %_python3_path.)

Пример использования в python3.spec -- 
http://git.altlinux.org/people/imz/packages/python3.git?p=python3.git;a=blob;f=python3.spec;h=9d5b6d9ba34f2a810e4ad51c9c0d127708439a79;hb=HEAD#l109 
:

%add_python3_path %pylibdir
%add_python3_compile_exclude %pylibdir

нестандартный путь (не site-packages), но пусть сам python3 при сборке 
компилирует как хочет, мы не будем перекомпилировать.

http://git.altlinux.org/people/imz/packages/python3.git?p=python3.git;a=blob;f=python3.spec;h=9d5b6d9ba34f2a810e4ad51c9c0d127708439a79;hb=HEAD#l800 
:

# Skip the 2to3 test data (which might contain Python2 code)
%global lib2to3_tests %pylibdir/lib2to3/tests
%add_python3_compile_exclude %lib2to3_tests/data
%add_findreq_skiplist %lib2to3_tests/data/*
%add_findprov_skiplist %lib2to3_tests/data/*

(%add_python3_compile_exclude тут, конечно, эффекта не имеет, потому что 
есть глобальный exclude, но его могло бы и не быть.)

На примере gedit:

(Ещё одно пояснение: множества рядом с питоновскими завсимостями -- это 
множество нестандартных путей, по которым разрешено удовлетворять 
зависимость; т.е. чем больше множество, тем в большем кол-ве мест 
разрешено её искать; если только стандартные пути разрешены, то < 0 . 
Если у Provides нет множество, оно сможет удовлетворить любую 
зависимость. Это модуль по стандартному пути. Если есть множество -- 
здесь, в случае Provides, на самом деле, из одного элемента -- то 
удовлетворить соотвтетствующий Requires с < 0 не сможет, а сможет, если 
только поппадёт в множество нестандартных разрешёёных у соотв. Requires 
путей.)

Теперь можно использовать %%_python3_path вместо 
%%_python3_compile_include -- 
http://git.altlinux.org/people/imz/packages/gedit.git?p=gedit.git;a=commitdiff;h=85f11c9e317be5f12f067a6c07b0978f94764bad 
(при попытке навести порядок с autoreqs/provs сделал отличие, что в 
%%_python3_path питоновские зависимости ищутся, а в 
%%_python3_compile_include -- нет. Раньше по ошибке была такая ситуация, 
что они искались абы как: какие-то файлы считались Python3, какие-то нет, 
довольно случайно. Т.е. у кого-то чего-то не хватало, и это устраивало. А 
эти две переменные имели одинаковый эффект. Теперь, когда файлов 
выбирается больше, предусмотрел вариант такой ручки для тех, у кого раньше 
что-то не находилось и так устраивало.) С gedit всё нормально с полным 
поиском, я проверил сборку и так, и так. Ещё там адаптации spec-а, чтобы 
gear мог собирать -- 
http://git.altlinux.org/people/imz/packages/gedit.git?p=gedit.git;a=log , 
если интересно.

Без изменения на %_python3_path теперь так:

[imz@basalt RPM.gedit_compile_include]$ for f in 
gedit-3.20.1-alt1.1.x86_64.rpm; do TERM=dumb compare_packages -a 
--requires  --  /ALT/Sisyphus/x86_64/RPMS.classic/"$f" -- "$f" ; done
WARNING: terminal is not fully functional
--- /tmp/.private/imz/compare_packages.VREbwSKoGU/1     2016-05-08 
17:16:54.561976829 +0300
+++ /tmp/.private/imz/compare_packages.VREbwSKoGU/2     2016-05-08 
17:16:54.570976784 +0300
@@ -28,26 +28,9 @@
  libpthread.so.0(GLIBC_2.2.5)(64bit)
  libxml2.so.2()(64bit) >= 
set:okF4idxwhMYlKufqO128vgLfSEGptPVPyDTbElmLK1puQ
  libxml2.so.2(LIBXML2_2.4.30)(64bit)
-python3(codecs)
-python3(fcntl)
-python3(fnmatch)
-python3(functools)
-python3(hashlib)
-python3(inspect)
-python3(locale)
-python3(platform)
-python3(re)
-python3(shutil)
-python3(signal)
-python3(string)
-python3(subprocess)
-python3(tempfile)
-python3(traceback)
-python3(weakref)
-python3(xml)
+python3(inspect) <= set:ed50
  python3.5-ABI(64bit)
  rpmlib(PayloadIsLzma)
-rpmlib(SetVersions)
  rtld(GNU_HASH)
  typelib(GLib)
  typelib(GObject)
[imz@basalt RPM.gedit_compile_include]$

С изменением на %_python3_path -- по-старому:

[imz@basalt RPMS.hasher]$ for f in gedit-3.20.1-alt1.1.x86_64.rpm; do 
TERM=dumb compare_packages -a --requires  -- 
/ALT/Sisyphus/x86_64/RPMS.classic/"$f" -- "$f" ; done
WARNING: terminal is not fully functional
--- /tmp/.private/imz/compare_packages.sldjeD9soJ/1     2016-05-08 
17:18:14.995541561 +0300
+++ /tmp/.private/imz/compare_packages.sldjeD9soJ/2     2016-05-08 
17:18:15.005541511 +0300
@@ -28,26 +28,25 @@
  libpthread.so.0(GLIBC_2.2.5)(64bit)
  libxml2.so.2()(64bit) >= 
set:okF4idxwhMYlKufqO128vgLfSEGptPVPyDTbElmLK1puQ
  libxml2.so.2(LIBXML2_2.4.30)(64bit)
-python3(codecs)
-python3(fcntl)
-python3(fnmatch)
-python3(functools)
-python3(hashlib)
-python3(inspect)
-python3(locale)
-python3(platform)
-python3(re)
-python3(shutil)
-python3(signal)
-python3(string)
-python3(subprocess)
-python3(tempfile)
-python3(traceback)
-python3(weakref)
-python3(xml)
+python3(codecs) <= set:fea00
+python3(fcntl) <= set:fea00
+python3(fnmatch) <= set:fea00
+python3(functools) <= set:fea00
+python3(hashlib) <= set:fea00
+python3(inspect) <= set:fea00
+python3(locale) <= set:fea00
+python3(platform) <= set:fea00
+python3(re) <= set:fea00
+python3(shutil) <= set:fea00
+python3(signal) <= set:fea00
+python3(string) <= set:fea00
+python3(subprocess) <= set:fea00
+python3(tempfile) <= set:fea00
+python3(traceback) <= set:fea00
+python3(weakref) <= set:fea00
+python3(xml) <= set:fea00
  python3.5-ABI(64bit)
  rpmlib(PayloadIsLzma)
-rpmlib(SetVersions)
  rtld(GNU_HASH)
  typelib(GLib)
  typelib(GObject)
[imz@basalt RPMS.hasher]$

Про Provides в нестандартных путях:

[imz@basalt RPMS.hasher]$ fgrep non-std  ~/wip/gedit/gear-hsh.excl.log.1
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/externaltools/__init__.py 
provides python3(externaltools) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/externaltools/appactivatable.py 
provides python3(externaltools.appactivatable) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/externaltools/capture.py 
provides python3(externaltools.capture) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/externaltools/filelookup.py 
provides python3(externaltools.filelookup) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/externaltools/functions.py 
provides python3(externaltools.functions) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/externaltools/library.py 
provides python3(externaltools.library) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/externaltools/linkparsing.py 
provides python3(externaltools.linkparsing) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/externaltools/manager.py 
provides python3(externaltools.manager) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/externaltools/outputpanel.py 
provides python3(externaltools.outputpanel) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/externaltools/windowactivatable.py 
provides python3(externaltools.windowactivatable) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/libdocinfo.so 
provides python3(libdocinfo) (under non-std path /usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/libfilebrowser.so 
provides python3(libfilebrowser) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/libmodelines.so 
provides python3(libmodelines) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/libsort.so provides 
python3(libsort) (under non-std path /usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/libspell.so provides 
python3(libspell) (under non-std path /usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/libtime.so provides 
python3(libtime) (under non-std path /usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/pythonconsole/__init__.py 
provides python3(pythonconsole) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/pythonconsole/config.py 
provides python3(pythonconsole.config) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/pythonconsole/console.py 
provides python3(pythonconsole.console) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/quickopen/__init__.py 
provides python3(quickopen) (under non-std path /usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/quickopen/popup.py 
provides python3(quickopen.popup) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/quickopen/virtualdirs.py 
provides python3(quickopen.virtualdirs) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/__init__.py 
provides python3(snippets) (under non-std path /usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/appactivatable.py 
provides python3(snippets.appactivatable) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/completion.py 
provides python3(snippets.completion) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/document.py 
provides python3(snippets.document) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/exporter.py 
provides python3(snippets.exporter) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/helper.py 
provides python3(snippets.helper) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/importer.py 
provides python3(snippets.importer) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/languagemanager.py 
provides python3(snippets.languagemanager) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/library.py 
provides python3(snippets.library) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/manager.py 
provides python3(snippets.manager) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/parser.py 
provides python3(snippets.parser) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/placeholder.py 
provides python3(snippets.placeholder) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/shareddata.py 
provides python3(snippets.shareddata) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/signals.py 
provides python3(snippets.signals) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/singleton.py 
provides python3(snippets.singleton) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/snippet.py 
provides python3(snippets.snippet) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/substitutionparser.py 
provides python3(snippets.substitutionparser) (under non-std path 
/usr/lib64/gedit/plugins)
/usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/snippets/windowactivatable.py 
provides python3(snippets.windowactivatable) (under non-std path 
/usr/lib64/gedit/plugins)
[imz@basalt RPMS.hasher]$ for f in gedit-3.20.1-alt1.1.x86_64.rpm; do 
TERM=dumb compare_packages -a --provides  -- 
/ALT/Sisyphus/x86_64/RPMS.classic/"$f" -- "$f" ; done
WARNING: terminal is not fully functional
--- /tmp/.private/imz/compare_packages.gyI8myKUIW/1     2016-05-08 
17:46:45.020000970 +0300
+++ /tmp/.private/imz/compare_packages.gyI8myKUIW/2     2016-05-08 
17:46:45.027000936 +0300
@@ -1,3 +1,43 @@
  gedit = 3.20.1-alt1.1
+python3(externaltools) = set:ed50
+python3(externaltools.appactivatable) = set:ed50
+python3(externaltools.capture) = set:ed50
+python3(externaltools.filelookup) = set:ed50
+python3(externaltools.functions) = set:ed50
+python3(externaltools.library) = set:ed50
+python3(externaltools.linkparsing) = set:ed50
+python3(externaltools.manager) = set:ed50
+python3(externaltools.outputpanel) = set:ed50
+python3(externaltools.windowactivatable) = set:ed50
  python3(gedit)
+python3(libdocinfo) = set:ed50
+python3(libfilebrowser) = set:ed50
+python3(libmodelines) = set:ed50
+python3(libsort) = set:ed50
+python3(libspell) = set:ed50
+python3(libtime) = set:ed50
+python3(pythonconsole) = set:ed50
+python3(pythonconsole.config) = set:ed50
+python3(pythonconsole.console) = set:ed50
+python3(quickopen) = set:ed50
+python3(quickopen.popup) = set:ed50
+python3(quickopen.virtualdirs) = set:ed50
+python3(snippets) = set:ed50
+python3(snippets.appactivatable) = set:ed50
+python3(snippets.completion) = set:ed50
+python3(snippets.document) = set:ed50
+python3(snippets.exporter) = set:ed50
+python3(snippets.helper) = set:ed50
+python3(snippets.importer) = set:ed50
+python3(snippets.languagemanager) = set:ed50
+python3(snippets.library) = set:ed50
+python3(snippets.manager) = set:ed50
+python3(snippets.parser) = set:ed50
+python3(snippets.placeholder) = set:ed50
+python3(snippets.shareddata) = set:ed50
+python3(snippets.signals) = set:ed50
+python3(snippets.singleton) = set:ed50
+python3(snippets.snippet) = set:ed50
+python3(snippets.substitutionparser) = set:ed50
+python3(snippets.windowactivatable) = set:ed50
  python3.3(gedit)
[imz@basalt RPMS.hasher]$

Может пригодиться. (Возникло на самом деле не столько из желания иметь 
такую фичу, а из необходимости навести порядок со списком файлов, в 
которых ищутся авто-Provides/Requires. Как я говорил, оно было абы как: 
большая часть файлов не попадала, потому что считалась Python2, при этом 
часть из нестандартных путей всё равно могла попасть. Так что если их 
оставлять при более тщательном обширном составлении списка, то их надо 
было как-то специально оформить, чтобы они не обманывали тех, что 
использует только стандартные пути.)

-- 
Best regards,
Ivan

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] I: autoreqs in %_python3_path vs %_python3_compile_include
  2016-05-08 14:51 [devel] I: autoreqs in %_python3_path vs %_python3_compile_include Ivan Zakharyaschev
@ 2016-05-08 15:23 ` Ivan Zakharyaschev
    1 sibling, 0 replies; 8+ messages in thread
From: Ivan Zakharyaschev @ 2016-05-08 15:23 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 8433 bytes --]


On Sun, 8 May 2016, Ivan Zakharyaschev wrote:

> Кортко мои рекомендайии сейчас такие:
>
> Чтобы включить Python3 в нестандартных местах, добавляйте его в 
> %_python3_path .
>
> Чтобы отключить автокомпиляцию, добавляйте путь в %_python3_compile_exclude .
>
> Чтобы отключить автопоиск зависимостей (или Provides), есть (соответственно) 
> %_findreq_skiplist (или %_findprov_skiplist).
>
> А %_python3_compile_include более внутренняя вещь, использовать не 
> рекомендуется. Разница по сравнению с %_python3_path будет теперь в том, что 
> питоновские автозависимости там не будут искаться. (Если нет других причин 
> для этого, например, это не %_python3_path.)

%_python3_compile_exclude из _include исключается (например, при 
обнаружении Provides, которых не жалко лишних досыпать, или зависимости на 
python3-ABI). Спасибо aris@ за сообщение об ошибке в этом коде, которая 
проявилась при сборке gedit. (Мало кто из пакетов пользуется 
%_python3_compile_include.)

> На примере gedit:
>
> (Ещё одно пояснение: множества рядом с питоновскими завсимостями -- это 
> множество нестандартных путей, по которым разрешено удовлетворять 
> зависимость; т.е. чем больше множество, тем в большем кол-ве мест разрешено 
> её искать; если только стандартные пути разрешены, то < 0 . Если у Provides 
> нет множество, оно сможет удовлетворить любую зависимость. Это модуль по 
> стандартному пути. Если есть множество -- здесь, в случае Provides, на самом 
> деле, из одного элемента -- то удовлетворить соотвтетствующий Requires с < 0 
> не сможет, а сможет, если только поппадёт в множество нестандартных 
> разрешёёных у соотв. Requires путей.)

Так что в отличие от версий тут непривычно то, что меньшее множество у 
Provides круче -- может удовлетворить больше требований. (Обычно большая 
версия круче и может удовлетворить больше требований.) Развернуть знаки и 
всю эту булеву алебру, конечно, возможно теоретически, но не очень 
понятно, как бы мы тогда записывали самый крутой элемент. Сейчас просто по 
смыслу это минимальное, т.е. пустое, множество. И его изобразить по смыслу 
в Requires, не меняя форму большинства стандартных Provides, было просто.

> Теперь можно использовать %%_python3_path вместо %%_python3_compile_include 
> -- 
> http://git.altlinux.org/people/imz/packages/gedit.git?p=gedit.git;a=commitdiff;h=85f11c9e317be5f12f067a6c07b0978f94764bad 
> (при попытке навести порядок с autoreqs/provs сделал отличие, что в 
> %%_python3_path питоновские зависимости ищутся, а в 
> %%_python3_compile_include -- нет. Раньше по ошибке была такая ситуация, что 
> они искались абы как: какие-то файлы считались Python3, какие-то нет, 
> довольно случайно. Т.е. у кого-то чего-то не хватало, и это устраивало. А эти 
> две переменные имели одинаковый эффект. Теперь, когда файлов выбирается 
> больше, предусмотрел вариант такой ручки для тех, у кого раньше что-то не 
> находилось и так устраивало.) С gedit всё нормально с полным поиском, я 
> проверил сборку и так, и так. Ещё там адаптации spec-а, чтобы gear мог 
> собирать -- 
> http://git.altlinux.org/people/imz/packages/gedit.git?p=gedit.git;a=log , 
> если интересно.

> С изменением на %_python3_path -- по-старому:
>
> [imz@basalt RPMS.hasher]$ for f in gedit-3.20.1-alt1.1.x86_64.rpm; do 
> TERM=dumb compare_packages -a --requires  -- 
> /ALT/Sisyphus/x86_64/RPMS.classic/"$f" -- "$f" ; done
> WARNING: terminal is not fully functional
> --- /tmp/.private/imz/compare_packages.sldjeD9soJ/1     2016-05-08 
> 17:18:14.995541561 +0300
> +++ /tmp/.private/imz/compare_packages.sldjeD9soJ/2     2016-05-08 
> 17:18:15.005541511 +0300
> @@ -28,26 +28,25 @@
>  libpthread.so.0(GLIBC_2.2.5)(64bit)
>  libxml2.so.2()(64bit) >= 
> set:okF4idxwhMYlKufqO128vgLfSEGptPVPyDTbElmLK1puQ
> libxml2.so.2(LIBXML2_2.4.30)(64bit)
> -python3(codecs)
> -python3(fcntl)
> -python3(fnmatch)
> -python3(functools)
> -python3(hashlib)
> -python3(inspect)
> -python3(locale)
> -python3(platform)
> -python3(re)
> -python3(shutil)
> -python3(signal)
> -python3(string)
> -python3(subprocess)
> -python3(tempfile)
> -python3(traceback)
> -python3(weakref)
> -python3(xml)
> +python3(codecs) <= set:fea00
> +python3(fcntl) <= set:fea00
> +python3(fnmatch) <= set:fea00
> +python3(functools) <= set:fea00
> +python3(hashlib) <= set:fea00
> +python3(inspect) <= set:fea00
> +python3(locale) <= set:fea00
> +python3(platform) <= set:fea00
> +python3(re) <= set:fea00
> +python3(shutil) <= set:fea00
> +python3(signal) <= set:fea00
> +python3(string) <= set:fea00
> +python3(subprocess) <= set:fea00
> +python3(tempfile) <= set:fea00
> +python3(traceback) <= set:fea00
> +python3(weakref) <= set:fea00
> +python3(xml) <= set:fea00
>  python3.5-ABI(64bit)
>  rpmlib(PayloadIsLzma)
> -rpmlib(SetVersions)
>  rtld(GNU_HASH)
>  typelib(GLib)
>  typelib(GObject)
> [imz@basalt RPMS.hasher]$

Обращает на себя внимание несовпадение вида ограничений у Requires и того, 
что у Provides. Стал проверять -- работает-то правильно, это равные 
множества:

$ /usr/lib/rpm/setcmp ed50 fea00
0
[imz@ovicaa ~]$ /usr/lib/rpm/setcmp fea00 ed50
0
$ echo /usr/lib64/gedit/plugins | /usr/lib/rpm/mkset 11
set:ed50
$ echo /usr/lib64/gedit/plugins | /usr/lib/rpm/mkset 12
set:fea00
$

Возможно, когда подсчитывается необходимое кол-во бит (по примеру 
lib.req), я не удаляю дубликаты в пути в одном из этих случаев. (Стоит 
поправить, но не критично.)

> Про Provides в нестандартных путях:
>
> [imz@basalt RPMS.hasher]$ fgrep non-std  ~/wip/gedit/gear-hsh.excl.log.1
> /usr/src/tmp/gedit-buildroot/usr/lib64/gedit/plugins/externaltools/__init__.py 
> provides python3(externaltools) (under non-std path /usr/lib64/gedit/plugins)

> [imz@basalt RPMS.hasher]$ for f in gedit-3.20.1-alt1.1.x86_64.rpm; do 
> TERM=dumb compare_packages -a --provides  -- 
> /ALT/Sisyphus/x86_64/RPMS.classic/"$f" -- "$f" ; done
> WARNING: terminal is not fully functional
> --- /tmp/.private/imz/compare_packages.gyI8myKUIW/1     2016-05-08 
> 17:46:45.020000970 +0300
> +++ /tmp/.private/imz/compare_packages.gyI8myKUIW/2     2016-05-08 
> 17:46:45.027000936 +0300
> @@ -1,3 +1,43 @@
> gedit = 3.20.1-alt1.1
> +python3(externaltools) = set:ed50
> +python3(externaltools.appactivatable) = set:ed50
> +python3(externaltools.capture) = set:ed50
> +python3(externaltools.filelookup) = set:ed50
> +python3(externaltools.functions) = set:ed50
> +python3(externaltools.library) = set:ed50
> +python3(externaltools.linkparsing) = set:ed50
> +python3(externaltools.manager) = set:ed50
> +python3(externaltools.outputpanel) = set:ed50
> +python3(externaltools.windowactivatable) = set:ed50
> python3(gedit)
> +python3(libdocinfo) = set:ed50
> +python3(libfilebrowser) = set:ed50
> +python3(libmodelines) = set:ed50
> +python3(libsort) = set:ed50
> +python3(libspell) = set:ed50
> +python3(libtime) = set:ed50
> +python3(pythonconsole) = set:ed50
> +python3(pythonconsole.config) = set:ed50
> +python3(pythonconsole.console) = set:ed50
> +python3(quickopen) = set:ed50
> +python3(quickopen.popup) = set:ed50
> +python3(quickopen.virtualdirs) = set:ed50
> +python3(snippets) = set:ed50
> +python3(snippets.appactivatable) = set:ed50
> +python3(snippets.completion) = set:ed50
> +python3(snippets.document) = set:ed50
> +python3(snippets.exporter) = set:ed50
> +python3(snippets.helper) = set:ed50
> +python3(snippets.importer) = set:ed50
> +python3(snippets.languagemanager) = set:ed50
> +python3(snippets.library) = set:ed50
> +python3(snippets.manager) = set:ed50
> +python3(snippets.parser) = set:ed50
> +python3(snippets.placeholder) = set:ed50
> +python3(snippets.shareddata) = set:ed50
> +python3(snippets.signals) = set:ed50
> +python3(snippets.singleton) = set:ed50
> +python3(snippets.snippet) = set:ed50
> +python3(snippets.substitutionparser) = set:ed50
> +python3(snippets.windowactivatable) = set:ed50
> python3.3(gedit)
> [imz@basalt RPMS.hasher]$
>
> Может пригодиться. (Возникло на самом деле не столько из желания иметь такую 
> фичу, а из необходимости навести порядок со списком файлов, в которых ищутся 
> авто-Provides/Requires. Как я говорил, оно было абы как: большая часть файлов 
> не попадала, потому что считалась Python2, при этом часть из нестандартных 
> путей всё равно могла попасть. Так что если их оставлять при более тщательном 
> обширном составлении списка, то их надо было как-то специально оформить, 
> чтобы они не обманывали тех, что использует только стандартные пути.)
>
> -- 
> Best regards,
> Ivan
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] I: autoreqs in %_python3_path vs %_python3_compile_include
  @ 2016-05-10 16:04   ` Ivan Zakharyaschev
  2016-05-10 16:09     ` Yuri N. Sedunov
  0 siblings, 1 reply; 8+ messages in thread
From: Ivan Zakharyaschev @ 2016-05-10 16:04 UTC (permalink / raw)
  To: Yuri N. Sedunov; +Cc: devel

[-- Attachment #1: Type: text/plain, Size: 1751 bytes --]


On Tue, 10 May 2016, Yuri N. Sedunov wrote:

> Результат применения python3_path в gedit.
>
> --- gedit-data-3.20.2-alt1.noarch.rpm.i586	2016-05-10
> 10:51:32.648426263 +0000
> +++ gedit-data-3.20.2-alt1.noarch.rpm.x86_64	2016-05-10
> 10:51:33.044423074 +0000
> @@ -1696,7 +1696,7 @@
>  Requires: python3  
> -Requires: python3(gi) <= set:fetH
> +Requires: python3(gi) <= set:fea00
>  Requires: rpmlib(SetVersions)  
> -Requires: python3(json) <= set:fetH
> -Requires: python3(os) <= set:fetH
> -Requires: python3(urllib) <= set:fetH
> +Requires: python3(json) <= set:fea00
> +Requires: python3(os) <= set:fea00
> +Requires: python3(urllib) <= set:fea00
>  Requires: sed  
> error (#1600): non-identical noarch packages

Придумал: эти множества дополнительных путей для удовлетворения 
найденных import-ов нужно будет добавлять только по желанию мейнтейнера. 
(Если какие-то выявленные при сборке зависимости должны будут 
удовлетворяться по нестандартным путям, то об этом можно будет сообщить 
RPM макросом вроде %allow_python3_import_path .) Сейчас соберу.

А если вдруг то, что напишут в %allow_python3_import_path , будет 
архитектурно-зависимым, а сам пакет -- noarch, то это станет головной 
болью мейнтейнера.

> 2016-May-10 10:52:06 :: noarch check FAILED
> 2016-May-10 10:52:06 :: task #164456 for sisyphus FAILED
>
>
>>
> -- 
> Yuri N. Sedunov
>
>

Best regards,
Ivan

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] I: autoreqs in %_python3_path vs %_python3_compile_include
  2016-05-10 16:04   ` Ivan Zakharyaschev
@ 2016-05-10 16:09     ` Yuri N. Sedunov
  2016-05-10 16:13       ` Ivan Zakharyaschev
  0 siblings, 1 reply; 8+ messages in thread
From: Yuri N. Sedunov @ 2016-05-10 16:09 UTC (permalink / raw)
  To: devel

В Вт, 10/05/2016 в 19:04 +0300, Ivan Zakharyaschev пишет:
> On Tue, 10 May 2016, Yuri N. Sedunov wrote:
> 
> > Результат применения python3_path в gedit.
> > 
> > --- gedit-data-3.20.2-alt1.noarch.rpm.i586	2016-05-10
> > 10:51:32.648426263 +0000
> > +++ gedit-data-3.20.2-alt1.noarch.rpm.x86_64	2016-05-10
> > 10:51:33.044423074 +0000
> > @@ -1696,7 +1696,7 @@
> >  Requires: python3  
> > -Requires: python3(gi) <= set:fetH
> > +Requires: python3(gi) <= set:fea00
> >  Requires: rpmlib(SetVersions)  
> > -Requires: python3(json) <= set:fetH
> > -Requires: python3(os) <= set:fetH
> > -Requires: python3(urllib) <= set:fetH
> > +Requires: python3(json) <= set:fea00
> > +Requires: python3(os) <= set:fea00
> > +Requires: python3(urllib) <= set:fea00
> >  Requires: sed  
> > error (#1600): non-identical noarch packages
> 
> Придумал: эти множества дополнительных путей для удовлетворения 
> найденных import-ов нужно будет добавлять только по желанию
> мейнтейнера. 
> (Если какие-то выявленные при сборке зависимости должны будут 
> удовлетворяться по нестандартным путям, то об этом можно будет
> сообщить 
> RPM макросом вроде %allow_python3_import_path .) Сейчас соберу.

Прям щас не надо ничего собирать. 

> 
> А если вдруг то, что напишут в %allow_python3_import_path , будет 
> архитектурно-зависимым, а сам пакет -- noarch, то это станет
> головной 
> болью мейнтейнера.
> 
> > 2016-May-10 10:52:06 :: noarch check FAILED
> > 2016-May-10 10:52:06 :: task #164456 for sisyphus FAILED
> > 
> > 
> > > 
> > -- 
> > Yuri N. Sedunov
> > 
> > 
> 
> Best regards,
> Ivan
> _______________________________________________
> Devel mailing list
> Devel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel
-- 
Yuri N. Sedunov


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] I: autoreqs in %_python3_path vs %_python3_compile_include
  2016-05-10 16:09     ` Yuri N. Sedunov
@ 2016-05-10 16:13       ` Ivan Zakharyaschev
  2016-05-10 16:19         ` Ivan Zakharyaschev
  0 siblings, 1 reply; 8+ messages in thread
From: Ivan Zakharyaschev @ 2016-05-10 16:13 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 221 bytes --]


On Tue, 10 May 2016, Yuri N. Sedunov wrote:

>> RPM макросом вроде %allow_python3_import_path .) Сейчас соберу.
>
> Прям щас не надо ничего собирать. 

Почему? У меня коммит готов. Из-за тормозов?

-- 
Best regards,
Ivan

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] I: autoreqs in %_python3_path vs %_python3_compile_include
  2016-05-10 16:13       ` Ivan Zakharyaschev
@ 2016-05-10 16:19         ` Ivan Zakharyaschev
  2016-05-10 16:26           ` Yuri N. Sedunov
  0 siblings, 1 reply; 8+ messages in thread
From: Ivan Zakharyaschev @ 2016-05-10 16:19 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 400 bytes --]


On Tue, 10 May 2016, Ivan Zakharyaschev wrote:

>
> On Tue, 10 May 2016, Yuri N. Sedunov wrote:
>
>> >  RPM макросом вроде %allow_python3_import_path .) Сейчас соберу.
>>
>>  Прям щас не надо ничего собирать. 
>
> Почему? У меня коммит готов. Из-за тормозов?

Давайте с обновлённым rpm-build-python3 соберём gedit, ничего менять в 
спеке не придётся. Боюсь пложения костылей.

-- 
Best regards,
Ivan

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] I: autoreqs in %_python3_path vs %_python3_compile_include
  2016-05-10 16:19         ` Ivan Zakharyaschev
@ 2016-05-10 16:26           ` Yuri N. Sedunov
  2016-05-10 16:34             ` Ivan Zakharyaschev
  0 siblings, 1 reply; 8+ messages in thread
From: Yuri N. Sedunov @ 2016-05-10 16:26 UTC (permalink / raw)
  To: devel

В Вт, 10/05/2016 в 19:19 +0300, Ivan Zakharyaschev пишет:
> On Tue, 10 May 2016, Ivan Zakharyaschev wrote:
> 
> > 
> > On Tue, 10 May 2016, Yuri N. Sedunov wrote:
> > 
> > > >  RPM макросом вроде %allow_python3_import_path .) Сейчас
> > > > соберу.
> > > 
> > >  Прям щас не надо ничего собирать. 
> > 
> > Почему? У меня коммит готов. Из-за тормозов?
> 
> Давайте с обновлённым rpm-build-python3 соберём gedit, ничего менять
> в 
> спеке не придётся. Боюсь пложения костылей.
> 

Давайте не будем запускать заново задание из нескольких десятков
пакетов, в котором нет gedit.

-- 
Yuri N. Sedunov


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] I: autoreqs in %_python3_path vs %_python3_compile_include
  2016-05-10 16:26           ` Yuri N. Sedunov
@ 2016-05-10 16:34             ` Ivan Zakharyaschev
  0 siblings, 0 replies; 8+ messages in thread
From: Ivan Zakharyaschev @ 2016-05-10 16:34 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 835 bytes --]


On Tue, 10 May 2016, Yuri N. Sedunov wrote:

> В Вт, 10/05/2016 в 19:19 +0300, Ivan Zakharyaschev пишет:
>> On Tue, 10 May 2016, Ivan Zakharyaschev wrote:
>> 
>> > 
>> > On Tue, 10 May 2016, Yuri N. Sedunov wrote:
>> > 
>> > > >  RPM макросом вроде %allow_python3_import_path .) Сейчас
>> > > > соберу.
>> > > 
>> > >  Прям щас не надо ничего собирать. 
>> > 
>> > Почему? У меня коммит готов. Из-за тормозов?
>> 
>> Давайте с обновлённым rpm-build-python3 соберём gedit, ничего менять
>> в 
>> спеке не придётся. Боюсь пложения костылей.
>>  
>
> Давайте не будем запускать заново задание из нескольких десятков
> пакетов, в котором нет gedit.

Ага, понял.

>
> -- 
> Yuri N. Sedunov
> _______________________________________________
> Devel mailing list
> Devel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-05-10 16:34 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-08 14:51 [devel] I: autoreqs in %_python3_path vs %_python3_compile_include Ivan Zakharyaschev
2016-05-08 15:23 ` Ivan Zakharyaschev
2016-05-10 16:04   ` Ivan Zakharyaschev
2016-05-10 16:09     ` Yuri N. Sedunov
2016-05-10 16:13       ` Ivan Zakharyaschev
2016-05-10 16:19         ` Ivan Zakharyaschev
2016-05-10 16:26           ` Yuri N. Sedunov
2016-05-10 16:34             ` Ivan Zakharyaschev

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git