====== Compilation d un client linux Khanat ======
===== Préparation =====
La procédure suivante devrait fonctionner pour Debian Jessie. Pour une autre version, il faut actuellement patcher le code ou recompiler certaines dépendances, essayez de retrouver la procédure pour votre distribution [[https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-opennel-code/blob/develop/.gitlab-ci.yml|dans le fichier CI de gitlab içi]]
Vous aurez besoin du dépot de kervala pour installer les bons packages :
sudo add-apt-repository ppa:kervala/ppa && sudo apt-get update
Si add-apt-repository n'est pas installé sur votre ordinateur, vous pouvez l'installer via le paquet "software-properties-common".
sudo apt install software-properties-common
Puis installez les librairies nécessaires :
sudo apt install git libcurl4-openssl-dev libluabind-dev libfreetype6-dev \
libx11-dev libgl1-mesa-dev libxxf86vm-dev libxrandr-dev libxrender-dev libopenal-dev \
libogg-dev libvorbis-dev libxml2-dev cmake build-essential libpng12-dev libjpeg62-turbo-dev \
rrdtool libmysqlclient-dev bison libxmu-dev autoconf automake liblzma-dev libgif-dev libssl-dev cpputest
nouvelle dépendance:
apt install libavdevice-dev
====Compilation dépendances====
Aide pour compiler (merci kervala)
http://hg.kervala.net/packaging/file/tip/ryzom/steam/build_static_external.sh
===Curl===
Nous utilisons le package de Kervala (dev officiel ryzomcore)
$ hg clone http://hg.kervala.net/packaging/
$ cd packaging/curl
$ mkdir build && cd build
$ cmake -DCMAKE_BUILD_TYPE=Release -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DBUILD_CURL_TESTS=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/libz.a ..
$ make
# make install
A finir:
FLAGS1="-DCMAKE_BUILD_TYPE=Release -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF"
FLAGS1="$FLAGS1 -DBUILD_CURL_TESTS=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON"
FLAGS1="$FLAGS1 -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DCMAKE_USE_LIBSSH2=OFF"
FLAGS2="-DOPENSSL_SSL_LIBRARIES=/usr/lib/i386-linux-gnu/libssl.a"
FLAGS2="$FLAGS2 -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/i386-linux-gnu/libcrypto.a"
FLAGS2="$FLAGS2 -DZLIB_LIBRARY=/usr/lib/i386-linux-gnu/libz.a"
mkdir -p $BUILDPREFIX"i386" && cd $BUILDPREFIX"i386"
echo "Compiling i386 libcurl..."
schroot --chroot $CHROOTPREFIX"i386" -- cmake .. $FLAGS1 $FLAGS2
schroot --chroot $CHROOTPREFIX"i386" -- make -j4 install
RET=$?
if [ $RET -ne 0 ]
then
echo "Error $RET while compiling i386 libcurl"
exit 1
fi
cd ..
FLAGS2="-DOPENSSL_SSL_LIBRARIES=/usr/lib/x86_64-linux-gnu/libssl.a"
FLAGS2="$FLAGS2 -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/x86_64-linux-gnu/libcrypto.a"
FLAGS2="$FLAGS2 -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a"
mkdir -p $BUILDPREFIX"amd64" && cd $BUILDPREFIX"amd64"
echo "Compiling amd64 libcurl..."
schroot --chroot $CHROOTPREFIX"amd64" -- cmake .. $FLAGS1 $FLAGS2
schroot --chroot $CHROOTPREFIX"amd64" -- make -j4 install
RET=$?
if [ $RET -ne 0 ]
then
echo "Error $RET while compiling amd64 libcurl"
exit 1
fi
====libxml2 (à finir)===
FLAGS="--enable-static --enable-shared=no --without-ftp --without-lzma --without-zlib"
echo "Compiling i386 libxml2..."
cd $LIBXML2DIR
mkdir -p $BUILDPREFIX"i386" && cd $BUILDPREFIX"i386"
schroot --chroot $CHROOTPREFIX"i386" -- ../autogen.sh
schroot --chroot $CHROOTPREFIX"i386" -- ../configure $FLAGS
schroot --chroot $CHROOTPREFIX"i386" -- make -j4 install
echo "Compiling amd64 libxml2..."
cd $LIBXML2DIR
mkdir -p $BUILDPREFIX"amd64" && cd $BUILDPREFIX"amd64"
schroot --chroot $CHROOTPREFIX"amd64" -- ../autogen.sh
schroot --chroot $CHROOTPREFIX"amd64" -- ../configure $FLAGS
schroot --chroot $CHROOTPREFIX"amd64" -- make -j4 install
===== Telecharger les sources =====
Pour telecharger les sources on utilise git. On clone les sources depuis un depot, donc d'un stockage central des sources. Pour faire ca, ouvrez un terminal et naviguez dans le dossier ou vous voulez avoir les source avec cd /chemin/vers/le/dossier/pour/les/sources/
La telecharge est effectué par la commande suivante: (ca peu durée quelques temps, donc soiez patient :D)
git clone https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-opennel-code.git
===== Compilation =====
Pour la compilation, naviguez dans le dossier 'code' de votre dossier de source. Si vous n'avez pas changé l'endroit depuis la dernière commande, vous pouvez faire:
cd khanat-code/code/
Créez un dossier build et naviguez dedans:
mkdir build
cd build
Pour la compilation, il y a trois commandes qui doivent être exécutée l'un après l'autre:
cmake -DFINAL_VERSION=OFF -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_NEL_TOOLS=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_SERVER=OFF -DWITH_RYZOM_TOOLS=OFF -DWITH_STATIC_EXTERNAL=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_LUA53=ON ..
make
sudo make install
N'oubliez pas les deux points a la fin de la commande cmake!
Après le 'sudo make install', l'exécutable sera dans le dossier bin de votre dossier build. Copier le dans une installation Ryzom (ou Khanat) pour remplacer l'exécutable. Vous avez réussi à compiler un client!
^ Explication des options de la commande cmake ^^
|-DCMAKE_BUILD_TYPE=Release |ne pas changer, les autres modes ne font rien sous linux |
|-DFINAL_VERSION=ON |pour obtenir un client DEV, mettre ça sur OFF |
|-DWITH_STATIC=ON |pour obtenir un client qui n'est pas statique (recommandé si on compile seulement pour soi-même), mettre ca sur OFF |
|-DWITH_STATIC_DRIVERS=ON |pour ne pas avoir les drivers en statique, mettre ca sur OFF |
|-DWITH_NEL_TOOLS=OFF |pour compiler les tools, mettre ca sur ON |
|-DWITH_NEL_SAMPLES=OFF |pour avoir des examples pour Nel, mettre ca sur ON |
|-DWITH_NEL_TESTS=OFF |pour avoir des tests pour debugger Nel, mettre sur ON |
|-DWITH_RYZOM_SERVER=OFF |pour compiler le serveur, mettre ca sur ON |
|-DWITH_RYZOM_TOOL=OFF |pour compiler les tools, mettre ca sur ON |
|-DWITH_STATIC_EXTERNAL=ON |pour ne pas avoir les libraries externes en statique, mettre ça sur OFF |
|-DWITH_RYZOM_PATCH=ON |pour désactiver le patch, mettre ça sur OFF
|-DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON |pour favoriser le serveur de patch retourner par le serveur de jeu (et pas celui de .cfg), mettre ca sur OFF |
|-DWITH_LUA52=ON |pour forcer un autre Lua (par ce qu'on a une autre version de luabind) mettre soit -DWITH_LUA51=ON (pour une version plus ancienne) ou -DWITH_LUA53=ON (pour une version plus neuve) |
===== Compilation debug=====
Pour la compilation, naviguez dans le dossier 'code' de votre dossier de source. Si vous n'avez pas changé l'endroit depuis la dernière commande, vous pouvez faire:
cd khanat-code/code/
Créez un dossier build et naviguez dedans:
mkdir build
cd build
Pour la compilation, il y a trois commandes qui doivent être exécutée l'un après l'autre:
cmake -DWITH_SYMBOLS=ON -DFINAL_VERSION=OFF -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_NEL_TOOLS=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_SERVER=OFF -DWITH_RYZOM_TOOLS=OFF -DWITH_STATIC_EXTERNAL=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_LUA52=ON ..
make
sudo make install
N'oubliez pas les deux points a la fin de la commande cmake!
Après le 'sudo make install', l'exécutable sera dans le dossier bin de votre dossier build. Copier le dans une installation Khanat pour remplacer l'exécutable. Vous avez réussi à compiler un client debug!
sudo apt-get install gdb
Lancer la commande dans votre dossier khanat
./gdb khanat_client
run
{{tag>client tutoriel informatique client_rc_obsolete}}