#!/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}