Qutim 0.2 сборка под Mac OS 10.6.x
В статье я попытаюсь рассказать, что успел понять за неделю общения с Mac OS и компиляцией проектов под нее. Прошу заметить, что ничего из написанного не предендует на абсолютную правильность, более того, я уверен, что часть вещей можно сделать проще и по-другому. Просьба внимательно ознакомиться с P.S. который идет ниже всего текста.
Вступление.
До последнего момента основным IM-клиентом на win и *nix ОС был SIM. После какого-то глюка с ним, я решил сменить, и по совету напарника поставил Qutim. Под win и *nix никаких проблем нет вообще: под win существует nightly-build, под nix есть репозитарии с тем-же nightly build. На крайний случай, можно собрать из svn git. А вот дела с MacOS обстоят просто отвратительно. Поддержки никакой (ни в коем случае не обвиняю разработчиков), сборки мега-древние. Те, кто в теме как собирать – забили на это дело и свалили, остальные молчат.
Подготовка.
Ну что ж, мой дорогой друг. Если ты и вправду решил проклевать себе мозг, но своими руками собрать qutim (и пару-тройку плагинов) для него, я попробую рассказать как это делается. Не буду долго описывать свой путь, установку macports для поднятия git, трех пересборок qt-4.6 и т.п., а постараюсь перейти к сути и вкратце. Сразу же пару слов скажу касательно методов сборки, их два:
- Для себя-любимого, используя бинарный Qt-4.6 (взять здесь ~160Mb)
- Для себя-любимого и распространения Qt-4.6-src (взять здесь ~150Mb)
Разница тут следующая: ставя бинарнный пакет (п.1) никаких более плясок не потребуется, только сборка проекта. Но попытавшись отдать кому-либо скомпилированный проект (речь сейчас только про Qt), того человека постигнет разочарование: программа не запустится, т.к. будет искать Qt-Framwork’и в папке /Library/Frameworks , а их, естественно, там не окажется. Ставя пакет исходников, вам будет необходимо скомпилировать (собрать) его указав требуемые параметры, и после этого, используя утилиту install_name_tool, указать исполняемому файлу и библиотекам, где искать Framework-и.
В общем, что нам нужно:
- Apple MacMini, iMac, MacBook либо хакинтош с Mac OS 10.6.x (я собирал x64)
- Доступ в инет, и много.
- Пакет Xcode for SnowLeopard (брать тут. Долгая, но бесплатная регистрация с ссылкой на скачивание dmg-образа ~700Mb)
- Пакет macports 1.8.2 (либо брать со страницы, последний что будет)
- Какой-либо пакет Qt, о которых я писал выше.
- Исходники самого qutim
- Пару пачек сигарет, литра три чая
- Много терпения.
Сам процесс.
1. Ставим пакет Xcode
2.Если не хотим париться с git и скачиванием сырцов, смотрим в п.6
3. Ставим macports
4. Запускаем консоль, пишем “sudo port install git-core” жмакаем enter, ждем.
5. Мануал по скачиванию сорцов из git »
- Создаем папку для qutim, качаем туда сорцы из ветки sdk02
- mkdir qutim-dev && cd qutim-dev
- git clone git://gitorious.org/qutim/qutim.git
- cd qutim
- git checkout origin/sdk02
- Создаем папку plugins, качаем туда нужные протоколы: icq, jabber, mrim
- mkdir plugins && cd plugins
- git clone git://gitorious.org/qutim/oscar.git
- cd oscar
- git checkout origin/sdk02
- cd ..
- git clone git://gitorious.org/qutim/jabber.git
- cd jabber
- git checkout origin/sdk02
- cd ..
- git clone git://gitorious.org/qutim/mrim.git
- cd mrim
- git checkout origin/sdk02
- cd ..
- На этом все. Если нужно что-то дополнительное – качайте сами, не забывайте про checkout origin/sdk02
- Далее пункт 8.
6. Идем на http://gitorious.org/qutim выкачиваем оттуда сам qutim и выкачиваем плагины по необходимости: oscar (icq), jabber, mail.ru im, vkontakte. Для этого заходим в раздел qutim (сделаем на его примере) ищем в заголовке sdk02, жмем на него, и в правой части “Download sdk02 as tar.gz”, сохраняем. Проделываем подобное для всего остального.
7. Распаковываем все, что скачали. можно через Finder, можно поставить MidnightCommander из macports. Для удобства, я создал папку в корне второго диска, и распаковал туда qutim, а внутри папки уже создал plugins, и распаковал туда плагины.
8. Далее, нам нужно поставить, либо собрать Qt-4.6. Ставить просто: монтируем dmg-образ, ставим. Как собирать – ниже.
Очень рекомендую сразу же обратиться к “родной” документации по сборке Qt на их сайте. Если вкратце – то ниже.
Скачали исходники, распаковали (можно в Finder’e), заходим в папку из консоли, набираем ./configure -help, курим и думаем что нам нужно. Я собирал со следующими параметрами ./configure -coca -arch x86_64 && make -j5 && make install
На весь процесс уходит часа 2-2,5. Можно кино посмотреть, чаю попить, погулять с собакой и .т.п
9.Если вы все же дошли до этого момента, могу поздравить. После того, как мы установили/собрали Qt-4.6, самая пора начать собирать qutim. Я обычно начинаю сборку с плагинов.
10. Заходим в папку qutim/plugins/qutim-jabber/ (если качал через git – то qutim/plugins/jabber/) , создаем папку build, идем в нее. запускаем “cmake .. -DCMAKE_BUILD_TYPE=Release”, ждем окончания процесса. После этого запускаем “make -j5“. Немного внимания следует уделить параметру -j. Его я выставляю по кол-ву ядер процессора +1, где-то читал мнение, что нужно выставлять параметр -j по кол-во ядер*2. “Думайте сами, решайте сами” (с).
Во время компиляции на warnings не обращаем внимания, а вот error не дадут скомпилироваться проекту. Нужно очень внимательно смотреть в чем именно ошибка, и пытаться исправить ее, либо обратиться на форум разработчиков. Но, при правильном выполнении ошибки возникнут немного позже, и я напишу как их исправить. Поздравляю, jabber-плагин мы собрали, пока оставляем его.
11. Заходим в папку qutim-mrim (если исходники брались через git – то просто mrim), и полностью повторяем п.9.
12. Идем в папку qutim-oscar (либо просто oscar), запускаем “qmake”. Здесь важно помнить, что при использовании бинарного qt-4.6, после запуска qmake нужно выполнить “open icq.xcodeproj”, дождаться, пока запуститься Xcode, выбрать в выпадающем меню релиз SDK10.6, Release, x64. После этого в верхнем меню Build выбрать “build” и ждать. По идее, будет штук 40 warning-ов, и не одной error. Опять же, если возникают error, нужно смотреть почему. Если Qt-4.6 собирали сами, то делается все проще: запускается qmake, после него make-j5, и ждать окончания.
13. Если плагины все же собрались нормально, можно приступить к сборке ядра, только сначала кое-что подправим. Переходим в /qutim/src открываем systeminfo.cpp, спускаемся до 227-й строчки, и вместо “long” пишем “SInt32″, что бы получилась такая строка
SInt32 minor_version, major_version, bug_fix;
после этого сохраняемся, выходим из src, создаем папку build и заходим в нее. И повторяем пункт 9.
14. Перекур.
15. После всего проделанного, необходимо зайти в qutim.app/Contents/MacOs/ создать папку Plugins и закинуть туда три, или сколько нужно, собранных плагинов. поднимаемся наверх, и пытаемся запустить ./qutim Смотрим за выводом скрестив пальцы.
16. В общем-то, сборка “для себя” закончена. Можно радостно юзать собранный своими руками последний qutim.
17. Про сборку для “друзей” я расскажу позже.
P.S. Прошу внимательно прочитать все сказанное ниже, чем писать комменты, что ничего не получилось и я, лошара, криво что-то написал.
- Все описанные действия были проделаны мной несколько раз, ошибки могут быть только при работе с git, по причине того, что некоторые вещи различаются на bsd и *nix-системах.
- Типичная ошибка, на которую я натыкался при компиляции – это попытка собрать x86 приложение искпользуя x64 библиотеки. Либо собирайте Qt-4.6 с ключем -universal, либо собирайте true x64
- Крайне удобно пользоваться Midnight Commander. Взять можно тут.
- Для себя проще собирать используя бинарники, а не исходники Qt.
- Моя сборка тут, qutim(0.20-icq-jabber-mrim) + qutim допы, которые нужно положить в ~/.config/qutim
- Внимательно и несколько раз прочитать следующие ресурсы:
- http://doc.trolltech.com/4.6/install-mac.html
- http://wiki.qutim.org/building_from_git
- http://qutim.org/forum/viewtopic.php?f=20&t=104
- http://doc.trolltech.com/4.6/deployment.html
- http://doc.trolltech.com/4.6/deployment-mac.html



А можешь выложить последнюю собраную ревизию вконтакте?
Просто в этом месяце не имею возможности скачать xcode и сделать сам
Да и с программированием я слаб
Пока нет возможности скомпилить. Если чуть позже.
PS Кстати, плагин аццки корявый, и я не уверен, что он нормально соберется под mac.
Здорово, Роман. Клиент работает =) незнаю насчет стабильности, но по крайней мере запустился и онлайн=)
Респект за проделанную работу, не останавливайся ни на чем, всегда вперед =)