build/unix/run-mozilla.sh

changeset 0
6474c204b198
     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

mercurial