False failure during repeated windows build.

Started by Kyotaro Horiguchialmost 6 years ago5 messages
#1Kyotaro Horiguchi
horikyota.ntt@gmail.com
1 attachment(s)

Hello.

I found it quite annoying that it stops with complaining as "unused
defines" during repeated execution of build.pl. The subroutine
GenerateConfigHeader prepares %defines_copy before checking the
newness of $config_header and even if it decides not to generate new
one, the following code makes sure if the %defines_copy is empty, then
of course it fails with the message.

The attached fixes that.

regards.

--
Kyotaro Horiguchi
NTT Open Source Software Center

Attachments:

0001-Fix-behavior-for-repeated-build-on-Windows.patchtext/x-patch; charset=us-asciiDownload
From b276face1b8f7b2e7a3ce9b3060205d6f04a1735 Mon Sep 17 00:00:00 2001
From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Date: Tue, 18 Feb 2020 15:29:55 +0900
Subject: [PATCH] Fix behavior for repeated build on Windows.

Even after the function GenerateConfigHeader in Solution.pm decided
not to generate a new file, it wrongly checks for the remaining macro
defintions and stops with failure. Fix it by not doing the check if it
skipped file generation.
---
 src/tools/msvc/Solution.pm | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 8412ef298e..cf16144b02 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -839,13 +839,14 @@ EOF
 sub GenerateConfigHeader
 {
 	my ($self, $config_header, $defines, $required) = @_;
-	my %defines_copy = %$defines;
 
 	my $config_header_in = $config_header . '.in';
 
 	if (IsNewer($config_header, $config_header_in) ||
 		IsNewer($config_header, __FILE__))
 	{
+		my %defines_copy = %$defines;
+
 		open(my $i, '<', $config_header_in)
 		  || confess "Could not open $config_header_in\n";
 		open(my $o, '>', $config_header)
@@ -884,10 +885,11 @@ sub GenerateConfigHeader
 		}
 		close($o);
 		close($i);
-	}
-	if ($required && scalar(keys %defines_copy) > 0)
-	{
-		croak "unused defines: " . join(' ', keys %defines_copy);
+
+		if ($required && scalar(keys %defines_copy) > 0)
+		{
+			croak "unused defines: " . join(' ', keys %defines_copy);
+		}
 	}
 }
 
-- 
2.18.2

#2Juan José Santamaría Flecha
juanjo.santamaria@gmail.com
In reply to: Kyotaro Horiguchi (#1)
Re: False failure during repeated windows build.

On Tue, Feb 18, 2020 at 8:06 AM Kyotaro Horiguchi <horikyota.ntt@gmail.com>
wrote:

The attached fixes that.

After commit 9573384 this patch no longer applies, but with a trivial
rebase it fixes the issue.

Regards,

Juan José Santamaría Flecha

#3Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Juan José Santamaría Flecha (#2)
1 attachment(s)
Re: False failure during repeated windows build.

At Fri, 21 Feb 2020 14:02:40 +0100, Juan José Santamaría Flecha <juanjo.santamaria@gmail.com> wrote in

After commit 9573384 this patch no longer applies, but with a trivial
rebase it fixes the issue.

Thanks! This is the rebased version. I'll register this to the next CF.

regards.

--
Kyotaro Horiguchi
NTT Open Source Software Center

Attachments:

v2-0001-Fix-behavior-for-repeated-build-on-Windows.patchtext/x-patch; charset=us-asciiDownload
From 70a725f2f8fab8b490106f2625ac821ab7680675 Mon Sep 17 00:00:00 2001
From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Date: Tue, 18 Feb 2020 15:29:55 +0900
Subject: [PATCH v2] Fix behavior for repeated build on Windows.

Even after the function GenerateConfigHeader in Solution.pm decided
not to generate a new file, it wrongly checks for the remaining macro
defintions and stops with failure. Fix it by not doing the check if it
skipped file generation.
---
 src/tools/msvc/Solution.pm | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 75f916399c..6b4a6eec2a 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -826,13 +826,14 @@ EOF
 sub GenerateConfigHeader
 {
 	my ($self, $config_header, $defines, $required) = @_;
-	my %defines_copy = %$defines;
 
 	my $config_header_in = $config_header . '.in';
 
 	if (IsNewer($config_header, $config_header_in) ||
 		IsNewer($config_header, __FILE__))
 	{
+		my %defines_copy = %$defines;
+
 		open(my $i, '<', $config_header_in)
 		  || confess "Could not open $config_header_in\n";
 		open(my $o, '>', $config_header)
@@ -871,10 +872,11 @@ sub GenerateConfigHeader
 		}
 		close($o);
 		close($i);
-	}
-	if ($required && scalar(keys %defines_copy) > 0)
-	{
-		croak "unused defines: " . join(' ', keys %defines_copy);
+
+		if ($required && scalar(keys %defines_copy) > 0)
+		{
+			croak "unused defines: " . join(' ', keys %defines_copy);
+		}
 	}
 }
 
-- 
2.18.2

#4Michael Paquier
michael@paquier.xyz
In reply to: Kyotaro Horiguchi (#3)
Re: False failure during repeated windows build.

On Tue, Feb 25, 2020 at 10:14:10AM +0900, Kyotaro Horiguchi wrote:

At Fri, 21 Feb 2020 14:02:40 +0100, Juan José Santamaría Flecha <juanjo.santamaria@gmail.com> wrote in

After commit 9573384 this patch no longer applies, but with a trivial
rebase it fixes the issue.

Thanks! This is the rebased version. I'll register this to the next CF.

That's annoying, and you are right. So, committed.
--
Michael

#5Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Michael Paquier (#4)
Re: False failure during repeated windows build.

At Tue, 25 Feb 2020 14:02:04 +0900, Michael Paquier <michael@paquier.xyz> wrote in

On Tue, Feb 25, 2020 at 10:14:10AM +0900, Kyotaro Horiguchi wrote:

At Fri, 21 Feb 2020 14:02:40 +0100, Juan José Santamaría Flecha <juanjo.santamaria@gmail.com> wrote in

After commit 9573384 this patch no longer applies, but with a trivial
rebase it fixes the issue.

Thanks! This is the rebased version. I'll register this to the next CF.

That's annoying, and you are right. So, committed.

Thank you for committing.

regards.

--
Kyotaro Horiguchi
NTT Open Source Software Center