Bug 47206 - python3-module-zeitgeist2.0 приобретает unmet при пересборке
Summary: python3-module-zeitgeist2.0 приобретает unmet при пересборке
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rpm-build-python3 (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Ivan Zakharyaschev
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-08-11 17:01 MSK by Ivan A. Melnikov
Modified: 2023-08-15 13:19 MSK (History)
12 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ivan A. Melnikov 2023-08-11 17:01:43 MSK
При пересборке у python3-module-zeitgeist2.0 возникает зависимость на python3(datamodel), который никем не предоставляется:

https://git.altlinux.org/tasks/326944/logs/events.1.1.log

Это не даёт пересобрать zeitgeist под loongarch64.
Comment 1 Ivan A. Melnikov 2023-08-11 17:02:47 MSK
Похоже это из-за изменения поведения rpm-build-python3.
Comment 2 Yuri N. Sedunov 2023-08-11 17:07:55 MSK
(Ответ для Ivan A. Melnikov на комментарий #1)
> Похоже это из-за изменения поведения rpm-build-python3.

Наверняка, так.
Comment 3 Ivan Zakharyaschev 2023-08-15 02:22:26 MSK
Это справедливо, что автоматический обработчик такую зависимость видит (запущенный без подсказок).


Если взять код из пакета, попробовать импортировать как модуль, то эта зависимость не найдётся:

[imz@altair imz]$ p=python3-module-zeitgeist2.0; hsh --without-stuff --ini ~/hasher2 && hsh-install ~/hasher2/ "$p" tests-for-installed-python3-pkgs && hsh-run ~/hasher2/ --mount=/proc,/dev/pts -- bash -c "rpm -q $p; rpm -q $p --provides; echo 'Non-importable:'; /usr/lib/rpm/check-python3-provs-importable $p"
python3-module-zeitgeist2.0-1.0.4-alt1.noarch
python3(zeitgeist)
python3(zeitgeist._ontology)
python3(zeitgeist.client)
python3(zeitgeist.datamodel)
python3(zeitgeist.mimetypes)
python3-module-zeitgeist2.0 = 1.0.4-alt1:sisyphus+293446.100.1.1
Non-importable:
zeitgeist._ontology
zeitgeist.client
zeitgeist.mimetypes
[imz@altair imz]$ hsh-run ~/hasher2/ --mount=/proc,/dev/pts -- python3 -c 'import zeitgeist._ontology'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3/site-packages/zeitgeist/_ontology.py", line 4, in <module>
    Symbol('ACCEPT_EVENT', parent={'http://www.zeitgeist-project.com/ontologies/2010/01/27/zg#EventInterpretation'}, uri='http://www.zeitgeist-project.com/ontologies/2010/01/27/zg#AcceptEvent', display_name='ACCEPT_EVENT', doc='Event triggered when the user accepts a request of some sort. Examples could be answering a phone call, accepting a file transfer, or accepting a friendship request over an IM protocol. See also DenyEvent for when the user denies a similar request', auto_resolve=False)
    ^^^^^^
NameError: name 'Symbol' is not defined
[imz@altair imz]$ hsh-run ~/hasher2/ --mount=/proc,/dev/pts -- python3 -c 'import zeitgeist.client'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3/site-packages/zeitgeist/client.py", line 1100, in <module>
    _FIND_EVENTS_FOR_TEMPLATES_ARGS = inspect.getargspec(
                                      ^^^^^^^^^^^^^^^^^^
AttributeError: module 'inspect' has no attribute 'getargspec'. Did you mean: 'getargs'?
[imz@altair imz]$ hsh-run ~/hasher2/ --mount=/proc,/dev/pts -- python3 -c 'import zeitgeist.mimetypes'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3/site-packages/zeitgeist/mimetypes.py", line 24, in <module>
    from datamodel import Interpretation, Manifestation
ModuleNotFoundError: No module named 'datamodel'
[imz@altair imz]$ 


Ну там специфический код, который даже не загружается как модули, но разложен как модули в общедоступных местах. Можно было бы спрятать в другое место. (Предварительное замечание.)

Независимо от места, можно дать такие указания (с поправкой на новый путь, если оно будет туда спрятано), в таком духе (первое говорит, что есть модули по особому пути, второе разрешает удволетворять импорты по особому пути):

%add_python3_path /usr/lib/python3/site-packages/zeitgeist
%allow_python3_import_path /usr/lib/python3/site-packages/zeitgeist

или может новое указание (думаю, недавно было добавлено после отключения неточной обработки self-provides ради объезда таких всплывающих проблем):

%add_python3_self_prov_path /usr/lib/python3/site-packages/zeitgeist
Comment 4 Yuri N. Sedunov 2023-08-15 11:01:06 MSK
datamodel рядом лежит. Вот, если бы ваш rpm-build-python3 такие вещи ловил.

--- python/mimetypes.py.imp	2023-01-11 13:02:39.000000000 +0300
+++ python/mimetypes.py	2023-08-15 10:18:34.394845978 +0300
@@ -21,7 +21,7 @@
 
 import re
 
-from datamodel import Interpretation, Manifestation
+from zeitgeist.datamodel import Interpretation, Manifestation
 
 __all__ = [
     "get_interpretation_for_mimetype",
Comment 5 Repository Robot 2023-08-15 11:10:40 MSK
zeitgeist-1.0.4-alt2 -> sisyphus:

 Tue Aug 15 2023 Yuri N. Sedunov <aris@altlinux> 1.0.4-alt2
 - updated to v1.0.4-2-g33ab4cce
 - fixed build against newer rpm-build-python3 (ALT #47206)
Comment 6 Ivan Zakharyaschev 2023-08-15 13:19:05 MSK
(Ответ для Yuri N. Sedunov на комментарий #4)
> datamodel рядом лежит. Вот, если бы ваш rpm-build-python3 такие вещи ловил.

А что значит "ловил"? Он и поймал, в моём понимании. (Что ещё может быть нужно?)

Другой вопрос, являлся ли этот код неправильным или всё-таки так и было задумано и этот код мог бы в специфическом окружении работать...

> --- python/mimetypes.py.imp	2023-01-11 13:02:39.000000000 +0300
> +++ python/mimetypes.py	2023-08-15 10:18:34.394845978 +0300
> @@ -21,7 +21,7 @@
>  
>  import re
>  
> -from datamodel import Interpretation, Manifestation
> +from zeitgeist.datamodel import Interpretation, Manifestation
>  
>  __all__ = [
>      "get_interpretation_for_mimetype",