воскресенье, 30 октября 2011 г.

Поднакопилось

Поднакопилась пачка изменений, которые хочется упомянуть в своем блоге. Первое из них - я сделал бэкпорт pidgin для squeeze. Сейчас его версия 2.10.0-1~bpo60+1. Поставить его можно из моего репозитария для squeeze в секции backports.

deb http://www.tataranovich.com/debian squeeze backports

Из замеченных мною изменений:
  • более менее адекватно работает аудио/видео связь;
  • починили clientLogin и SSL в ICQ. 
В остальном вроде по-прежнему.

Сборочная среда понемногу развивается. Сейчас ночные сборки переведены на новую схему именования версий. Раньше очередная версия формировалась из внутренней версии апстрима с добавлением суффикса ~gitYYYYMMDD-1. Получалось что-то вроде 3:4.8.0-34-g0035a1d~git20111028-1 что не всегда давало версию старше, чем в предыдущем билде. Сейчас эта версия превратилась в 4:4.8.0~git20111028-1 (префикс 4: гарантирует переход с любой старой версии на новую схему). Плюс ко всему nightly builds допускает несколько сборок в пределах одного дня.

Добавил поддержку новых дистрибутивов. Сейчас полный список выглядит так:
Debian
  • lenny
  • squeeze
  • wheezy
  • sid
Ubuntu:
  • hardy (пакет требует отдельных телодвижений для сборки)
  • lucid
  • maverick
  • natty
  • oneiric
Все с поддержкой i386 и amd64.

вторник, 11 октября 2011 г.

Продолжение первой статьи на хабрахабре

Дописал более подробное описание технической части сборочной среды. Ознакомиться можно здесь. Первая часть статьи тут.

суббота, 8 октября 2011 г.

Синхронизация истории сообщений в pidgin

Довольно часто мне приходится пользоваться pidgin для общения с друзьями и коллегами на разных компьютерах. Поэтому мне важно, чтобы история переписки была всегда в актуальном состоянии и была доступна на любом из компьютеров.

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

Ранее я сталкивался с упоминаниями unison для синхронизации, но насколько я смог разобраться в его фичах, он не поддерживает прозрачную синхронизацию. На данный момент я выбрал dropbox. Посколько dropbox не поддерживает шифрование на стороне клиента, то дополнительно применена encfs (позволяет шифровать не только содержимое файла, но и его имя).

Dropbox настроен на синхронизацию каталога ~/Dropbox. Внутри папки ~/Dropbox создан каталог ~/Dropbox/Safe, который содержит зашифрованную часть EncFS. Расшифрованная часть монтируется в каталог ~/Safe.

После настройки логи pidgin были перенесены из ~/.purple/logs в ~/Safe/.purple-logs и создана символическая ссылка ~/.purple/logs -> ~/Safe/.purple-logs

Уже прошла неделя использования этой схемы. Из замеченного:
  • В один момент времени должен работать клиент только на одном из компьютеров, если работает на нескольких, то возможны дублирования в истории (плотно не тестировал, т.к. у меня таких случаев очень мало)
  • Dropbox плохо переваривает синхронизацию большого количества маленьких файлов (~35000 файлов, общим объемом на ~17MB)
Сейчас подумываю подключить к синхронизации часть общих конфигов и добавить инкрементальную архивацию.

Исходники сборочной среды теперь доступны на code.google.com

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

Когда я писал статью на хабре я обещался выложить код как только приведу его в божеский вид. Похоже причесать код окажется гораздо сложнее, чем мне казалось поначалу. Потому я решил следовать принципу Эрика Раймонда (Release early, release often) и выложил первый рабочий вариант на code.google.com. Проект называется mc-buildbot и доступен по адресу http://code.google.com/p/mc-buildbot/

В процессе освоения хостинга, интеграции mercurial с ним и написанием патча, появилась пара мелочей, которые достойны упоминания здесь.
  • Чтобы каждый раз не вводить свой логин/пароль от googlecode, его можно сохранить в настройках mercurial (вроде работает, начиная с версии 1.3). Для этого в ~/.hgrc добавляется секция [auth] содержащая настройки авторизации, например:
[auth]
googlecode.prefix = https://code.google.com/
googlecode.username = username
googlecode.password = password

  • Проверить ошибки в страницах man, можно выполнив команду:
LANG=en_US.UTF-8 MANWIDTH=80 man --warnings -E UTF-8 -l /path/to/man/page >/dev/null

  • Добавить патч под управлением quilt
$ export QUILT_PATCHES="debian/patches"
$ quilt import -P patchname /path/to/patch

Чтобы проверить, что патч правильно накладывается:
$ quilt push

Отменить все патчи
$ quilt pop

Позже постараюсь найти время, чтобы плотнее поизучать quilt. Неплохая заметка по началу работы есть в Debian New Maintainers' Guide