PDA

Просмотр полной версии : [Гайд] Компиляция MaNGOS под FreeBSD на примере 8.0-RELEASE


metacreo
07.03.2010, 02:10
В принципе можно было бы перенести вики полностью сюда. Но в основном там описания баз, да и проекты братские, так имеет ли смысл?

Заходите на http://wiki.ytdb.ru/ - там есть вся нужная информация. Если нету - значит надо добавить.

Инсталляция mangos под FreeBSD 8.0.

Все пути относительно корня файловой системы / и домашнего каталога ~/
В системе создан пользователь: wow Домашний каталог: /usr/home/wow
С ним и будем работать после установки портов.

Итак. Для установки, запуска и настройки нам понадобятся следующие программы:
git, subversion, mysql51-server, cmake, screen, p7zip
Всё прекрасно ставиться из портов, без каких либо патчей и извращений :yes3:
Порты ставим от root или от уполномоченного пользователя.

# whereis git subversion mysql51-server cmake screen p7zip
git: /usr/ports/devel/git
subversion: /usr/ports/devel/subversion
mysql51-server: /usr/ports/databases/mysql51-server
cmake: /usr/ports/devel/cmake
screen: /usr/ports/sysutils/screen
p7zip: /usr/ports/archivers/p7zip
#


Заходим везде и устанавливаем:

# make install clean


О настройке и установке MySQL можно почитать здесь:
http://daemony.org/freebsd/mysql51-server-client-setup.html

Переключаемся на пользователя от которого будем работать:

# su wow
% cd (переходим в домашний каталог)


Получаем исходники mangos из github:

% git clone git://github.com/mangos/mangos.git


Получаем исходники ScriptDev2 из github:

% git clone git://github.com/scriptdev2/scriptdev2.git ~/mangos/src/bindings/ScriptDev2


Переходим в директорию с исходниками:

% cd mangos


Применяем патч ScriptDev2:

% git apply < src/bindings/ScriptDev2/patches/MaNGOS-11167-ScriptDev2.patch


Создаём директорию для сборки сервера:

% mkdir build


В принципе всё можно собрать и инсталлировать.

Переходим в каталог для сборки сервера:

% cd build


Подготавливаем сборку, указав пути для сервера:

% cmake -DPREFIX=/home/wow/server ..


Собираем и устанавливаем:

% make
% make install


Настраиваем конфигурационные файлы:

% cd ~/server/etc
% cp scriptdev2.conf.dist scriptdev2.conf
% cp realmd.conf.dist realmd.conf
% cp mangosd.conf.dist mangosd.conf
% ee scriptdev2.conf


Для unix сокета меняем запись по умолчанию на:

ScriptDev2DatabaseInfo = ".;/tmp/mysql.sock;mangos;mangos;scriptdev2"

“сокет_mysql_сервера ; имя_пользователя_базы ; пароль ; имя_базы ”


% ee realmd.conf

Настраиваем mysql-сокет и логи:

LoginDatabaseInfo = ".;/tmp/mysql.sock;mangos;mangos;realmd"
LogsDir = "/home/wow/logs/"
MaxPingTime = 30
RealmServerPort = 3724
BindIP = "0.0.0.0"



% ee mangos.conf

Настраиваем директорию с мапами, логи, mysql-сокет и мир по желанию :

RealmID = 1
DataDir = "/home/wow/server/data"
LogsDir = "/home/wow/logs"
LoginDatabaseInfo = ".;/tmp/mysql.sock;mangos; mangos;realmd"
WorldDatabaseInfo = ".;/tmp/mysql.sock;mangos; mangos;mangos"
CharacterDatabaseInfo = ".;/tmp/mysql.sock;mangos; mangos;characters"
LoginDatabaseConnections = 1
WorldDatabaseConnections = 1
CharacterDatabaseConnections = 1
MaxPingTime = 30
WorldServerPort = 8085
BindIP = "0.0.0.0"


Создаём директории для логов и мапов:

% mkdir ~/logs
% mkdir ~/server/data


Работа с базой.
Скачиваем заселённую базу мира YTDB и распаковываем:
(Рекомендую использовать именно YTDB так как она шагает в ногу со временем а также достаточно русифицирована)

% svn co http://svn2.assembla.com/svn/ytdbase ~/YTDB
% 7z e ~/YTDB/R59/YTDB_0.14.2_R590_MaNGOS_R11278_SD2_R2003_ACID_R308 _RuDB_R38.8.7z

Заливаем базы в базы =). Обратите внимание, операции связанные с созданием баз выполняются от root.

% mysql -u root -p < ~/mangos/sql/create_mysql.sql
% mysql -u mangos -p realmd < ~/mangos/sql/realmd.sql
% mysql -u mangos -p characters < ~/mangos/sql/characters.sql
% mysql -u mangos -p mangos < ~/mangos/sql/mangos.sql
% mysql -u mangos -p mangos < ~/mangos/sql/mangos_spell_check.sql

Заливаем базу мира YTDB и обновления:

% mysql -u mangos -p mangos < ~/YTDB/R59/YTDB_0.14.2_R590_MaNGOS_R11278_SD2_R2003_ACID_R308 _RuDB_R38.8.sql
% mysql -u mangos -p mangos < ~/YTDB/R59/Updates/591_corepatch_mangos_11278_to_11299.sql
% mysql -u mangos -p mangos < ~/YTDB/R59/Updates/591_mangos_FIX_\(11299\).sql

В такой последовательности применяем все последующие обновления, если таковы существуют.
Далее заливаем в базу ScriptDev2:

% mysql -u root -p < ~/mangos/src/bindings/ScriptDev2/sql/scriptdev2_create_database.sql
% mysql -u mangos –p scriptdev2 < ~/mangos/src/bindings/ScriptDev2/sql/scriptdev2_create_structure_mysql.sql
% mysql -u mangos –p scriptdev2 < ~/mangos/src/bindings/ScriptDev2/sql/scriptdev2_script_full.sql
% mysql -u mangos -p mangos < ~/mangos/src/bindings/ScriptDev2/sql/mangos_scriptname_full.sql


Добавляем свой реалмлист и аккаунт ГМ (admin) через mysql:

% mysql -u mangos -p realmd
mysql> UPDATE realmlist SET name='my super server', address='192.168.0.10' WHERE id='1';
mysql> DELETE FROM account;
mysql> INSERT INTO account (username,sha_pass_hash,gmlevel) VALUES ('admin',SHA1(CONCAT(UPPER('admin'),':',UPPER('pas sword'))),'3');

192.168.0.10 - ip интерфейса, который смотрит в сеть, admin и password - логин и пароль ГМа.

Выдираем карты из клиента и копируем в директорию для мапов:
~/mangos/contrib/extractor/ad.exe и ~/mangos/contrib/vmap_extract_assembler_bin всё из папки копируем в корневую папку клиента wow,
на машину под управлением Windows. Запускаем ad.exe, ждём завершения, запускаем makevmaps_SIMPLE и тоже ждём.
Заливаем папки vmaps, maps и dbc на FreeBSD в директорию которую создали ранее ~/mangos/data
Должно получиться так: ~/server/data/vmaps ~/server/data/maps ~/server/data/dbc

Редактируем скрипт запуска:

% ee /usr/home/wow/server/bin/run-mangosd


#!/bin/sh
while true ; do
servlog='/home/wow/logs/Server.log';
outpatch='/home/wow/logs/crash/';
date=`date "+%Y-%m-%d_%H:%M:%S"`;
echo "Server CRASHED !!! Start Bugreport System." >> $outpatch$date.txt;
echo "Server.log Log FILE Last 30 Lines:" >> $outpatch$date.txt;
cat $servlog | tail -n 30 >> $outpatch$date.txt;
echo "" >> $outpatch$date.txt;
echo "END bugtracker system." >> $outpatch$date.txt;
nice -n -20 /home/wow/server/bin/mangosd
done

