commit d61f362e934421a74b2b7238035af3fce6ac307b Author: Dario Faggioli Date: Wed Jun 25 16:55:56 2014 +0200 ts-unixbench-prep: make it generic to allow dealing with preparation of multiple benchmarks. XXX As for the previous patch, this is only to show how the code will look if we go this way. Signed-off-by: Dario Faggioli diff --git a/ts-unixbench-prep b/ts-unixbench-prep index 607d1a8..55816b7 100755 --- a/ts-unixbench-prep +++ b/ts-unixbench-prep @@ -26,7 +26,10 @@ use feature 'switch'; tsreadconfig(); # what we expect as argument list is: -# host= [] +# host= [] +@ARGV= reverse @ARGV; +our $benchname= $ARGV[0]; shift @ARGV; +@ARGV= reverse @ARGV; our $ho= selecthost($ARGV[0]); shift @ARGV; our $gho= $ho; if ( (0+@ARGV) == 1) { @@ -35,45 +38,62 @@ if ( (0+@ARGV) == 1) { die "$err $gho->{Name}" if defined $err; } -logm("Prep the environment for running unixbench"); +# In general, we know what benchmarks comes in archives. We assume them to be +# tarballs, and we try to figure out whether or not it is compressed, and if +# yes, how. Check is rather basic, relying only on the file extension. +sub archive_extract_cmd($) { + my $benchfile_path= "@_"; + my @exts= qw(.tar .tgz .tbz2. .bz2 .gzip); + my ($name, $dir, $ext) = fileparse($benchfile_path, @exts); + my $cmd; -# packages needed to build and run -target_install_packages_norec($gho, qw(build-essential libx11-dev - libgl1-mesa-dev libxext-dev)); + given ($ext) { + $cmd= 'xf' when ('.tar'); + $cmd= 'zxf' when ['.tgz', '.gzip']; + $cmd= 'jxf' when ['.tbz2', '.bz2']; + default { die "unrecognised file extension $ext" } + } + return ($cmd, $name, $ext); +} -# Ship the benchmark to the target machine. By default, we expect to find -# UnixBench 5.1.3, stored in $c{Images}/benchs/unixbench.tgz. -# To use something different, define r{'unixbench_file'}. -# -# We also assume we're dealing with a tarball, and we try to figure out -# whether or not it is compressed, and if yes, how. Check is rather basic, -# relying only on the file extension. -# -my $unixbench_file= (defined($r{'unixbench_file'})) ? $r{'unixbench_file'} : - "$c{Images}/benchs/unixbench.tgz"; -target_putfile_root($gho, 60, "$unixbench_file", "/root"); +# Ship the benchmark to the target machine and prepare the environment +logm("Prep the environment for running $benchname"); -my @exts= qw(.tar .tgz .tbz2. .bz2 .gzip); -my $extract_cmd= 'xf'; -my ($name, $dir, $ext) = fileparse($unixbench_file, @exts); +if ($benchname eq "unixbench") { + # By default, we expect to find UnixBench 5.1.3, stored in + # $c{Images}/benchs/unixbench.tgz. To use something different, + # define r{'unixbench_file'}. + my $unixbench_file= (defined($r{'unixbench_file'})) ? $r{'unixbench_file'} : + "$c{Images}/benchs/unixbench.tgz"; + target_putfile_root($gho, 60, "$unixbench_file", "/root"); -given ($ext) { - $extract_cmd= 'xf' when ('.tar'); - $extract_cmd= 'zxf' when ['.tgz', '.gzip']; - $extract_cmd= 'jxf' when ['.tbz2', '.bz2']; - default { die "unrecognised file extension $ext" } -} + my ($extract_cmd, $name, $ext)= archive_extract_cmd($unixbench_file); + + # Packages needed to build and run + target_install_packages_norec($gho, qw(build-essential libx11-dev + libgl1-mesa-dev libxext-dev)); -# Prepare the target, by installing dependencies, and build the benchmark -target_install_packages_norec($gho, qw(build-essential libx11-dev - libgl1-mesa-dev libxext-dev - x11-apps)); -target_cmd_root($gho, <