xref: /aosp_15_r20/external/cronet/build/update-linux-sandbox.sh (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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