Commit 683a3e64 authored by Steven Rostedt's avatar Steven Rostedt Committed by Steven Rostedt

ktest: Fix kernelrevision with POST_BUILD

The PRE_BUILD and POST_BUILD options of ktest are added to allow the
user to add temporary patch to the system and remove it on builds. This
is sometimes use to take a change from another git branch and add it to
a series without the fix so that this series can be tested, when an
unrelated bug exists in the series.

The problem comes when a tagged commit is being used. For example, if
v3.2 is being tested, and we add a patch to it, the kernelrelease for
that commit will be 3.2.0+, but without the patch the version will be
3.2.0. This can cause problems when the kernelrelease is determined for
creating the /lib/modules directory. The kernel booting has the '+' but
the module directory will not, and the modules will be missing for that
boot, and may not allow the kernel to succeed.

The fix is to put the creation of the kernelrelease in the POST_BUILD
logic, before it applies the POST_BUILD operation. The POST_BUILD is
where the patch may be removed, removing the '+' from the kernelrelease.

The calculation of the kernelrelease will also stay in its current
location but will be ignored if it was already calculated previously.
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 36be5051
...@@ -66,6 +66,7 @@ my %default = ( ...@@ -66,6 +66,7 @@ my %default = (
my $ktest_config; my $ktest_config;
my $version; my $version;
my $have_version = 0;
my $machine; my $machine;
my $ssh_user; my $ssh_user;
my $tmpdir; my $tmpdir;
...@@ -1702,10 +1703,12 @@ sub install { ...@@ -1702,10 +1703,12 @@ sub install {
sub get_version { sub get_version {
# get the release name # get the release name
return if ($have_version);
doprint "$make kernelrelease ... "; doprint "$make kernelrelease ... ";
$version = `$make kernelrelease | tail -1`; $version = `$make kernelrelease | tail -1`;
chomp($version); chomp($version);
doprint "$version\n"; doprint "$version\n";
$have_version = 1;
} }
sub start_monitor_and_boot { sub start_monitor_and_boot {
...@@ -1828,6 +1831,9 @@ sub build { ...@@ -1828,6 +1831,9 @@ sub build {
my $save_no_reboot = $no_reboot; my $save_no_reboot = $no_reboot;
$no_reboot = 1; $no_reboot = 1;
# Calculate a new version from here.
$have_version = 0;
if (defined($pre_build)) { if (defined($pre_build)) {
my $ret = run_command $pre_build; my $ret = run_command $pre_build;
if (!$ret && defined($pre_build_die) && if (!$ret && defined($pre_build_die) &&
...@@ -1887,6 +1893,9 @@ sub build { ...@@ -1887,6 +1893,9 @@ sub build {
undef $redirect; undef $redirect;
if (defined($post_build)) { if (defined($post_build)) {
# Because a post build may change the kernel version
# do it now.
get_version;
my $ret = run_command $post_build; my $ret = run_command $post_build;
if (!$ret && defined($post_build_die) && if (!$ret && defined($post_build_die) &&
$post_build_die) { $post_build_die) {
...@@ -3474,6 +3483,8 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) { ...@@ -3474,6 +3483,8 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
$no_reboot = 1; $no_reboot = 1;
$reboot_success = 0; $reboot_success = 0;
$have_version = 0;
$iteration = $i; $iteration = $i;
my $makecmd = set_test_option("MAKE_CMD", $i); my $makecmd = set_test_option("MAKE_CMD", $i);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment