Module: tools Branch: master Commit: e2888e5b253fee41bb4d77bdac3c61335050870b URL: https://source.winehq.org/git/tools.git/?a=commit;h=e2888e5b253fee41bb4d77bd...
Author: Francois Gouget fgouget@codeweavers.com Date: Wed Jan 6 23:29:46 2021 +0100
testbot/WineReconfig: Do not prepare wineprefixes in advance.
This avoids test failures when the patch changes the initial Wine registry. Call CleanupWinePrefixes() after successful builds to ensure a clean transition and remove any stray wineprefix.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48671 Signed-off-by: Francois Gouget fgouget@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
testbot/bin/build/WineReconfig.pl | 47 ++++++++------------------------------- 1 file changed, 9 insertions(+), 38 deletions(-)
diff --git a/testbot/bin/build/WineReconfig.pl b/testbot/bin/build/WineReconfig.pl index f9f6792..bd9ff57 100755 --- a/testbot/bin/build/WineReconfig.pl +++ b/testbot/bin/build/WineReconfig.pl @@ -3,7 +3,7 @@ # # Updates the Wine source from Git and rebuilds it. # -# Copyright 2018 Francois Gouget +# Copyright 2018-2021 Francois Gouget # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -65,12 +65,10 @@ sub UpdateWineBuilds($$) # WinePrefix helpers #
-sub UpdateWinePrefixes($) +sub CleanupWinePrefixes() { - my ($TaskMissions) = @_; - - # Make sure no obsolete wineprefix is left behind in case WineReconfig - # is called with a different set of targets + # The TestBot used to prepare WinePrefixes in advance. + # Make sure no such obsolete wineprefix is left behind. foreach my $Dir (glob("'$DataDir/wineprefix-*'")) { if (basename($Dir) =~ /^(wineprefix-[a-zA-Z0-9@_.-]+)$/) # untaint @@ -78,27 +76,6 @@ sub UpdateWinePrefixes($) rmtree("$DataDir/$1"); } } - - # Set up brand new WinePrefixes ready for use for testing. - # This way we do it once instead of doing it for every test, thus saving - # time. Note that this requires using a different wineprefix for each - # mission. - foreach my $Mission (@{$TaskMissions->{Missions}}) - { - next if ($Mission->{test} eq "build"); - - my $BaseName = SetupWineEnvironment($Mission); - InfoMsg "\nRecreating the $BaseName wineprefix\n"; - - # Wait for the wineprefix creation to complete so it is really done - # before the snapshot gets updated. - my $ErrMessage = CreateWinePrefix($Mission, "wait"); - if (defined $ErrMessage) - { - LogMsg "$ErrMessage\n"; - return 0; - } - } return 1; }
@@ -107,7 +84,7 @@ sub UpdateWinePrefixes($) # Setup and command line processing #
-my ($Usage, $OptUpdate, $OptBuild, $OptAddOns, $OptWinePrefix, $MissionStatement); +my ($Usage, $OptUpdate, $OptBuild, $OptAddOns, $MissionStatement); my $OptBuildFlags = $Build::Utils::FROM_SCRATCH; while (@ARGV) { @@ -128,10 +105,6 @@ while (@ARGV) { $OptAddOns = 1; } - elsif ($Arg eq "--wineprefix") - { - $OptWinePrefix = 1; - } elsif ($Arg =~ /^(?:-?|-h|--help)$/) { $Usage = 0; @@ -159,9 +132,9 @@ while (@ARGV) my $TaskMissions; if (!defined $Usage) { - if (!$OptUpdate and !$OptBuild and !$OptAddOns and !$OptWinePrefix) + if (!$OptUpdate and !$OptBuild and !$OptAddOns) { - $OptUpdate = $OptBuild = $OptAddOns = $OptWinePrefix = 1; + $OptUpdate = $OptBuild = $OptAddOns = 1; } $MissionStatement ||= "win32:wow32:wow64"; my ($ErrMessage, $Missions) = ParseMissionStatement($MissionStatement); @@ -193,8 +166,7 @@ if (defined $Usage) Error "try '$Name0 --help' for more information\n"; exit $Usage; } - print "Usage: $Name0 [--update] [--build [--no-rm]] [--addons] [--wineprefix]\n"; - print " [--help] [MISSIONS]\n"; + print "Usage: $Name0 [--update] [--build [--no-rm]] [--addons] [--help] [MISSIONS]\n"; print "\n"; print "Performs all the tasks needed for the host to be ready to test new patches: update the Wine source and addons, and rebuild the Wine binaries.\n"; print "\n"; @@ -202,7 +174,6 @@ if (defined $Usage) print " --update Update Wine's source code.\n"; print " --build Update the Wine builds.\n"; print " --addons Update the Gecko and Mono Wine addons.\n"; - print " --wineprefix Update the wineprefixes.\n"; print "If none of the above actions is specified they are all performed.\n"; print " MISSIONS Is a colon-separated list of missions. By default the\n"; print " following missions are run.\n"; @@ -236,7 +207,7 @@ exit(1) if ($OptBuild and !BuildTestLauncher()); exit(1) if ($OptUpdate and !GitPull("wine")); exit(1) if ($OptAddOns and !UpdateAddOns()); exit(1) if ($OptBuild and !UpdateWineBuilds($TaskMissions, $OptBuildFlags)); -exit(1) if ($OptWinePrefix and !UpdateWinePrefixes($TaskMissions)); +exit(1) if ($OptBuild and !CleanupWinePrefixes());
LogMsg "ok\n"; exit;