Bug 52903 - Поддержка генерации дефолтного pyproject.toml в pyproject-installer
Summary: Поддержка генерации дефолтного pyproject.toml в pyproject-installer
Status: ASSIGNED
Alias: None
Product: Branch p11
Classification: Unclassified
Component: rpm-macros-pyproject (show other bugs)
Version: unspecified
Hardware: x86_64 Linux
: P5 normal
Assignee: Stanislav Levin
QA Contact: qa-p11@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-02-02 03:46 MSK by Evgeny Sinelnikov
Modified: 2025-02-10 13:09 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Evgeny Sinelnikov 2025-02-02 03:46:33 MSK
В сизифе добавлена поддержка генерации pyproject.toml,
что позволяет сократить ресурсы необходимые для сопровождения
питоновских пакетов:

$ rpm -qa|grep pyproject
rpm-build-pyproject-0.0.9-alt1.noarch
rpm-macros-pyproject-0.0.9-alt1.noarch
python3-module-pyproject-installer-0.5.5-alt1.noarch

$ gear-rpm -ba
[...]
+ /usr/bin/python3 -m pyproject_installer deps --depsconfig /tmp/.private/sin/gear.TTTFVaX9/out/pyproject_deps.json sync metadata --verify
INFO     : Building metadata
INFO     : Building metadata with prepare_metadata_for_build_wheel
INFO     : Source tree: /home/sin/RPM/BUILD/alterator-entry-0.2.0
INFO     : Output dir: /tmp/.private/sin/tmpvnupok9_
INFO     : pyproject.toml was not found, using defaults
[...]

Хотелось бы получить аналогичный функционал в p11.
Comment 1 Evgeny Sinelnikov 2025-02-02 04:00:29 MSK
Попытка в лоб пересобрать пакеты rpm-build-pyproject и python3-module-pyproject-installer под p11 к успеху не приводит:

