From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00, DNS_FROM_OPENWHOIS,SPF_PASS autolearn=no version=3.2.5 Date: Wed, 23 Feb 2011 18:01:30 +0200 From: Igor Vlasenko To: devel@lists.altlinux.org Message-ID: <20110223160130.GA31974@dad.imath.kiev.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.5.20 (2009-08-17) Subject: [devel] I: autoports.altlinux.org robot X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Feb 2011 16:01:37 -0000 Archived-At: List-Archive: List-Post: Уважаемые коллеги, скоро вступят в строй autoports.altlinux.org. Этот робот официально еще не работает (когда заработает, будет официальный анонс) но уже сейчас желающие могут там разжиться, например, новейшими freeciv и wesnoth, собранными под P5. Пока выношу на обозрение документацию по этому сервису. --------------------------------------------------------------------- Autoports: робот (программный комплекс автоматизации, ПКА) портирования пакетов из Sisyphus в последний стабильный бранч. --------------------------------------------------------------------- В настоящее время альфа-версия сервиса Autoports развернута и работает в контейнере autoports.altlinux.org. Результаты работы сервиса доступны в сети Интернет как ftp/rsync apt-репозиторий autoports на autoports.altlinux.org. Схема работы Autoports. Пакеты из нестабильной ветки репозитория СПО Sisyphus разбиты с точки зрения системы на три типа списков: белые списки, серый список и черные списки. В черных списках указаны пакеты, автоматическое портирование которых запрещено. Белые списки состоит из пакетов, для которых портирование разрешено. Остальные пакеты попадают в серый список. Белые и черные списки делятся на созданные вручную администратором узла, на котором развернут ПКА Autoports, и автоматически генерируемые списки. Списки, созданные вручную, имеют приоритет над автоматически генерируемыми списками. Примеры генераторов списков: Занести пакет в белый список, если его RPM tag Group имеет вид Games/*. Занести пакет в черный список, если он порождает разделяемую библиотеку, которая используется более чем одним сторонним пакетом. В настоящее время серый список не используется. Однако в будущем планируется добавить к системе публичный web-интерфейс, который позволял бы заказывать автосборку пакетов из серого списка внешним пользователям. Также планируется дать возможность майнтейнерам пакетов подписывать свои пакеты на автосборку путем добавления в spec-файле пакета специальной директивы-комментария. Результатом работы ПКА Autoports является постоянно обновляемый репозиторий пакетов RPMS.autoports, публично доступный в сети Интернет. Текущая обновляемая ветвь репозитория пакетов RPMS.autoports (autoports/5.1) является репозиторием-оверлеем над текущим стабильным дистрибутивом (branch/p5). Это позволяет разнести разные задачи обновления по разным бранчам (bugfixes/security fixes для branch/p5, стабильные обновления для branch/5.1, edge-обновления для autoports/5.1+backports/5.1) что должно повысить стабильность дистрибутива в целом. Пакеты из репозитория пакетов autoports/5.1 собираются в чистом окружении branch/p5. Это позволяет использовать пакеты из репозитория пакетов autoports для точечного обновления пакетов из обеих стабильных ветвей branch/p5 и branch/5.1. Пакеты из репозитория пакетов autoports отличаются своим внешним видом (имеют суффикс .A51.x в релизе пакета), что позволяет легче диагностировать проблемы в системе для неопытного пользователя. ПКА Autoports производит портирование пакетов только в последний текущий бранч. В момент появления нового бранча старая ветвь autoports замораживается, и создается новая ветвь autoports для нового бранча. В дальнейшем, вся работа ПКА Autoports проводится с новой ветвью. При этом версии пакетов в autoports старого бранча остаются всегда меньше версий пакетов в новом бранче. Такое архитектурное решение выбрано для того, чтобы не создавать пользователям проблем при обновлении до следующей стабильной версии дистрибутива. При выходе новой стабильной версии дистрибутива пользователям предлагается обновить свой дистрибутив до этой новой стабильной версии, после чего в дальнейшем они смогут пользоваться уже новой ветвью autoports для нового бранча. Основной программой ПКА Autoports является скрипт autoports-daily, запускаемый периодически (с помощью crontab). Цикл работы скрипта autoports-daily следующий: запустить скрипты-генераторы черных и белых списков для синхронизации с текущим сизифом: слить ручные и автоматические черные и белые списки в один текущий список пакетов, подлежащих портированию в стабильный бранч; пройти по всем пакетам из текущего списка, сравнивая их версию-релиз с версией-релизом (с учётом суффиксов портирования) в p5/branch, 5.1/branch, 5.1/autoports. Если версия-релиз пакета в нестабильной ветке репозитория СПО Sisyphus больше, чем во всех указанных репозиториях (с учётом суффиксов портирования), то проверяется дополнительно, не проводилась ли раньше неудачная попытка бекпортирования и не истек ли ее тайм-аут, и, если проверки пройдены, генерируется srpm-пакет для репозитория autoports и производится попытка его сборки в среде p5/branch. После удачной сборки полученные бинарные пакеты проверяются на валидность (в том числе, отсутствие unmets в порождаемом репозитории) и, в случае успеха, перемещаются в отстойник новособранных пакетов. В завершение цикла работы происходит подписывание пакетов в отстойнике новособранных пакетов, вытеснение пакетов из 5.1/autoports пакетами из отстойника новособранных пакетов, перегенерация индексов для репозитория пакетов 5.1/autoports, что и завершает цикл обновления репозитория пакетов 5.1/autoports. После этого обновленный 5.1/autoports публично доступен в сети интернет, а узел, на котором развернут ПКА Autoports, готов к следующему циклу работы. Необходимо заметить, что на тестовом узле autoports.altlinux.org, на котором развернут ПКА Autoports, нестабильная ветвь репозитория СПО Sisyphus, а также стабильные ветви репозитория СПО p5/branch и 5.1/branch монтируются по сети с удаленного узла, на котором синхронизация ветвей репозитория СПО производится автоматически. В противном случае, необходимо было бы включить в начало цикла работы ПКА Autoports синхронизацию ветвей репозитория СПО. Пробные прогоны ПКА Autoports проводились на тестовом множестве из 318 пакетов. 144 пакета из этого множества имели более свежие версии в нестабильной ветви репозитория СПО Sisyphus, поэтому подходили в качестве объекта бекпортирования.132 из них были успешно бакпортированы на стабильную ветвь репозитория СПО p5/branch. Собираемость полученных пакетов, таким образом, составила 92%. Планируется, что по окончании альфа-, а затем и бета-тестирования, в промышленном режиме, база сопровождения ПКА Autoports будет состоять от 20% пакетов нестабильной ветви репозитория СПО Sisyphus, т. е. от 2000 пакетов, что при собираемости 92% дает оценку базы реального сопровождения ПКА Autoports от 1800 пакетов. Заметим, что есть скрытые резервы повышения собираемости пакетов за счет использования rpm-build-compat-* пакетов и сотрудничества с майнтайнерами в нестабильной ветви репозитория СПО Sisyphus и администраторами в стабильных бранчах. Однако по объективным причинам достить 100% собираемости невозможно, например, если в бранче только старая версия библиотеки, а пакет может быть собран только с новой версией. Чтобы покрыть часть непересобирающихся случаев, планируется поднять incoming для еще одного репозитория-оверлея backports над текущим стабильным дистрибутивом (5.1/backports над branch/5.1), который предлагается позиционировать как дополнение к autoports, в которое можно собирать пакеты, отсутствующие в autoports, либо такие, которые нуждаются в дополнительной ручной настройке для работы в текущем стабильном дистрибутиве. Также планируется в в промышленном режиме эксплуатации поднять над ПКА Autoports web-интерфейс на основе Prometeus2 разработки Игоря Зубкова. -- Dr. Igor Vlasenko -------------------- Topology Department Institute of Math Kiev, Ukraine