Патчи для WINE@Etersoft
Необходимые правила, которые должны помочь улучшению качества разработки.
О порядке создания изменений для WINE@Etersoft
- Нужно обязательно проверять, что проблема существует и на wine pure (запуском через wwo или как-то ещё). Это позволит узнать, проблема вызвана нашими изменениями или действительна для всех.
- Всю разработку нужно вести в ветке eterhack, обновляясь перед началом работы. Это позволит не исправлять баги, которые уже давно исправлены или ведут себя по-другому.
- После исправления в eterhack патч надо отправить (при необходимости портировав) в сборку стабильного релиза (сейчас eter-2.0.0)
Если исправление не является хаком, или касается какой-то части кода, изменённой нами в eterwine, то отправлять патч надо в eterwine.
Также напоминаю, что хаки, существенно добавляющие код, стоит по возможности реализовывать в виде отдельных функций, чтобы минимизировать изменения оригинального кода. Если требуется исключить часть кода, её следует поместить в конструкцию #if 0 #endif, не удаляя
Важные моменты:
- Патчи из eter-2.0.0 пропадут, потому что следующая версия будет основана на eterhack. Поэтому важно отправлять их одновременно и туда и туда.
- Патчи из eterwine автоматически копируются в eterhack
Не стесняйтесь обсуждать проблемы и возможные пути их решения в рассылке, для того она и существует.
Перед созданием хака, специфичного для WINE@Etersoft, нужно приложить максимум усилий для по возможности полного исследования проблемы и её источника, создания минимальной программы для воспроизведения проблемы, и конечно для реального исправления, а не очередного костыля в коде.
Если есть уверенность, что исправление (скорее всего) правильное, рекомендуется пропускать его через фильтр wine-patches@winehq.org. Если такой уверенности нет, то подобные хаки или лучше делать специфическими для конкретной программы, или не делать их вообще, т.к. на своем опыте работы с проблемами перерисовки могу сказать, что возможные поломки (вызванные этим хаком) крайне сложно диагностировать/исследовать/исправить.
Общий подход к поиску источника проблемы:
- надо постараться создать минимальный код, который воспроизводит данную проблему
- проверить на ванильном wine, не вызвана ли данная проблема другими хаками, влияющими на перерисовку окон (а такие имеюся во множестве).
- только убедившись в том, что источник проблемы найден и диагностирован начинать искать пути исправления.
- обязательно выполнять 'make test' до и после исправления и убедиться, что все тесты по прежнему выполняюся. Если есть хоть один сломанный тест, это значит, что сломана какая-то программа, которая делает тоже самое, что и этот тест.
- помнить, что чем больше хаков добавляется, тем больше самых разных и порой причудливых проблем создается для себя и того парня в будущем.