[sisyphus] I: comfort-0.1-alt1 in incoming

Mikhail Yakshin greycat на altlinux.org
Чт Янв 18 01:45:03 MSK 2007


Всех приветствую!

Хочу сообщить, что в incoming ушел пакет, за отсутствием у меня фантазии
именованный comfort. Это некий относительно причесанный набор скриптов,
которые надеются облегчить жизнь рядовому разработчику и/или
пользователю Сизифа.

Думаю, мало кому нравится писать для выполнения простых, в общем-то,
действий, вроде отправки собранного пакета в Сизиф (который надо еще не
забыть подписать и неплохо бы прогнать через sisyphus_check) или
вспоминания, кто же мейнтейнер того или иного пакета, чтобы вытянуть его
копию из git. Очень многие пишут некие скрипты и макросы, облегчающие
эти рутинные задачи. Есть etersoft-build-utils, решающий часть этих
задач. Раскиданы по wiki и рассылкам с десяток скриптов разной степени
работоспособности и общности, тоже решающий часть этих задач. Идея
пакета - свести их как-то к общему знаменателю.

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

Конечно, это очень далекое от идеала решение - но, надеюсь, можно будет
его развить и доработать до того состояния, когда бы он хотя бы немножко
нравился не только мне одному.

========================================================================

Основные цели - минимум команд, минималистичный синтаксис и набор
параметров у каждой. Все команды, относящиеся к разработке чего-то в
Сизифе, называются Sisyphus-* (облегчает completion). Структуризация
задач, мелкие подзадачи реализуются в виде отдельных скриптов. Везде
есть разумные умолчания и автодетекты, но при желании они легко
перенастраиваются через ~/.Sisyphusrc. Везде, где подразумевается
workflow, каждая предыдущая команда выдает подсказки в виде готовых
следующих команд, которые можно тупо скопировать и выполнить.

========================================================================

Настройка: после инсталляции пакета можно пытаться пользоваться им, как
есть, а можно настроить в ~/.Sisyphusrc следующие переменные (привожу
тут же их значения по умолчанию):

GIT_DIR=$HOME/git - директория, в которой будут раскладываться локальные
копии git-репозитариев с git.altlinux.org;

BUILD_DIR=$HOME/hasher - временная рабочая директория, в которой будут
проводиться сборка hasher'ом;

ALT_SSH_KEY=$HOME/.ssh/id_dsa - ssh-ключ, который будет использоваться
при работе с сетевыми ресурсами ALT; если он еще не добавлен в агент на
момент вызова какого-то скрипта, которому оно понадобится - скрипт сам
предложит ввести пассфразу, чтобы его добавить;

ALT_USER=$USER - имя пользователя @altlinux.org;

ARCH - (либо x86_64, либо i586, в зависимости от хост-системы) -
архитектура, под которому будут проводиться сборки по умолчанию.

Подразумевается, что у пользователя, из под которого будем работать,
настроен hasher (см. hasher-add) и в ~/.ssh/config есть хосты
incoming.alt и git.alt.

========================================================================

Скрипты, которые есть или должны быть в пакете (у каждого есть краткий
--help, которого должно быть достаточно для быстрого освоения скрипта) и
краткое описание workflow:

0. Sisyphus-setup - некий wizard, который проверяет все установки и
настройки (как системные, так и пользовательские) и приводит их в
рабочее состояние.

1. Начало работы с пакетом:
1.1. Создание пустого пакета - Sisyphus-create, который создает пакет по
шаблону
1.2. Импорт существующих SRPMок из архива Сизифа -
Sisyphus-archive-import <имя-пакета>
1.3. Клонирование существующего пакета из git у его последнего
мейнтейнера - Sisyphus-clone <имя-пакета>

Во всех трех случаях должны корректно настриваться remote / origin.

2. Работа с пакетом - cg-add, cg-commit, cg-delete, cg-pull и т.п.

3. Сборки
3.1. Sisyphus-build - сборка в hasher
3.2. Sisyphus-rebuild - пересборка в hasher
3.3. Sisyphus-rpmbuild - сборка rpmbuild в хост-системе

4. Тестирование - некие утилиты для виртуализации в hasher chroot,
переноса туда частей окружения пользователя, установки тестируемого
пакета и тестирования его там.

5. Релиз
4.1. Sisyphus-push - перемещает пакет в git, если его там нет - то
создает у себя в /people/USER/ такой репозитарий, и делает git push.
(Некий аналог cg-push и gear-upload).
4.2. Sisyphus-publish [имя-SRPM..] - закачивает пакет в incoming,
предварительно делая sisyphus_check, если нужно, подписывая его.

6. Поддержание в актуальном состоянии
6.1. Утилита/утилиты, которые бы реализовывали обновление версий -
оболочка над gear-update-archive, gear-update-directory, git-cvsimport,
git-svn и т.п.
6.2. Утилиты, принимающие патчи и облегчающие merge веток.

========================================================================

Скрипты, полезные пользователю и администратору:

apt - оболочка над многими apt-* (с тем, чтобы писать "apt i", а не
"apt-get install"); в качестве добавочной функции имеет команду "apt k"
или "apt kernel", по которой запускается скрипт Виталия Липатова,
обновляющий текущее ядро со всеми его модулями до последнего в Сизифе.

rpm-last-used - для каждого пакета, переданного в аргументах (можно
запускать, как "rpm-last-used `rpm -qa`"), выдает время последнего
обращения к файлам этого пакета, т.е. в идеале - время последнего
использования пакета. Отсортировав полученный список по первой колонке,
можно посмотреть, какие пакеты в системе висят уже давно, но при этом
уже год, например, не используются - и принять решение об их удалении.

rpm-lost-files - ищет файлы, не принадлежащие никаким пакетам и выводит их.

rpm-obsolete-libs - ищет библиотеки, которые могут быть никому не нужны
(поставились по зависимостям и не удалились); некий аналог недавно
промелькнувшей тут команды "apt-cache list-nodeps | grep ^lib" с помощью
apt-scripts.

========================================================================

Если это кому-то интересно/полезно или есть какие-то комментарии или
мысли - прошу высказываться.

-- 
WBR, Mikhail Yakshin AKA GreyCat
ALT Linux [http://www.altlinux.ru] [xmpp:greycat на altlinux.org]


Подробная информация о списке рассылки Sisyphus