Francois Gouget : testbot/build: Build Wine using -Werror if possible.

Alexandre Julliard julliard at winehq.org
Fri Mar 27 16:12:04 CDT 2020


Module: tools
Branch: master
Commit: 4936ba2e33c0fbb131f45c97399c68bf57b2476f
URL:    https://source.winehq.org/git/tools.git/?a=commit;h=4936ba2e33c0fbb131f45c97399c68bf57b2476f

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Wed Mar 25 23:43:55 2020 +0100

testbot/build: Build Wine using -Werror if possible.

Warnings are very dependent on the compiler version. So make sure the
TestBot will not break in case the pristine source triggers a compiler
warning: first try with -Werror and build without it as a fallback.
Compiling the patches then uses the same settings.
Let the BuildWine() callers specify whether to try compiling with
-Werror to accommodate both the *Reconfig.pl and regular build cases.

Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 testbot/bin/build/Build.pl        |  4 ++--
 testbot/bin/build/Reconfig.pl     | 14 ++++++++------
 testbot/bin/build/WineReconfig.pl | 16 +++++++++-------
 testbot/bin/build/WineTest.pl     |  6 +++---
 testbot/lib/Build/Utils.pm        | 26 ++++++++++++++++++++------
 5 files changed, 42 insertions(+), 24 deletions(-)

diff --git a/testbot/bin/build/Build.pl b/testbot/bin/build/Build.pl
index b2c13c8..23ab685 100755
--- a/testbot/bin/build/Build.pl
+++ b/testbot/bin/build/Build.pl
@@ -167,8 +167,8 @@ if ($DataDir =~ /'/)
 my $Impacts = ApplyPatch("wine", $PatchFile);
 
 if (!$Impacts or
-    !BuildWine($TaskMissions, "no-rm", "exe32", undef, "buildtests") or
-    !BuildWine($TaskMissions, "no-rm", "exe64", undef, "buildtests"))
+    !BuildWine($TaskMissions, 0, "exe32", undef, "buildtests") or
+    !BuildWine($TaskMissions, 0, "exe64", undef, "buildtests"))
 {
   exit(1);
 }
