Собственно, опять мне стало немного стыдно. Стыдно перед теми, кто пришел на блог в поисках ценной инфы, а нашел только мое нытье (или радость - неважно). Придется чуток поработать и накидать этой самой полезной инфы. Про заработки я знаю мало, зато, как я уже писал, активно использую Linux. Однако, по-прежнему моим любимым почтовиком остается TheBaT! (на который я честно купил лицензию), он прекрасно работает под wine, нативной альтернативы под Линуксом я пока не нашел.

К сожалению, начиная с версии wine-0.9.56, любимая программа начала глючить. Вместо красивеньких цветных иконок остались только белые квадраты. Работать стало крайне неудобно. Я, конечно, решил подождать, возможно в следующей версии все исправят. Не исправили в 0.9.57, 58 и так далее. Как раз сейчас вышла новая версия 1.0_RC4, а глюк до сих пор остался и мне (да и не только мне) до сих пор приходилось бы сидеть на 0.9.55, у которого наблюдаются проблемы с полноэкранным выводом.

Пустые иконки в TheBat!

Но на самом деле, для себя я эту проблему решил. Для тех, кто не знает, на основном ресурсе вайна (http://winehq.org) есть раздел, посвященный найденным багам и их решениям. Любой пользователь может открыть обсуждение обнаруженного бага, а также принять участие в решении уже существующих проблем. Собственно здесь я и разместил информацию о найденном баге еще в момент выхода версии 0.9.57 (http://bugs.winehq.org/show_bug.cgi?id=11950), в надежде, что авторы программы исправят недоразумение. Как бы не так :) Решать все равно пришлось пользователям.

Баг, которого не было в предыдущих версиях называют регрессией. Для того, чтобы определить, что же вызвало такой баг делают тест регрессии. Это достаточно продолжительная по времение процедура. Фактически, загружается весь список сделанных изменений (патчей) в исходном коде программы от того момента, когда проявился баг, до момента когда бага заведомо не было, затем последовательно убирают изменения до того момента, когда баг исчезнет. Более подробно про это можно почитать здесь http://wiki.winehq.org/RegressionTesting. К сожалению (или к счастью), на моей системе делать подобные вещи неудобно - Gentoo вообще не предназначена для установки левых пакетов, предпочтительно ставить только программы из ебилдов. Поэтому сделать регрессию я предоставил другим пользователям. Что и было сделано.

Собственно, причину бага - неправильную (или слишком правильную) оптимизацию библиотеки winex11.drv обнаружили достаточно быстро. Однако, исправлять ее в основных версиях не спешат. По приведенному выше адресу можно найти небольшой патч, который можно наложить на любую версию вайна после 0.9.56, и который устраняет проблему белых иконок. http://bugs.winehq.org/attachment.cgi?id=13278

Применяется этот патч командой patch (входящей в одноименный пакет). Однако, осталась одна проблема, как правильно воспользоваться этим файлом на моей системе, где основная команда не "make install", а "emerge"? В случае простой установки вайна через make install все ясно - заходим в директорию вайна, выполняем:

nicolay@localhost ~ $ patch -i test.diff
can't find file to patch at input line 5
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/dlls/winex11.drv/dib.c b/dlls/winex11.drv/dib.c
|index 4b287ea..1e48092 100644
|--- a/dlls/winex11.drv/dib.c
|+++ b/dlls/winex11.drv/dib.c
--------------------------
File to patch: ^C

Если получаем ошибку с ненайденными файлами, заходим глубже, в директорию ./dlls/winex11.drv/. Но, в случае Gentoo у нас директории с исходными текстами явно нет. Отказываться от portage мы не будем, а воспользуемся командой ebuild:

nicolay@localhost ~ $ ebuild /usr/portage/app-emulation/wine/wine-1.0_rc4.ebuild unpack
 * wine-1.0-rc4.tar.bz2 RMD160 SHA1 SHA256 size ;-) ...                                                                [ ok ]
 * wine_gecko-0.1.0.cab RMD160 SHA1 SHA256 size ;-) ...                                                                [ ok ]
 * checking ebuild checksums ;-) ...                                                                                   [ ok ]
 * checking auxfile checksums ;-) ...                                                                                  [ ok ]
 * checking miscfile checksums ;-) ...                                                                                 [ ok ]
 * checking wine-1.0-rc4.tar.bz2 ;-) ...                                                                               [ ok ]
 * checking wine_gecko-0.1.0.cab ;-) ...                                                                               [ ok ]
