From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <45AEA6EF.7020501@altlinux.org> Date: Thu, 18 Jan 2007 01:45:03 +0300 From: Mikhail Yakshin User-Agent: Thunderbird 1.5.0.8 (X11/20061205) MIME-Version: 1.0 To: ALT Linux Sisyphus discussion list X-Enigmail-Version: 0.94.1.0 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit Subject: [sisyphus] I: comfort-0.1-alt1 in incoming X-BeenThere: sisyphus@lists.altlinux.org X-Mailman-Version: 2.1.9rc1 Precedence: list Reply-To: ALT Linux Sisyphus discussion list List-Id: ALT Linux Sisyphus discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jan 2007 22:45:13 -0000 Archived-At: List-Archive: List-Post: Всех приветствую! Хочу сообщить, что в 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]