Делаем скрипт запуска исполняемым:

% chmod +x /usr/home/wow/server/bin/run-mangosd

Запускаем:

% screen -AmdS realm /home/wow/server/bin/realmd
% screen -AmdS world /home/wow/server/bin/run-mangosd


чтобы посмотреть, что происходит с сервером, вводим команды:
для реалма
% screen -r realm
для мира
% screen -r world
когда насмотрелись, жмём Ctrl+A,D чтобы отключиться от screen.
Ctrl+C остановит сервер

Первый запуск mangosd рекомендуется произвести без screen.

% screen -AmdS realm /home/wow/server/bin/realmd
% cd /home/wow/server/bin/
% ./mangosd


Вот и всё. Ничего особенного.
Удачи всем.

FreeBSD
07.03.2010, 11:59
Устаревший
Все пути дериктории указывайте из корня системы /usr/... и т.д

Для работы нам необходимо (все это можно ставить из портов):

Subversion (/usr/ports/devel/subversion)
mysql (/usr/ports/databases/mysql51-server)
automake (/usr/ports/devel/autotools)
gmake (/usr/ports/devel/gmake)
screen (/usr/ports/sysutils/screen)

Установка ПО

Если есть лишнее время трафик и какой-то опыт работы с портами, то ставим всё из портов

make -C /usr/ports/devel/subversion install clean
make -C /usr/ports/databases/mysql51-server install clean
make -C /usr/ports/sysutils/screen install clean

Начинаем установку:

Cоздаем директорию компиляции и исходников:
mkdir /mangos/comp
mkdir /mangos/src

переходим в директорию с исходниками

cd /mangos/src

Получаем исходники мангоса из git:

git clone git://github.com/mangos/mangos.git

cd /mangos/src/bindings (директория для исходников scriptdev2)

скачиваем исходники ScriptDev2 с SVN:

svn co https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2/

Применяем последний патч, идущий вместе с ScriptDev2:

patch < src/bindings/ScriptDev2/patches/MaNGOS-r5049-Scriptdev2.patch

На версии 7.2 Stable зачастую пропатчить SD получится только нижеописаной командой. Возможно в 8 версии может возникнуть проблема с заливкой патча.
git apply < src/bindings/ScriptDev2/patches/MaNGOS-9519-ScriptDev2.patch

если у кого то не ставить патч командой то патчим в ручную:
для этого заходим /mangos/src/bindings/ScriptDev2/patches/

ее MaNGOS-r5049-Scriptdev2.patch (Цифры в зависимости от ревизии это просто пример)

Далее:

cd /mangos/src

autoreconf -f -i

mkdir obj

cd /mangos/src/obj

начнем конфигурировать исходники:

для 32бит ос, одноядерник (например ставите сервер дома эксперимента ради)
../configure
CFLAGS="-O2 -pipe -fomit-frame-pointer"
CXXFLAGS="-O2 -pipe -fomit-frame-pointer"
--prefix=/mangos/comp --sysconfdir=/mangos/comp/etc --with-python --enable-cli --with-gnu-ld

для 64бит ос, двуядерник (для рабочей конфигурации со стабильно-опитмизироваными параметрами)
../configure
CFLAGS="-march=athlon64 -m64 -O2 -msse3 -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -frename-registers -fno-strict-aliasing -fno-strength-reduce -fno-delete-null-pointer-checks"
CXXFLAGS="-march=athlon64 -m64 -O2 -msse3 -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -frename-registers -fno-strict-aliasing -fno-strength-reduce -fno-delete-null-pointer-checks"
MAKEOPTS="-j3"
--prefix=/mangos/comp --sysconfdir=/mangos/comp/etc --with-python --enable-cli --with-gnu-ld

...компилим и устанавливаем

gmake

gmake install

Ядро скомпилировалось, далее работаем с бд, настраиваем конфиги и зап****ем сервер.

Next
08.03.2010, 06:45
На версии 7.2 Stable зачастую пропатчить SD получится только нижеописаной командой. Возможно в 8 версии может возникнуть проблема с заливкой патча.

git apply src/bindings/ScriptDev2/patches/MaNGOS-9519-ScriptDev2.patch

Добавьте как дополнение в первый пост.

muraig
10.03.2010, 08:15
Доброе время суток!
собрал порт под FreBSD-8
опции такие:

USE_AUTOTOOLS= aclocal:19 libtoolize autoconf:262 autoheader:262 automake:19 libtool:22
ACLOCAL_ARGS= -I ${LOCALBASE}/share/aclocal
AUTOMAKE_ARGS= -a
USE_GMAKE= yes
USE_AUTOCONF= yes
USE_AUTOMAKE= yes
USE_LIBTOOL= yes

CPPFLAGS+= -I${LOCALBASE}/include
CFLAGS+= -O0
CONFIGURE_ENV= CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}"
GNU_CONFIGURE= yes
USE_LDCONFIG= yes
LDFLAGS+= -L${LOCALBASE}/lib -L/usr/lib
LIB_DEPENDS= ACE.5:${LOCALBASE}/lib
LIB_DEPENDS= ssl.7:${LOCALBASE}/lib
USE_GNOME= gnometarget pkgconfig

CONFIGURE_TARGET=--build=${MACHINE_ARCH}-portbld-freebsd${OSREL}
CONFIGURE_ENV= CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}"
INSTALLS_SHLIB= yes

опции взял по аналогии с портом ACE-5-7-5
пытаюсь скомпилить, при make run-autotools-automake
мне такая ошибка:

