вольный перевод статьи My first OpenBSD port
http://homing-on-code.blogspot.de/2015/01/my-first-openbsd-port.html
Мой первый порт для OpenBSD...
... только что успешно приземлился в дереве портов. Сама гонка мне понравилась, и этот пост - краткое изложение впечатлений, как в первый раз успешно приземлиться. Хочу заметить, что это не учебник, просто мои личные переживания (в переводе буратины) от того, что мой первый порт влился в дерево.
OpenBSD впервые завёлся у меня 7 декабря 2014 года. Первые нескколько недель я посвятил тому, чтобы изучить эту систему, и тут мне очень помогла книжка «Michael W. Lucas - Absolute OpenBSD, 2nd edition». Также я подписался на рассылки, чтобы быть в курсе того, как живёт и разрабатывается эта система. Достаточно освоившись, я пересел на -CURRENT (в основном - в бинарном виде, через snapshot).
С самых первых дней я хотел портировать Otter для OpenBSD. Мне нравится этот браузер, он выглядит многообещающе, он активно развивается, и меня впечатлило его развитие за год. Но был один маленький недостаток - отсутствие порта Qt5 в OpenBSD. Я проверял 'pkg_add -Q qt5' время от времени, и в один прекрасный день вместо традиционного «опять ты?» система смирилась, и отдала мне qt5. Тогда я и занялся портированием.
Начал я с прощупывания разработчиков Otter на предмет наличия отсутствия OpenBSD-шников - чтобы не дублировать работу, если кто уже начал портирование.
Узнав, что я такой один, что я сделал первый шаг на эту опасную дорогу, и попытался это собрать. Сейчас я понимаю, что это немного неверное решение, так инфраструктура портов OpenBSD берёт на себя множество проблем, которые я решал вручную. Некоторые из проблем были связаны с самим портом Qt, поэтому 25 декабря я составил список проблем и пошёл разбираться в ports@. К тому времени у меня была рабочая, но падучая версия.
http://marc.info/?t=141953939000001&r=1&w=2
По мотивам моих выступлений «что сказал компилятор» было исправлено небезопасное использование API - это хорошо, это порядок. Но, что ещё лучше, - была обнаружена ошибка в самом Qt5, которая ломала загрузку GTK из-за захардкоженых версий библиотек. Знающие люди потом доложили, что баг зарепорчен в апстрим - тот самый баг, который привёл к двум самым ужасающим крахам в моей отдельно взятой сборке (падало на изменении размера окна или выдвижении подоконника)
[я тут нифига не понял, о чём идёт речь - это одна ошибка или две разных. даю, как есть]
The compiler warnings I reported resulted in a review of the Qt5 port for insecure API usage - which is nice. Though the biggest win at that point was detecting a bug in Qt5 that failed to load GTK due to hard coded library versions. Later down in the thread another user pointed out a bug he reported upstream to Qt developers - that bug was responsible for the two biggest crashes I hit with Otter (crash on modal dialog/window resize).
Моя слабенькая музейная i386 отказалась компилировать весь qt5, сославшись на более важные дела на этот год-два, поэтому я дождался, когда в снапшотах появится бинарная qt5 со всеми исправленными проблемами.
Вообще, в OpenBSD есть чёбые вещи для новичков портового фронта. Porters Handbook http://www.openbsd.org/faq/ports/ охватывает почти всё, что нужно для успешного портирования. Я прочёл его весь, и прошёл указанные там примеры по шагам.
Также неоценимую помощь мне оказали ответы на мой первый e-mail - мне не пришлось изобретать всё с нуля, люди поделились готовыми модулями портовой инфраструктуры для gcc4, CMake и Qt - это сэкономило много времени на первоначальную подготовку, освоение и погружение.
Служение портам не терпит суеты. Своим портом я занимался примерно раз в неделю по вечерам. И 13 января у меня был рабочий порт, который я отправил в рассылку ports@ для ревью. И началось великое обсуждение между мною, опытными портовиками и разработчкиками. И были тонны фидбека. И был порт. И 24 января он успешно приземлился в дерево.
Меня всё ещё напрягало, что программа падала у zhuk@ с его настройками [и у меня - прим. бур.], но в упор не хотела падать у меня. Но вместе с этим я был горд, что мой порт, сложенный из опер и слов....
# cvs -q up -Pd
P Makefile
U otter-browser/Makefile
U otter-browser/distinfo
U otter-browser/patches/patch-CMakeLists_txt
U otter-browser/pkg/DESCR
U otter-browser/pkg/PLIST
Что дальше? Это очевидно. Маинтайнить, чекать репорты, фиксить баги, и радоваться тому, как хорошо в стране OpenBSD-шной жить. Также я начал засматриваться на другие порты, которые пролетают в рассылке.
http://marc.info/?t=142189020100001&r=1&w=2
Почему я решил этим заняться? Ну, во-первых - мне нужен Otter, и теперь он у меня есть. Во-вторых - держи ноги в тепле, а порты - в актуальности, и тогда жизнь сразу наладится. Люди любят свежие и интересные порты, они помогают им нежно окунуться в мир OpenBSD, а не бултыхаться в разбегу в воду с каких-то древних соооружений.
А тестирование портов не занимает много времени, но если никто не будет тестировать порты - они не попадут в дерево, и жизнь пройдёт мимо них.
Я буду продолжать дело портирования. Будучи большим вентилятором (по другим вариантам перевода - фанатом) Fallout, я хочу добавить https://falltergeist.org и уже начал заниматься этим.
http://marc.info/?t=142118894500001&r=1&w=2
Porting. Porting never changes...