[devel] rpm макросы и тулинг для сборки по pep517/518 (с pyproject.toml)

Stanislav Levin slev на altlinux.org
Пт Окт 8 17:00:58 MSK 2021



08.10.2021 15:38, Arseny Maslennikov пишет:
> On Fri, Oct 08, 2021 at 03:12:02PM +0300, Stanislav Levin wrote:
>>
>>
>> 07.10.2021 22:17, Антон Мидюков пишет:
>>> Здравствуйте
>>>
>>> У меня один питоновский пакет в новой версии перешёл на
>>> сборку из pyproject.toml [1] вместо setuptools. Никто ещё с таким не сталкивался?
>>> Смотрю в Fedora есть пакет с макросами для сборки таких пакетов.
>>> Называется pyproject-rpm-macros. У нас не планируется аналогичный пакет?
>>>
>>> 1. https://www.python.org/dev/peps/pep-0517/
>>>
>>
>>
>> Здравствуйте, не знаю занимается ли уже кто-нибудь этим в альте.
>>
>> Если в кратце, то.
>> Мир постепенно уходит сборочной монополии setuptools, благодаря pep517/518.
>> При этом инструменты, которыми пользуемся мы, py3_build/py3_install
>> обёртка над `python3 setup.py build/install --root` (последнее уже
>> deprecated).
>> То есть собрать python пакет без setup.py имеющимися макросами
>> невозможно. Предложенный универсальный вариант сборки(pep517), который
>> считается правильным:
>> - собираем wheel с хуками pep517
>> - устанавливаем wheel
>>
>> Федора использует для этого pip, который умеет в сборочные бэкенды.
> 
> Они запатчили или такой pip (и сами backends) есть в апстриме?
backend - это все, что может "собрать" пакет и соответствует интерфейсу
pep517, самые, наверное, известные setuptools(сейчас это сместь
фронтенд+бэкенд), flit, poetry.

frontend - то, чему можно сказать - иди собери/установи мне ххх по
pep517. Самые, наверное, известные pep517, build.

Какой backend указан в апстримовском pyproject.toml, тот и будет
использован, например:
```
[build-system]

requires = ["setuptools", "wheel"]

build-backend = "setuptools.build_meta"
```

Есть альтернатива не использовать pip или любой другой фронт для
сборки/установки пакетов(на мой взгляд, это перебор), а написать свой
фронтенд, который придется саппортить самостоятельно.
> 
>> Это, возможно, спорное решение.
>>
>> Что делать сейчас? Найти/сгенерировать setup.py. Например:
>> <...>
>> - самостоятельно сгенерировать setup.py
> 
> http://git.altlinux.org/gears/u/udisksdd.git?p=udisksdd.git;a=blob;f=.gear/udisksdd.spec;h=1aeae7ef09a8ca26e2390a44c5a5384410200d07;hb=4599dbee302168e95718e45423f6256c6de0ef2b#l40
> Для пакетов с тривиальной сборочной процедурой этого
> должно быть достаточно.
> Ну и:
> https://bugzilla.altlinux.org/show_bug.cgi?id=39907
>>
Для упаковки подавляющего большинства Python пакетов достаточно
переложить файлы/директории из одного места в другое, не городя никакие
"колеса". Проблемы (по утверждению авторов pep517) начинаются, когда,
например, собирается бинарный модуль для Python.

>> Процесс миграции начался не так давно(год, наверное), поэтому такие
>> пакеты сегодня достаточно редки, но всё же встречаются.
>>
> 
> 
> 
> 
>> _______________________________________________
>> Devel mailing list
>> Devel на lists.altlinux.org
>> https://lists.altlinux.org/mailman/listinfo/devel
> 
> 
> _______________________________________________
> Devel mailing list
> Devel на lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel
> 

----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : OpenPGP_signature
Тип     : application/pgp-signature
Размер  : 840 байтов
Описание: OpenPGP digital signature
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20211008/60a65554/attachment.bin>


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