Makefile.am: installing `./INSTALL'
configure.ac:36: error: possibly undefined macro: AC_MSG_ERROR
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
*** Error code 1

Stop in /usr/local/data/svn/PORTS/mangos.

Пытаюсь разобраться с зависимостями..может кто навскидку подскажет в чем причина ошибки ?

ice74
10.03.2010, 10:21
исходники мангоса здесь: /home/mangos/mangos
скриптдева здесь: /home/mangos/scriptdev2

Обнавляем по svn:
svn up /home/mangos/mangos
svn up/home/mangos/scritpdev2

копируем исходники в отдельные папки:
cp -r /home/mangos/mangos /home/mangos/mangos-4490 (согласно версии ядра)
cp -r /home/mangos/scriptdev2 /home/mangos/ScriptDev2-134

делаем архивы (находимся в /home/mangos) :
tar -czf mangos-4490.tar.gz mangos-4490/*
tar -czf ScriptDev2-134.tar.gz ScriptDev2-134/*

переносим арихвы в хранилище дистов:
mv *tar.gz /usr/ports/distfiles/

идём в порт мангоса:
cd /usr/ports/games/mangos

правим мэйкфайл - меняем версию ядра и скриптдева на новую

в файле distinfo можно заменить размеры и хешы дистов на новые, но это не обязательно, если запустить сборку с NO_CHECKSUM=yes

и теперь собираем и устанавливаем:
make NO_CHECKSUM=YES
make deinstall
make reinstall

со старого форума

FreeBSD
10.03.2010, 14:30
я пользуюсь gmake

Splinter
10.03.2010, 22:08
Выкладываю порт ACE-5.7.8

http://filebeam.com/ecf3e052342312206eeee9a56ff01c7c

Распаковываем в /usr/ports/devel/
Переходим в /usr/ports/devel/ace-devel/
Пишем make install clean.

При ../configure указывайте ключ --disable-builtin-ace.

AVATAR
10.03.2010, 22:44
Компилирую под FreeBSD 7.2 и думаю что:

git apply src/bindings/ScriptDev2/patches/MaNGOS-9519-ScriptDev2.patch

Нужно исправить на:

git apply < src/bindings/ScriptDev2/patches/MaNGOS-9519-ScriptDev2.patch

И естественно допишите в мануале, что путь в данном случае лучше указать из корня файловой системы... /usr/local/ итд, а то появляются непонятки...

:)

KaraPUZ
15.03.2010, 21:18
Вот в первом посте написано как ставить пакеты,если они уже есть на копме,а как ставить если тянуть с репо с инета ?
Например как на линуксе apt-get installl ?
Есть ли что-то подобное на фрибсд ?
Я еще не перешла на фри,но хотелосьбы узнать всё перед переходом на другую ОС.

muraig
16.03.2010, 04:15
Доброе время суток !
Вот такая ошибка:

>> Loaded 16052 CreatureEventAI scripts
Initializing Scripts...
Error loading Scripts Library libmangosscript.so !
Library missing required functions.

Вот ревизия и базы:

MaNGOS/0.16.0 (2010-03-12 15:20:05 Revision 9573 - 43dbe28912a5d5418c816243492f219bed92eeb0) for FreeBSD_x64 (little-endian) [world-daemon]

инструменты:

ACLOCAL = /usr/local/bin/aclocal-1.10
AUTOCONF = /usr/local/bin/autoconf-2.62
AUTOHEADER = /usr/local/bin/autoheader-2.62
AUTOMAKE = /usr/local/bin/automake-1.10

это пока не включаю:

#LIB_DEPENDS+=<>ACE.5:/usr/update/ace
#NOCLEANDEPENDS= yes

опции сборки:

BUILD_WRKSRC= ${WRKSRC}/objdir
INSTALL_WRKSRC= ${BUILD_WRKSRC}
LDFLAGS+= -L${LOCALBASE}/lib -L/usr/lib -L/lib
GNU_CONFIGURE= yes
USE_GMAKE= yes
USE_LDCONFIG= yes
CONFIGURE_ENV+= CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}"
USE_AUTOTOOLS= aclocal:110 libtoolize autoconf:262 autoheader:262 automake:110 libtool:22
ACLOCAL_ARGS= -I ${LOCALBASE}/share/aclocal
AUTOMAKE_ARGS+= -a
AUTORECONF_ARGS+= -i -f
USE_OPENSSL= yes
USE_MYSQL= yes
USE_DOS2UNIX= yes
CPPFLAGS+= -I${LOCALBASE}/include -I/usr/include
и конфигурирования:

CONFIGURE_ARGS+= --exec-prefix=/usr/server/${PORTNAME}-${DISTVERSION} \
--sharedstatedir=/usr/server/${PORTNAME}-${DISTVERSION}/com \
--localstatedir=/usr/server/${PORTNAME}-${DISTVERSION}/var \
--datarootdir=/usr/server/${PORTNAME}-${DISTVERSION}/share \
--sysconfdir=/usr/server/${PORTNAME}-${DISTVERSION}/etc \
--datadir=/usr/server/${PORTNAME}-${DISTVERSION}/data \
--htmldir=/usr/server/${PORTNAME}-${DISTVERSION}/docdir \
--dvidir=/usr/server/${PORTNAME}-${DISTVERSION}/docdir \
--pdfdir=/usr/server/${PORTNAME}-${DISTVERSION}/docdir \
--psdir=/usr/server/${PORTNAME}-${DISTVERSION}/docdir \
--program-suffix=-3.3.2a-1 \
--with-gnu-ld \
--enable-maintainer-mode

собираю вот так:

@(cd ${BUILD_WRKSRC} && \
if ! ${SETENV} CC="${CC}" CXX="${CXX}" \
CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \
INSTALL="/usr/bin/install -c ${_BINOWNGRP}" \
INSTALL_DATA="${INSTALL_DATA}" \
INSTALL_PROGRAM="${INSTALL_PROGRAM}" \
INSTALL_SCRIPT="${INSTALL_SCRIPT}" \
${CONFIGURE_ENV} ../${CONFIGURE_SCRIPT} ${CONFIGURE_ARGS}; then \
${ECHO_CMD} "===> Script \"${CONFIGURE_SCRIPT}\" failed unexpectedly."; \
(${ECHO_CMD} ${CONFIGURE_FAIL_MESSAGE}) | ${FMT} 75 79 ; \
${FALSE}; \
fi)
патч накладываю так:

post-extract-script:
@${MKDIR} ${BUILD_WRKSRC}
@${RM} -rf ${FILESDIR}/ScriptDev2.patch
@${LN} -s `${FIND} ${WRKSRC} \( -name "MaNGOS-*" -a -name "*patch" \) -type f` \
${FILESDIR}/ScriptDev2.patch


post-patch:
@cd ${WRKSRC}/ && git apply ${FILESDIR}/ScriptDev2.patch
@cd ${WRKSRC}/ && ${PATCH} -i ${FILESDIR}/configure.patch

патч мой:

data# cat configure.patch
--- configure.ac 2010-01-25 13:08:53.000000000 +0800
+++ configure.ac 2010-01-30 01:22:26.000000000 +0800
@@ -123,8 +123,8 @@
AC_MSG_CHECKING(whether to build/link POSTGRESQL)
if test "x$DO_POSTGRESQL" = "xyes"; then
DO_MYSQL=no
-POSTGRE_INCLUDES="-I/usr/include/postgresql $POSTGRE_INCLUDES"
-POSTGRE_LIBS="-L/usr/lib/postresql -lpq -lz -lpthread -lcrypt -lnsl -lm -lpthread -L/usr/lib $OPENSSL_LIBS $POSTGRE_LIBS "
+POSTGRE_INCLUDES="-I\${PREFIX}/include/postgresql $POSTGRE_INCLUDES"
+POSTGRE_LIBS="-L\${PREFIX}/lib/postgresql -lpq -lz -lpthread -lcrypt -lnsl -lm -lpthread -L\${PREFIX}/lib $OPENSSL_LIBS $POSTGRE_LIBS "
CXXFLAGS="-DDO_POSTGRESQL $CXXFLAGS"
fi
AC_MSG_RESULT($DO_POSTGRESQL)
--- src/shared/Database/QueryResultPostgre.h 2010-01-30 23:08:42.000000000 +0800
+++ src/shared/Database/QueryResultPostgre.h 2010-01-30 23:08:49.000000000 +0800
@@ -26,7 +26,7 @@
#include <postgre/pg_type.h>
#else
#include <libpq-fe.h>
-//#include <pg_type.h>
+#include <pg_type.h>
#endif

class QueryResultPostgre : public QueryResult

инфу о библиотеках добавил:

ldconfig -m /usr/server/game/lib

борю уже третьи сутки..может у кого было такое ?
другую ревизию не беру, без ACE не компилю, дабы выяснить причину, где ошибка - у меня в системе, в опциях сборки или в исходниках ?

muraig
16.03.2010, 04:50
со старого форума

А Вы сами пробовали так собрать ?
data# portlint
FATAL: Makefile: extra item "SCRIPTDEV2REV" placed in the PORTNAME section.
WARN: Makefile: use of DISTFILES with single file discouraged. distribution filename should be set by DISTNAME and EXTRACT_SUFX.
WARN: Makefile: DISTFILES/DISTNAME affects WRKSRC. take caution when changing them.
1 fatal error and 2 warnings found.

порт не рабочий.
ни c опцией :

--enable-maintainer-mode

ни без нее..
может, конечно мало экспериментировал, но у меня не получается собрать портом в:

${WRKSRC}

поэтому переназначаю:

BUILD_WRKSRC=<->${WRKSRC}/objdir
INSTALL_WRKSRC=>${BUILD_WRKSRC}

и потом:

@${MKDIR} ${BUILD_WRKSRC}

и непосредственно при сборке:

cd ${BUILD_WRKSRC} && \
xxxxxxxxxxxxxxxxxxxxxx
${CONFIGURE_ENV} ../${CONFIGURE_SCRIPT}

пробовал без этого - ошибка...
вот часть листинга:

checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
configure: error:
xxxxxxxxxxxxxxxxxxx
For example, try the following from the top-level source
directory:

mkdir objdir
cd objdir
../configure
make

This will create a build space in the directory `objdir' and
start a build in that directory.

