wrapper revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
1#!/bin/bash
2#
3# Copyright (c) 2011 The Chromium Authors. All rights reserved.
4# Use of this source code is governed by a BSD-style license that can be
5# found in the LICENSE file.
6
7# Let the wrapped binary know that it has been run through the wrapper.
8export CHROME_WRAPPER="`readlink -f "$0"`"
9
10HERE="`dirname "$CHROME_WRAPPER"`"
11
12# Check if the CPU supports SSE2. If not, try to pop up a dialog to explain the
13# problem and exit. Otherwise the browser will just crash with a SIGILL.
14# http://crbug.com/348761
15grep ^flags /proc/cpuinfo|grep -qs sse2
16if [ $? != 0 ]; then
17  SSE2_DEPRECATION_MSG="This computer can no longer run Google Chrome because \
18its hardware is no longer supported."
19  if which zenity &> /dev/null; then
20    zenity --warning --text="$SSE2_DEPRECATION_MSG"
21  elif which gmessage &> /dev/null; then
22    gmessage "$SSE2_DEPRECATION_MSG"
23  elif which xmessage &> /dev/null; then
24    xmessage "$SSE2_DEPRECATION_MSG"
25  else
26    echo "$SSE2_DEPRECATION_MSG" 1>&2
27  fi
28  exit 1
29fi
30
31# We include some xdg utilities next to the binary, and we want to prefer them
32# over the system versions when we know the system versions are very old. We
33# detect whether the system xdg utilities are sufficiently new to be likely to
34# work for us by looking for xdg-settings. If we find it, we leave $PATH alone,
35# so that the system xdg utilities (including any distro patches) will be used.
36if ! which xdg-settings &> /dev/null; then
37  # Old xdg utilities. Prepend $HERE to $PATH to use ours instead.
38  export PATH="$HERE:$PATH"
39else
40  # Use system xdg utilities. But first create mimeapps.list if it doesn't
41  # exist; some systems have bugs in xdg-mime that make it fail without it.
42  xdg_app_dir="${XDG_DATA_HOME:-$HOME/.local/share/applications}"
43  mkdir -p "$xdg_app_dir"
44  [ -f "$xdg_app_dir/mimeapps.list" ] || touch "$xdg_app_dir/mimeapps.list"
45fi
46
47# Always use our versions of ffmpeg libs.
48# This also makes RPMs find the compatibly-named library symlinks.
49if [[ -n "$LD_LIBRARY_PATH" ]]; then
50  LD_LIBRARY_PATH="$HERE:$HERE/lib:$LD_LIBRARY_PATH"
51else
52  LD_LIBRARY_PATH="$HERE:$HERE/lib"
53fi
54export LD_LIBRARY_PATH
55
56export CHROME_VERSION_EXTRA="@@CHANNEL@@"
57
58# We don't want bug-buddy intercepting our crashes. http://crbug.com/24120
59export GNOME_DISABLE_CRASH_DIALOG=SET_BY_GOOGLE_CHROME
60
61# Automagically migrate user data directory.
62# TODO(phajdan.jr): Remove along with migration code in the browser for M33.
63if [[ -n "@@SXS_USER_DATA_DIR@@" ]]; then
64  if [[ ! -d "@@SXS_USER_DATA_DIR@@" ]]; then
65    "$HERE/@@PROGNAME@@" "--migrate-data-dir-for-sxs=@@SXS_USER_DATA_DIR@@" \
66      --enable-logging=stderr --log-level=0
67  fi
68fi
69
70# Make sure that the profile directory specified in the environment, if any,
71# overrides the default.
72if [[ -n "$CHROME_USER_DATA_DIR" ]]; then
73  PROFILE_DIRECTORY_FLAG="--user-data-dir=$CHROME_USER_DATA_DIR"
74fi
75
76# Sanitize std{in,out,err} because they'll be shared with untrusted child
77# processes (http://crbug.com/376567).
78exec < /dev/null
79exec > >(exec cat)
80exec 2> >(exec cat >&2)
81
82# Note: exec -a below is a bashism.
83exec -a "$0" "$HERE/@@PROGNAME@@" @@DEFAULT_FLAGS@@ "$PROFILE_DIRECTORY_FLAG" \
84  "$@"
85