Я тут слегка доработал схему сборки. Основные цели, которых пытался добиться: * лёгкая сборка для "основной" версии питона * минимум изменений в спек-файл * возможность собрать модуль для строго указанной версии питон, неконфликтующий по имени с "основным" * контроль за типичными ошибками (сборка под несуществующий питон, попытка одновременной сборки под несколько версий) Что получилось на выходе: * "типичный спек файл" (на примере pyserial) * файл макросов, который необходимо положить в /etc/rpm/macros.d/python, и который должен принадлежать какому-нибудь python-common * сборка осуществляется либо через rpmbuild -ba pyserial.spec либо через rpmbuild -ba pyserial.spec --with python например rpmbuild -ba pyserial.spec --with python22 Особенности поведения (требуется доработка): * макросы %version и %release должны быть определены в момент вызова %setup_python_module * имя пакета должно определяться после вызова %setup_python_module через %packagename Чего добиться не удалось: * возможности инкрементального подключения новых версий питон, допустимые версии просто забиты в текст макрофайла * какая-то засада с макросом %error: про ошибку пишет, сборку не прекращает. Приходится выдумывать "ужасные методы" P.S. Brainfuck - фигня! Программирование на макроязыке RPM мозги почище всяких брэйнфаков! Как в макрофайле создать список неизвестной заранее длины а потом по нему проитерироваться я так и не понял. И эта черная магия с экспандом в экспанде. Я так и не понял, почему в одном случае обязательно надо делать вложенные экспанды, а в другом и так проканывает.