>>> Unpacking source...
>>> Unpacking wine-1.0-rc4.tar.bz2 to /var/tmp/portage/app-emulation/wine-1.0_rc4/work
 * Applying wine-gentoo-no-ssp.patch ...                                                                               [ ok ]
>>> Source unpacked.

Итак, исходники распакованы, причем видно, в какой директории они находятся. Распаковывал я это под рутом, поэтому Переходим в эту директорию. Я сразу перейду туда, где будет запущен патч:

nicolay@localhost ~ $ cd /var/tmp/portage/app-emulation/wine-1.0_rc4/work/wine-1.0-rc4/dlls/winex11.drv/
nicolay@localhost /var/tmp/portage/app-emulation/wine-1.0_rc4/work/wine-1.0-rc4/dlls/winex11.drv $ patch -i ~/test.diff
patching file dib.c
nicolay@localhost /var/tmp/portage/app-emulation/wine-1.0_rc4/work/wine-1.0-rc4/dlls/winex11.drv $

Собственно все. Исходный текст исправлен, собираем. Но опять не стандартным emerge:

nicolay@localhost ~ $ sudo ebuild /usr/portage/app-emulation/wine/wine-1.0_rc4.ebuild merge

По этой команде portge возьмет уже распакованные ранее исходники и соберет их так, как указано в ебилде. Само собой, выполнять эту команду надо с правами суперпользователя - иначе пакет будет откомпилирован, но разместить файлы в нужных директориях portage не сможет. Откомпилировали (кстати, очень рекомендую установить и настроить ccache - процесс рекомпиляции ускоряется в разы) и получили результат:

Исправленные иконки TheBat!

Не правда ли, так гораздо красивше? Главный недостаток - при смене версии или при переустановке текущей, патч придется накладывать заново. Но это уже издержки. Кроме того, остался возникший после наложения патча глючок при использовании менеджера fluxbox. При любом выделении строки цветом (удаление письма, перемешение по списку писем, получение почты итд), окно вайна сдвигается на 1 пиксел вверх и 1 влево. Просмотрели 10 писем - окно сдвинулось на 10 пикселов. 100 - уползло за край экрана. Правда постить этот глюк в базу данных не стал - под другими менеджерами такого не наблюдается. Просто переключил десктоп в xfce4 - не такой тормозной как KDE, а симпатичный, зараза.

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

Приятной работы, господа. В следующий раз я (возможно) расскажу, как просмотреть интернет-траффик утилитой tcpdump и прогой wireshark. А может быть и не расскажу - кому надо уже сам полез читать мануалы, к тому моменту научится и сам :)

Отзывов (14)

подпишитесь на комментарии rss или оставьте трекбек со своего сайта
  1. Было бы интересно узнать поподробнее

  2. Сам сталкивался с проблемой, когда не хотели разработчики wine принимать от меня патч. У крупных проектов вообще всегда так тухло дела обстоят :(

  3. Спасибо огромное. Была такая проблема с батом

  4. Отлично, автор молодец!

  5. Навеяно наверное стандартным мышлением? Будьте проще ))

  6. Автор молодец))))хих

  7. По моему Вам нужно чаще отдыхать, очень уж Вы заработались.

  8. Спасибо Вам за то, что Вы продолжаете писатЬ!

  9. Кто обьяснит девушке как добавить этот блог в избранное?

  10. Хорошо написали, почерпнул для себя очень много нового, спасибо вам за это!

  11. весьма информативно,молодца!

  12. Действительно полезная статья получилась. Тоже были проблемы с батом :( Буду вас чаще читать теперь)

  13. Отличная статья! Баги подправил! Респект и уважуха как грится)

  14. Я завтра собрался подводить очередные промежуточные итоги конкурса на 5000 у.е. Поэтому если что - велком на блог. Хотя по большому счету - лентяи все такие что ппц… Походу все что осилили - только зарегаться смогли :) :) :)

Оставьте свой отзыв

Вы должны войти, чтобы оставлять комментарии.