Blame build/unix/run-mozilla.sh

Packit f0b94e
#!/bin/sh
Packit f0b94e
#
Packit f0b94e
# This Source Code Form is subject to the terms of the Mozilla Public
Packit f0b94e
# License, v. 2.0. If a copy of the MPL was not distributed with this
Packit f0b94e
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
Packit f0b94e
cmdname=`basename "$0"`
Packit f0b94e
MOZ_DIST_BIN=`dirname "$0"`
Packit f0b94e
MOZ_DEFAULT_NAME="./${cmdname}-bin"
Packit f0b94e
MOZ_APPRUNNER_NAME="./mozilla-bin"
Packit f0b94e
MOZ_PROGRAM=""
Packit f0b94e
Packit f0b94e
exitcode=1
Packit f0b94e
#
Packit f0b94e
##
Packit f0b94e
## Functions
Packit f0b94e
##
Packit f0b94e
##########################################################################
Packit f0b94e
moz_usage()
Packit f0b94e
{
Packit f0b94e
echo "Usage:  ${cmdname} [options] [program]"
Packit f0b94e
echo ""
Packit f0b94e
echo "  options:"
Packit f0b94e
echo ""
Packit f0b94e
echo "    -g                   Run in debugger."
Packit f0b94e
echo "    --debug"
Packit f0b94e
echo ""
Packit f0b94e
echo "    -d debugger          Debugger to use."
Packit f0b94e
echo "    --debugger debugger"
Packit f0b94e
echo ""
Packit f0b94e
echo "    -a debugger_args     Arguments passed to [debugger]."
Packit f0b94e
echo "    --debugger-args debugger_args"
Packit f0b94e
echo ""
Packit f0b94e
echo "  Examples:"
Packit f0b94e
echo ""
Packit f0b94e
echo "  Run the mozilla-bin binary"
Packit f0b94e
echo ""
Packit f0b94e
echo "    ${cmdname} mozilla-bin"
Packit f0b94e
echo ""
Packit f0b94e
echo "  Debug the mozilla-bin binary in gdb"
Packit f0b94e
echo ""
Packit f0b94e
echo "    ${cmdname} -g mozilla-bin -d gdb"
Packit f0b94e
echo ""
Packit f0b94e
echo "  Run mozilla-bin under valgrind with arguments"
Packit f0b94e
echo ""
Packit f0b94e
echo "    ${cmdname} -g -d valgrind -a '--tool=memcheck --leak-check=full' mozilla-bin"
Packit f0b94e
echo ""
Packit f0b94e
	return 0
Packit f0b94e
}
Packit f0b94e
##########################################################################
Packit f0b94e
moz_bail()
Packit f0b94e
{
Packit f0b94e
	message=$1
Packit f0b94e
	echo
Packit f0b94e
	echo "$cmdname: $message"
Packit f0b94e
	echo
Packit f0b94e
	exit 1
Packit f0b94e
}
Packit f0b94e
##########################################################################
Packit f0b94e
moz_test_binary()
Packit f0b94e
{
Packit f0b94e
	binary=$1
Packit f0b94e
	if [ -f "$binary" ]
Packit f0b94e
	then
Packit f0b94e
		if [ -x "$binary" ]
Packit f0b94e
		then
Packit f0b94e
			return 1
Packit f0b94e
		fi
Packit f0b94e
	fi
Packit f0b94e
	return 0
Packit f0b94e
}
Packit f0b94e
##########################################################################
Packit f0b94e
moz_get_debugger()
Packit f0b94e
{
Packit f0b94e
	debuggers="ddd gdb dbx bdb native-gdb"
Packit f0b94e
	debugger="notfound"
Packit f0b94e
	done="no"
Packit f0b94e
	for d in $debuggers
Packit f0b94e
	do
Packit f0b94e
		moz_test_binary /bin/which
Packit f0b94e
		if [ $? -eq 1 ]
Packit f0b94e
		then
Packit f0b94e
			dpath=`which ${d}`	
Packit f0b94e
		else 	
Packit f0b94e
			dpath=`LC_MESSAGES=C type ${d} | awk '{print $3;}' | sed -e 's/\.$//'`	
Packit f0b94e
		fi
Packit f0b94e
		if [ -x "$dpath" ]
Packit f0b94e
		then
Packit f0b94e
			debugger=$dpath
Packit f0b94e
			break
Packit f0b94e
		fi
Packit f0b94e
	done
Packit f0b94e
	echo $debugger
Packit f0b94e
	return 0
Packit f0b94e
}
Packit f0b94e
##########################################################################
Packit f0b94e
moz_run_program()
Packit f0b94e
{
Packit f0b94e
	prog=$MOZ_PROGRAM
Packit f0b94e
	##
Packit f0b94e
	## Make sure the program is executable
Packit f0b94e
	##
Packit f0b94e
	if [ ! -x "$prog" ]
Packit f0b94e
	then
Packit f0b94e
		moz_bail "Cannot execute $prog."
Packit f0b94e
	fi
Packit f0b94e
	##
Packit f0b94e
	## Run the program
Packit f0b94e
	##
Packit f0b94e
	exec "$prog" ${1+"$@"}
Packit f0b94e
	exitcode=$?
Packit f0b94e
}
Packit f0b94e
##########################################################################
Packit f0b94e
moz_debug_program()
Packit f0b94e
{
Packit f0b94e
	prog=$MOZ_PROGRAM
Packit f0b94e
	##
Packit f0b94e
	## Make sure the program is executable
Packit f0b94e
	##
Packit f0b94e
	if [ ! -x "$prog" ]
Packit f0b94e
	then
Packit f0b94e
		moz_bail "Cannot execute $prog."
Packit f0b94e
	fi
Packit f0b94e
	if [ -n "$moz_debugger" ]
Packit f0b94e
	then
Packit f0b94e
		moz_test_binary /bin/which
Packit f0b94e
		if [ $? -eq 1 ]
Packit f0b94e
		then	
Packit f0b94e
			debugger=`which $moz_debugger` 
Packit f0b94e
		else
Packit f0b94e
			debugger=`LC_MESSAGES=C type $moz_debugger | awk '{print $3;}' | sed -e 's/\.$//'` 
Packit f0b94e
		fi	
Packit f0b94e
	else
Packit f0b94e
		debugger=`moz_get_debugger`
Packit f0b94e
	fi
Packit f0b94e
    if [ -x "$debugger" ] 
Packit f0b94e
    then
Packit f0b94e
# If you are not using ddd, gdb and know of a way to convey the arguments 
Packit f0b94e
# over to the prog then add that here- Gagan Saksena 03/15/00
Packit f0b94e
        case `basename $debugger` in
Packit f0b94e
            native-gdb) echo "$debugger $moz_debugger_args --args $prog" ${1+"$@"}