configure: error: ./configure failed for dep/ACE_wrappers
===> Script "configure" failed unexpectedly.

P.S. где то видел кнопочку Spoiler ..а то слишком громоздкое сообщение получается..
Спасибо за подсказку

muraig
16.03.2010, 09:26
Вот в первом посте написано как ставить пакеты,если они уже есть на копме,а как ставить если тянуть с репо с инета ?
Например как на линуксе apt-get installl ?
Есть ли что-то подобное на фрибсд ?
Я еще не перешла на фри,но хотелосьбы узнать всё перед переходом на другую ОС.

есть два типа установки.
если кардинальных иземений нету в проекте и есть *.tar.gz, *.bzip2(архивные файлы) - то можно и отделаться простым редактированием файла Makefile:
PORTVERSION=<-->9556
а можно так например ..если нет архивов:
скачиваем их svn && git && hg && mercurial
make search name=hg|less
cd /usr/ports/devel/hgsvn/ && make install clean && rehash
например установив подобную прогу и, скачав исходники, сделать из них архив типа
${PORTNAME}-${PORTVERSION}
вот азбука FreeBSD для сборки и не только..читайте )
http://www.freebsd.org/doc/ru_RU.KOI8-R/books/porters-handbook/quick-porting.html#PORTING-MAKEFILE

P.S. не рекомандую начинать свое знакомство со сборки MaNGOS..уж очень ядреный проект ... :-)
установка с помощью pkg_add -r mangos-super-server.bzip2 , как Вы предполагали - не предусмотренна :-)

muraig
17.03.2010, 07:51
Доброе время суток !
Вот такая ошибка:

>> Loaded 16052 CreatureEventAI scripts
Initializing Scripts...
Error loading Scripts Library libmangosscript.so !
Library missing required functions.

борю уже третьи сутки..может у кого было такое ?
другую ревизию не беру, без ACE не компилю, дабы выяснить причину, где ошибка - у меня в системе, в опциях сборки или в исходниках ?
Нашел ошибку..

#ScriptDev2DatabaseInfo = "127.0.0.1;3306;mangos;mangos;scriptdev2"
ScriptDev2DatabaseInfo = ".;/tmp/mysql.sock;mangos;mangos;scriptdev2"

вот тут забыл, что сервер MySQL на одной машине, а я собираю мангос уже на другой.
После того, как поправил конфиг:

ScriptDev2DatabaseInfo = "192.168.0.3;3306;mangos;mangos;scriptdev2"

все 7 скомпиленных, к тому времени экземпляров серверов, запустились, как им и положено ! :)
Сейчас генерю pkg-plist для порта..может кто внятно расскажет как это правильнее сделать..ссылки, типо:

http://oldes.tstu.ru:8104/freebsd/ru/books/porters-handbook/book.html#PORTING-PLIST

уже не помогают..читаю третий день не могу понять в каком месте затык.
WRKDIR/.PLIST.mktmp пркактически пустой - дерево каталогов и файлов в него не пишется !!
P.S. мангос собираю портом ;)

Hoper
17.03.2010, 16:35
ставилю на FreeBSD-8.0
при make ругнулось так:
...
Making all in tbb
"../../../dep/tbb/build/common.inc", line 27: Need an operator
"../../../dep/tbb/build/common.inc", line 28: Missing dependency operator
"../../../dep/tbb/build/common.inc", line 29: Need an operator
"../../../dep/tbb/build/common.inc", line 30: Need an operator
"../../../dep/tbb/build/common.inc", line 32: Missing dependency operator
"../../../dep/tbb/build/common.inc", line 33: Missing dependency operator
"../../../dep/tbb/build/common.inc", line 34: Need an operator
"../../../dep/tbb/build/common.inc", line 35: Need an operator
"../../../dep/tbb/build/common.inc", line 36: Missing dependency operator
"../../../dep/tbb/build/common.inc", line 37: Need an operator
"../../../dep/tbb/build/common.inc", line 38: Need an operator
"../../../dep/tbb/build/common.inc", line 39: Missing dependency operator
"../../../dep/tbb/build/common.inc", line 40: Need an operator
"../../../dep/tbb/build/common.inc", line 41: Need an operator
"../../../dep/tbb/build/common.inc", line 42: Need an operator
"../../../dep/tbb/build/common.inc", line 43: Need an operator
"../../../dep/tbb/build/common.inc", line 44: Need an operator
Error expanding embedded variable.
*** Error code 1

Stop in /usr/home/mangos/comp/obj/dep.
*** Error code 1

Stop in /usr/home/mangos/comp/obj.
*** Error code 1

Stop in /usr/home/mangos/comp/obj.
смотрю "../../../dep/tbb/build/common.inc >>
там вот такие строчки:

...
ifndef tbb_os
ifeq ($(OS), Windows_NT)
export tbb_os=windows
else
OS:=$(shell uname)
ifeq ($(OS),)
$(error "$(OS) is not supported")
else
export tbb_os=$(OS)
ifeq ($(OS), Linux)
export tbb_os=linux
endif
ifeq ($(OS), Darwin)
export tbb_os=macos
endif
endif # OS successfully detected
endif # !Windows
endif # !tbb_os
...
нет FreeBSD :(
Как тут быть?

ice74
17.03.2010, 17:59
юзай gmake

muraig
17.03.2010, 19:41
если портом, то:

USE_GMAKE=<----><------>yes
GNU_CONFIGURE=<><------>yes
CONFIGURE_TARGET=<----->--build=${MACHINE_ARCH}-portbld-freebsd${OSREL}

если вручную, то:

configure.ac
(строка 44)
For example, try the following from the top-level source
directory:

mkdir objdir
cd objdir
../configure
make

хотя при этом собирать все таки нужно
gmake && gmake install

muraig
18.03.2010, 04:00
Нашел ошибку..
уже не помогают..читаю третий день не могу понять в каком месте затык.
WRKDIR/.PLIST.mktmp пркактически пустой - дерево каталогов и файлов в него не пишется !!
P.S. мангос собираю портом ;)
собрал портом, запустил, работает..Квест "Смерть подбирается с высоты" не работает..
ошибка была в компиляции не с теми опциями
либо собирать с

ACE 5.6.6
нативная, с мангосом..

либо, например с такой:

ACE 5.7.5

поставил отдельно, при установке указал

LIB_DEPENDS=<-->ACE.5:${PORTSDIR}/../update/ace

где :

data# ldconfig -r|grep ACE
309:-lACE.5 => /usr/local/lib/libACE.so.5

и :

${PORTSDIR}/../update/ace

в опциях сборки добавляем:
CONFIGURE_ARGS+=<------>--enable-builtin-ace=no

..в портах только 5.6.2
путь до порта с актуальным ACE-5.7.5 :
ftp://ftp.goszakaz38.ru/distfiles/ace-5.7.5.tar.bz2

P.S. <------>
так у меня в mc выглядит "Tab" (знак табуляции)

FreeBSD
18.03.2010, 18:15
У меня без ACE все нормально компилиться и ставиться...

Hoper
24.03.2010, 10:10
Ставили мы ставили и наконец поставили
от уже не знаю где и что поправилось но грешу на релизы.:declare:


mangos rel = 9611
ScriptDev2 rel = 1646
FreeBSD = 8.0

