Module: tools
Branch: master
Commit: bd10370745d91302ef7c4af283e2f09df62a446b
URL: https://source.winehq.org/git/tools.git/?a=commit;h=bd10370745d91302ef7c4af…
Author: Francois Gouget <fgouget(a)codeweavers.com>
Date: Thu Jun 21 15:00:30 2018 +0200
testbot/WineRun*: Improve the VM and Step validation.
Check that the VM is of the expected type. Also the VM should always be
powered on (for powered off snapshots LibvirtTool.pl is responsible for
powering on the VM), even when debugging.
Move the Step validation next to the VM one.
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
testbot/bin/WineRunBuild.pl | 15 ++++++++++++---
testbot/bin/WineRunReconfig.pl | 15 ++++++++++++---
testbot/bin/WineRunTask.pl | 24 ++++++++++++++----------
3 files changed, 38 insertions(+), 16 deletions(-)
diff --git a/testbot/bin/WineRunBuild.pl b/testbot/bin/WineRunBuild.pl
index 60af32c..ff04ded 100755
--- a/testbot/bin/WineRunBuild.pl
+++ b/testbot/bin/WineRunBuild.pl
@@ -309,18 +309,27 @@ sub FatalTAError($$)
#
-# Check the VM
+# Check the VM and Step
#
-if (!$Debug and $VM->Status ne "running")
+if ($VM->Type ne "build")
+{
+ FatalError("This is not a build VM! (" . $VM->Type . ")\n");
+}
+elsif (!$Debug and $VM->Status ne "running")
{
FatalError("The VM is not ready for use (" . $VM->Status . ")\n");
}
-elsif ($Debug and !$VM->GetDomain()->IsPoweredOn())
+elsif (!$VM->GetDomain()->IsPoweredOn())
{
FatalError("The VM is not powered on\n");
}
+if ($Step->FileType ne "patchdlls")
+{
+ FatalError("Unexpected file type '". $Step->FileType ."' found\n");
+}
+
#
# Figure out what to build
diff --git a/testbot/bin/WineRunReconfig.pl b/testbot/bin/WineRunReconfig.pl
index 2e338c9..23b038a 100755
--- a/testbot/bin/WineRunReconfig.pl
+++ b/testbot/bin/WineRunReconfig.pl
@@ -309,18 +309,27 @@ sub FatalTAError($$)
#
-# Check the VM
+# Check the VM and Step
#
-if (!$Debug and $VM->Status ne "running")
+if ($VM->Type ne "build")
+{
+ FatalError("This is not a build VM! (" . $VM->Type . ")\n");
+}
+elsif (!$Debug and $VM->Status ne "running")
{
FatalError("The VM is not ready for use (" . $VM->Status . ")\n");
}
-elsif ($Debug and !$VM->GetDomain()->IsPoweredOn())
+elsif (!$VM->GetDomain()->IsPoweredOn())
{
FatalError("The VM is not powered on\n");
}
+if ($Step->FileType ne "none")
+{
+ FatalError("Unexpected file type '". $Step->FileType ."' found\n");
+}
+
#
# Run the build
diff --git a/testbot/bin/WineRunTask.pl b/testbot/bin/WineRunTask.pl
index 37c63b4..ff8aab9 100755
--- a/testbot/bin/WineRunTask.pl
+++ b/testbot/bin/WineRunTask.pl
@@ -364,18 +364,27 @@ sub FatalTAError($$;$)
#
-# Check the VM
+# Check the VM and Step
#
-if (!$Debug and $VM->Status ne "running")
+if ($VM->Type ne "win32" and $VM->Type ne "win64")
+{
+ FatalError("This is not a Windows VM! (" . $VM->Type . ")\n");
+}
+elsif (!$Debug and $VM->Status ne "running")
{
FatalError("The VM is not ready for use (" . $VM->Status . ")\n");
}
-elsif ($Debug and !$VM->GetDomain()->IsPoweredOn())
+elsif (!$VM->GetDomain()->IsPoweredOn())
{
FatalError("The VM is not powered on\n");
}
+if ($Step->FileType ne "exe32" and $Step->FileType ne "exe64")
+{
+ FatalError("Unexpected file type '". $Step->FileType ."' found\n");
+}
+
#
# Setup the VM
@@ -395,11 +404,6 @@ if (!$TA->SetTime())
}
}
-my $FileType = $Step->FileType;
-if ($FileType ne "exe32" && $FileType ne "exe64")
-{
- FatalError("Unexpected file type $FileType found\n");
-}
my $FileName = $Step->FileName;
Debug(Elapsed($Start), " Sending '". $Step->GetFullFileName() ."'\n");
if (!$TA->SendFile($Step->GetFullFileName(), $FileName, 0))
@@ -418,7 +422,7 @@ if ($Step->ReportSuccessfulTests)
my $IsWineTest = 1;
if ($Step->Type eq "single")
{
- my $TestLauncher = "TestLauncher" . ($FileType eq "exe64" ? "64" : "32") . ".exe";
+ my $TestLauncher = "TestLauncher" . ($Step->FileType eq "exe64" ? "64" : "32") . ".exe";
Debug(Elapsed($Start), " Sending 'latest/$TestLauncher'\n");
if (!$TA->SendFile("$DataDir/latest/$TestLauncher", $TestLauncher, 0))
{
@@ -450,7 +454,7 @@ elsif ($Step->Type eq "suite")
$Tag =~ s/[^a-zA-Z0-9]/-/g;
if ($VM->Type eq "win64")
{
- $Tag .= "-" . ($FileType eq "exe64" ? "64" : "32");
+ $Tag .= "-" . ($Step->FileType eq "exe64" ? "64" : "32");
}
if (defined($WebHostName))
{
Module: tools
Branch: master
Commit: 53d36c0be43fdcff1422bf95c1113217c13a03c7
URL: https://source.winehq.org/git/tools.git/?a=commit;h=53d36c0be43fdcff1422bf9…
Author: Francois Gouget <fgouget(a)codeweavers.com>
Date: Thu Jun 21 15:00:07 2018 +0200
testbot: Build the per-module test unit list from the list of Wine files.
This also caches winefiles.txt so it is only reloaded when it changes.
Also stop generating and retrieving testlist.txt since it is not
needed anymore. If desired testlist.txt can be deleted for cleanup.
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
testbot/bin/WineRunReconfig.pl | 10 ------
testbot/lib/WineTestBot/PatchUtils.pm | 62 +++++++++++++++++------------------
2 files changed, 31 insertions(+), 41 deletions(-)
diff --git a/testbot/bin/WineRunReconfig.pl b/testbot/bin/WineRunReconfig.pl
index 2950799..2e338c9 100755
--- a/testbot/bin/WineRunReconfig.pl
+++ b/testbot/bin/WineRunReconfig.pl
@@ -414,16 +414,6 @@ if ($NewStatus eq "completed")
}
}
- Debug(Elapsed($Start), " Retrieving the updated test list '$TaskDir/testlist.txt'\n");
- if ($TA->GetFile("testlist.txt", "$TaskDir/testlist.txt"))
- {
- copy "$TaskDir/testlist.txt", "$DataDir/latest/testlist.txt";
- }
- elsif (!defined $TAError)
- {
- $TAError = "An error occurred while retrieving the test list: ". $TA->GetLastError();
- }
-
Debug(Elapsed($Start), " Retrieving the list of Wine files '$TaskDir/winefiles.txt'\n");
if ($TA->GetFile("latest/winefiles.txt", "$TaskDir/winefiles.txt"))
{
diff --git a/testbot/lib/WineTestBot/PatchUtils.pm b/testbot/lib/WineTestBot/PatchUtils.pm
index b6ea54b..725d53f 100644
--- a/testbot/lib/WineTestBot/PatchUtils.pm
+++ b/testbot/lib/WineTestBot/PatchUtils.pm
@@ -58,8 +58,8 @@ my $IgnoredPathsRe = join('|',
=item C<UpdateWineData()>
-Updates the summary information about the Wine source such as the list of
-tests (testlist.txt) and the full list of Wine files.
+Updates information about the Wine source, such as the list of Wine files,
+for use by the TestBot server.
=back
=cut
@@ -72,51 +72,51 @@ sub UpdateWineData($)
my $ErrMessage = `cd '$WineDir' && git ls-tree -r --name-only HEAD 2>&1 >'$DataDir/latest/winefiles.txt'`;
return $ErrMessage if ($? != 0);
-
- if (open(my $fh, ">", "$DataDir/testlist.txt"))
- {
- foreach my $TestFile (glob("$WineDir/*/*/tests/*.c"),
- glob("$WineDir/*/*/tests/*.spec"))
- {
- next if ($TestFile =~ m=/testlist\.c$=);
- $TestFile =~ s=^$WineDir/==;
- print $fh "$TestFile\n";
- }
- close($fh);
- return undef;
- }
-
- return "Could not open 'testlist.txt' for writing: $!";
}
+my $_TimeStamp;
+my $_TestList;
+
=pod
=over 12
-=item C<GetTestList()>
+=item C<_LoadWineFiles()>
-Returns a hashtable containing the list of the source files for a given module.
-This structure is built from the latest/testlist.txt file.
+Reads latest/winefiles.txt to build a per-module hashtable of the test unit
+files.
=back
=cut
-sub GetTestList()
+sub _LoadWineFiles()
{
- my $TestList = {};
- if (open(my $File, "<", "$DataDir/latest/testlist.txt"))
+ my $FileName = "$DataDir/latest/winefiles.txt";
+ my $MTime = (stat($FileName))[9] || 0;
+
+ if ($_TestList and $_TimeStamp == $MTime)
{
- while (my $TestFileName = <$File>)
+ # The file has not changed since we loaded it
+ return;
+ }
+
+ $_TimeStamp = $MTime;
+ $_TestList = {};
+ if (open(my $fh, "<", $FileName))
+ {
+ while (my $Line = <$fh>)
{
- chomp $TestFileName;
- if ($TestFileName =~ m~^\w+/([^/]+)/tests/([^/]+)$~)
+ chomp $Line;
+
+ if ($Line =~ m~^\w+/([^/]+)/tests/([^/]+)$~)
{
my ($Module, $File) = ($1, $2);
- $TestList->{$Module}->{$File} = 1;
+ next if ($File eq "testlist.c");
+ next if ($File !~ /\.(?:c|spec)$/);
+ $_TestList->{$Module}->{$File} = 1;
}
}
- close($File);
+ close($fh);
}
- return $TestList;
}
sub _HandleFile($$$)
@@ -154,8 +154,7 @@ sub _HandleFile($$$)
if (!$Tests->{$Module}->{Files})
{
- my $TestList = ( $Impacts->{TestList} ||= GetTestList() );
- foreach my $File (keys %{$TestList->{$Module}})
+ foreach my $File (keys %{$_TestList->{$Module}})
{
$Tests->{$Module}->{Files}->{$File} = 0; # not modified
}
@@ -192,6 +191,7 @@ sub GetPatchImpact($;$$)
NoUnits => $NoUnits,
Tests => {},
};
+ _LoadWineFiles();
if ($PastImpacts)
{
Module: website
Branch: master
Commit: 2f12f80a09fd5253521c45648c6c4873d7f4638c
URL: https://source.winehq.org/git/website.git/?a=commit;h=2f12f80a09fd5253521c4…
Author: Alexandre Julliard <julliard(a)winehq.org>
Date: Sat Jun 23 01:32:57 2018 +0200
Wine release 3.11
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
news/en/2018062301.xml | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/news/en/2018062301.xml b/news/en/2018062301.xml
new file mode 100644
index 0000000..0eaff37
--- /dev/null
+++ b/news/en/2018062301.xml
@@ -0,0 +1,16 @@
+<news>
+<date>June 23, 2018</date>
+<title>Wine 3.11 Released</title>
+<body>
+<p> The Wine development release 3.11 is now available.</p>
+<p> <a href="{$root}/announce/3.11">What's new</a> in this release:
+<ul>
+ <li>More debugger support for Wow64 processes.</li>
+ <li>Support for sha256/sha384 hashes in ECDSA signatures.</li>
+ <li>Better reporting of hyper-threaded CPUs.</li>
+ <li>Improvements to the standard Task Dialog.</li>
+ <li>Various bug fixes.</li>
+</ul>
+<p>The source is <a href="//dl.winehq.org/wine/source/3.x/wine-3.11.tar.xz">available now</a>.
+Binary packages are in the process of being built, and will appear soon at their respective <a href="{$root}/download">download locations</a>.
+</p></body></news>