Packit f0b94e
                exec "$debugger" $moz_debugger_args --args "$prog" ${1+"$@"}
Packit f0b94e
                exitcode=$?
Packit f0b94e
                ;;
Packit f0b94e
            gdb) echo "$debugger $moz_debugger_args --args $prog" ${1+"$@"}
Packit f0b94e
                exec "$debugger" $moz_debugger_args --args "$prog" ${1+"$@"}
Packit f0b94e
		exitcode=$?
Packit f0b94e
                ;;
Packit f0b94e
            ddd) echo "$debugger $moz_debugger_args --gdb -- --args $prog" ${1+"$@"}
Packit f0b94e
		exec "$debugger" $moz_debugger_args --gdb -- --args "$prog" ${1+"$@"}
Packit f0b94e
		exitcode=$?
Packit f0b94e
                ;;
Packit f0b94e
            *) echo "$debugger $moz_debugger_args $prog ${1+"$@"}"
Packit f0b94e
                exec $debugger $moz_debugger_args "$prog" ${1+"$@"}
Packit f0b94e
		exitcode=$?
Packit f0b94e
                ;;
Packit f0b94e
        esac
Packit f0b94e
    else
Packit f0b94e
        moz_bail "Could not find a debugger on your system."
Packit f0b94e
    fi
Packit f0b94e
}
Packit f0b94e
##########################################################################
Packit f0b94e
##
Packit f0b94e
## Command line arg defaults
Packit f0b94e
##
Packit f0b94e
moz_debug=0
Packit f0b94e
moz_debugger=""
Packit f0b94e
moz_debugger_args=""
Packit f0b94e
#
Packit f0b94e
##
Packit f0b94e
## Parse the command line
Packit f0b94e
##
Packit f0b94e
while [ $# -gt 0 ]
Packit f0b94e
do
Packit f0b94e
  case $1 in
Packit f0b94e
    -g | --debug)
Packit f0b94e
      moz_debug=1
Packit f0b94e
      shift
Packit f0b94e
      ;;
Packit f0b94e
    -d | --debugger)
Packit f0b94e
      moz_debugger=$2;
Packit f0b94e
      if [ "${moz_debugger}" != "" ]; then
Packit f0b94e
	shift 2
Packit f0b94e
      else
Packit f0b94e
        echo "-d requires an argument"
Packit f0b94e
        exit 1
Packit f0b94e
      fi
Packit f0b94e
      ;;
Packit f0b94e
    -a | --debugger-args)
Packit f0b94e
      moz_debugger_args=$2;
Packit f0b94e
      if [ "${moz_debugger_args}" != "" ]; then
Packit f0b94e
	shift 2
Packit f0b94e
      else
Packit f0b94e
        echo "-a requires an argument"
Packit f0b94e
        exit 1
