ktest: Add POST/PRE_BUILD options
There are some cases that a patch may be needed to apply to the kernel in patchcheck or bisect tests. Adding a PRE_BUILD option to apply the patch and POST_BUILD to remove it, allows for this to be done easily. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
db05cfefce
commit
0bd6c1a38f
2 changed files with 60 additions and 3 deletions
|
@ -63,6 +63,10 @@ my $output_config;
|
||||||
my $test_type;
|
my $test_type;
|
||||||
my $build_type;
|
my $build_type;
|
||||||
my $build_options;
|
my $build_options;
|
||||||
|
my $pre_build;
|
||||||
|
my $post_build;
|
||||||
|
my $pre_build_die;
|
||||||
|
my $post_build_die;
|
||||||
my $reboot_type;
|
my $reboot_type;
|
||||||
my $reboot_script;
|
my $reboot_script;
|
||||||
my $power_cycle;
|
my $power_cycle;
|
||||||
|
@ -1189,6 +1193,14 @@ sub build {
|
||||||
|
|
||||||
unlink $buildlog;
|
unlink $buildlog;
|
||||||
|
|
||||||
|
if (defined($pre_build)) {
|
||||||
|
my $ret = run_command $pre_build;
|
||||||
|
if (!$ret && defined($pre_build_die) &&
|
||||||
|
$pre_build_die) {
|
||||||
|
dodie "failed to pre_build\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($type =~ /^useconfig:(.*)/) {
|
if ($type =~ /^useconfig:(.*)/) {
|
||||||
run_command "cp $1 $output_config" or
|
run_command "cp $1 $output_config" or
|
||||||
dodie "could not copy $1 to .config";
|
dodie "could not copy $1 to .config";
|
||||||
|
@ -1236,13 +1248,22 @@ sub build {
|
||||||
make_oldconfig;
|
make_oldconfig;
|
||||||
|
|
||||||
$redirect = "$buildlog";
|
$redirect = "$buildlog";
|
||||||
if (!run_command "$make $build_options") {
|
my $build_ret = run_command "$make $build_options";
|
||||||
undef $redirect;
|
undef $redirect;
|
||||||
|
|
||||||
|
if (defined($post_build)) {
|
||||||
|
my $ret = run_command $post_build;
|
||||||
|
if (!$ret && defined($post_build_die) &&
|
||||||
|
$post_build_die) {
|
||||||
|
dodie "failed to post_build\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$build_ret) {
|
||||||
# bisect may need this to pass
|
# bisect may need this to pass
|
||||||
return 0 if ($in_bisect);
|
return 0 if ($in_bisect);
|
||||||
fail "failed build" and return 0;
|
fail "failed build" and return 0;
|
||||||
}
|
}
|
||||||
undef $redirect;
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -2244,6 +2265,10 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
|
||||||
$test_type = set_test_option("TEST_TYPE", $i);
|
$test_type = set_test_option("TEST_TYPE", $i);
|
||||||
$build_type = set_test_option("BUILD_TYPE", $i);
|
$build_type = set_test_option("BUILD_TYPE", $i);
|
||||||
$build_options = set_test_option("BUILD_OPTIONS", $i);
|
$build_options = set_test_option("BUILD_OPTIONS", $i);
|
||||||
|
$pre_build = set_test_option("PRE_BUILD", $i);
|
||||||
|
$post_build = set_test_option("POST_BUILD", $i);
|
||||||
|
$pre_build_die = set_test_option("PRE_BUILD_DIE", $i);
|
||||||
|
$post_build_die = set_test_option("POST_BUILD_DIE", $i);
|
||||||
$power_cycle = set_test_option("POWER_CYCLE", $i);
|
$power_cycle = set_test_option("POWER_CYCLE", $i);
|
||||||
$reboot = set_test_option("REBOOT", $i);
|
$reboot = set_test_option("REBOOT", $i);
|
||||||
$noclean = set_test_option("BUILD_NOCLEAN", $i);
|
$noclean = set_test_option("BUILD_NOCLEAN", $i);
|
||||||
|
|
|
@ -293,6 +293,38 @@
|
||||||
# or on some systems:
|
# or on some systems:
|
||||||
#POST_INSTALL = ssh user@target /sbin/dracut -f /boot/initramfs-test.img $KERNEL_VERSION
|
#POST_INSTALL = ssh user@target /sbin/dracut -f /boot/initramfs-test.img $KERNEL_VERSION
|
||||||
|
|
||||||
|
# If there is a script that you require to run before the build is done
|
||||||
|
# you can specify it with PRE_BUILD.
|
||||||
|
#
|
||||||
|
# One example may be if you must add a temporary patch to the build to
|
||||||
|
# fix a unrelated bug to perform a patchcheck test. This will apply the
|
||||||
|
# patch before each build that is made. Use the POST_BUILD to do a git reset --hard
|
||||||
|
# to remove the patch.
|
||||||
|
#
|
||||||
|
# (default undef)
|
||||||
|
#PRE_BUILD = cd ${BUILD_DIR} && patch -p1 < /tmp/temp.patch
|
||||||
|
|
||||||
|
# To specify if the test should fail if the PRE_BUILD fails,
|
||||||
|
# PRE_BUILD_DIE needs to be set to 1. Otherwise the PRE_BUILD
|
||||||
|
# result is ignored.
|
||||||
|
# (default 0)
|
||||||
|
# PRE_BUILD_DIE = 1
|
||||||
|
|
||||||
|
# If there is a script that should run after the build is done
|
||||||
|
# you can specify it with POST_BUILD.
|
||||||
|
#
|
||||||
|
# As the example in PRE_BUILD, POST_BUILD can be used to reset modifications
|
||||||
|
# made by the PRE_BUILD.
|
||||||
|
#
|
||||||
|
# (default undef)
|
||||||
|
#POST_BUILD = cd ${BUILD_DIR} && git reset --hard
|
||||||
|
|
||||||
|
# To specify if the test should fail if the POST_BUILD fails,
|
||||||
|
# POST_BUILD_DIE needs to be set to 1. Otherwise the POST_BUILD
|
||||||
|
# result is ignored.
|
||||||
|
# (default 0)
|
||||||
|
#POST_BUILD_DIE = 1
|
||||||
|
|
||||||
# Way to reboot the box to the test kernel.
|
# Way to reboot the box to the test kernel.
|
||||||
# Only valid options so far are "grub" and "script"
|
# Only valid options so far are "grub" and "script"
|
||||||
# (default grub)
|
# (default grub)
|
||||||
|
|
Loading…
Reference in a new issue