{hg, git} bisect + portage

Не так давно имел я счастье вляпаться в неприятную ошибочку с моим любимым awesome. Разрабы попросили сделать git bisect, чтоб найти причину косяка, но выяснилось, что просто запуском свежесобранного бинарника не отделаться. Пришлось немного подумать и сопрячь bisect и Portage.

Будем считать, что Вы в курсе, что такое *bisect* (а если не знаете, но хотите узнать, обратитесь к документации), так что всё, что нужно сделать, это установить нужный пакет из соответствующей ревизии с помощью emerge (ну и проверить его на искомую ошибку) после прогона ${избранная-dvcs} bisect. Как это сделал я:

#!/bin/sh
rm -rf /tmp/awesome*
cp -rp ~sterkrig/tmp/awesome /tmp/awesome-3.4.999
rm -rf /tmp/awesome-3.4.999/.*
cd /tmp
tar cjf awesome-3.4.999.tar.bz2 awesome-3.4.999
mv -f awesome-3.4.999.tar.bz2 /usr/portage/distfiles
chown portage:portage /usr/portage/distfiles/awesome-3.4.999.tar.bz2
chmod 664 /usr/portage/distfiles/awesome-3.4.999.tar.bz2
ebuild --force /usr/local/portage/x11-wm/awesome/awesome-3.4.999.ebuild manifest
emerge awesome
cd ~

Что тут происходит:

  • наши «снимки» из git будут считаться версией awesome 3.4.999 (мы ищем ошибку между 3.4.4 and 3.4.5), на самом деле это неважно;
  • исходный код копируется в сторонку, .git подчищается, и с помощью tar мы получаем архив примерно того же свойства, что и у «официальных» версий;
  • далее мы просто обновляем Manifest для нашего ebuild'а (который является простой копией awesome-3.4.5.ebuild из официального дерева Portage) и устанавливаем эту версию

Секите на здоровье! (-;Е

P.S. А моя ошибка была исправлена в git через три дня после моего сообщения. А никто и не заметил, хе-хе.

Комментарии

Comments powered by Disqus