================================================================================
$Id: 3-Python_MODULE.txt 29 2006-06-10 12:08:45Z ns $
--------------------------------------------------------------------------------
Правила сборки и оформления модуля для языка python

    1.  Модуль для python собирается с префиксом python-module-;
    
    2.  Модуль для одной из старых версий pythonX.Y собирается с префиксом
        pythonX.Y-module-;
        
    3.  Модуль должен содержать явно указанную зависимость на версию питона,
        использованного при его сборке, такая зависимость вводится указанием
        кляуз вида :
        
            python = %__python_version

            python-devel = %__python_version
            
            Замечание: Из-за некоторых тонкостей реализации apt, пришлось
                отказатся от того, чбы держать в дистрибутиве пакет с именем
                python-devel и он провайдится пакетом python-dev, в то же
                время указывать зависимость на пакет python-dev
                __абсолютно__ недопустимо. Объяснения и споры могут быть
                очень долгими, но иначе не работает.  Некоторые подробности
                изложены в FAQ Q20. Если вы считаете, что есть другое
                решение, или у вас возникают какие-то проблемы из-за этого -
                спишитесь с мантейнерами полиси.
        
    4.  В параметре GROUP спека должен быть указан Development/Python/Modules;
        
    5.  Для сборки модуля рекомендуетсся использовать темплейт, предложенный 
        Алексеем Морозовым для модуля  python-module-serial, но его использование
        не обязательно. По крайней мере, пока. В модуле, собранном таким образом,
        все необходимые параметры будут проставлены автоматически;
        
    6.  Отключать повторную байт-компиляцию python не рекомендуется, так как
        иначе скомпилированные модули могут выводить некорректную диагностику
        ошибок (неверный путь к файлу), что крайне неудобно (посыпятся жалобы
        вида "ваша програма упала в /home/vasya/petya.py, а такого файла вообще
        нет"). Я это проверил (и диагностику, и жалобы);
        
    7.  Пример спека включен в пакет rpm-build-python;
    
    8.  Для нового модуля можно получить прототип стандартного спека отдав
        команду:
        
            python setup.py bdist-altrpm --spec-only,
            
        разумеется, файл setup.py должен быть от этого модуля. Подробнее,
        см. документацию на distutils и bdist_altrpm (в пакете rpm-build-python).
        
        Использование стандартного спека:
    
        1.  Сборка :

                rpmbuild -ba python-module-serial.spec

            На выходе будет python-module-serial-*.rpm, причем, бинарные rpm привязаны к
            текущей (вероятно, 2.3) версии python. 
            
        2.  Сборка под конкретный питон:            
            
                rpmbuild -ba python-module-serial.spec --with pythonXY

            на выходе будут получаться pythonX.Y-module-serial...rpm,
            (напомню, что использование такого варианта сборки 
            ориентировано на частное использование);

            В данный момент, в качестве X.Y может использоваться 2.3, 2.4, 2.5 и 2.6.

            В случае необходимости, зависимости на пакеты с другими модулями
            python надо прописывать как

                Requires: %{__python_package_prefix}-<anotherModule>

            или

                Requires: python%{__python_version}(anotherModule)

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


            Обратите внимание, что в настоящий момент (rpm-build-python-0.12-alt{3,4})
            пересборка пакета pythonX.Y-module-что-то-там.src.rpm _сохраняет_ его
            привязку к выбранной версии python. Для того, чтобы пересобрать пакет с
            "основным" питоном, используйте ключ --with python_auto. Напоминаю, что
            ключ --with pythonXY ориентирован на домашнее использование теми, кто
            внимательно прочел перед этим всю ALT Python Policy :-).
    
================================================================================

