PDA

Просмотр полной версии : Компиляция MaNGOS под Win


tempura
04.01.2010, 11:54
Автор : RusDaiveR
Взято : Форум Mangos.ru

Инструкция написана 09.02.2007.
Кто хочет - может написать свою.

Не найдя такой темы на форуме, решил написать этот гид. Использую материалы, собранные по разным форумам. Делаю акцент на то, что у вас уже должен быть установлен .Net FrameWork 3.5.

Получаем исходники:
1. Скачиваем программу Git Устанавливаем ее. (http://msysgit.googlecode.com/files/Git-1.6.5.1-preview20091022.exe)
2. Создаем папку MaNGOS_SOURCES в любом месте. Кликаем правой кнопкой по этой папке, выбираем в меню "Git Bash Here", и пишем в открывшуюся консоль команду git clone git://github.com/mangos/mangos.git Загрузка исходников началась. По завершению загрузки можно приступать к компиляции.
Для обновления исходников кликаем правой кнопкой по все той же папке и пишем
git pull origin master.

Компилируем исходники:
1. Для начала вам необходим Microsoft Visual Studio C++ (2005, 2008).
2. После установки MVSC++ EE, вам понадобится скачать и установить нужные билиотеки. Скачать тут: _http://for-you.ifolder.ru/561374. После скачивания, распаковать в папку \Путь к MVSC++\Microsoft Visual Studio 8\SDK\v2.0, если будет спрашивать заменять ли файл или нет - заменяйте. На этом установка необходимого ПО завершена.
3. Заходите в папку \Папка с исходниками\win - запускаем соответственно те файлы, которые соответствуют вашей версии студии.
mangosdVC80.sln - Microsoft Visual Studio 2005
mangosdVC90.sln - Microsoft Visual Studio 2008
mangosdVC100.sln - Microsoft Visual Studio 2010
4. Кликайте Build на панели вверху, затем Batch Build... - поставить галки везде, где написано Release. Теперь кликаем справа вверху этого окна кнопку Build. Все - компиляция началась.

По завершению компиляции добавляем СкриптДев (НЕ ОБЯЗАТЕЛЬНО, сервер будет работать и без него, но мобы не будут кастовать, боссы будут просто тупо бить, а дровосеки не будут рубить дрова).

Добавляем ScriptDev:
TortoiseSVN офф сайт, качаем (http://tortoisesvn.net/downloads/) (руссификация прилагается)
1. Создаем в папке C:\Папка с исходниками\src\bindings\ папку ScriptDev2.
2. Кликаем правой кнопкой по ней, затем SVN CheckOut. В поле URL of repository вставляем следующий линк: _https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2/ и нажимаем ОК. Начинается загрузка исходников скриптдева. (для обновления используем правую мышу на папке с ScriptDevD2 и выбираем пункт SVN Обновить)
3. Требуется только для Линукса:
через GIT применяем патч из ScriptDev2 (Правой мышей на папке с исходниками MaNGOS и выбрать пункт GIT Bash here)

из оригинального мануала SD2 ...\ScriptDev2\docs\How to install.txtgit am src/bindings/ScriptDev2/patches/MaNGOS-XXXX-ScriptDev2.patchили вторым способомpatch -p1 < src/bindings/scriptdev2/patches/MaNGOS-XXXX-ScriptDev2.patch
('XXXX' is revision number for Mangos)
(я его переименовываю например в 2.patch, чтобы писанины меньше было) Y2kCat

4. Заходим в C:\Папка с исходниками\src\bindings\ScriptDev2, далее запускаем соответственно те файлы , которые соответствуют Вашей студии
mangosdVC80.sln - Microsoft Visual Studio 2005
mangosdVC90.sln - Microsoft Visual Studio 2008
mangosdVC100.sln - Microsoft Visual Studio 2010
Кликайте Build на панели вверху, затем Batch Build... - поставить галки везде, где написано Release. Теперь кликаем справа вверху этого окна кнопку Build. Все - компиляция началась.

После завершения компиляции заберите все *.exe и *.dll файлы из
\Папка с исходниками\bin\release\, остальные нас не интересуют.
Конфиги лежат в папках:
\Папка с исходниками\src\mangosd\ mangosd.conf.dist.in
\Папка с исходниками\src\realmd\ realmd.conf.dist.in
\Папка с исходниками\src\bindings\ScriptDev2\scr iptdev2.conf.dist.in


Если вы предельно точно следовали этой инструкции, то у вас все получится. В итоге вы получите MaNGOS + ScriptDev без патчей.

Чтобы не было лишних вопросов по компиляции:
1. не создавайте папки с русскими именами и пробелами!!!
2. давайте имена не более 8 символов
3. забудьте про папки на "Рабочем столе"
4. Держите оригинальные версии исходников в отдельном месте
5. Компилируйте и патчи накладывайте в тестовых копиях исходников
6. Обновляйте гитом и черепахой оригинальные исходники

Astoria
10.01.2010, 13:03
2. После установки MVSC++ EE, вам понадобится скачать и установить нужные билиотеки. Скачать тут: _http://for-you.ifolder.ru/561374. После скачивания, распаковать в папку \Путь к MVSC++\Microsoft Visual Studio 8\SDK\v2.0, если будет спрашивать заменять ли файл или нет - заменяйте.


Возник такой вопрос: а если у меня в папке Microsoft Visual Studio 8 нету папки SDK и прочее (там вообще одна папка Common7 и объему в ней нет), но есть папка Microsoft Visual Studio 9.0, в ней SDK\v3.5 (тобиш уже не 2.0). Заливать библиотеки все равно нужно?

У меня стоит Visual Studio 2008 Professional Edition SP1 и Библиотеки MSDN для Visual Studio 2008 (нас универ снабжал лицензиями от мелкософта, так и осталось (~7гб установочников).

xstream
17.01.2010, 13:05
Здравствуйте. Моя проблема чем-то похожа на проблема Stink'a, с той лишь разницей, что повторное применение патча ничем ситуацию не меняет. И применялся ли он до или после компиляции мангоса - разницы ноль.
Вот, посмотрите пожалуйста, прикрепил скрин. Далее сколько ни откатывай и не применяй заново - картина не меняется.
Буду очень благодарен любому дельному совету по этому поводу!
Если где-то ответ на сей вопрос был и я не заметил, не ругайте уж сильно, поделитесь ссылочкой. =)
Всем заранее спасибо!
З.Ы. Если применять второй способ: "patch -p1...", то вроде бы патч применяется, но уверенности у меня нет.







-------------------
Правила, А-6 (http://ytdb.ru/announcement.php?a=3)

tempura
17.01.2010, 15:43
Если применять второй способ: "patch -p1...", то вроде бы патч применяется, но уверенности у меня нет.

Сколько времени тебе нужно, чтобы получить эту уверенность? Раз уж начал скринами кидаться, дай пожалуйста скрин с итогами применения того же самого на чистые исходники через patch -p1. И пожалуйста не забудь в этот раз указать точные ревизии ядра и скриптов, и полное название применяемого патча.

xstream
17.01.2010, 19:02
Ну, перый вопрос я пропущу. Вот, приложил скрин с итогами применения на чистые исходники. Название применяемого патча видно на скрине. ScriptDev сегодняшняя, версии 1545. Ревизию ядра я, как бы это абсурдно не звучало, не знаю, где смотреть. Если ориентироваться по последнему sql-апдейту, который лежит в исходниках - версия 9198. Если по последнему коммиту - 9202.

Кот ДаWINчи
17.01.2010, 20:09
Ревизию ядра я, как бы это абсурдно не звучало, не знаю, где смотреть. Если ориентироваться по последнему sql-апдейту, который лежит в исходниках - версия 9198. Если по последнему коммиту - 9202.
смотри там --- src/shared/revision_nr.h

tempura
17.01.2010, 20:14
Ну, перый вопрос я пропущу. Вот, приложил скрин с итогами применения на чистые исходники. Название применяемого патча видно на скрине. ScriptDev сегодняшняя, версии 1545. Ревизию ядра я, как бы это абсурдно не звучало, не знаю, где смотреть. Если ориентироваться по последнему sql-апдейту, который лежит в исходниках - версия 9198. Если по последнему коммиту - 9202.
1. На первый вопрос все-таки лучше ответить. Не мне, а самому себе. Для этого надо применить патч через git am, потом открыть "пропатченные" файлы и посмотреть - добавилось-изменилось там что-то или нет.
2. Ревизию ядра смотреть в файле /git/mangos/src/shared/revision_nr.h, третья строка.
3. Судя по скрину - патч отлично применился. В файле configure.ac сдвинуты строки, все нормально.
4. *Крайне рекомендуется*
Убрать из путей к исходникам все кириллические символы. Также не рекомендуется имя пользователя и название компа с кириллическими символами.
5. *Вопрос на засыпку*
А на венде это вообще нафиг патчить? Вроде бы заменяется только файло линуксового компила: configure.ac и Makefile.am? Про .gitignore я вообще промолчу...

xstream
17.01.2010, 20:54
tempura, Кот ДаWINчи, благодарю! Наверное моё признание в незнании выглядело нелепо, но уж лучше прямо сказать, чем делать вид, а потом придумывать нелепые отмазы.
tempura, отдельное мерси за 4-й пункт, хотя не знаю, зачем это, но знающим виднее. Ну и вопрос на засыпку.. Отвечаю: Не знаю: делал строго по инструкции из документации по MaNGOS'у, взятой когда-то на гетмангосе. Там в установке SD2 под виндовс был пункт "патчить", я его и делал, хотя вроде видел в мануальчике в репозитории SD2, что патч не обязателен, но слушался наших.

Ещё раз спасибо за ответы и советы!

tempura
17.01.2010, 21:55
В командной строке венды кириллица иногда сглючивает, а git bash идет именно через командную строку. Есть нехреновый шанс, что git просто не будет работать, либо будет работать некорректно. Вообще в названиях файлов-папок использовать символы отличные от стандарта латиницы - это недостаток для разработчика...

xstream
17.01.2010, 22:04
Хм... Вот оно что! Что ж, благодарствую, буду знать!

cursecom
26.01.2010, 17:51
Здравствуйте,вчера решил попробовать скомпилировать "сорсы" мангоса на Microsoft Visual Studio 2008 и столкнулся с проблемой компиляции scriptdev2. Проблема в том,что на сервере не работают скрипты. Сервер запустился без ошибок(лог пуст) но скрипты так и заработали. Компилирование скриптов прошло удачно(0 ошибок 0 предупреждений).
Ещё один нюанс заключается в том,что файл "mangosscript" при моём компиле весил 400кб а нормальные(прим. Каратель) весят около ~2мб.
Подскажите в чём могла быть моя ошибка. Спасибо.

StinK
26.01.2010, 20:49
virusav, Sark, вот наш уважаемый tempura написал выше:
А на венде это вообще нафиг патчить? Вроде бы заменяется только файло линуксового компила: configure.ac и Makefile.am? Про .gitignore я вообще промолчу..
cursecom, а СД2 то собрали? Может только ядро)

tempura
26.01.2010, 23:04
вот именно. собрана только дефолтовая минимальная скриптовка mangos.



cursecom
Две недели на перечитывание главы "Добавляем ScriptDev" из шапки.

Sark
29.01.2010, 17:12
В этом же посте на РУ Мангос было о наложении патчей (как пример, разбирался патч на SD2):

Наложение патчей на SD2

Так как ScriptDev2 сидит на TortoiseSVN то и патчить будем соответственно черепахой.

1. У нас уже имеется готовый файл патча например из исходников Карателя 6_WotLK Taxi-861.patch кликаем на нем правой кнопкой мышки

2. указываем папку с исходниками SD2

3. Кликаем ПКМ в левом окне и выбираем Patch all

4. в итоге получаем пропатченный SD2 в нашем случае на такси DK

Вопрос. Указываю папку в сорцах с исходниками SD2 - открывает чистых два окна. В чем проблема может быть?

Пока делаю так:
1. Жму на папке с сорцами sd2 правой кнопкой и выбираю git bash
2. Указываю на патч => пишет, что применен.

Вместо SVN так можно патчить?

tempura
29.01.2010, 17:57
Вопрос. Указываю папку в сорцах с исходниками SD2 - открывает чистых два окна. В чем проблема может быть? Патч выбрать надо. Просто "указать папку с исходниками" мало. Хотя тут еще вопрос есть - а вы, случаем, не на GIT репозиторий пытаетесь наложить патч с помощьью SVN? На SVN репо - с помощью SVN, на GIT репо -с помощью GIT. Откуда патч сделан - неважно, а вот куда он льется - важно.

Пока делаю так:
1. Жму на папке с сорцами sd2 правой кнопкой и выбираю git bash
2. Указываю на патч => пишет, что применен.

Вместо SVN так можно патчить? Раз "патч применен" - значит и можно и нужно. Вот если бы не применился - было бы грустно.

Sark
29.01.2010, 18:20
По данному мануалу работал - стянул сорцы через SVN в src/bindings/scriptdev2 исходников git. Буду знать

Eye_of_akerus патч ставил. при указанном мной способе патчился файл Ebon_Hold.cpp, он в директории SD2 и относится как раз к Акерусу.

Спросил, потому что до конца не уверен в таком способе.

Примечание: по 1. не создавайте папки с русскими именами и пробелами!!!

Даже если сам cmd корректно отображает кириллицу, то git стабильно выдает ошибку на нее.

Moonkins
04.02.2010, 10:23
1 Скачиваю сорцы через гит.
2 Запускаю файл mangosdVC90.sln т.к. установлена студия 2008.
3 В верхней части студии можно сразу выбрать тип компиляции, т.е. ставлю Release и рядом выбор битной системы, т.е. ставлю х64.
4 Жму вкладку построение и выбираю "построить решение".
Происходит компиляция, но в конечной строке пишет: успешно: 1, пропущено: 12.
При компиляции на х32 проблем нет, т.е. в конце пишет: успешно: 13.
Аналогично с компиляцией скриптдев2.
ПС: писал в свободном стиле. :)

Konctantin
04.02.2010, 10:32
А при установке студии, вы не поставили галочку
http://www.imageup.ru/img47/axvat-1271888.jpg

Angeel
10.02.2010, 13:35
У меня тут такая проблема с git GUI при выполнении любого действия выходит такая ошибка :child process exited abnormally
child process exited abnormally
while executing
"exec {C:/Program Files/Git/libexec/git-core/git-config.exe} --global --unset gui.recentrepo {^C:/Users/?????/Desktop/pomm$}"
("eval" body line 1)
invoked from within
"eval exec $opt $cmdp $args"
(procedure "git" line 23)
invoked from within
"git config --global --unset gui.recentrepo "^$p\$""
(procedure "_unset_recentrepo" line 3)
invoked from within
"_unset_recentrepo [lindex $recent 0]"
(procedure "_append_recentrepos" line 19)
invoked from within
"_append_recentrepos [pwd]"
(procedure "_do_open2" line 12)
invoked from within
"_do_open2 $this"
(procedure "choose_repository::_open_recent" line 4)
invoked from within
"choose_repository::_open_recent ::choose_repository::__o1::__d 42,10"
(command bound to event) что делать???

timmit
10.02.2010, 13:42
может задать вопрос автору данной программы?
а вообще лучше использовать git bash here заместо git gui here

DeSSower
11.02.2010, 00:45
а как определить какая ревизия ядра под какую версию клиента ?

Почитать логи коммитов и посмотреть содержимое AuthCodes.h

scorpio95
26.02.2010, 17:20
А все уже разобрался.
Просто если версия studio 2008 библиотеки никакие закидывать не надо.А я закинул и была ошибка,а теперь все ок.

-------------------
Просьба привести в соответствие с Правилами составления баг-репортов (http://ytdb.ru/announcement.php?a=2).