blob: 95ee24fd1023eb74786226680c9b25121d546e00 [file] [log] [blame]
David Brazdil5e0484e2019-08-07 15:06:57 +01001#!/usr/bin/env bash
2# Copyright 2019 The Hafnium Authors.
3#
Andrew Walbrane959ec12020-06-17 15:01:09 +01004# Use of this source code is governed by a BSD-style
5# license that can be found in the LICENSE file or at
6# https://opensource.org/licenses/BSD-3-Clause.
David Brazdil5e0484e2019-08-07 15:06:57 +01007
8set -euxo pipefail
9
David Brazdil4a51d652019-12-20 13:27:54 +000010SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
11SCRIPT_PATH="${SCRIPT_DIR}/$(basename "${BASH_SOURCE[0]}")"
David Brazdil5e0484e2019-08-07 15:06:57 +010012ROOT_DIR="$(realpath ${SCRIPT_DIR}/..)"
13
14if [ "${HAFNIUM_HERMETIC_BUILD:-}" == "true" ]
15then
David Brazdil4a51d652019-12-20 13:27:54 +000016 exec "${ROOT_DIR}/build/run_in_container.sh" -p ${SCRIPT_PATH} $@
David Brazdil5e0484e2019-08-07 15:06:57 +010017fi
18
19if [ $# != 1 ]
20then
21 echo "Usage: $0 <output_file>" 1>&2
22 exit 1
23fi
24
25MAKE="$(which make)"
26STRACE="$(which strace)"
27
28# Set up a temp directory and register a cleanup function on exit.
29TMP_DIR="$(mktemp -d)"
30function cleanup() {
31 rm -rf "${TMP_DIR}"
32}
33trap cleanup EXIT
34
35STRACE_LOG="${TMP_DIR}/strace.log"
36
37echo "Building with strace"
38pushd ${ROOT_DIR}
39${MAKE} clobber
40${STRACE} \
41 -o "${STRACE_LOG}" \
42 -f \
43 -qq \
44 -e trace=%file,chdir,%process \
45 ${MAKE}
46popd
47
48echo "Processing strace output"
49"${SCRIPT_DIR}/parse_strace_open.py" ${ROOT_DIR} < "${STRACE_LOG}" > "$1"