summaryrefslogtreecommitdiff
path: root/community-testing/freeorion/freeorion.sh
blob: d80623ab2da10ec95ba8902e3e92c44ffff0cb0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/bin/sh
#
# written by Markus Sinner, http://psitronic.de
#
# Nightly builds on.
# http://freeorion.psitronic.de/download/nightly/
#
# This is a wrapper-script for starting FreeOrion on
# ix86 (and maybe x64) Linux Systems.
# This script will CD into application and set some
# enviroment variables.

# ---- commandline PARAMETERS and ENVIROMENT variables -----
# This script supports parameters, that will be evaluated
# BEFORE freeorion binary is called and will be removed, 
# because the binary won't support them.
# Currently only one parameter at a time is supported!
# Parameters other than these will be appended as command
# line parameters to the call of the freeorion binary.
#
# --strace
#   This starts freeorion using the "strace" utility. 
#   Generates a strace logifle /tmp/freeorion.trace.
#   Make sure it is installed on your system!
# --gdb
#   Runs freeorion in a gdb instance, passes the original
#   parameters through the --args parameter of gdb
#
#
# ENVIROMENT variables
# This script supports some enviroment variables. To set them
# either use the followin command BEFORE you execute this script.
#    export XXXX="value"
# This permanently set the variable in you current shell script.
# Or you prepend the options when running this script, like this:
#    PARAM1="hello" PARAM2="yo man" /usr/bin/freeorion.elf
#
# Supportet are:
#   FO_TRACE=
#      Use this to prepend something to calling freorion.
#      This variables also is used internally, when --gdb or --trace
#      appear on the command line.
#   FO_GDB_ARGS=
#      If you use --gbd, you should uses this env to add GDB parameters.
#      Make sure you end this list of parameters with --args, otherwise
#      gdb won't start. Example: FO_GDB_ARGS="-q -s fo.symbols --args"
#   LD_LIBRARY_PATH=
#      This is a well known env and will be honored by this script.
#


# ---------- STARTS HERE ---------------
# Change into application directory
# If this is a symlink, then we
# need to change into the dir of symlink-target.
if [ -h $0 ]; then
  echo "I am Symlink. Following into my targets basedir"
  ME=`readlink $0`
else
  echo "Following into my basedir"
  ME=$0
fi

# This is important! Script won't work outside its installation dir
ROOT=/usr/share/freeorion
cd ${ROOT}
echo -n "CWD: "
pwd



# Check for python. If freeorionca binary is missing it, use
# the shipped version.
if ldd /usr/bin/freeorionca | grep "libpython.*not found"; then
    #echo "python2.5 missing. Using shipped version."
    PYTHON_USE_SHIPPED=1
else 
    #echo "python2.5 found. Using it."
    PYTHON_USE_SHIPPED=0
fi

# Set Python library home for loading modules
# If no python 2.5 is detected, use shipped python 2.5
if [ "$PYTHON_USE_SHIPPED" = "1" ]; then
    export PYTHONHOME=/usr/lib/freeorion/python2.5
    export PYTHONPATH=${PYTHONHOME}
    export PYTHONDEBUG=1
    export PYTHONVERBOSE=1
    echo "PYTHONHOME=${PYTHONHOME}"
    
    export LD_LIBRARY_PATH=${PYTHONHOME}:${LD_LIBRARY_PATH}
    export LD_PRELOAD=${PYTHONHOME}/libutil.so.1:${PYTHONHOME}/libpython2.5.so
fi


# Command line Parameter --gdb forces running in gdb
# Setting FO_TRACE to gdb results in other settings, see
# below
if [ "$1" = "--gdb" ]; then
    FO_TRACE="gdb"

    # Don't forget to remove the param
    shift
fi

if [ "$1" = "--strace" ]; then
    TRACEFILE=/tmp/freeorion.trace
    echo
    echo "Tracing to ${TRACEFILE}"
    echo
    FO_TRACE="strace -f -o ${TRACEFILE}"

    # Don't forget to remove the param
    shift
fi



# Add a parameter FO_GDB_ARGS to support gdb
# Or warn the user, if he changed FO_GDB_ARGS and has
# forgotten to end it with --args
if [ "$FO_TRACE" = "gdb" ]; then
    if [ "$FO_GDB_ARGS" = "" ]; then
	FO_GDB_ARGS="--args"
    else
	echo "****************************************************"
	echo "** NOTE         NOTE         NOTE         NOTE    **"
	echo "Running FO in gdb"
	echo "If you use FO_GDB_ARGS on your command line, make"
	echo "sure that you END this variabble with --args."
	echo "Otherwise gdb will not start."
	echo
	echo "Type 'start' when the gdb instance has loaded!"
	echo	
    fi
fi


# Support loading libs from application/lib
export LD_LIBRARY_PATH=./lib:${LD_LIBRARY_PATH}

# Call with settings-dir to avoid conflicting installations
${FO_TRACE} ${FO_GDB_ARGS} /usr/bin/freeorion.elf  --resource-dir ./default $@