Вот что стоит в системе: :secret:
#pkg_info
apr-ipv6-gdbm-db42-1.3.8.1.3.9 Apache Portability Library
autoconf-2.13.000227_6 Automatically configure source code on many Un*x platforms
autoconf-2.62 Automatically configure source code on many Un*x platforms
autoconf-wrapper-20071109 Wrapper script for GNU autoconf
automake-1.10.1 GNU Standards-compliant Makefile generator (1.10)
automake-1.4.6_5 GNU Standards-compliant Makefile generator (1.4)
automake-1.5_5,1 GNU Standards-compliant Makefile generator (1.5)
automake-1.6.3_1 GNU Standards-compliant Makefile generator (1.6)
automake-1.7.9_2 GNU Standards-compliant Makefile generator (1.7)
automake-1.8.5_3 GNU Standards-compliant Makefile generator (1.8)
automake-1.9.6_3 GNU Standards-compliant Makefile generator (1.9)
automake-wrapper-20071109 Wrapper script for GNU automake
autotools-20080819 Autotools meta-port
ca_root_nss-3.11.9_2 The root certificate bundle from the Mozilla Project
curl-7.19.6_1 Non-interactive tool to get files from FTP, GOPHER, HTTP(S)
cvsps-2.1 Create patchset information from CVS
db42-4.2.52_5 The Berkeley DB package, revision 4.2
expat-2.0.1 XML 1.0 parser written in C
gdbm-1.8.3_3 The GNU database manager
gettext-0.17_1 GNU gettext package
git-1.6.4.3 Distributed source code management tool
glib-2.20.5 Some useful routines of C programming (current stable versi
gmake-3.81_3 GNU version of 'make' utility
gnuit-4.9.5 GNU Interactive Tools - a file system browser for UNIX syst
help2man-1.36.4_3 Automatically generating simple manual pages from program o
libiconv-1.13.1 A character set conversion library
libtool-2.2.6a Generic shared library support script
m4-1.4.13,1 GNU m4
mysql-client-5.1.39 Multithreaded SQL database (client)
mysql-server-5.1.39 Multithreaded SQL database (server)
neon28-0.28.6 An HTTP and WebDAV client library for Unix systems
p5-Error-0.17015 Perl module to provide Error/exception support for perl: Er
p5-IO-Socket-SSL-1.30 Perl5 interface to SSL sockets
p5-Net-SMTP-SSL-1.01 An SMTP client supporting SSL
p5-Net-SSLeay-1.35_2 Perl5 interface to SSL
p5-Term-ReadKey-2.30 A perl5 module for simple terminal control
p5-gettext-1.05_2 Message handling functions
p5-subversion-1.6.5 Perl bindings for Version control system
pcre-7.9 Perl Compatible Regular Expressions library
perl-5.8.9_3 Practical Extraction and Report Language
pkg-config-0.23_1 A utility to retrieve information about installed libraries
python26-2.6.2_3 An interpreted object-oriented programming language
screen-4.0.3_6 A multi-screen window manager
sqlite3-3.6.14.2 An SQL database engine in a C library
subversion-1.6.5 Version control system

***Пошел вспоминать как заливать базы... и писать скрипты для запуска.

P.S. в WoW не играю - обо зло, но вот покомпилить и поднастроить...

Pilop
12.04.2010, 15:39
Доброе время суток.
Столкнулся с проблемой компиляции исходников http://github.com/Tasssadar/Valhalla-Project
выдает:
../shared/Config/libmangosconfig.a ../shared/Auth/libmangosauth.a ../shared/libmangosshared.a ../framework/libmangosframework.a ../../dep/src/sockets/libmangossockets.a -lpthread -pthread -Wl,-rpath -Wl,/opt/compile/bin9720/lib -Wl,-rpath -Wl,/usr/local/lib/mysql
/usr/bin/ld: cannot find -ltbb
gmake[3]: *** [mangos-realmd] Error 1
как я понял из-за не установленной библиотеки libtbb.
Пытался установить выдает:
/usr/bin/ld: .libs/libtbb.o: relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC
.libs/libtbb.o: could not read symbols: Bad value
*** Error code 1

Не подскажите что за флаг -fPIC... и как вообще устранить ошибку?

xmolex
12.04.2010, 16:02
Не подскажите что за флаг -fPIC... и как вообще устранить ошибку?

Почитайте http://www.firststeps.ru/linux/r.php?6
Попробуйте скомпилить с этим флагом, должно работать, хотя могут потом вылести грабли. Но у меня работает на каком-то сервере с -fPIC.

Anti
12.04.2010, 16:04
Доброе время суток.
Столкнулся с проблемой компиляции исходников http://github.com/Tasssadar/Valhalla-Project
выдает:

как я понял из-за не установленной библиотеки libtbb.
Пытался установить выдает:


Не подскажите что за флаг -fPIC... и как вообще устранить ошибку?
А система у вас какая?
Ставьте уже готовые библиотеки. На центосе это выглядело бы так

yum install libtbb

Pilop
12.04.2010, 16:53
Почитайте http://www.firststeps.ru/linux/r.php?6
Попробуйте скомпилить с этим флагом, должно работать, хотя могут потом вылести грабли. Но у меня работает на каком-то сервере с -fPIC.

хм. а как его подключить на freebsd?
make -fPIC ? не помогает, точнее вообще:
make: cannot open PIC.

Anti, я бы не спал писать в теме о компиляции в системе freebsd, о какой либо другой системы.

Anti
12.04.2010, 17:41
sudo install libtbb
Звиняйте, просто отвлёкся от темы.

если не поможет, нужно собирать tbb (configure, make) на вашей машине и устанавливать(make install).

xmolex
12.04.2010, 18:25
хм. а как его подключить на freebsd?
make -fPIC ? не помогает, точнее вообще:


Попробуйте ./configure -Accflags="-fPIC"

Pilop
12.04.2010, 18:38
Попробуйте ./configure -Accflags="-fPIC"

Точно, подключал я ее тоже было при конфигурации, но не правильно.. В общем спасибо)

metacreo
29.04.2010, 22:48
Ставил и переустанавливал неделю назад без проблем.
Сейчас день мучаюсь :(

%git clone git://github.com/mangos/mangos.git

Initialized empty Git repository in /usr/home/wow/mangos/.git/
remote: Counting objects: 58740, done.
remote: Compressing objects: 100% (9882/9882), done.
remote: Total 58740 (delta 49114), reused 58374 (delta 48790)
Receiving objects: 100% (58740/58740), 38.42 MiB | 345 KiB/s, done.
Resolving deltas: 100% (49114/49114), done.
Checking out files: 100% (4037/4037), done.

%cd mangos

%git pull origin master

From git://github.com/mangos/mangos
* branch master -> FETCH_HEAD Already up-to-date.

%autoreconf -f -i

autoreconf-2.62: configure.ac' orconfigure.in' is required

%git add *

%autoreconf -f -i

autoreconf-2.62: configure.ac' orconfigure.in' is required

%ls configure.ac
configure.ac
%

CruncH
30.04.2010, 09:40
autoreconf -vif более подробная информация
ls -l configure.* права на файлы

metacreo
30.04.2010, 09:56
спасибо
перекочал сорсы и все пошло :)
видимо net error file corrupt
иду мучаться с базой

nixme
04.05.2010, 18:25
При попытке пересобрать configure говорит
checking if generated ACE configuration is usable... no
configure: error:
The generated configuration appears to be unusable. Please verify
that your system path and environment variables are correct. If they
appear to be correct then please send the maintainer of this configure
script ace-users@cs.wustl.edu the *COMPRESSED* 'config.log' file
and the following information:

ACE 'configure' Script Information
==================================
RCS Id: configure.ac 82832 2008-09-25 17:38:39Z jtc


