[PATCH] testbot: Add support for Wine's PARENTSRC.
Francois Gouget
fgouget at codeweavers.com
Tue Nov 13 09:43:47 CST 2018
This lets the TestBot take into account that modifying the source in a
'PARENTSRC' module affects the code of other modules. This impacts the
time it takes to rebuild Wine and the tests to be rerun with the
test=module option.
Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
testbot/lib/WineTestBot/PatchUtils.pm | 29 ++++++++++++++++++++++-----
1 file changed, 24 insertions(+), 5 deletions(-)
diff --git a/testbot/lib/WineTestBot/PatchUtils.pm b/testbot/lib/WineTestBot/PatchUtils.pm
index 6009264a7d..f72cef5202 100644
--- a/testbot/lib/WineTestBot/PatchUtils.pm
+++ b/testbot/lib/WineTestBot/PatchUtils.pm
@@ -60,13 +60,14 @@ sub UpdateWineData($)
mkdir "$DataDir/latest" if (!-d "$DataDir/latest");
- my $ErrMessage = `cd '$WineDir' && git ls-tree -r --name-only HEAD 2>&1 >'$DataDir/latest/winefiles.txt'`;
- return $ErrMessage if ($? != 0);
+ my $ErrMessage = `cd '$WineDir' && git ls-tree -r --name-only HEAD 2>&1 >'$DataDir/latest/winefiles.txt' && egrep '^PARENTSRC *=' dlls/*/Makefile.in programs/*/Makefile.in >'$DataDir/latest/wine-parentsrc.txt'`;
+ return $? != 0 ? $ErrMessage : undef;
}
my $_TimeStamp;
my $_WineFiles;
my $_TestList;
+my $_WineParentDirs;
=pod
=over 12
@@ -111,6 +112,21 @@ sub _LoadWineFiles()
}
close($fh);
}
+
+ $_WineParentDirs = {};
+ $FileName = "$DataDir/latest/wine-parentsrc.txt";
+ if (open(my $fh, "<", $FileName))
+ {
+ while (my $Line = <$fh>)
+ {
+ if ($Line =~ m~^\w+/([^/]+)/Makefile\.in:PARENTSRC *= *\.\./([^/\s]+)~)
+ {
+ my ($Child, $Parent) = ($1, $2);
+ $_WineParentDirs->{$Parent}->{$Child} = 1;
+ }
+ }
+ close($fh);
+ }
}
@@ -212,11 +228,14 @@ sub _HandleFile($$$)
}
elsif ($FilePath =~ m~^(dlls|programs)/([^/]+)/([^/\s]+)$~)
{
- my ($Root, $Dir, $File) = ($1, $2, $3);
+ my ($Root, $PatchedDir, $File) = ($1, $2, $3);
- my $Module = _CreateTestInfo($Impacts, $Root, $Dir);
+ foreach my $Dir ($PatchedDir, keys %{$_WineParentDirs->{$PatchedDir} || {}})
+ {
+ my $Module = _CreateTestInfo($Impacts, $Root, $Dir);
+ $Impacts->{Tests}->{$Module}->{PatchedModule} = 1;
+ }
$Impacts->{PatchedModules} = 1;
- $Impacts->{Tests}->{$Module}->{PatchedModule} = 1;
if ($File eq "Makefile.in" and $Change ne "modify")
{
--
2.19.1
More information about the wine-devel
mailing list