aboutsummaryrefslogtreecommitdiff
path: root/binary_search_tool/android/switch_to_bad.sh
blob: 2100ed4379ac460ea0f77cbb9e4cad1282358756 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash -u
#
# Copyright 2016 Google LLC
#
# This script is intended to be used by binary_search_state.py, as
# part of the binary search triage on the Android source tree.  This script
# symlinks a list of object files from the 'bad' build tree into the working
# build tree, for testing.
#
# It is highly recommended to not use --noincremental with these scripts. If the
# switch scripts are given non incremental sets of GOOD/BAD objects, make will
# not be able to do an incremental build and will take much longer to build.
#


source android/common.sh

OBJ_LIST_FILE=$1

# Symlink from BAD obj to working tree.
SWITCH_CMD="ln -sf ${BISECT_BAD_BUILD}/{} {}; touch {};"

overall_status=0

# Check that number of arguments == 1
if [ $# -eq 1 ] ; then
  # Run symlink once per input line, ignore empty lines.
  # Have ${BISECT_NUM_JOBS} processes running concurrently.
  # Pass to "sh" to allow multiple commands to be executed.
  xargs -P ${BISECT_NUM_JOBS} -a ${OBJ_LIST_FILE} -r -l -I '{}' \
    sh -c "${SWITCH_CMD}"
else
  echo "ERROR:"
  echo "Please run the binary search tool with --file_args"
  echo "Android has too many files to be passed as command line arguments"
  echo "The binary search tool will now exit..."
  exit 1
fi
overall_status=$?


exit ${overall_status}