ACE Version: 5.6.6
C++ Compiler: g++
C++ Preprocessor: g++ -E
C++ Flags: -W -Wall -Wpointer-arith -I/usr/local/include -g -O2 -pthread -pipe
Preprocessor Flags: -D_REENTRANT -D_THREAD_SAFE
Linker: /usr/bin/ld
Linker Flags:
Libraries:
System type information:
Build: amd64-unknown-freebsd8.0 Host: amd64-unknown-freebsd8.0

In the meantime, please use the stock ACE build procedure detailed in
the file 'ACE-INSTALL.html'.
autoreconf вроде залазит в ace и проходит, а вот конфиг нет.
До этого сервер собрался, все что менялось с момента пересборки это версия mysql. ACE сейчас установлен, почему не цепляется только.

metacreo
05.05.2010, 11:27
ACE сейчас установлен, почему не цепляется только.


Обясните зачем его устанавливать если он прекрасно собираеться вместе
с сорсами мангоса?
Пробывали многие АСЕ собирать отдельно... Ничего хорошего не получается.

nixme
05.05.2010, 15:43
Почитал ряд статтей, собирать асе отдельно и правда нет смысла, тем более что для аутконфе 2.62 щас все работает с их деп асе, удалил асе из портов - помогло.

Devel
08.05.2010, 12:44
Флаг -with-python что дает?

CruncH
08.05.2010, 21:24
Флаг -with-python что дает?
Ни чего не делает. Смотрите --help и не найдете такой опции.

[CPS] AkirA
08.05.2010, 23:56
ха, выглядит как мой гайд, котоый я когдато писал для вики
хотя это он и есть, просто криво скопирован с добавлением ошибок )

topneDa
01.11.2010, 03:19
Видимо читал не внимательно, чуть выше проблему, точнее решение описали...

Resus
07.11.2010, 13:42
Народ хелпп бъюсь уже 3 сутки немогу найти где грабли сорсы перекачивал результат тотже
BSD 8.1
релизы магоса и SD какие были по свн не помню сконфигурил а вот компилиться нехотит гуглил но что то нечего не нашел ниже на чем высапает ерорами
[ps@bsd ~/mangos/objdir]$gmake сначало идет нормально минуты через2 вот это

In file included from ../../../../dep/ACE_wrappers/ace/OS_NS_netdb.h:142,
from ../../../../dep/ACE_wrappers/ace/ICMP_Socket.cpp:9:
../../../../dep/ACE_wrappers/ace/OS_NS_netdb.inl: In function 'hostent* ACE_OS::gethostbyaddr_r(const char*, int, int, hostent*, char*, int*)':
../../../../dep/ACE_wrappers/ace/OS_NS_netdb.inl:203: error: cannot convert 'int*' to 'hostent**' for argument '7' to 'int gethostbyaddr_r(const void*, socklen_t, int, hostent*, char*, size_t, hostent**, int*)'
../../../../dep/ACE_wrappers/ace/OS_NS_netdb.inl: In function 'hostent* ACE_OS::gethostbyname_r(const char*, hostent*, char*, int*)':
../../../../dep/ACE_wrappers/ace/OS_NS_netdb.inl:393: error: cannot convert 'int*' to 'hostent**' for argument '5' to 'int gethostbyname_r(const char*, hostent*, char*, size_t, hostent**, int*)'
/usr/include/netdb.h: In function 'protoent* ACE_OS::getprotobyname_r(const char*, protoent*, char*)':
/usr/include/netdb.h:271: error: too few arguments to function 'int getprotobyname_r(const char*, protoent*, char*, size_t, protoent**)'
../../../../dep/ACE_wrappers/ace/OS_NS_netdb.inl:557: error: at this point in file
/usr/include/netdb.h: In function 'protoent* ACE_OS::getprotobynumber_r(int, protoent*, char*)':
/usr/include/netdb.h:273: error: too few arguments to function 'int getprotobynumber_r(int, protoent*, char*, size_t, protoent**)'
../../../../dep/ACE_wrappers/ace/OS_NS_netdb.inl:638: error: at this point in file
/usr/include/netdb.h: In function 'servent* ACE_OS::getservbyname_r(const char*, const char*, servent*, char*)':
/usr/include/netdb.h:277: error: too few arguments to function 'int getservbyname_r(const char*, const char*, servent*, char*, size_t, servent**)'
../../../../dep/ACE_wrappers/ace/OS_NS_netdb.inl:727: error: at this point in file
gmake[6]: *** [libACE_la-ICMP_Socket.lo] Ошибка 1
gmake[6]: Leaving directory `/usr/home/ps/mangos/objdir/dep/ACE_wrappers/ace'
gmake[5]: *** [all-recursive] Ошибка 1
gmake[5]: Leaving directory `/usr/home/ps/mangos/objdir/dep/ACE_wrappers/ace'
gmake[4]: *** [all] Ошибка 2
gmake[4]: Leaving directory `/usr/home/ps/mangos/objdir/dep/ACE_wrappers/ace'
gmake[3]: *** [all-recursive] Ошибка 1
gmake[3]: Leaving directory `/usr/home/ps/mangos/objdir/dep/ACE_wrappers'
gmake[2]: *** [all-recursive] Ошибка 1
gmake[2]: Leaving directory `/usr/home/ps/mangos/objdir/dep'
gmake[1]: *** [all-recursive] Ошибка 1
gmake[1]: Leaving directory `/usr/home/ps/mangos/objdir'
gmake: *** [all] Ошибка 2

Konctantin
07.11.2010, 14:35
После обновления библиотеки АСЕ на FreeBSD не компилируется...
http://getmangos.com/community/viewtopic.php?id=15456

xmolex
08.11.2010, 14:03
После 10643 (http://ru-mangos.ru/showthread.php?t=2745) у многих BSD'шников начался настоящий геморрой. Хочу поделиться тем, что помогло мне:

Если у вас:
../../../../dep/ACE_wrappers/ace/OS_NS_signal.inl: In function 'int ACE_OS::pthread_sigmask(int, const sigset_t*, sigset_t*)':
../../../../dep/ACE_wrappers/ace/OS_NS_signal.inl:31: error: '::pthread_sigmask' has not been declared
То в dep/ACE_wrappers/ace/OS_NS_signal.inl вставляем
#include <pthread.h>
#include <signal.h>

Если у вас:
../../ace/OS_NS_netdb.inl: 189: error: cannot convert 'int *' to 'hostent **' for argument'7 'to' int
gethostbyaddr_r (const void *, socklen_t, int, hostent *, char *, size_t, hostent **, int *) '
То после ./configure в dep/ACE_wrappers/ace/config.h внесите
#define ACE_LACKS_NETDB_REENTRANT_FUNCTIONS

rsa
08.11.2010, 14:47
и охота вам таким мазохизмом заниматься? --enable-builtin-ace=no, скомпилите либу полностью 1 раз и забудьте про эту асю насовсем...

xmolex
08.11.2010, 15:05
и охота вам таким мазохизмом заниматься? --enable-builtin-ace=no, скомпилите либу полностью 1 раз и забудьте про эту асю насовсем...

Лично я не могу использовать внешний ACE. Возможно, кто-то тоже.
Но это тоже вариант, спасибо что указали его.

Resus
08.11.2010, 16:42
xmolex Пасиб Огроменное щас вроде собираеться )))

Vladimir
08.11.2010, 18:34
ACE к сожелению конкретно не дружит с *BSD - отмазка ACE team - у нас нет тестовых машин с этими операционками. Derex планировал предложить патчи им для исправления глюков с FreeBSD но когда это будет непонятно.

metacreo
05.12.2010, 14:51
#define ACE_LACKS_NETDB_REENTRANT_FUNCTIONS
в файле ~/mangos/dep/ACE_wrappers/ace/config.h.in

