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