$ gear-rpm -ba
[...]
+ /usr/bin/python3 -m pyproject_installer deps --depsconfig /tmp/.private/sin/gear.xJyYGNi1/out/pyproject_deps.json sync metadata --verify
INFO     : Building metadata
INFO     : Building metadata with prepare_metadata_for_build_wheel
INFO     : Source tree: /home/sin/RPM/BUILD/alterator-entry-0.2.0
INFO     : Output dir: /tmp/.private/sin/tmp6uptnl_w
INFO     : pyproject.toml was not found, using defaults
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3/site-packages/pyproject_installer/__main__.py", line 607, in <module>
    main(sys.argv[1:])
  File "/usr/lib/python3/site-packages/pyproject_installer/__main__.py", line 603, in main
    args.main(args, parser)
  File "/usr/lib/python3/site-packages/pyproject_installer/__main__.py", line 76, in wrapped
    deps_command(action_name, args.depsconfig, **kwargs)
  File "/usr/lib/python3/site-packages/pyproject_installer/deps_cmd/_deps_command.py", line 6, in deps_command
    return getattr(config, action)(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/site-packages/pyproject_installer/deps_cmd/deps_config.py", line 193, in sync
    synced_deps = set(
                  ^^^^
  File "/usr/lib/python3/site-packages/pyproject_installer/deps_cmd/collectors/metadata.py", line 27, in collect
    metadata_filename = build_metadata(Path.cwd(), outdir=tmp_path)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/site-packages/pyproject_installer/build_cmd/_build.py", line 120, in build_metadata
    build_out_tmpdir(srcdir, hook, config, verbose) as (
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/contextlib.py", line 137, in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
  File "/usr/lib/python3/site-packages/pyproject_installer/build_cmd/_build.py", line 91, in build_out_tmpdir
    result = build(
             ^^^^^^
  File "/usr/lib/python3/site-packages/pyproject_installer/build_cmd/_build.py", line 49, in build
    hook_result = backend_hook(
                  ^^^^^^^^^^^^^
  File "/usr/lib/python3/site-packages/pyproject_installer/lib/build_backend.py", line 279, in backend_hook
    raise RuntimeError(err_msg) from None
RuntimeError: prepare_metadata_for_build_wheel failed

Captured stdout:

[...]

Captured stderr:

error: invalid command 'bdist_wheel'
[...]

Проблема возникает из-за того, что в пакете python3-module-pyproject-installer неявно используется модуль wheel.
Comment 2 Evgeny Sinelnikov 2025-02-02 04:33:00 MSK
Прошу ревью для данных сборок:
#372946 BUILDING #1 [locked] [test-only] p11 python3-module-pyproject-installer.git=0.5.5-alt3 rpm-build-pyproject.git=0.0.9-alt1
#372945 AWAITING #1 [test-only] sisyphus python3-module-pyproject-installer.git=0.5.5-alt3
Comment 3 Stanislav Levin 2025-02-03 12:31:16 MSK
(In reply to Evgeny Sinelnikov from comment #1)
> Попытка в лоб пересобрать пакеты rpm-build-pyproject и
> python3-module-pyproject-installer под p11 к успеху не приводит:
> 
> $ gear-rpm -ba
> [...]
> + /usr/bin/python3 -m pyproject_installer deps --depsconfig
> /tmp/.private/sin/gear.xJyYGNi1/out/pyproject_deps.json sync metadata
> --verify
> INFO     : Building metadata
> INFO     : Building metadata with prepare_metadata_for_build_wheel
> INFO     : Source tree: /home/sin/RPM/BUILD/alterator-entry-0.2.0
> INFO     : Output dir: /tmp/.private/sin/tmp6uptnl_w
> INFO     : pyproject.toml was not found, using defaults
> Traceback (most recent call last):
>   File "<frozen runpy>", line 198, in _run_module_as_main
>   File "<frozen runpy>", line 88, in _run_code
>   File "/usr/lib/python3/site-packages/pyproject_installer/__main__.py",
> line 607, in <module>
>     main(sys.argv[1:])
>   File "/usr/lib/python3/site-packages/pyproject_installer/__main__.py",
> line 603, in main
>     args.main(args, parser)
>   File "/usr/lib/python3/site-packages/pyproject_installer/__main__.py",
> line 76, in wrapped
>     deps_command(action_name, args.depsconfig, **kwargs)
>   File
> "/usr/lib/python3/site-packages/pyproject_installer/deps_cmd/_deps_command.
> py", line 6, in deps_command
>     return getattr(config, action)(**kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File
> "/usr/lib/python3/site-packages/pyproject_installer/deps_cmd/deps_config.py",
> line 193, in sync
>     synced_deps = set(
>                   ^^^^
>   File
> "/usr/lib/python3/site-packages/pyproject_installer/deps_cmd/collectors/
> metadata.py", line 27, in collect
>     metadata_filename = build_metadata(Path.cwd(), outdir=tmp_path)
>                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File
> "/usr/lib/python3/site-packages/pyproject_installer/build_cmd/_build.py",
> line 120, in build_metadata
>     build_out_tmpdir(srcdir, hook, config, verbose) as (
>     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib64/python3.12/contextlib.py", line 137, in __enter__
>     return next(self.gen)
>            ^^^^^^^^^^^^^^
>   File
> "/usr/lib/python3/site-packages/pyproject_installer/build_cmd/_build.py",
> line 91, in build_out_tmpdir
>     result = build(
>              ^^^^^^
>   File
> "/usr/lib/python3/site-packages/pyproject_installer/build_cmd/_build.py",
> line 49, in build
>     hook_result = backend_hook(
>                   ^^^^^^^^^^^^^
>   File
> "/usr/lib/python3/site-packages/pyproject_installer/lib/build_backend.py",
> line 279, in backend_hook
>     raise RuntimeError(err_msg) from None
> RuntimeError: prepare_metadata_for_build_wheel failed
> 
> Captured stdout:
> 
> [...]
> 
> Captured stderr:
> 
> error: invalid command 'bdist_wheel'
> [...]
> 
> Проблема возникает из-за того, что в пакете
> python3-module-pyproject-installer неявно используется модуль wheel.

pyproject-installer - это сборочный frontend, setuptools - это (в данном случае) сборочный backend. setuptools < 70.1.0 (p11) требуется wheel, который реализует команду bdist_wheel, setuptools >= 70.1.0 (sisyphus) не требуется wheel, потому что реализация этой команды была включена в setuptools.

То есть надо обновить setuptools в p11, что в свою очередь сопряжено с
https://bugzilla.altlinux.org/50996

Планируется обновить setuptools в p11, по срокам сориентировать не могу.