Packit f0b94e
      fi
Packit f0b94e
      ;;
Packit f0b94e
    *)
Packit f0b94e
      break;
Packit f0b94e
      ;;
Packit f0b94e
  esac
Packit f0b94e
done
Packit f0b94e
#
Packit f0b94e
##
Packit f0b94e
## Program name given in $1
Packit f0b94e
##
Packit f0b94e
if [ $# -gt 0 ]
Packit f0b94e
then
Packit f0b94e
	MOZ_PROGRAM=$1
Packit f0b94e
	shift
Packit f0b94e
fi
Packit f0b94e
##
Packit f0b94e
## Program not given, try to guess a default
Packit f0b94e
##
Packit f0b94e
if [ -z "$MOZ_PROGRAM" ]
Packit f0b94e
then
Packit f0b94e
	##
Packit f0b94e
	## Try this script's name with '-bin' appended
Packit f0b94e
	##
Packit f0b94e
	if [ -x "$MOZ_DEFAULT_NAME" ]
Packit f0b94e
	then
Packit f0b94e
		MOZ_PROGRAM=$MOZ_DEFAULT_NAME
Packit f0b94e
	##
Packit f0b94e
	## Try mozilla-bin
Packit f0b94e
	## 
Packit f0b94e
	elif [ -x "$MOZ_APPRUNNER_NAME" ]
Packit f0b94e
	then
Packit f0b94e
		MOZ_PROGRAM=$MOZ_APPRUNNER_NAME
Packit f0b94e
	fi
Packit f0b94e
fi
Packit f0b94e
#
Packit f0b94e
#
Packit f0b94e
##
Packit f0b94e
## Make sure the program is executable
Packit f0b94e
##
Packit f0b94e
if [ ! -x "$MOZ_PROGRAM" ]
Packit f0b94e
then
Packit f0b94e
	moz_bail "Cannot execute $MOZ_PROGRAM."
Packit f0b94e
fi
Packit f0b94e
#
Packit f0b94e
if [ -z "$MRE_HOME" ]; then
Packit f0b94e
    MRE_HOME=$MOZ_DIST_BIN
Packit f0b94e
fi
Packit f0b94e
##
Packit f0b94e
## Set LD_LIBRARY_PATH
Packit f0b94e
##
Packit f0b94e
## On Solaris we use $ORIGIN (set in RUNPATH) instead of LD_LIBRARY_PATH 
Packit f0b94e
## to locate shared libraries. 
Packit f0b94e
##
Packit f0b94e
## When a shared library is a symbolic link, $ORIGIN will be replaced with
Packit f0b94e
## the real path (i.e., what the symbolic link points to) by the runtime
Packit f0b94e
## linker.  For example, if dist/bin/libxul.so is a symbolic link to
Packit f0b94e
## toolkit/library/libxul.so, $ORIGIN will be "toolkit/library" instead of "dist/bin".
Packit f0b94e
## So the runtime linker will use "toolkit/library" NOT "dist/bin" to locate the
Packit f0b94e
## other shared libraries that libxul.so depends on.  This only happens
Packit f0b94e
## when a user (developer) tries to start firefox, thunderbird, or seamonkey
Packit f0b94e
## under dist/bin. To solve the problem, we should rely on LD_LIBRARY_PATH
Packit f0b94e
## to locate shared libraries.
Packit f0b94e
##
Packit f0b94e
## Note: 
Packit f0b94e
##  We test $MOZ_DIST_BIN/*.so. If any of them is a symbolic link,
Packit f0b94e
##  we need to set LD_LIBRARY_PATH.
Packit f0b94e
##########################################################################
Packit f0b94e
moz_should_set_ld_library_path()
Packit f0b94e
{
Packit f0b94e
	[ `uname -s` != "SunOS" ] && return 0
Packit f0b94e
	for sharedlib in $MOZ_DIST_BIN/*.so
Packit f0b94e
	do
Packit f0b94e
		[ -h $sharedlib ] && return 0
Packit f0b94e
	done
Packit f0b94e
	return 1
Packit f0b94e
}
Packit f0b94e
if moz_should_set_ld_library_path
Packit f0b94e
then
Packit f0b94e
	LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH:+":$LD_LIBRARY_PATH"}
Packit f0b94e
fi 
Packit f0b94e
Packit f0b94e
if [ -n "$LD_LIBRARYN32_PATH" ]
Packit f0b94e
then
Packit f0b94e
	LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH:+":$LD_LIBRARYN32_PATH"}
Packit f0b94e
fi
Packit f0b94e
if [ -n "$LD_LIBRARYN64_PATH" ]
Packit f0b94e
then
Packit f0b94e
	LD_LIBRARYN64_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN64_PATH:+":$LD_LIBRARYN64_PATH"}
Packit f0b94e
fi
Packit f0b94e
if [ -n "$LD_LIBRARY_PATH_64" ]; then
Packit f0b94e
	LD_LIBRARY_PATH_64=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH_64:+":$LD_LIBRARY_PATH_64"}
Packit f0b94e
fi
Packit f0b94e
#
Packit f0b94e
#
Packit f0b94e
## Set SHLIB_PATH for HPUX
Packit f0b94e
SHLIB_PATH=${MOZ_DIST_BIN}:${MRE_HOME}${SHLIB_PATH:+":$SHLIB_PATH"}
Packit f0b94e
#
Packit f0b94e
## Set LIBPATH for AIX
Packit f0b94e
LIBPATH=${MOZ_DIST_BIN}:${MRE_HOME}${LIBPATH:+":$LIBPATH"}
Packit f0b94e
#
Packit f0b94e
## Set DYLD_LIBRARY_PATH for Mac OS X (Darwin)
Packit f0b94e
DYLD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MRE_HOME}${DYLD_LIBRARY_PATH:+":$DYLD_LIBRARY_PATH"}
Packit f0b94e
#
Packit f0b94e
## Solaris Xserver(Xsun) tuning - use shared memory transport if available
Packit f0b94e
if [ "$XSUNTRANSPORT" = "" ]
Packit f0b94e
then 
Packit f0b94e
        XSUNTRANSPORT="shmem" 
Packit f0b94e
        XSUNSMESIZE="512"
Packit f0b94e
        export XSUNTRANSPORT XSUNSMESIZE
Packit f0b94e
fi
Packit f0b94e
Packit f0b94e
# Disable Gnome crash dialog
Packit f0b94e
GNOME_DISABLE_CRASH_DIALOG=1
Packit f0b94e
export GNOME_DISABLE_CRASH_DIALOG
Packit f0b94e
Packit f0b94e
if [ "$moz_debug" -eq 1 ]
Packit f0b94e
then
Packit f0b94e
  echo "  LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
Packit f0b94e
  if [ -n "$LD_LIBRARYN32_PATH" ]
Packit f0b94e
  then
Packit f0b94e
  	echo "LD_LIBRARYN32_PATH=$LD_LIBRARYN32_PATH"
Packit f0b94e
  fi
Packit f0b94e
  if [ -n "$LD_LIBRARYN64_PATH" ]
Packit f0b94e
  then
Packit f0b94e
  	echo "LD_LIBRARYN64_PATH=$LD_LIBRARYN64_PATH"
Packit f0b94e
  fi
Packit f0b94e
  if [ -n "$LD_LIBRARY_PATH_64" ]; then
Packit f0b94e
  	echo "LD_LIBRARY_PATH_64=$LD_LIBRARY_PATH_64"
Packit f0b94e
  fi
Packit f0b94e
  if [ -n "$DISPLAY" ]; then
Packit f0b94e
       echo "DISPLAY=$DISPLAY"
Packit f0b94e
  fi
Packit f0b94e
  if [ -n "$FONTCONFIG_PATH" ]; then
Packit f0b94e
	echo "FONTCONFIG_PATH=$FONTCONFIG_PATH"
Packit f0b94e
  fi
Packit f0b94e
  if [ -n "$MOZILLA_POSTSCRIPT_PRINTER_LIST" ]; then
Packit f0b94e
       echo "MOZILLA_POSTSCRIPT_PRINTER_LIST=$MOZILLA_POSTSCRIPT_PRINTER_LIST"
Packit f0b94e
  fi
Packit f0b94e
  echo "DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH"
Packit f0b94e
  echo "     LIBRARY_PATH=$LIBRARY_PATH"
Packit f0b94e
  echo "       SHLIB_PATH=$SHLIB_PATH"
Packit f0b94e
  echo "          LIBPATH=$LIBPATH"
Packit f0b94e
  echo "       ADDON_PATH=$ADDON_PATH"
Packit f0b94e
  echo "      MOZ_PROGRAM=$MOZ_PROGRAM"
Packit f0b94e
  echo "      MOZ_TOOLKIT=$MOZ_TOOLKIT"
Packit f0b94e
  echo "        moz_debug=$moz_debug"
Packit f0b94e
  echo "     moz_debugger=$moz_debugger"
Packit f0b94e
  echo "moz_debugger_args=$moz_debugger_args"
Packit f0b94e
fi
Packit f0b94e
#
Packit f0b94e
export LD_LIBRARY_PATH
Packit f0b94e
export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
Packit f0b94e
Packit f0b94e
if [ $moz_debug -eq 1 ]
Packit f0b94e
then
Packit f0b94e
	moz_debug_program ${1+"$@"}
Packit f0b94e
else
Packit f0b94e
	moz_run_program ${1+"$@"}
Packit f0b94e
fi
Packit f0b94e
Packit f0b94e
exit $exitcode