xref: /aosp_15_r20/external/cronet/build/update-linux-sandbox.sh (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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
7BUILDTYPE="${BUILDTYPE:-Debug}"
8CHROME_SRC_DIR="${CHROME_SRC_DIR:-$(dirname -- $(readlink -fn -- "$0"))/..}"
9CHROME_OUT_DIR="${CHROME_SRC_DIR}/${CHROMIUM_OUT_DIR:-out}/${BUILDTYPE}"
10CHROME_SANDBOX_BUILD_PATH="${CHROME_OUT_DIR}/chrome_sandbox"
11CHROME_SANDBOX_INST_PATH="/usr/local/sbin/chrome-devel-sandbox"
12CHROME_SANDBOX_INST_DIR=$(dirname -- "$CHROME_SANDBOX_INST_PATH")
13
14TARGET_DIR_TYPE=$(stat -f -c %t -- "${CHROME_SANDBOX_INST_DIR}" 2>/dev/null)
15if [ $? -ne 0 ]; then
16  echo "Could not get status of ${CHROME_SANDBOX_INST_DIR}"
17  exit 1
18fi
19
20# Make sure the path is not on NFS.
21if [ "${TARGET_DIR_TYPE}" = "6969" ]; then
22  echo "Please make sure ${CHROME_SANDBOX_INST_PATH} is not on NFS!"
23  exit 1
24fi
25
26installsandbox() {
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
35if [ ! -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
39fi
40
41if [ ! -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
46fi
47
48if 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
52fi
53
54if [ ! -f "${CHROME_SANDBOX_INST_PATH}" ]; then
55  echo -n "Could not find ${CHROME_SANDBOX_INST_PATH}, "
56  echo "installing it now."
57  installsandbox
58fi
59
60if [ ! -f "${CHROME_SANDBOX_INST_PATH}" ]; then
61  echo "Failed to install ${CHROME_SANDBOX_INST_PATH}"
62  exit 1
63fi
64
65CURRENT_API=$("${CHROME_SANDBOX_BUILD_PATH}" --get-api)
66INSTALLED_API=$("${CHROME_SANDBOX_INST_PATH}" --get-api)
67
68if [ "${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
74else
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
82fi
83