update-linux-sandbox.sh (2701B)
1 #!/bin/sh 2 3 # Copyright 2012 The Chromium Authors 4 # Use of this source code is governed by a BSD-style license that can be 5 # found in the LICENSE file. 6 7 BUILDTYPE="${BUILDTYPE:-Debug}" 8 CHROME_SRC_DIR="${CHROME_SRC_DIR:-$(dirname -- $(readlink -fn -- "$0"))/..}" 9 CHROME_OUT_DIR="${CHROME_SRC_DIR}/${CHROMIUM_OUT_DIR:-out}/${BUILDTYPE}" 10 CHROME_SANDBOX_BUILD_PATH="${CHROME_OUT_DIR}/chrome_sandbox" 11 CHROME_SANDBOX_INST_PATH="/usr/local/sbin/chrome-devel-sandbox" 12 CHROME_SANDBOX_INST_DIR=$(dirname -- "$CHROME_SANDBOX_INST_PATH") 13 14 TARGET_DIR_TYPE=$(stat -f -c %t -- "${CHROME_SANDBOX_INST_DIR}" 2>/dev/null) 15 if [ $? -ne 0 ]; then 16 echo "Could not get status of ${CHROME_SANDBOX_INST_DIR}" 17 exit 1 18 fi 19 20 # Make sure the path is not on NFS. 21 if [ "${TARGET_DIR_TYPE}" = "6969" ]; then 22 echo "Please make sure ${CHROME_SANDBOX_INST_PATH} is not on NFS!" 23 exit 1 24 fi 25 26 installsandbox() { 27 echo "(using sudo so you may be asked for your password)" 28 sudo -- cp "${CHROME_SANDBOX_BUILD_PATH}" \ 29 "${CHROME_SANDBOX_INST_PATH}" && 30 sudo -- chown root:root "${CHROME_SANDBOX_INST_PATH}" && 31 sudo -- chmod 4755 "${CHROME_SANDBOX_INST_PATH}" 32 return $? 33 } 34 35 if [ ! -d "${CHROME_OUT_DIR}" ]; then 36 echo -n "${CHROME_OUT_DIR} does not exist. Use \"BUILDTYPE=Release ${0}\" " 37 echo "If you are building in Release mode" 38 exit 1 39 fi 40 41 if [ ! -f "${CHROME_SANDBOX_BUILD_PATH}" ]; then 42 echo "Could not find ${CHROME_SANDBOX_BUILD_PATH}" 43 echo -n "BUILDTYPE is $BUILDTYPE, use \"BUILDTYPE=<value> ${0}\" to override " 44 echo "after you build the chrome_sandbox target" 45 exit 1 46 fi 47 48 if readelf -d "${CHROME_SANDBOX_BUILD_PATH}" | \ 49 grep "(RPATH)" > /dev/null 2>&1; then 50 echo "Build requires is_component_build=false in ${CHROME_OUT_DIR}/args.gn." 51 exit 1 52 fi 53 54 if [ ! -f "${CHROME_SANDBOX_INST_PATH}" ]; then 55 echo -n "Could not find ${CHROME_SANDBOX_INST_PATH}, " 56 echo "installing it now." 57 installsandbox 58 fi 59 60 if [ ! -f "${CHROME_SANDBOX_INST_PATH}" ]; then 61 echo "Failed to install ${CHROME_SANDBOX_INST_PATH}" 62 exit 1 63 fi 64 65 CURRENT_API=$("${CHROME_SANDBOX_BUILD_PATH}" --get-api) 66 INSTALLED_API=$("${CHROME_SANDBOX_INST_PATH}" --get-api) 67 68 if [ "${CURRENT_API}" != "${INSTALLED_API}" ]; then 69 echo "Your installed setuid sandbox is too old, installing it now." 70 if ! installsandbox; then 71 echo "Failed to install ${CHROME_SANDBOX_INST_PATH}" 72 exit 1 73 fi 74 else 75 echo "Your setuid sandbox is up to date" 76 if [ "${CHROME_DEVEL_SANDBOX}" != "${CHROME_SANDBOX_INST_PATH}" ]; then 77 echo -n "Make sure you have \"export " 78 echo -n "CHROME_DEVEL_SANDBOX=${CHROME_SANDBOX_INST_PATH}\" " 79 echo "somewhere in your .bashrc" 80 echo "This variable is currently: ${CHROME_DEVEL_SANDBOX:-empty}" 81 fi 82 fi