[Openvpn-devel,v2] msvc: always call git-version.py

Message ID 20221111121212.25167-1-frank@lichtenheld.com
State Accepted
Headers show
Series [Openvpn-devel,v2] msvc: always call git-version.py | expand

Commit Message

Frank Lichtenheld Nov. 11, 2022, 12:12 p.m. UTC
There is no way to detect whether this information
is outdated in nmake itself. So leave it up to the
Python script to decide.

While here, change some leading whitespace to tabs as
expected in Makefile.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
Signed-off-by: Lev Stipakov <lev@openvpn.net>
---
 build/msvc/msvc-generate/Makefile.mak   |  9 ++++++---
 build/msvc/msvc-generate/git-version.py | 21 ++++++++++++++++++---
 2 files changed, 24 insertions(+), 6 deletions(-)

v2: incorporate changes to git-version.py by Lev

Comments

Lev Stipakov Nov. 11, 2022, 12:19 p.m. UTC | #1
Don't know if I can ack the patch to which I've contributed - but
anyway, the makefile change looks
good and the python script doesn't regenerate version header (which
would trigger recompilation of some files).

Tested locally and GHA is happy.

Acked-by: Lev Stipakov <lstipakov@gmail.com>
Gert Doering Nov. 11, 2022, 1:27 p.m. UTC | #2
Your patch has been applied to the master and release/2.5 branch.

No code changes, and build changes look reasonable.  Thanks.

Pushed to my GH instance for test building, no complaints either.

commit 3951ed8479c01e79bd8fae5c7d4b5f6b07d1f0fb (master)
commit 2086517693f68a3b8fe10d79b5e193868b94adf4 (release/2.5)
Author: Frank Lichtenheld
Date:   Fri Nov 11 13:12:12 2022 +0100

     msvc: always call git-version.py

     Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
     Signed-off-by: Lev Stipakov <lev@openvpn.net>
     Acked-by: Lev Stipakov <lstipakov@gmail.com>
     Message-Id: <20221111121212.25167-1-frank@lichtenheld.com>
     URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg25508.html
     Signed-off-by: Gert Doering <gert@greenie.muc.de>


--
kind regards,

Gert Doering

Patch

diff --git a/build/msvc/msvc-generate/Makefile.mak b/build/msvc/msvc-generate/Makefile.mak
index ae8b0842..1c1c4bab 100644
--- a/build/msvc/msvc-generate/Makefile.mak
+++ b/build/msvc/msvc-generate/Makefile.mak
@@ -51,10 +51,13 @@  $(OUTPUT_PLUGIN): $(INPUT_PLUGIN) $(OUTPUT_PLUGIN_CONFIG)
 	cscript //nologo msvc-generate.js --config="$(OUTPUT_PLUGIN_CONFIG)" --input="$(INPUT_PLUGIN)" --output="$(OUTPUT_PLUGIN)"
 
 $(OUTPUT_MAN): $(INPUT_MAN)
-    -FOR /F %i IN ('where rst2html.py') DO python %i "$(INPUT_MAN)" "$(OUTPUT_MAN)"
+	-FOR /F %i IN ('where rst2html.py') DO python %i "$(INPUT_MAN)" "$(OUTPUT_MAN)"
 
-$(OUTPUT_MSVC_GIT_CONFIG):
-    python git-version.py $(SOLUTIONDIR)
+# Force regeneration because we can't detect whether it is outdated
+$(OUTPUT_MSVC_GIT_CONFIG): FORCE
+	python git-version.py $(SOLUTIONDIR)
+
+FORCE:
 
 clean:
 	-del "$(OUTPUT_MSVC_VER)"
diff --git a/build/msvc/msvc-generate/git-version.py b/build/msvc/msvc-generate/git-version.py
index b6037e1e..814dc86a 100644
--- a/build/msvc/msvc-generate/git-version.py
+++ b/build/msvc/msvc-generate/git-version.py
@@ -41,10 +41,25 @@  def main():
     except:
         branch, commit_id = "unknown", "unknown"
 
+    prev_content = ""
+
     name = os.path.join("%s" %  (sys.argv[1] if len(sys.argv) > 1 else "."), "config-version.h")
-    with open(name, "w") as f:
-        f.write("#define CONFIGURE_GIT_REVISION \"%s/%s\"\n" % (branch, commit_id))
-        f.write("#define CONFIGURE_GIT_FLAGS \"\"\n")
+    try:
+        with open(name, "r") as f:
+            prev_content = f.read()
+    except:
+        # file doesn't exist
+        pass
+
+    content = "#define CONFIGURE_GIT_REVISION \"%s/%s\"\n" % (branch, commit_id)
+    content += "#define CONFIGURE_GIT_FLAGS \"\"\n"
+
+    if prev_content != content:
+        print("Writing %s" % name)
+        with open(name, "w") as f:
+            f.write(content)
+    else:
+        print("Content of %s hasn't changed" % name)
 
 if __name__ == "__main__":
     main()