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