действительно помогает... собиреться на ура

Vladimir
08.12.2010, 03:50
Но config-freebsd.h уже имеет

#if (__FreeBSD_version >= 320000)
# define ACE_HAS_REENTRANT_FUNCTIONS
# define ACE_LACKS_NETDB_REENTRANT_FUNCTIONS
# define ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R
#endif /* __FreeBSD_version >= 320000 */

Aspro
18.02.2011, 00:21
metacreo не дописал чуть
Переходим туда:

#cd build

PSZ
04.04.2011, 11:10
Только скриптдев на гит уже перешел. http://github.com/scriptdev2/scriptdev2

metacreo
05.04.2011, 07:53
Спасибо. Точно.. перешёл. Поправил.
% git clone git://github.com/scriptdev2/scriptdev2.git ~/mangos/src/bindings/ScriptDev2

D_f
23.04.2014, 21:17
Не знаю куда написать, поэтому тут пишу. =)
Скомпилировал CMaNGOS-4.3.4 по этому гайду. Все скомпилировалось и запустилось. Но после захода в игру никаких действий совершить невозможно. В лог пишет следующие:
SESSION: received not handled opcode UNKNOWN (0x2314)
SESSION: received not handled opcode UNKNOWN (0x1027) и т.д.
Я читал, что в Катаклизме стали рандомные опкоды. Что тогда необходимо для запуска? Пропатчить клиент?
Если можно, необходимо поместить сообщение в правильный пост.

lovepsone
25.04.2014, 16:32
Не знаю куда написать, поэтому тут пишу. =)
Скомпилировал CMaNGOS-4.3.4 по этому гайду. Все скомпилировалось и запустилось. Но после захода в игру никаких действий совершить невозможно. В лог пишет следующие:
SESSION: received not handled opcode UNKNOWN (0x2314)
SESSION: received not handled opcode UNKNOWN (0x1027) и т.д.
Я читал, что в Катаклизме стали рандомные опкоды. Что тогда необходимо для запуска? Пропатчить клиент?
Если можно, необходимо поместить сообщение в правильный пост.
С исходниками идет патчер...

killer67
24.04.2015, 21:09
Всем привет, уже замучился с FreeBSD, может вопрос простой, но я решения не нашел..

Я не устанавливал ничего через GIT всегда хватало портов, по этому опыта такой работы мало. Прошу сильно не ругать.

А теперь о проблеме:
Пробовал по разным мануалам устанавливать толку не вышло.
Ошибка возникла на шаге:
Подготавливаем сборку, указав пути для сервера:
Код:
% cmake -DPREFIX=/home/wow/server ..

Описание:
#uname -a
FreeBSD western-soft.com 9.2-RELEASE-p15 FreeBSD 9.2-RELEASE-p15 #0: Mon Nov 3 20:31:29 UTC 2014 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64

Пытаюсь установить mangos-wotlk.
Основные изменения (раз уж добрался до этого шага) нашел и применил, например:
1.
вместо:
git clone git://github.com/mangos/mangos.git
прописал так:
git clone git://github.com/cmangos/mangos-wotlk.git

соотвественно в место:
git clone git://github.com/scriptdev2/scriptdev2.git ~/mangos/src/bindings/ScriptDev2
Прописал:
git clone git://github.com/scriptdev2/scriptdev2.git ~/mangos-wotlk/src/bindings/ScriptDev2

В место:
cd mangos
Соотвественно:
cd mangos-wotlk

Птчи не применял, т.к. в ScriptDev2 вообще отсутствует папка patches и все файлы которые имею расширение: .patch

Порты обновлены, мангоса в них уже нету :resent:.

При выполнении команды получаю такой текст:
# cmake -DPREFIX=/usr/home/wow/mangos/comp/ ../src/mangos-wotlk/
-- The C compiler identification is GNU 4.2.1
-- The CXX compiler identification is GNU 4.2.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/CC
-- Check for working CXX compiler: /usr/bin/CC -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done

This script builds the MaNGOS server.
Options that can be used in order to configure the process:
CMAKE_INSTALL_PREFIX Path where the server should be installed to
PCH Use precompiled headers
DEBUG Debug mode
INCLUDE_BINDINGS_DIR Include a script library in src/bindings/ with the
defined name. the name must corespond to the name of
the folder and the folder must contain a valid
CMakeLists.txt
TBB_USE_EXTERNAL Use external TBB
USE_STD_MALLOC Use standard malloc instead of TBB
ACE_USE_EXTERNAL Use external ACE
To set an option simply type -D<OPTION>=<VALUE> after 'cmake <srcs>'.
Also, you can specify the generator with -G. see 'cmake --help' for more details
For example: cmake .. -DDEBUG=1 -DCMAKE_INSTALL_PREFIX=/opt/mangos

CMake Error at CMakeLists.txt:84 (message):
The parameter PREFIX has been removed. Please re-run CMake and use
CMAKE_INSTALL_PREFIX instead to define your installation location!


-- Configuring incomplete, errors occurred!
See also "/usr/home/wow/mangos/comp/CMakeFiles/CMakeOutput.log".


лог CMakeOutput.log - вложил 1286.

Читал в этой теме что компилить надо вне папки исходников, по этому нашел тему и пробовал по таким путям:
~/manos/comp/
~/manos/src/
Результат не меняется, сообщение остается тем же.

PS: 1. прошу прощения за большие цитаты, но не нашел кнопки спойлера.
2. Первый и второй пост имеют ошибки, предлагаю 2 решения, после установки либо на моем сервере либо на виртуалке кто нить поставит, каждую команду пробовать и после успеха вносить ее в топик. (Если получится, готов сам заняться этим вопросом.)

Mayss
25.04.2015, 17:33
Месяц назад собрал wotlk на Debian, проблем не было, при этом не указывал не каких настроек.
попробуйте перед тем как собрать, выполнить в build, это
cmake -DPREFIX= -DCMAKE_INSTALL_PREFIX=/path/to/your/mangos/install path/to/your/source
Или если у вас исходники в ~/mangos-wotlk а после сборки Cmake проект в ~/mangos-wotlk/build и установить его в ~/mangos-wotlk/install нужно выполнить
cmake -DPREFIX= -DCMAKE_INSTALL_PREFIX=../install ..

С относительными путями или использовать абсолютные.

killer67
25.04.2015, 18:12
Собрался.

Использовал эти команды:

git clone git://github.com/cmangos/mangos-wotlk.git mangos

git clone git://github.com/scriptdev2/scriptdev2.git ~/mangos/src/bindings/ScriptDev2

mkdir mangos/build

cd mangos/build

cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/home/wow/mangos/build/ -DPCH=1 -DACE_USE_EXTERNAL=0 -DDEBUG=1 -DTBB_USE_EXTERNAL=0;

make install clean

После чего возникали ошибки при компиляции.
файл:
/dep/src/g3dlite/FileSystem.cpp

Там код в начале файла:

# include <io.h>

#define stat64 _stat64
#else
# include <dirent.h>
# include <fnmatch.h>
# include <unistd.h>
# define _getcwd getcwd
# define _stat stat
#endif

