Building Ryzom Client On Mac OS X

From Ryzom Forge Wiki

Revision as of 13:26, 30 August 2014 by Xiombarg (talk | contribs) (Installing and configuring Mac port)
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 Mac port

To install all 3rd party libraries needed by Ryzom, you'll need to download and install Mac port 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++

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 Mac port 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 *