commit ad8ab62794c62c7cacafd278601358b90e73a6d9 Author: Mike Perry mikeperry-git@torproject.org Date: Tue Mar 17 15:35:51 2015 -0700
Cleanup to make the bug13375 diff easier to read. --- RelativeLink/RelativeLink.sh | 316 ---------------------------- RelativeLink/start-tor-browser | 316 ++++++++++++++++++++++++++++ gitian/descriptors/linux/gitian-bundle.yml | 2 +- 3 files changed, 317 insertions(+), 317 deletions(-)
diff --git a/RelativeLink/RelativeLink.sh b/RelativeLink/RelativeLink.sh deleted file mode 100755 index 8c51f47..0000000 --- a/RelativeLink/RelativeLink.sh +++ /dev/null @@ -1,316 +0,0 @@ -#!/bin/bash -# -# GNU/Linux does not really require something like RelativeLink.c -# However, we do want to have the same look and feel with similar features. -# -# To run in debug mode simply pass --debug -# -# Copyright 2015 The Tor Project. See LICENSE for licensing information. - -complain_dialog_title="Tor Browser" - -# First, make sure DISPLAY is set. If it isn't, we're hosed; scream -# at stderr and die. -if [ "x$DISPLAY" = "x" ]; then - echo "$complain_dialog_title must be run within the X Window System." >&2 - echo "Exiting." >&2 - exit 1 -fi - -# Second, make sure this script wasn't started as 'sh start-tor-browser' or -# similar. -if [ "x$BASH" = "x" ]; then - echo "$complain_dialog_title should be started as './start-tor-browser'" - echo "Exiting." >&2 - exit 1; -fi - -# Do not (try to) connect to the session manager -unset SESSION_MANAGER - -# Determine whether we are running in a terminal. If we are, we -# should send our error messages to stderr... -ARE_WE_RUNNING_IN_A_TERMINAL=0 -if [ -t 1 -o -t 2 ]; then - ARE_WE_RUNNING_IN_A_TERMINAL=1 -fi - -# ...unless we're running in the same terminal as startx or xinit. In -# that case, the user is probably running us from a GUI file manager -# in an X session started by typing startx at the console. -# -# Hopefully, the local ps command supports BSD-style options. (The ps -# commands usually used on Linux and FreeBSD do; do any other OSes -# support running Linux binaries?) -ps T 2>/dev/null |grep startx 2>/dev/null |grep -v grep 2>&1 >/dev/null -not_running_in_same_terminal_as_startx="$?" -ps T 2>/dev/null |grep xinit 2>/dev/null |grep -v grep 2>&1 >/dev/null -not_running_in_same_terminal_as_xinit="$?" - -# not_running_in_same_terminal_as_foo has the value 1 if we are *not* -# running in the same terminal as foo. -if [ "$not_running_in_same_terminal_as_startx" -eq 0 -o \ - "$not_running_in_same_terminal_as_xinit" -eq 0 ]; then - ARE_WE_RUNNING_IN_A_TERMINAL=0 -fi - -# Complain about an error, by any means necessary. -# Usage: complain message -# message must not begin with a dash. -complain () { - # Trim leading newlines, to avoid breaking formatting in some dialogs. - complain_message="`echo "$1" | sed '/./,$!d'`" - - # If we're being run in a terminal, complain there. - if [ "$ARE_WE_RUNNING_IN_A_TERMINAL" -ne 0 ]; then - echo "$complain_message" >&2 - return - fi - - # Otherwise, we're being run by a GUI program of some sort; - # try to pop up a message in the GUI in the nicest way - # possible. - # - # In mksh, non-existent commands return 127; I'll assume all - # other shells set the same exit code if they can't run a - # command. (xmessage returns 1 if the user clicks the WM - # close button, so we do need to look at the exact exit code, - # not just assume the command failed to display a message if - # it returns non-zero.) - - # First, try zenity. - zenity --error \ - --title="$complain_dialog_title" \ - --text="$complain_message" - if [ "$?" -ne 127 ]; then - return - fi - - # Try kdialog. - kdialog --title "$complain_dialog_title" \ - --error "$complain_message" - if [ "$?" -ne 127 ]; then - return - fi - - # Try xmessage. - xmessage -title "$complain_dialog_title" \ - -center \ - -buttons OK \ - -default OK \ - -xrm '*message.scrollVertical: Never' \ - "$complain_message" - if [ "$?" -ne 127 ]; then - return - fi - - # Try gxmessage. This one isn't installed by default on - # Debian with the default GNOME installation, so it seems to - # be the least likely program to have available, but it might - # be used by one of the 'lightweight' Gtk-based desktop - # environments. - gxmessage -title "$complain_dialog_title" \ - -center \ - -buttons GTK_STOCK_OK \ - -default OK \ - "$complain_message" - if [ "$?" -ne 127 ]; then - return - fi -} - -if [ "`id -u`" -eq 0 ]; then - complain "The Tor Browser Bundle should not be run as root. Exiting." - exit 1 -fi - -debug=0 -usage_message="usage: $0 [--debug]" -# !!! We may have more than one argument, changed -eq to -ge in if & elif clauses below -if [ "$#" -ge 1 -a ( "x$1" = "x--debug" -o "x$1" = "x-debug" ) ]; then - debug=1 - shift # pop the debug argument - printf "\nDebug enabled.\n\n" -elif [ "$#" -ge 1 -a ( "x$1" = "x--help" -o "x$1" = "x-help" ) ]; then - echo "$usage_message" - exit 0 -fi - -# If the user hasn't requested 'debug mode', close whichever of stdout -# and stderr are not ttys, to keep Firefox and the stuff loaded by/for -# it (including the system's shared-library loader) from printing -# messages to $HOME/.xsession-errors . (Users wouldn't have seen -# messages there anyway.) -# -# If the user has requested 'debug mode', don't muck with the FDs. -if [ "$debug" -ne 1 ]; then - if [ '!' -t 1 ]; then - # stdout is not a tty - exec >/dev/null - fi - if [ '!' -t 2 ]; then - # stderr is not a tty - exec 2>/dev/null - fi -fi - -# If XAUTHORITY is unset, set it to its default value of $HOME/.Xauthority -# before we change HOME below. (See xauth(1) and #1945.) XDM and KDM rely -# on applications using this default value. -if [ -z "$XAUTHORITY" ]; then - XAUTHORITY=~/.Xauthority - export XAUTHORITY -fi - -# If this script is being run through a symlink, we need to know where -# in the filesystem the script itself is, not where the symlink is. -myname="$0" -if [ -L "$myname" ]; then - # XXX readlink is not POSIX, but is present in GNU coreutils - # and on FreeBSD. Unfortunately, the -f option (which follows - # a whole chain of symlinks until it reaches a non-symlink - # path name) is a GNUism, so we have to have a fallback for - # FreeBSD. Fortunately, FreeBSD has realpath instead; - # unfortunately, that's also non-POSIX and is not present in - # GNU coreutils. - # - # If this launcher were a C program, we could just use the - # realpath function, which *is* POSIX. Too bad POSIX didn't - # make that function accessible to shell scripts. - - # If realpath is available, use it; it Does The Right Thing. - possibly_my_real_name="`realpath "$myname" 2>/dev/null`" - if [ "$?" -eq 0 ]; then - myname="$possibly_my_real_name" - else - # realpath is not available; hopefully readlink -f works. - myname="`readlink -f "$myname" 2>/dev/null`" - if [ "$?" -ne 0 ]; then - # Ugh. - complain "start-tor-browser cannot be run using a symlink on this operating system." - fi - fi -fi - -# Try to be agnostic to where we're being started from, chdir to where -# the script is. -mydir="`dirname "$myname"`" -test -d "$mydir" && cd "$mydir" - -# This is a fix for an ibus issue on some Linux systems. See #9353 for more -# details. The symlink needs to be created before we change HOME. -if [ ! -d ".config/ibus" ]; then - mkdir -p .config/ibus - ln -nsf ~/.config/ibus/bus .config/ibus -fi - -# If ${PWD} results in a zero length HOME, we can try something else... -if [ ! "${PWD}" ]; then - # "hacking around some braindamage" - HOME="`pwd`" - export HOME - surveysays="This system has a messed up shell.\n" -else - HOME="${PWD}" - export HOME -fi - -SYSARCHITECTURE=$(getconf LONG_BIT) -TORARCHITECTURE=$(expr "$(file TorBrowser/Tor/tor)" : '.*ELF ([[:digit:]]*)') - -if [ $SYSARCHITECTURE -ne $TORARCHITECTURE ]; then - complain "Wrong architecture? 32-bit vs. 64-bit." - exit 1 -fi - -LD_LIBRARY_PATH="${HOME}/TorBrowser/Tor/" -export LD_LIBRARY_PATH - -function setControlPortPasswd() { - local ctrlPasswd=$1 - - if test -z "$ctrlPasswd" -o "$ctrlPasswd" = $'"secret"' ; then - unset TOR_CONTROL_PASSWD - return - fi - - if test "${ctrlPasswd:0:1}" = $'"'; then # First 2 chars were '" - printf "Using system Tor process.\n" - export TOR_CONTROL_PASSWD - else - complain "There seems to have been a quoting problem with your \ -TOR_CONTROL_PASSWD environment variable." - cat <<EOF - -The Tor ControlPort password should be given inside double quotes, inside single -quotes, i.e. if the ControlPort password is “secret” (without curly quotes) then -we must start this script after setting the environment variable exactly like -this: - - $ TOR_CONTROL_PASSWD='"secret"' $myname - -EOF - fi -} - -# Using a system-installed Tor process with Tor Browser: -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# The Tor ControlPort password should be given inside double quotes, inside -# single quotes, i.e. if the ControlPort password is “secret” (without -# curly quotes) then we must set the environment variable *exactly* like -# this: -# -# TOR_CONTROL_PASSWD='"secret"' -# -# Yes, the variable MUST be double-quoted, then single-quoted, exactly as -# shown. This is used by TorButtom to authenticate to Tor's ControlPort, and -# is necessary for using TBB with a with a system-installed Tor. -# -# Additionally, if using a system-installed Tor, the following about:config -# options should be set (values in <> mean they are the value taken from your -# torrc): -# -# SETTING NAME VALUE -# extensions.torbutton.banned_ports [...],<SocksPort>,<ControlPort> -# extensions.torbutton.block_disk false -# extensions.torbutton.custom.socks_host 127.0.0.1 -# extensions.torbutton.custom.socks_port <SocksPort> -# extensions.torbutton.inserted_button true -# extensions.torbutton.launch_warning false -# extensions.torbutton.loglevel 2 -# extensions.torbutton.logmethod 0 -# extensions.torbutton.settings_method custom -# extensions.torbutton.socks_port <SocksPort> -# extensions.torbutton.use_privoxy false -# extensions.torlauncher.control_port <ControlPort> -# extensions.torlauncher.loglevel 2 -# extensions.torlauncher.logmethod 0 -# extensions.torlauncher.prompt_at_startup false -# extensions.torlauncher.start_tor false -# -# where the '[...]' in the banned_ports option means "leave anything that was -# already in the preference alone, just append the things specified after it". - -# Either set `TOR_CONTROL_PASSWD` before running ./start-tor-browser, or put -# your password in the following line where the word “secret” is: -setControlPortPasswd ${TOR_CONTROL_PASSWD:='"secret"'} - -# XXX: Debug mode for Firefox?? - -# not in debug mode, run proceed normally -printf "Launching Tor Browser for Linux in ${HOME}...\n" -cd "${HOME}" -# XXX Someday we should pass whatever command-line arguments we got -# (probably filenames or URLs) to Firefox. -# !!! Dash above comment! Now we pass command-line arguments we got (except --debug) to Firefox. -# !!! Use at your own risk! -# Adding --class for fixing bug 11102. -TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD} ./firefox --class "Tor Browser" \ - -profile TorBrowser/Data/Browser/profile.default "${@}" -exitcode="$?" -if [ "$exitcode" -ne 0 ]; then - complain "Tor Browser exited abnormally. Exit code: $exitcode" - exit "$exitcode" -else - printf '\nTor Browser exited cleanly.\n' -fi diff --git a/RelativeLink/start-tor-browser b/RelativeLink/start-tor-browser new file mode 100755 index 0000000..8c51f47 --- /dev/null +++ b/RelativeLink/start-tor-browser @@ -0,0 +1,316 @@ +#!/bin/bash +# +# GNU/Linux does not really require something like RelativeLink.c +# However, we do want to have the same look and feel with similar features. +# +# To run in debug mode simply pass --debug +# +# Copyright 2015 The Tor Project. See LICENSE for licensing information. + +complain_dialog_title="Tor Browser" + +# First, make sure DISPLAY is set. If it isn't, we're hosed; scream +# at stderr and die. +if [ "x$DISPLAY" = "x" ]; then + echo "$complain_dialog_title must be run within the X Window System." >&2 + echo "Exiting." >&2 + exit 1 +fi + +# Second, make sure this script wasn't started as 'sh start-tor-browser' or +# similar. +if [ "x$BASH" = "x" ]; then + echo "$complain_dialog_title should be started as './start-tor-browser'" + echo "Exiting." >&2 + exit 1; +fi + +# Do not (try to) connect to the session manager +unset SESSION_MANAGER + +# Determine whether we are running in a terminal. If we are, we +# should send our error messages to stderr... +ARE_WE_RUNNING_IN_A_TERMINAL=0 +if [ -t 1 -o -t 2 ]; then + ARE_WE_RUNNING_IN_A_TERMINAL=1 +fi + +# ...unless we're running in the same terminal as startx or xinit. In +# that case, the user is probably running us from a GUI file manager +# in an X session started by typing startx at the console. +# +# Hopefully, the local ps command supports BSD-style options. (The ps +# commands usually used on Linux and FreeBSD do; do any other OSes +# support running Linux binaries?) +ps T 2>/dev/null |grep startx 2>/dev/null |grep -v grep 2>&1 >/dev/null +not_running_in_same_terminal_as_startx="$?" +ps T 2>/dev/null |grep xinit 2>/dev/null |grep -v grep 2>&1 >/dev/null +not_running_in_same_terminal_as_xinit="$?" + +# not_running_in_same_terminal_as_foo has the value 1 if we are *not* +# running in the same terminal as foo. +if [ "$not_running_in_same_terminal_as_startx" -eq 0 -o \ + "$not_running_in_same_terminal_as_xinit" -eq 0 ]; then + ARE_WE_RUNNING_IN_A_TERMINAL=0 +fi + +# Complain about an error, by any means necessary. +# Usage: complain message +# message must not begin with a dash. +complain () { + # Trim leading newlines, to avoid breaking formatting in some dialogs. + complain_message="`echo "$1" | sed '/./,$!d'`" + + # If we're being run in a terminal, complain there. + if [ "$ARE_WE_RUNNING_IN_A_TERMINAL" -ne 0 ]; then + echo "$complain_message" >&2 + return + fi + + # Otherwise, we're being run by a GUI program of some sort; + # try to pop up a message in the GUI in the nicest way + # possible. + # + # In mksh, non-existent commands return 127; I'll assume all + # other shells set the same exit code if they can't run a + # command. (xmessage returns 1 if the user clicks the WM + # close button, so we do need to look at the exact exit code, + # not just assume the command failed to display a message if + # it returns non-zero.) + + # First, try zenity. + zenity --error \ + --title="$complain_dialog_title" \ + --text="$complain_message" + if [ "$?" -ne 127 ]; then + return + fi + + # Try kdialog. + kdialog --title "$complain_dialog_title" \ + --error "$complain_message" + if [ "$?" -ne 127 ]; then + return + fi + + # Try xmessage. + xmessage -title "$complain_dialog_title" \ + -center \ + -buttons OK \ + -default OK \ + -xrm '*message.scrollVertical: Never' \ + "$complain_message" + if [ "$?" -ne 127 ]; then + return + fi + + # Try gxmessage. This one isn't installed by default on + # Debian with the default GNOME installation, so it seems to + # be the least likely program to have available, but it might + # be used by one of the 'lightweight' Gtk-based desktop + # environments. + gxmessage -title "$complain_dialog_title" \ + -center \ + -buttons GTK_STOCK_OK \ + -default OK \ + "$complain_message" + if [ "$?" -ne 127 ]; then + return + fi +} + +if [ "`id -u`" -eq 0 ]; then + complain "The Tor Browser Bundle should not be run as root. Exiting." + exit 1 +fi + +debug=0 +usage_message="usage: $0 [--debug]" +# !!! We may have more than one argument, changed -eq to -ge in if & elif clauses below +if [ "$#" -ge 1 -a ( "x$1" = "x--debug" -o "x$1" = "x-debug" ) ]; then + debug=1 + shift # pop the debug argument + printf "\nDebug enabled.\n\n" +elif [ "$#" -ge 1 -a ( "x$1" = "x--help" -o "x$1" = "x-help" ) ]; then + echo "$usage_message" + exit 0 +fi + +# If the user hasn't requested 'debug mode', close whichever of stdout +# and stderr are not ttys, to keep Firefox and the stuff loaded by/for +# it (including the system's shared-library loader) from printing +# messages to $HOME/.xsession-errors . (Users wouldn't have seen +# messages there anyway.) +# +# If the user has requested 'debug mode', don't muck with the FDs. +if [ "$debug" -ne 1 ]; then + if [ '!' -t 1 ]; then + # stdout is not a tty + exec >/dev/null + fi + if [ '!' -t 2 ]; then + # stderr is not a tty + exec 2>/dev/null + fi +fi + +# If XAUTHORITY is unset, set it to its default value of $HOME/.Xauthority +# before we change HOME below. (See xauth(1) and #1945.) XDM and KDM rely +# on applications using this default value. +if [ -z "$XAUTHORITY" ]; then + XAUTHORITY=~/.Xauthority + export XAUTHORITY +fi + +# If this script is being run through a symlink, we need to know where +# in the filesystem the script itself is, not where the symlink is. +myname="$0" +if [ -L "$myname" ]; then + # XXX readlink is not POSIX, but is present in GNU coreutils + # and on FreeBSD. Unfortunately, the -f option (which follows + # a whole chain of symlinks until it reaches a non-symlink + # path name) is a GNUism, so we have to have a fallback for + # FreeBSD. Fortunately, FreeBSD has realpath instead; + # unfortunately, that's also non-POSIX and is not present in + # GNU coreutils. + # + # If this launcher were a C program, we could just use the + # realpath function, which *is* POSIX. Too bad POSIX didn't + # make that function accessible to shell scripts. + + # If realpath is available, use it; it Does The Right Thing. + possibly_my_real_name="`realpath "$myname" 2>/dev/null`" + if [ "$?" -eq 0 ]; then + myname="$possibly_my_real_name" + else + # realpath is not available; hopefully readlink -f works. + myname="`readlink -f "$myname" 2>/dev/null`" + if [ "$?" -ne 0 ]; then + # Ugh. + complain "start-tor-browser cannot be run using a symlink on this operating system." + fi + fi +fi + +# Try to be agnostic to where we're being started from, chdir to where +# the script is. +mydir="`dirname "$myname"`" +test -d "$mydir" && cd "$mydir" + +# This is a fix for an ibus issue on some Linux systems. See #9353 for more +# details. The symlink needs to be created before we change HOME. +if [ ! -d ".config/ibus" ]; then + mkdir -p .config/ibus + ln -nsf ~/.config/ibus/bus .config/ibus +fi + +# If ${PWD} results in a zero length HOME, we can try something else... +if [ ! "${PWD}" ]; then + # "hacking around some braindamage" + HOME="`pwd`" + export HOME + surveysays="This system has a messed up shell.\n" +else + HOME="${PWD}" + export HOME +fi + +SYSARCHITECTURE=$(getconf LONG_BIT) +TORARCHITECTURE=$(expr "$(file TorBrowser/Tor/tor)" : '.*ELF ([[:digit:]]*)') + +if [ $SYSARCHITECTURE -ne $TORARCHITECTURE ]; then + complain "Wrong architecture? 32-bit vs. 64-bit." + exit 1 +fi + +LD_LIBRARY_PATH="${HOME}/TorBrowser/Tor/" +export LD_LIBRARY_PATH + +function setControlPortPasswd() { + local ctrlPasswd=$1 + + if test -z "$ctrlPasswd" -o "$ctrlPasswd" = $'"secret"' ; then + unset TOR_CONTROL_PASSWD + return + fi + + if test "${ctrlPasswd:0:1}" = $'"'; then # First 2 chars were '" + printf "Using system Tor process.\n" + export TOR_CONTROL_PASSWD + else + complain "There seems to have been a quoting problem with your \ +TOR_CONTROL_PASSWD environment variable." + cat <<EOF + +The Tor ControlPort password should be given inside double quotes, inside single +quotes, i.e. if the ControlPort password is “secret” (without curly quotes) then +we must start this script after setting the environment variable exactly like +this: + + $ TOR_CONTROL_PASSWD='"secret"' $myname + +EOF + fi +} + +# Using a system-installed Tor process with Tor Browser: +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# The Tor ControlPort password should be given inside double quotes, inside +# single quotes, i.e. if the ControlPort password is “secret” (without +# curly quotes) then we must set the environment variable *exactly* like +# this: +# +# TOR_CONTROL_PASSWD='"secret"' +# +# Yes, the variable MUST be double-quoted, then single-quoted, exactly as +# shown. This is used by TorButtom to authenticate to Tor's ControlPort, and +# is necessary for using TBB with a with a system-installed Tor. +# +# Additionally, if using a system-installed Tor, the following about:config +# options should be set (values in <> mean they are the value taken from your +# torrc): +# +# SETTING NAME VALUE +# extensions.torbutton.banned_ports [...],<SocksPort>,<ControlPort> +# extensions.torbutton.block_disk false +# extensions.torbutton.custom.socks_host 127.0.0.1 +# extensions.torbutton.custom.socks_port <SocksPort> +# extensions.torbutton.inserted_button true +# extensions.torbutton.launch_warning false +# extensions.torbutton.loglevel 2 +# extensions.torbutton.logmethod 0 +# extensions.torbutton.settings_method custom +# extensions.torbutton.socks_port <SocksPort> +# extensions.torbutton.use_privoxy false +# extensions.torlauncher.control_port <ControlPort> +# extensions.torlauncher.loglevel 2 +# extensions.torlauncher.logmethod 0 +# extensions.torlauncher.prompt_at_startup false +# extensions.torlauncher.start_tor false +# +# where the '[...]' in the banned_ports option means "leave anything that was +# already in the preference alone, just append the things specified after it". + +# Either set `TOR_CONTROL_PASSWD` before running ./start-tor-browser, or put +# your password in the following line where the word “secret” is: +setControlPortPasswd ${TOR_CONTROL_PASSWD:='"secret"'} + +# XXX: Debug mode for Firefox?? + +# not in debug mode, run proceed normally +printf "Launching Tor Browser for Linux in ${HOME}...\n" +cd "${HOME}" +# XXX Someday we should pass whatever command-line arguments we got +# (probably filenames or URLs) to Firefox. +# !!! Dash above comment! Now we pass command-line arguments we got (except --debug) to Firefox. +# !!! Use at your own risk! +# Adding --class for fixing bug 11102. +TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD} ./firefox --class "Tor Browser" \ + -profile TorBrowser/Data/Browser/profile.default "${@}" +exitcode="$?" +if [ "$exitcode" -ne 0 ]; then + complain "Tor Browser exited abnormally. Exit code: $exitcode" + exit "$exitcode" +else + printf '\nTor Browser exited cleanly.\n' +fi diff --git a/gitian/descriptors/linux/gitian-bundle.yml b/gitian/descriptors/linux/gitian-bundle.yml index 19233b6..9290b91 100644 --- a/gitian/descriptors/linux/gitian-bundle.yml +++ b/gitian/descriptors/linux/gitian-bundle.yml @@ -116,7 +116,7 @@ script: | cd ~/build/ # unzip relativelink-src.zip - cp RelativeLink/RelativeLink.sh tor-browser/Browser/start-tor-browser + cp RelativeLink/* tor-browser/Browser/ # cd tor-browser ln -s Browser/start-tor-browser
tbb-commits@lists.torproject.org