namespace G3D {

Необходимо изменить на этот:

# include <io.h>

#define stat64 _stat64
#elif defined(__FreeBSD__)
# include <dirent.h>
# include <fnmatch.h>
# include <unistd.h>
# define O_LARGEFILE 0100000
# define stat64 stat
# define _stat stat
# define _getcwd getcwd
#else
# include <dirent.h>
# include <fnmatch.h>
# include <unistd.h>
# define _getcwd getcwd
# define _stat stat
#endif

namespace G3D {

Взято от сюда: https://github.com/cmangos/issues/issues/72

PS. только ScriptDev2 у меня не появился конфиг и при запуске не работает sh скрипт, выдает not found, проверил каждую команду построчно (кроме конечно строк с переменными) все работает, но скрипт не запускает.

И после запуска отключает мод ahbot, пишет не найден конфиг, хотя его и на самом деле нет (

Mayss
25.04.2015, 19:27
Файл ahbot.conf бота, находится в https://github.com/cmangos/mangos-wotlk/tree/master/src/game/AuctionHouseBot

Amaru
27.04.2015, 17:12
Собрался.

Использовал эти команды:

git clone git://github.com/cmangos/mangos-wotlk.git mangos

git clone git://github.com/scriptdev2/scriptdev2.git ~/mangos/src/bindings/ScriptDev2

mkdir mangos/build

cd mangos/build

После этого было проще делать через гуи -
ccmake ..
Там бы выбрал все параметры

killer67
15.08.2015, 10:58
Пытаюсь установить WOT LK на FreeBSD 10 получаю ошибку:


gmake[3]: Entering directory '/usr/home/wow/mangos-wotlk/mangos/dep/tbb'
cd "./build/libs_release" && sh ../../build/generate_tbbvars.sh libs_release
cd "./build/libs_debug" && sh ../../build/generate_tbbvars.sh libs_debug
gmake -C "./build/libs_debug" -r -f ../../build/Makefile.tbb cfg=debug tbb_root=../..
gmake[4]: Entering directory '/usr/home/wow/mangos-wotlk/mangos/dep/tbb/build/libs_debug'
g++ -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -m64 -fPIC -D__TBB_BUILD=1 -Wall -I../../src -I../../src/rml/include -I../../include ../../src/tbb/concurrent_hash_map.cpp
g++ -c -MMD -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -m64 -fPIC -D__TBB_BUILD=1 -Wall -I../../src -I../../src/rml/include -I../../include ../../src/tbb/concurrent_queue.cpp
gmake[4]: g++: Command not found
../../build/common_rules.inc:93: recipe for target 'concurrent_hash_map.o' failed
gmake[4]: *** [concurrent_hash_map.o] Error 127
gmake[4]: g++: Command not found
gmake[4]: *** Waiting for unfinished jobs....
../../build/common_rules.inc:93: recipe for target 'concurrent_queue.o' failed
gmake[4]: *** [concurrent_queue.o] Error 127
gmake[4]: Leaving directory '/usr/home/wow/mangos-wotlk/mangos/dep/tbb/build/libs_debug'
Makefile:40: recipe for target 'tbb' failed
gmake[3]: *** [tbb] Error 2
gmake[3]: Leaving directory '/usr/home/wow/mangos-wotlk/mangos/dep/tbb'


При возникновении таких ошибок делаем так:
# cd /usr/local/bin
# rm -rf gcc
# rm -rf g++
# ln -s gcc48 gcc
# ln -s g++48 g++

(48 - Это версия которая у вас установлена)

killer67
17.08.2015, 08:17
В общем кучу ошибок компиляции прошел, но в итоге наткнулся на такую:
/usr/bin/ld: Dwarf Error: found dwarf version '4', this reader only handles version 2 information.


Пока не знаю как решить.

killdozer
22.09.2015, 15:39
Собирал classic на freebsd 10.2, тоже наткнулся на такую ошибку при линковке.
Как я понял означает она, что формат отладочной информации включенный в код при компиляции "несколько" новее и дефолтный линкер в системе его не понимает.
дефолтный линкер у меня:
/usr/bin/ld -v
GNU ld 2.17.50 [FreeBSD] 2007-07-03
хотя есть и такой из binutils:
/usr/local/bin/ld -v
GNU ld (GNU Binutils) 2.25
с ходу не смог cmake заставить использовать линкер из binutils, особо не вникал.

поэтому принудительно заставил генерить отладочную инфу в старом варианте:
cmake ../classic -DCMAKE_INSTALL_PREFIX=/home/mangos/run -DINCLUDE_BINDINGS_DIR=ScriptDev2 -DDEBUG=1 -DCMAKE_CXX_FLAGS='-gdwarf-2 -gstrict-dwarf'
Это еще не все, почему то у меня cmake заставляет компилить g3dlite с помощью clang, поэтому принудительно делаем:
CC=gcc CXX=g++ cmake ........
и еще патч, иначе не соберется:
diff --git a/dep/include/g3dlite/G3D/System.h b/dep/include/g3dlite/G3D/System.h
index 3183064..ed14d4a 100755
--- a/dep/include/g3dlite/G3D/System.h
+++ b/dep/include/g3dlite/G3D/System.h
@@ -20,6 +20,10 @@
#include "G3D/BinaryFormat.h"
#include <string>

+#ifdef G3D_FREEBSD
+# include <sys/_timeval.h>
+#endif
+
#ifdef G3D_OSX
# include <CoreServices/CoreServices.h>
#endif
diff --git a/dep/src/g3dlite/FileSystem.cpp b/dep/src/g3dlite/FileSystem.cpp
index e51098a..11729f4 100644
--- a/dep/src/g3dlite/FileSystem.cpp
+++ b/dep/src/g3dlite/FileSystem.cpp
@@ -31,6 +31,8 @@
# include <dirent.h>
# include <fnmatch.h>
# include <unistd.h>
+# define O_LARGEFILE 0100000
+# define stat64 stat
# define _getcwd getcwd
# define _stat stat
#endif

killer67
22.09.2015, 16:37
А такая ошибка не встречалась?


/usr/home/wow/mangos_wotlk/mangos/src/realmd/AuthSocket.cpp:826:53: error: cannot pass object of non-POD type 'std::__1::nullptr_t' through variadic method; call will abort at
runtime [-Wnon-pod-varargs]
sha.UpdateBigNumbers(&t1, &_reconnectProof, &K, nullptr);
^
/usr/include/c++/v1/cstddef:88:17: note: expanded from macro 'nullptr'
#define nullptr _VSTD::__get_nullptr_t()
^
/usr/include/c++/v1/__config:341:15: note: expanded from macro '_VSTD'
#define _VSTD std::_LIBCPP_NAMESPACE
^
6 warnings and 7 errors generated.
*** Error code 1

Stop.
make[2]: stopped in /usr/home/wow/mangos_wotlk/server
*** Error code 1

Stop.
make[1]: stopped in /usr/home/wow/mangos_wotlk/server
*** Error code 1

Stop.
make: stopped in /usr/home/wow/mangos_wotlk/server

killdozer
22.09.2015, 17:01
нет, последний раз собирал wotlk лет 5 назад, и он собирался )

killer67
05.03.2016, 09:43
Не ужели за пол года так никто и не собирал mangos на FreeBSD 10.1 ???

На русском офф. форуме поддержка молчит (((

HKnix
24.10.2018, 14:27
Доброго времени суток. Скачал Последние исходники mangos и scriptdev2, решил собрать под freebsd 11.2. Увидев отсутствие в scriptdev2 папки patches задался вопросом, а как теперь прикручивать scriptdev2 к мангосу?

NeatElves
25.10.2018, 08:03
Никак, он уже прикручен к ядру.

HKnix
25.10.2018, 14:40
вобщем сервер собрался без экстракторов.

[ 96%] Building CXX object contrib/vmap_extractor/vmapextract/CMakeFiles/vmap_extractor.dir/vmapexport.cpp.o
/usr/home/hk/mangos/compile/contrib/vmap_extractor/vmapextract/vmapexport.cpp:295:23: error: use of undeclared identifier
'fopen64'; did you mean 'fopen'?
if (FILE* h = fopen64(path, "rb"))
^~~~~~~
fopen
/usr/include/stdio.h:257:7: note: 'fopen' declared here
FILE *fopen(const char * __restrict, const char * __restrict);
^
1 error generated.
*** Error code 1