diff --git a/testbot/bin/build/Reconfig.pl b/testbot/bin/build/Reconfig.pl
index dd403ef..b72fa73 100755
--- a/testbot/bin/build/Reconfig.pl
+++ b/testbot/bin/build/Reconfig.pl
@@ -53,12 +53,13 @@ use WineTestBot::Missions;
 
 sub UpdateWineBuilds($$)
 {
-  my ($TaskMissions, $NoRm) = @_;
+  my ($TaskMissions, $Flags) = @_;
 
+  $Flags |= $Build::Utils::TRY_WERROR;
   my $Configure = "--without-x --without-freetype --disable-winetest";
-  return BuildWine($TaskMissions, $NoRm, "exe32",
+  return BuildWine($TaskMissions, $Flags, "exe32",
                   $Configure, "buildtests") &&
-         BuildWine($TaskMissions, $NoRm, "exe64",
+         BuildWine($TaskMissions, $Flags, "exe64",
                    "$Configure --enable-win64", "buildtests");
 }
 
@@ -67,7 +68,8 @@ sub UpdateWineBuilds($$)
 # Setup and command line processing
 #
 
-my ($Usage, $OptUpdate, $OptBuild, $OptNoRm, $MissionStatement);
+my ($Usage, $OptUpdate, $OptBuild, $MissionStatement);
+my $OptBuildFlags = $Build::Utils::FROM_SCRATCH;
 while (@ARGV)
 {
   my $Arg = shift @ARGV;
@@ -81,7 +83,7 @@ while (@ARGV)
   }
   elsif ($Arg eq "--no-rm")
   {
-    $OptNoRm = 1;
+    $OptBuildFlags &= ~$Build::Utils::FROM_SCRATCH;
   }
   elsif ($Arg =~ /^(?:-\?|-h|--help)$/)
   {
@@ -180,7 +182,7 @@ exit(1) if ($OptBuild and !BuildNativeTestAgentd());
 exit(1) if ($OptBuild and !BuildWindowsTestAgentd());
 exit(1) if ($OptBuild and !BuildTestLauncher());
 exit(1) if ($OptUpdate and !GitPull("wine"));
-exit(1) if ($OptBuild and !UpdateWineBuilds($TaskMissions, $OptNoRm));
+exit(1) if ($OptBuild and !UpdateWineBuilds($TaskMissions, $OptBuildFlags));
 
 LogMsg "ok\n";
 exit;
diff --git a/testbot/bin/build/WineReconfig.pl b/testbot/bin/build/WineReconfig.pl
index 383c6bf..0c64fc3 100755
--- a/testbot/bin/build/WineReconfig.pl
+++ b/testbot/bin/build/WineReconfig.pl
@@ -52,11 +52,12 @@ use WineTestBot::Utils qw(ShQuote);
 
 sub UpdateWineBuilds($$)
 {
-  my ($TaskMissions, $NoRm) = @_;
+  my ($TaskMissions, $Flags) = @_;
 
-  return BuildWine($TaskMissions, $NoRm, "win32", "") &&
-         BuildWine($TaskMissions, $NoRm, "wow64", "--enable-win64") &&
-         BuildWine($TaskMissions, $NoRm, "wow32", "--with-wine64=".
+  $Flags |= $Build::Utils::TRY_WERROR;
+  return BuildWine($TaskMissions, $Flags, "win32", "") &&
+         BuildWine($TaskMissions, $Flags, "wow64", "--enable-win64") &&
+         BuildWine($TaskMissions, $Flags, "wow32", "--with-wine64=".
                    ShQuote("$DataDir/wine-wow64"));
 }
 
@@ -107,7 +108,8 @@ sub UpdateWinePrefixes($)
 # Setup and command line processing
 #
 
-my ($Usage, $OptUpdate, $OptBuild, $OptNoRm, $OptAddOns, $OptWinePrefix, $MissionStatement);
+my ($Usage, $OptUpdate, $OptBuild, $OptAddOns, $OptWinePrefix, $MissionStatement);
+my $OptBuildFlags = $Build::Utils::FROM_SCRATCH;
 while (@ARGV)
 {
   my $Arg = shift @ARGV;
@@ -121,7 +123,7 @@ while (@ARGV)
   }
   elsif ($Arg eq "--no-rm")
   {
-    $OptNoRm = 1;
+    $OptBuildFlags &= ~$Build::Utils::FROM_SCRATCH;
   }
   elsif ($Arg eq "--addons")
   {
@@ -234,7 +236,7 @@ exit(1) if ($OptBuild and !BuildNativeTestAgentd());
 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, $OptNoRm));
+exit(1) if ($OptBuild and !UpdateWineBuilds($TaskMissions, $OptBuildFlags));
 exit(1) if ($OptWinePrefix and !UpdateWinePrefixes($TaskMissions));
 
 LogMsg "ok\n";
diff --git a/testbot/bin/build/WineTest.pl b/testbot/bin/build/WineTest.pl
index 1a75076..84ba1cb 100755
--- a/testbot/bin/build/WineTest.pl
+++ b/testbot/bin/build/WineTest.pl
@@ -423,9 +423,9 @@ if ($Action eq "testpatch")
 {
   $Impacts = ApplyPatch("wine", "$DataDir/staging/$FileName");
   exit(1) if (!$Impacts or
-              !BuildWine($TaskMissions, "no-rm", "win32", undef) or
-              !BuildWine($TaskMissions, "no-rm", "wow64", undef) or
-              !BuildWine($TaskMissions, "no-rm", "wow32", undef));
+              !BuildWine($TaskMissions, 0, "win32", undef) or
+              !BuildWine($TaskMissions, 0, "wow64", undef) or
+              !BuildWine($TaskMissions, 0, "wow32", undef));
 }
 foreach my $Mission (@{$TaskMissions->{Missions}})
 {
diff --git a/testbot/lib/Build/Utils.pm b/testbot/lib/Build/Utils.pm
index 3050be1..df236fa 100644
--- a/testbot/lib/Build/Utils.pm
+++ b/testbot/lib/Build/Utils.pm
@@ -317,22 +317,36 @@ sub BuildTestLauncher()
   return 1;
 }
 
+our $FROM_SCRATCH = 1;
+our $TRY_WERROR = 2;
+
 sub BuildWine($$$$;$)
 {
-  my ($TaskMissions, $NoRm, $Build, $Configure, $Targets) = @_;
+  my ($TaskMissions, $Flags, $Build, $Configure, $Targets) = @_;
   $Targets ||= "";
 
   return 1 if (!$TaskMissions->{Builds}->{$Build});
   # Rebuild from scratch to make sure cruft will not accumulate
-  rmtree "$DataDir/wine-$Build" if (!$NoRm);
+  rmtree "$DataDir/wine-$Build" if ($Flags & $FROM_SCRATCH);
   mkdir "$DataDir/wine-$Build" if (!-d "$DataDir/wine-$Build");
 
   InfoMsg "\nRebuilding the $Build Wine\n";
   my $CPUCount = GetCPUCount();
-  system("cd '$DataDir/wine-$Build' && set -x && ".
-         (defined $Configure ? "time ../wine/configure $Configure && " : "").
-         "time make -j$CPUCount $Targets");
-  if ($? != 0)
+  my $Rc = 1;
+  if (defined $Configure and ($Flags & $TRY_WERROR))
+  {
+    $Rc = system("cd '$DataDir/wine-$Build' && set -x && ".
+                 "time ../wine/configure $Configure --enable-werror && ".
+                 "time make -j$CPUCount $Targets");
+    LogMsg "With -Werror the $Build Wine build fails\n" if ($Rc);
+  }
+  if ($Rc)
+  {
+    $Rc = system("cd '$DataDir/wine-$Build' && set -x && ".
+                 (defined $Configure ? "time ../wine/configure $Configure && " : "").
+                 "time make -j$CPUCount $Targets");
+  }
+  if ($Rc)
   {
     LogMsg "The $Build Wine build failed\n";
     return !1;




More information about the wine-cvs mailing list