Назад | Перейти на главную страницу

Как мне исправить требование для python (abi) при создании RPM модуля python для SCL?

В настоящее время я пытаюсь настроить среду для одного из наших приложений на CentOS 6, используя репозиторий SCL python33. Приложение также требует ряда дополнительных модулей Python, таких как numpy, поэтому я пытаюсь их создать; Я приближаюсь, но когда я создаю пакет, он требует python(abi) => 3.3.

Согласно документам SCL, я хочу изменить требования, что достаточно очевидно, и я вижу кучу слизи в /etc/rpm/macros.python3.python33 который выглядит так, как будто он должен справиться с этим (это неявное требование, а не то, которое я могу просто изменить в specfile), но я не могу понять, как заставить эти макросы переопределить различные в specfile. Кто-нибудь создавал RPM для модулей Python для добавления в SCL python33, и какие шаги вы предприняли?

Для записи, это моя процедура до сих пор:

setup.py bdist --format=rpm             # to generate the base specfile, numpy.spec
spec2scl numpy.spec                     # to generate the SCLed specfile
(edit specfile to remove %define __os_install_post bloc which doesn't cooperate with SCL)
rpmbuild -ba numpy.py -D 'scl python33' # to try and build the RPM from the specfile

Это дает мне RPM, но с нарушенным требованием (которое должно быть python33-python(abi)).

Возможно, эта проблема исчезла, но я хотел обновить ее с помощью метода, который легко работал у меня.

Вот моя ситуация:

Я создавал несколько RPM-пакетов SCL для python27 из загруженных файлов яиц, используя скрипт, чтобы делать все - примечание: так я извлек все зависимости для нашего веб-приложения Python Django и запустил его из плана Atlassian Bamboo для создания Интернета. об / мин приложения.

Что касается обсуждаемой здесь проблемы требований -

Я программно заменил имена пакетов префиксом «python27-python-», и все упакованные файлы получили корневой путь SCL «/ opt / rh / python27 / root», так что все было хорошо ... ЗА ИСКЛЮЧЕНИЕМ того, что они все подобрали требования для python (abi) = 2.7, как и у вас для 3.3

Примечание. Поскольку я заменил «имя» пакета версией SCL, я сохранил его в новом файле setup.py, который назвал:

setupSCL.py

Я попробовал несколько заклинаний макросов, но то, что решило проблему требований для меня, было на самом деле простым.

В моей командной строке setup.py я только что добавил:

--no-autoreq

Чтобы заменить это ошибочное автоматическое требование, я добавил обратно в версию SCL, которую мы оба искали:

--requires "python27-python"

Итак, моя фактическая командная строка была:

python setupSCL.py bdist_rpm --no-autoreq --requires "python27-python" &> /dev/null

Бум! Работает как чемпион

Поэтому, когда я проверяю, требуется использование yum deplist (в этом примере для djangorestframework):

Я получил:

yum deplist /root/rpmbuild/SOURCES/djangorestframework-2.4.4/dist/python27-python-djangorestframework-2.4.4-1.noarch.rpm

Finding dependencies: 
package: python27-python-djangorestframework.noarch 2.4.4-1
  dependency: python27-python
   provider: python27-python.x86_64 2.7.5-7.el6.centos.alt

Надеюсь, однажды это поможет кому-то ...