Что делают %pyproject_* макросы за кулисами
На этой странице
Понимание внутренней работы макросов поможет при отладке.
%pyproject_buildrequires
- Читает
pyproject.toml(илиsetup.cfg,setup.py) - Находит
[build-system] requires— зависимости для сборки - Находит runtime-зависимости проекта
- Выводит их в формате, понятном rpmbuild
- rpmbuild проверяет, что все установлены, и при необходимости запрашивает доустановку
%pyproject_wheel
- Вызывает
python3 -m build --wheel --no-isolation - Создает файл вроде
httpie-3.2.4-py3-none-any.whlв текущем каталоге - Wheel — это ZIP-архив с расширением
.whl, внутри — Python-файлы и метаданные
Имя wheel-файла httpie-3.2.4-py3-none-any.whl расшифровывается так:
py3— для Python 3none— нет ABI-зависимости (нет C-расширений)any— для любой платформы
%pyproject_install
- Берет созданный
.whlфайл - Устанавливает его в
%{buildroot}с помощью pip - Создает CLI-скрипты в
%{buildroot}%{_bindir}/из entry_points
%pyproject_save_files httpie
- Находит в
%{buildroot}все файлы, принадлежащие Python-пакетуhttpie - Записывает их пути в файл
%{_builddir}/pyproject-files-httpie.txt - Включает каталог
httpie/иhttpie-*.dist-info/из site-packages - Не включает файлы из
%{_bindir}/— их нужно указать в%filesвручную
Чтобы посмотреть сгенерированный список (для отладки):
# После неудачной сборки или после rpmbuild -bi:
cat ~/rpmbuild/BUILD/httpie-3.2.4/pyproject-files-httpie.txt