YTDB

YTDB (http://ytdb.ru/index.php)
-   Ядро (http://ytdb.ru/forumdisplay.php?f=25)
-   -   Компиляция MaNGOS под Win (http://ytdb.ru/showthread.php?t=1995)

tempura 04.01.2010 11:54

Компиляция MaNGOS под Win
 
Автор : RusDaiveR
Взято : Форум Mangos.ru

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

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

Получаем исходники:
1. Скачиваем программу Git Устанавливаем ее.
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 офф сайт, качаем (руссификация прилагается)
1. Создаем в папке C:\Папка с исходниками\src\bindings\ папку ScriptDev2.
2. Кликаем правой кнопкой по ней, затем SVN CheckOut. В поле URL of repository вставляем следующий линк: _https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2/ и нажимаем ОК. Начинается загрузка исходников скриптдева. (для обновления используем правую мышу на папке с ScriptDevD2 и выбираем пункт SVN Обновить)
3. Требуется только для Линукса:


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

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







-------------------
Правила, А-6

tempura 17.01.2010 15:43

Цитата:

Сообщение от xstream (Сообщение 8542)
Если применять второй способ: "patch -p1...", то вроде бы патч применяется, но уверенности у меня нет.

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

xstream 17.01.2010 19:02

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

Кот ДаWINчи 17.01.2010 20:09

Цитата:

Сообщение от xstream (Сообщение 8608)
Ревизию ядра я, как бы это абсурдно не звучало, не знаю, где смотреть. Если ориентироваться по последнему sql-апдейту, который лежит в исходниках - версия 9198. Если по последнему коммиту - 9202.

смотри там --- src/shared/revision_nr.h

tempura 17.01.2010 20:14

Цитата:

Сообщение от xstream (Сообщение 8608)
Ну, перый вопрос я пропущу. Вот, приложил скрин с итогами применения на чистые исходники. Название применяемого патча видно на скрине. 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

Цитата:

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

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

Цитата:

Сообщение от Sark (Сообщение 10072)
Пока делаю так:
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 библиотеки никакие закидывать не надо.А я закинул и была ошибка,а теперь все ок.

-------------------
Просьба привести в соответствие с Правилами составления баг-репортов.


Текущее время: 05:02. Часовой пояс GMT +4.

YTDB - MaNGOS DataBase