Bash程序  |  46行  |  1.67 KB

#!/bin/bash
# Copyright (C) 2018 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -eux

SCRIPT_DIR="$(realpath "$(dirname "${BASH_SOURCE[0]}")")"
ROOT_DIR="$(realpath ${SCRIPT_DIR}/../..)"

cd ${ROOT_DIR}

# Check that the expected environment variables are present (due to set -u).
echo PERFETTO_TEST_GN_ARGS: ${PERFETTO_TEST_GN_ARGS}
echo PERFETTO_TEST_ENTRYPT: ${PERFETTO_TEST_ENTRYPT}

# Run PERFETTO_TEST_ENTRYPOINT inside the container with the following setup:
# Mount (readonly) the current source directory inside the container. Enter the
# container as root, make a mutable copy the source tree, and then invoke
# the test script as that user.
#
# SYS_PTRACE capability is added for [at least] the leak sanitizer.
# TODO(rsavitski): figure out why "su perfetto -c" was messing with the test
# scripts (at least the output truncation).
sudo docker run --rm -t \
  --user=root:root \
  --cap-add=SYS_PTRACE \
  -e PERFETTO_TEST_GN_ARGS="${PERFETTO_TEST_GN_ARGS}" \
  -v ${ROOT_DIR}:/perfetto:ro \
  asia.gcr.io/perfetto-ci/perfetto-ci:latest \
  /bin/bash \
  "-c" \
  "cp -r /perfetto /home/perfetto/src && \
  cd /home/perfetto/src && \
  ${PERFETTO_TEST_ENTRYPT}"