Сборочная среда для проекта Midnight Commander | ||
Разное > Консоль Мало кто из знакомых со словами linux, *bsd не знает о Midnight Commander. Я не слишком ошибусь, если скажу, что все поначалу пользовались им. Отличный инструмент для задач, которые он решает, к тому же доступный на многих платформах. Последнее время проект, ранее развиваемый под крылом gnome.org, получил вторую жизнь. Новый сайт проекта радует темпами развития. Вот только поддержка актуальных версий пакетов в дистрибутивах хромает.
Последнее, что доступно в Debian — 4.7.0.9, и это при том, что совсем недавно вышел 4.7.5.4 в котором есть ряд вкусностей. Проект предоставлял бинарные сборки для RedHat-based систем и не поддерживал таковые для Debian/Ubuntu. Я решил восполнить этот пробел, запустив автоматическую сборочную среду. В процессе подготовки и запуска сборочной среды появилась необходимость автоматизации некоторых из операций:
Входит в базовый функционал сборочной среды. Собственно все и затевалась для сборки в пакеты последних изменений с целью их тестирования. При запуске проверяет, были ли изменения в репозитарии с момента последней удачной сборки пакета. Если их нет, то сборка останавливается. Если изменения найдены, то запускается проверка на способность правильно компилироваться и выполнять установку. Для этого выполняются: ./autogen.sh ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib/mc Если предыдущий этап выполнен без ошибок, то начинается пакетирование исходников. При выполнении «make dist» создается архив вида mc-.tar.gz который далее приводится к виду mc_~git.orig.tar.gz. Далее полученный архив распаковывается, в него добавляется debian-специфичные части, инкрементируется версия пакета и запускается процесс сборки. Если сборка пакета проходит успешно, то начинается проверка на соответствие Debian Policy. Сперва пакет проверяется в lintian (вывод сохраняется в отдельный файл для быстрого анализа ошибок), затем в piuparts. Если пакет успешно проходит проверки, начинается сборка под целевые платформы.
Обновление локального репозитария Для управления локальным репозитарием используется apt-ftparchive. После запуска процедуры обновления из сборочной среды получаются последние собранные версии. Обновляется служебная информация и подписываются файлы Release. Для подписи файлов в автоматическом режиме пришлось сгенерировать подключ для уже существующего и доверить его gpg-agent'у. Таким образом решается проблема утечки ключа, который используется для подписи пакетов — можно создать revocation key и обновить основной ключ на серверах. При этом основной секретный ключ отсутствует на сервере сборочной среды. Обновление серверного репозитария Для закачки изменений в локальном репозитарии на сервер использован rsync. Я не стал создавать для rsync ssh ключ без пароля, а сделал его доступным через ssh-agent. При необходимости это позволит заблокировать ключ одной командой. Проверка доступности нового релиза Чтобы быть в курсе выхода новых стабильных версий настроен uscan, который будучи запущен с ключем --report, проверяет доступность новых версий в www.midnight-commander.org/download/ пропуская при этом версии вида X.X.X-preY. При наличии положительного ответа от uscan запускается сборка релиза, которая в итоге попадает в основную ветку моего репозитария. Напоследок Настройки APT для стабильных версий: deb http://www.tataranovich.com/debian lenny main deb http://www.tataranovich.com/debian squeeze main deb http://www.tataranovich.com/debian maverick main deb http://www.tataranovich.com/debian natty main Настройки APT для ночных сборок: deb http://www.tataranovich.com/debian lenny nightly deb http://www.tataranovich.com/debian squeeze nightly deb http://www.tataranovich.com/debian maverick nightly deb http://www.tataranovich.com/debian natty nightly Чтобы версия из ночных сборок не заменяла стабильный релиз, нужно прописать в /etc/apt/preferences Package: * Pin: release c=nightly Pin: origin www.tataranovich.com Pin-Priority: -1 Источник: http://habrahabr.ru/blogs/linux/128976/ |
||
Комментарии | ||