You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							111 lines
						
					
					
						
							4.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							111 lines
						
					
					
						
							4.9 KiB
						
					
					
				| #!/bin/bash | |
| # | |
| # Copyright 2005-2013 Intel Corporation.  All Rights Reserved. | |
| # | |
| # This file is part of Threading Building Blocks. | |
| # | |
| # Threading Building Blocks is free software; you can redistribute it | |
| # and/or modify it under the terms of the GNU General Public License | |
| # version 2 as published by the Free Software Foundation. | |
| # | |
| # Threading Building Blocks is distributed in the hope that it will be | |
| # useful, but WITHOUT ANY WARRANTY; without even the implied warranty | |
| # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |
| # GNU General Public License for more details. | |
| # | |
| # You should have received a copy of the GNU General Public License | |
| # along with Threading Building Blocks; if not, write to the Free Software | |
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA | |
| # | |
| # As a special exception, you may use this file as part of a free software | |
| # library without restriction.  Specifically, if other files instantiate | |
| # templates or use macros or inline functions from this file, or you compile | |
| # this file and link it with other files to produce an executable, this | |
| # file does not by itself cause the resulting executable to be covered by | |
| # the GNU General Public License.  This exception does not however | |
| # invalidate any other reasons why the executable file might be covered by | |
| # the GNU General Public License. | |
| 
 | |
| # Usage: | |
| # mic.linux.launcher.sh [-v] [-s] [-r <repeats>] [-u] [-l <library>] <executable> <arg1> <arg2> <argN> | |
| #         where: -v enables verbose output | |
| #         where: -s enables stress testing unless ctrl-c is pressed | |
| #         where: -r <repeats> specifies number of times to repeat execution | |
| #         where: -u is ignored | |
| #         where: -l <library> specifies the library name to be assigned to LD_PRELOAD | |
| # | |
| # Libs and executable necessary for testing should be present in the current directory before running. | |
| # Note: Do not remove the redirections to '/dev/null' in the script, otherwise the nightly test system will fail. | |
| # | |
| trap 'echo Error at line $LINENO while executing "$BASH_COMMAND"' ERR # | |
| trap 'echo -e "\n*** Interrupted ***" && exit 1' SIGINT SIGQUIT # | |
| # Process the optional arguments if present | |
| if [ "x$1" = "x-v" ]; then shift 1; else SUPPRESS='>/dev/null'; fi # | |
| if [ "x$1" = "x-s" ]; then shift 1; echo Doing stress testing. Press Ctrl-C to terminate | |
|     run_prefix+='rep() { while :; do $*; done; }; rep '; fi # | |
| if [ "x$1" = "x-r" ]; then # | |
|     run_prefix+="rep() { for i in \$(seq 1 $2); do echo \$i of $2:; \$*; done; }; rep " # | |
|     shift 2; fi # | |
| [ "x$1" = "x-u" ] && shift 1 # | |
| if [ "x$1" = "x-l" ]; then { # | |
|     ldd_list+="$2 "# | |
|     run_prefix+=" LD_PRELOAD=$2" # | |
|     shift 2 # | |
| }; fi # | |
| # Collect the executable name | |
| fexename="$1" # | |
| exename=`basename $1` # | |
| shift # | |
| # | |
| RSH="sudo ssh mic0" # | |
| RCP="sudo scp" # | |
| # | |
| # Prepare the target directory on the device | |
| currentdir=`basename $PWD` # | |
| targetdir=${TEST_DIRECTORY:-/mic0fs/$USER/$currentdir} # | |
| # | |
| # Remove leftover target directory on the device | |
| eval "$RSH \"rm -r $targetdir; mkdir -p $targetdir\" $SUPPRESS 2>&1 || exit \$?" # | |
| eval "$RCP $fexename mic0:$targetdir/ $SUPPRESS || exit \$?" # | |
| # | |
| # Collect the list of files to transfer to the target device, starting with executable itself. | |
| ldd_list+="libtbbmalloc*.so* `$RSH ldd $targetdir/$exename | grep = | cut -d= -f1 2>/dev/null`" # | |
| fnamelist="" # | |
| # | |
| # Find the libraries and add them to the list. | |
| # For example, go through MIC_LD_LIBRARY_PATH and add TBB libraries from the first  | |
| # directory that contains tbb files | |
| mic_dir_list=`echo .:$MIC_LD_LIBRARY_PATH | tr : " "` # | |
| for name in $ldd_list; do # adds the first matched name in specified dirs | |
|     fnamelist+="`find $mic_dir_list -name $name -a -readable -print -quit 2>/dev/null` " # | |
| done # | |
| # | |
| # Add any libraries built for specific tests. | |
| exeroot=${exename%\.*} # | |
| fnamelist+=`ls ${exeroot}*.so ${exeroot}*.so.* 2>/dev/null`||: # | |
| # | |
| # Transfer collected executable and library files to the target device. | |
| eval "$RCP $fnamelist mic0:$targetdir/ $SUPPRESS || exit \$?" # | |
| # | |
| # Transfer input files used by example codes by scanning the executable argument list. | |
| for fullname in "$@"; do if [ -r $fullname ]; then { # | |
|     directory=$(dirname $fullname) # | |
|     filename=$(basename $fullname) # | |
|     # strip leading "." from fullname if present | |
|     [ "$directory" = "." ] && directory="" && fullname="$filename" # | |
|     # Create the target directory to hold input file if necessary | |
|     [ ! -z "$directory" ] && $RSH "mkdir -p $targetdir/$directory" $SUPPRESS 2>&1 # | |
|     # Transfer the input file to corresponding directory on target device | |
|     eval "$RCP $fullname mic0:$targetdir/$fullname $SUPPRESS 2>&1 || exit \$?" # | |
| }; fi; done # | |
| # | |
| args=$* # | |
| # Run the test on the target device | |
| kill_interrupt() { # | |
| echo -e "\n*** Killing remote $exename ***" && $RSH "killall $exename" # | |
| } # kill target process | |
| trap 'kill_interrupt' SIGINT SIGQUIT # trap keyboard interrupt (control-c) | |
| trap - ERR # | |
| $RSH "cd $targetdir; export LD_LIBRARY_PATH=.:\$LD_LIBRARY_PATH; $run_prefix ./$exename $args" # | |
| # Return the exit code of the test. | |
| exit $? #
 |