Building Ryzom Client On Mac OS X

From Ryzom Forge Wiki

Revision as of 11:28, 12 November 2014 by Zorroargh (talk | contribs) (Ryzom update script)
Jump to: navigation, search
Flag-DE

DE translation needed please

Flag-ES

ES translation needed please

Flag-FR

FR translation needed please


Installing and configuring Xcode

Last Xcode version can be downloaded from Mac AppStore or https://developer.apple.com/xcode/downloads/

To enable command-line tools under Xcode 5 or more recent versions, you'll need to open a terminal and type :

xcode-select --install

Ryzom client needs at least Mac OS X 10.6. If you plan to deploy Ryzom on Mac OS X versions older than your current one (but more recent than 10.6), I suggest you to set MACOSX_DEPLOYMENT_TARGET environment variable before compiling any dependencies :

export MACOSX_DEPLOYMENT_TARGET=10.6

And append that line to ~/.bash_profile to be sure it'll be defined later.

Installing and configuring MacPorts

To install all 3rd party libraries needed by Ryzom, you'll need to download and install MacPorts from : https://www.macports.org/install.php

By default, it'll target your Mac OS X version. To change the target, type :

sudo nano /opt/local/etc/macports/macports.conf

And append at the end of the file :

macosx_deployment_target 10.6
cxx_stdlib libstdc++

Press CTRL+X / Apple+X to save and confirm.

Then open a terminal and type :

sudo port install mercurial p7zip cmake curl freetype jpeg libwww libxml2 lua zlib libpng libogg
sudo port -s -v install boost libvorbis icu

Note : The -s option is used to force a rebuild from source (to take into account the new options added to macports.conf) else it'll use a precompiled package. ICU will be used if you need to compile a static version of Qt.

Compiling Luabind

Open a terminal and write the following lines :

hg clone http://hg.kervala.net/packaging
hg clone http://hg.kervala.net/cmake
export CMAKE_MODULE_PATH=$(pwd)/cmake/modules
cd packaging/luabind
mkdir build
cd build
cmake -DWITH_STATIC=ON -G "Unix Makefiles" ..
make
sudo make install
cd ../../..

Luabind will be installed in /usr/local and should not conflict with MacPorts or system files.

Downloading Ryzom code

For first time, please type :

hg clone -b compatibility https://bitbucket.org/ryzom/ryzomcore

Later, to only update sources you will need to type :

hg pull && hg update

Compiling Ryzom client

This section shows how to create a static Ryzom Core client built on Mac OS X. The resulting binary only depends on system libs, therefore can be moved easily to another Mac OS X machine. The given list of CMake options is just an example. For a complete list see: CMake Options. Building a Ryzom Core client that depends on NeL and Ryzom shared libraries is strongly discouraged.

cd ryzomcore
mkdir build
cd build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -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 ../code
make

If you already installed Ryzom from Mac AppStore, you can append this parameter to copy data files from it : -DRYZOM_DATA_DIR=/Applications/Ryzom.app/Contents/Resources/data

The resulting application bundle will be bin/Ryzom.app

If you're using data from AppStore Ryzom client, you'll need to patch some files (to support Lua 5.2 for example) with RSYNC :

rsync -rtzv --progress --stats www.ryzom.com::ryzom/data/ bin/Ryzom.com/Contents/Resources/data

The application Ryzom (Ryzom.app folder in fact) should do around 6 GB, you can launch it double-clicking on the icon.

Ryzom update script

If you need to distribute the application without data, you can create a ryzom_update script :

#!/bin/sh

BASE_DIR=$(dirname $0)
 
cd $BASE_DIR
 
SRC_DATA_DIR=
DST_DATA_DIR=
 
if [ ! -d Ryzom.app/Contents/Resources/data ]
then
  echo "You must launch ryzom_update.sh from the same folder as Ryzom.app"
  exit 1
fi

DST_DATA_DIR=Ryzom.app/Contents/Resources/data

echo "Checking if Ryzom is installed from Mac AppStore..."

if [ -e Ryzom.app/Contents/Resources/data/gamedev.bnp ]
then
  echo "Data files already there"
else
  echo "Data files are missing"

  if [ -e /Applications/Ryzom.app/Contents/MacOS/ryzom_client ]
  then
    SRC_DATA_DIR=/Applications/Ryzom.app/Contents/Resources/data

    echo "Copying files..."
    cp -R -n -p $SRC_DATA_DIR/* $DST_DATA_DIR
  else
    if [ ! -f ryzom_client.7z ] && [ ! -d ryzom ]
    then
      echo "Downloading Ryzom client data from SourceForge..."
      wget -c http://sourceforge.net/projects/ryzom/files/ryzom_client.7z -O ryzom_client.7z
    fi

    if [ ! -d ryzom ]
    then
      echo "Extracting ryzom_client.7z..."
      7z x ryzom_client.7z
    fi

    SRC_DATA_DIR=$(pwd)/ryzom/data

    echo "Moving files..."
    mv -n $SRC_DATA_DIR/* $DST_DATA_DIR

    rm -rf ryzom
    echo "Please manually delete ryzom_client.7z"
  fi
fi

echo "Updating files..."
rsync -rtzv --progress --stats www.ryzom.com::ryzom/data/ $DST_DATA_DIR

Don't forget to make this script executable with :

chmod +x ryzom_update

To create a ZIP file with Ryzom and update script, you can type :

cd bin
zip -9 -r ../ryzom_2.1.0.zip *


3 pages in Mac

Ryzom Wiki: Ryzom Commons | DE • EN • ESFRRU | Ryzom Forge