1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/build/unix/run-mozilla.sh Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,362 @@ 1.4 +#!/bin/sh 1.5 +# 1.6 +# This Source Code Form is subject to the terms of the Mozilla Public 1.7 +# License, v. 2.0. If a copy of the MPL was not distributed with this 1.8 +# file, You can obtain one at http://mozilla.org/MPL/2.0/. 1.9 +cmdname=`basename "$0"` 1.10 +MOZ_DIST_BIN=`dirname "$0"` 1.11 +MOZ_DEFAULT_NAME="./${cmdname}-bin" 1.12 +MOZ_APPRUNNER_NAME="./mozilla-bin" 1.13 +MOZ_PROGRAM="" 1.14 + 1.15 +exitcode=1 1.16 +# 1.17 +## 1.18 +## Functions 1.19 +## 1.20 +########################################################################## 1.21 +moz_usage() 1.22 +{ 1.23 +echo "Usage: ${cmdname} [options] [program]" 1.24 +echo "" 1.25 +echo " options:" 1.26 +echo "" 1.27 +echo " -g Run in debugger." 1.28 +echo " --debug" 1.29 +echo "" 1.30 +echo " -d debugger Debugger to use." 1.31 +echo " --debugger debugger" 1.32 +echo "" 1.33 +echo " -a debugger_args Arguments passed to [debugger]." 1.34 +echo " --debugger-args debugger_args" 1.35 +echo "" 1.36 +echo " Examples:" 1.37 +echo "" 1.38 +echo " Run the mozilla-bin binary" 1.39 +echo "" 1.40 +echo " ${cmdname} mozilla-bin" 1.41 +echo "" 1.42 +echo " Debug the mozilla-bin binary in gdb" 1.43 +echo "" 1.44 +echo " ${cmdname} -g mozilla-bin -d gdb" 1.45 +echo "" 1.46 +echo " Run mozilla-bin under valgrind with arguments" 1.47 +echo "" 1.48 +echo " ${cmdname} -g -d valgrind -a '--tool=memcheck --leak-check=full' mozilla-bin" 1.49 +echo "" 1.50 + return 0 1.51 +} 1.52 +########################################################################## 1.53 +moz_bail() 1.54 +{ 1.55 + message=$1 1.56 + echo 1.57 + echo "$cmdname: $message" 1.58 + echo 1.59 + exit 1 1.60 +} 1.61 +########################################################################## 1.62 +moz_test_binary() 1.63 +{ 1.64 + binary=$1 1.65 + if [ -f "$binary" ] 1.66 + then 1.67 + if [ -x "$binary" ] 1.68 + then 1.69 + return 1 1.70 + fi 1.71 + fi 1.72 + return 0 1.73 +} 1.74 +########################################################################## 1.75 +moz_get_debugger() 1.76 +{ 1.77 + debuggers="ddd gdb dbx bdb native-gdb" 1.78 + debugger="notfound" 1.79 + done="no" 1.80 + for d in $debuggers 1.81 + do 1.82 + moz_test_binary /bin/which 1.83 + if [ $? -eq 1 ] 1.84 + then 1.85 + dpath=`which ${d}` 1.86 + else 1.87 + dpath=`LC_MESSAGES=C type ${d} | awk '{print $3;}' | sed -e 's/\.$//'` 1.88 + fi 1.89 + if [ -x "$dpath" ] 1.90 + then 1.91 + debugger=$dpath 1.92 + break 1.93 + fi 1.94 + done 1.95 + echo $debugger 1.96 + return 0 1.97 +} 1.98 +########################################################################## 1.99 +moz_run_program() 1.100 +{ 1.101 + prog=$MOZ_PROGRAM 1.102 + ## 1.103 + ## Make sure the program is executable 1.104 + ## 1.105 + if [ ! -x "$prog" ] 1.106 + then 1.107 + moz_bail "Cannot execute $prog." 1.108 + fi 1.109 + ## 1.110 + ## Run the program 1.111 + ## 1.112 + exec "$prog" ${1+"$@"} 1.113 + exitcode=$? 1.114 +} 1.115 +########################################################################## 1.116 +moz_debug_program() 1.117 +{ 1.118 + prog=$MOZ_PROGRAM 1.119 + ## 1.120 + ## Make sure the program is executable 1.121 + ## 1.122 + if [ ! -x "$prog" ] 1.123 + then 1.124 + moz_bail "Cannot execute $prog." 1.125 + fi 1.126 + if [ -n "$moz_debugger" ] 1.127 + then 1.128 + moz_test_binary /bin/which 1.129 + if [ $? -eq 1 ] 1.130 + then 1.131 + debugger=`which $moz_debugger` 1.132 + else 1.133 + debugger=`LC_MESSAGES=C type $moz_debugger | awk '{print $3;}' | sed -e 's/\.$//'` 1.134 + fi 1.135 + else 1.136 + debugger=`moz_get_debugger` 1.137 + fi 1.138 + if [ -x "$debugger" ] 1.139 + then 1.140 +# If you are not using ddd, gdb and know of a way to convey the arguments 1.141 +# over to the prog then add that here- Gagan Saksena 03/15/00 1.142 + case `basename $debugger` in 1.143 + native-gdb) echo "$debugger $moz_debugger_args --args $prog" ${1+"$@"} 1.144 + exec "$debugger" $moz_debugger_args --args "$prog" ${1+"$@"} 1.145 + exitcode=$? 1.146 + ;; 1.147 + gdb) echo "$debugger $moz_debugger_args --args $prog" ${1+"$@"} 1.148 + exec "$debugger" $moz_debugger_args --args "$prog" ${1+"$@"} 1.149 + exitcode=$? 1.150 + ;; 1.151 + ddd) echo "$debugger $moz_debugger_args --gdb -- --args $prog" ${1+"$@"} 1.152 + exec "$debugger" $moz_debugger_args --gdb -- --args "$prog" ${1+"$@"} 1.153 + exitcode=$? 1.154 + ;; 1.155 + *) echo "$debugger $moz_debugger_args $prog ${1+"$@"}" 1.156 + exec $debugger $moz_debugger_args "$prog" ${1+"$@"} 1.157 + exitcode=$? 1.158 + ;; 1.159 + esac 1.160 + else 1.161 + moz_bail "Could not find a debugger on your system." 1.162 + fi 1.163 +} 1.164 +########################################################################## 1.165 +## 1.166 +## Command line arg defaults 1.167 +## 1.168 +moz_debug=0 1.169 +moz_debugger="" 1.170 +moz_debugger_args="" 1.171 +# 1.172 +## 1.173 +## Parse the command line 1.174 +## 1.175 +while [ $# -gt 0 ] 1.176 +do 1.177 + case $1 in 1.178 + -g | --debug) 1.179 + moz_debug=1 1.180 + shift 1.181 + ;; 1.182 + -d | --debugger) 1.183 + moz_debugger=$2; 1.184 + if [ "${moz_debugger}" != "" ]; then 1.185 + shift 2 1.186 + else 1.187 + echo "-d requires an argument" 1.188 + exit 1 1.189 + fi 1.190 + ;; 1.191 + -a | --debugger-args) 1.192 + moz_debugger_args=$2; 1.193 + if [ "${moz_debugger_args}" != "" ]; then 1.194 + shift 2 1.195 + else 1.196 + echo "-a requires an argument" 1.197 + exit 1 1.198 + fi 1.199 + ;; 1.200 + *) 1.201 + break; 1.202 + ;; 1.203 + esac 1.204 +done 1.205 +# 1.206 +## 1.207 +## Program name given in $1 1.208 +## 1.209 +if [ $# -gt 0 ] 1.210 +then 1.211 + MOZ_PROGRAM=$1 1.212 + shift 1.213 +fi 1.214 +## 1.215 +## Program not given, try to guess a default 1.216 +## 1.217 +if [ -z "$MOZ_PROGRAM" ] 1.218 +then 1.219 + ## 1.220 + ## Try this script's name with '-bin' appended 1.221 + ## 1.222 + if [ -x "$MOZ_DEFAULT_NAME" ] 1.223 + then 1.224 + MOZ_PROGRAM=$MOZ_DEFAULT_NAME 1.225 + ## 1.226 + ## Try mozilla-bin 1.227 + ## 1.228 + elif [ -x "$MOZ_APPRUNNER_NAME" ] 1.229 + then 1.230 + MOZ_PROGRAM=$MOZ_APPRUNNER_NAME 1.231 + fi 1.232 +fi 1.233 +# 1.234 +# 1.235 +## 1.236 +## Make sure the program is executable 1.237 +## 1.238 +if [ ! -x "$MOZ_PROGRAM" ] 1.239 +then 1.240 + moz_bail "Cannot execute $MOZ_PROGRAM." 1.241 +fi 1.242 +# 1.243 +## 1.244 +## Set MOZILLA_FIVE_HOME 1.245 +## 1.246 +MOZILLA_FIVE_HOME=$MOZ_DIST_BIN 1.247 + 1.248 +if [ -z "$MRE_HOME" ]; then 1.249 + MRE_HOME=$MOZILLA_FIVE_HOME 1.250 +fi 1.251 +## 1.252 +## Set LD_LIBRARY_PATH 1.253 +## 1.254 +## On Solaris we use $ORIGIN (set in RUNPATH) instead of LD_LIBRARY_PATH 1.255 +## to locate shared libraries. 1.256 +## 1.257 +## When a shared library is a symbolic link, $ORIGIN will be replaced with 1.258 +## the real path (i.e., what the symbolic link points to) by the runtime 1.259 +## linker. For example, if dist/bin/libxul.so is a symbolic link to 1.260 +## toolkit/library/libxul.so, $ORIGIN will be "toolkit/library" instead of "dist/bin". 1.261 +## So the runtime linker will use "toolkit/library" NOT "dist/bin" to locate the 1.262 +## other shared libraries that libxul.so depends on. This only happens 1.263 +## when a user (developer) tries to start firefox, thunderbird, or seamonkey 1.264 +## under dist/bin. To solve the problem, we should rely on LD_LIBRARY_PATH 1.265 +## to locate shared libraries. 1.266 +## 1.267 +## Note: 1.268 +## We test $MOZ_DIST_BIN/*.so. If any of them is a symbolic link, 1.269 +## we need to set LD_LIBRARY_PATH. 1.270 +########################################################################## 1.271 +moz_should_set_ld_library_path() 1.272 +{ 1.273 + [ `uname -s` != "SunOS" ] && return 0 1.274 + for sharedlib in $MOZ_DIST_BIN/*.so 1.275 + do 1.276 + [ -h $sharedlib ] && return 0 1.277 + done 1.278 + return 1 1.279 +} 1.280 +if moz_should_set_ld_library_path 1.281 +then 1.282 + LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH:+":$LD_LIBRARY_PATH"} 1.283 +fi 1.284 + 1.285 +if [ -n "$LD_LIBRARYN32_PATH" ] 1.286 +then 1.287 + LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH:+":$LD_LIBRARYN32_PATH"} 1.288 +fi 1.289 +if [ -n "$LD_LIBRARYN64_PATH" ] 1.290 +then 1.291 + LD_LIBRARYN64_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN64_PATH:+":$LD_LIBRARYN64_PATH"} 1.292 +fi 1.293 +if [ -n "$LD_LIBRARY_PATH_64" ]; then 1.294 + LD_LIBRARY_PATH_64=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH_64:+":$LD_LIBRARY_PATH_64"} 1.295 +fi 1.296 +# 1.297 +# 1.298 +## Set SHLIB_PATH for HPUX 1.299 +SHLIB_PATH=${MOZ_DIST_BIN}:${MRE_HOME}${SHLIB_PATH:+":$SHLIB_PATH"} 1.300 +# 1.301 +## Set LIBPATH for AIX 1.302 +LIBPATH=${MOZ_DIST_BIN}:${MRE_HOME}${LIBPATH:+":$LIBPATH"} 1.303 +# 1.304 +## Set DYLD_LIBRARY_PATH for Mac OS X (Darwin) 1.305 +DYLD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MRE_HOME}${DYLD_LIBRARY_PATH:+":$DYLD_LIBRARY_PATH"} 1.306 +# 1.307 +## Solaris Xserver(Xsun) tuning - use shared memory transport if available 1.308 +if [ "$XSUNTRANSPORT" = "" ] 1.309 +then 1.310 + XSUNTRANSPORT="shmem" 1.311 + XSUNSMESIZE="512" 1.312 + export XSUNTRANSPORT XSUNSMESIZE 1.313 +fi 1.314 + 1.315 +# Disable Gnome crash dialog 1.316 +GNOME_DISABLE_CRASH_DIALOG=1 1.317 +export GNOME_DISABLE_CRASH_DIALOG 1.318 + 1.319 +if [ "$moz_debug" -eq 1 ] 1.320 +then 1.321 + echo "MOZILLA_FIVE_HOME=$MOZILLA_FIVE_HOME" 1.322 + echo " LD_LIBRARY_PATH=$LD_LIBRARY_PATH" 1.323 + if [ -n "$LD_LIBRARYN32_PATH" ] 1.324 + then 1.325 + echo "LD_LIBRARYN32_PATH=$LD_LIBRARYN32_PATH" 1.326 + fi 1.327 + if [ -n "$LD_LIBRARYN64_PATH" ] 1.328 + then 1.329 + echo "LD_LIBRARYN64_PATH=$LD_LIBRARYN64_PATH" 1.330 + fi 1.331 + if [ -n "$LD_LIBRARY_PATH_64" ]; then 1.332 + echo "LD_LIBRARY_PATH_64=$LD_LIBRARY_PATH_64" 1.333 + fi 1.334 + if [ -n "$DISPLAY" ]; then 1.335 + echo "DISPLAY=$DISPLAY" 1.336 + fi 1.337 + if [ -n "$FONTCONFIG_PATH" ]; then 1.338 + echo "FONTCONFIG_PATH=$FONTCONFIG_PATH" 1.339 + fi 1.340 + if [ -n "$MOZILLA_POSTSCRIPT_PRINTER_LIST" ]; then 1.341 + echo "MOZILLA_POSTSCRIPT_PRINTER_LIST=$MOZILLA_POSTSCRIPT_PRINTER_LIST" 1.342 + fi 1.343 + echo "DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH" 1.344 + echo " LIBRARY_PATH=$LIBRARY_PATH" 1.345 + echo " SHLIB_PATH=$SHLIB_PATH" 1.346 + echo " LIBPATH=$LIBPATH" 1.347 + echo " ADDON_PATH=$ADDON_PATH" 1.348 + echo " MOZ_PROGRAM=$MOZ_PROGRAM" 1.349 + echo " MOZ_TOOLKIT=$MOZ_TOOLKIT" 1.350 + echo " moz_debug=$moz_debug" 1.351 + echo " moz_debugger=$moz_debugger" 1.352 + echo "moz_debugger_args=$moz_debugger_args" 1.353 +fi 1.354 +# 1.355 +export MOZILLA_FIVE_HOME LD_LIBRARY_PATH 1.356 +export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH 1.357 + 1.358 +if [ $moz_debug -eq 1 ] 1.359 +then 1.360 + moz_debug_program ${1+"$@"} 1.361 +else 1.362 + moz_run_program ${1+"$@"} 1.363 +fi 1.364 + 1.365 +exit $exitcode