================================================================================
$Id: 1-Python_EPOCH.txt 29 2006-06-10 12:08:45Z ns $
--------------------------------------------------------------------------------
Краткое описание жизненного цикла питона в репозитории :

    Правила

        1.  В любой момент времени существует единственный основной пакет
            python - пакет с именем python;
            
            Замечание 1: Раньше, основной версией была последняя пересобранная.
                теперь последней пересобранной может быть девелоперская версия,
                которая, естественно, не может использоваться в качестве основной.


        8.  Новая схема сборки допускает решение, при котором в дистрибутив
            входят две и более версии языка python с некоторыми модулями,
            пересобранными под несколько версий. Такое решение может быть
            использованио исключительно в ситуации, когда один из
            необходимых пакетов дистрибутива не может быть пересобран с
            последней версией python (например, Zope, хотя до сих пор этого
            удавалось избежать). В этом случае подлежат пересборке
            модули, требуемые этим пакетом и не более того. Пересборка
            модулей ведется так, что бы запуск rpm на пересборку
            _без_указания_ каких-либо ключей порождал валидный пакет для
            pythonX.Y, снабженный префиксом python-moduleX.Y;
            
            Замечание 1: Текущая версия новых макросов обеспечивает это,
                но, т.к. случая практического использования этого еще ни разу 
                не было, к этой возможности следует относится с осторожностью.
                В крайнем случае возможен следующий хак: явно включать в
                пересобираемый spec соотв. макрос;
                
            Замечание 2: Такая пересборка может приводить к появлению в
                репозитории нескольких почти идентичных файлов src.rpm c
                пакетами модулей для python разных версий. Хотя это может
                показаться странным, необходжимо учитывать следующее
                обстоятельство: форк есть форк. И если в момент форка некий
                модуль test-u.v.w можно было пересобрать для обеих версий,
                то модуль test-u.v.w+n, при достаточно большом n (в случае
                некоторых модулей ~1), скорее всего, нет: новые фичи в питон
                для того и вводятся, чтобы их использовать, и примеров я могу
                привести достаточно много;

        5.  Частью дистрибутива является только основная версия (см. п.1),
            все остальные версии версии лежат только для тестовых целей и не
            включаются дистрибутив, если таковой будет собираться на основе
            Sisyphus;
            

        6.  Как следствие п.5, все модули в Sisyphus будут собираться и
            поставлятся только с основной версией;


    Жизненный цикл с точки зрения мантейнеров :
    
            
        2.  В день выхода новой минорной версии python (X.Y), делается форк:
            новая версия собирается под именем python, тогда как старая -
            под именем pythonX.Y-1;
            
            Замечание 1: Для тех, кто в танке: "-" - знак арифметической 
                операции, т.е. если (X,Y) == (2,4), то pythonX.Y-1 == python2.3;
                
        3.  После выхода новой минорной версии, все мантейнеры уведомляются
            о необходимости пересборки и тестирования модулей с новой
            версией python;
            
        4.  Если через некоторое время (например - 1 месяц) модуль не был
            пересобран - он удаляется из репозитория (кажется, это
            называется orphaned);

            Замечание 1: Даже модули с правильно написанными spec-файлами и
                не использующие устаревшие конструкции языка, требуют
                модификацию spec-файлов - т.к. в спек явно вписана
                зависимость на версию питона, используемого при сборке. Это
                сделано потому, что при смене минорной версии часты случаи
                потери работоспособности модулей и необходимо вмешательство
                мантейнера. Поэтому таким образом дается некоторая гарантия
                того, что мантейнер провел пересборку и тестирование такого
                модуля.

            Замечание 2: Перемещение в orphaned не является python-специфичным;
            
            
        7.  При необходимости, любой потребитель Sisyphus может пересобрать
            модуль под старую версию python и самостоятельно использовать
            ее. Новая схема сборки допускает такую возможность указанием
            ключа --with pythonXY;

         
    Жизненный цикл с точки зрения потребителей :
    
        1.  Потребитель регулярно издает команду :
        
            apt-get upgrade (или dist-upgrade)
            
            Потребитель, не делающий этого, очевидно, не является
            потребителем Sisyphus и о нем в этом разделе речи не идет ;)
           
        2.  Потребитель следит за тем, чтобы апгрейд проходил нормально: 
            новые версии python и модулей к нему ставились и при этом
            "любимые" модули не сносились;
            
        3.  Если потребитель увидел что-то типа "python-X.Y.Z will be
            upgraded, but python-module-IMPORTANT will be removed", то это
            повод писать письма мантейнеру модуля IMPORTANT с просьбами его
            пересобрать. Конфликты такого рода решаются в рамках стандартной
            POLICY ALT Linux Team и не являются python-специфичными;
                       
        4.  Новая схема сборки модулей гарантирует (зависмостями)
            невозможность установки модулей от старых версий python с его
            новыми версиями;
================================================================================
