]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core.git/commitdiff
spirv-tools: Fix git-describe related reproducibility
authorYoann Congal <yoann.congal@smile.fr>
Fri, 2 Aug 2024 23:35:53 +0000 (01:35 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 5 Aug 2024 13:28:34 +0000 (14:28 +0100)
This reproducibility problem comes down to git-describe output. Fixes
this by using an environment variable to force the description and use
it to set this description to ${PV}

Fixes [YOCTO #15567].

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-graphics/spir/spirv-tools/0001-update_build_version.py-support-an-envvar-to-force-t.patch [new file with mode: 0644]
meta/recipes-graphics/spir/spirv-tools_1.3.290.0.bb

diff --git a/meta/recipes-graphics/spir/spirv-tools/0001-update_build_version.py-support-an-envvar-to-force-t.patch b/meta/recipes-graphics/spir/spirv-tools/0001-update_build_version.py-support-an-envvar-to-force-t.patch
new file mode 100644 (file)
index 0000000..edcbf50
--- /dev/null
@@ -0,0 +1,43 @@
+From 39b6385454d705128e684ed779ba9620e2ead1e2 Mon Sep 17 00:00:00 2001
+From: Yoann Congal <yoann.congal@smile.fr>
+Date: Thu, 1 Aug 2024 18:58:04 +0200
+Subject: [PATCH] update_build_version.py: support an envvar to force the
+ description
+
+FORCED_BUILD_VERSION_DESCRIPTION envvar can be used to force a version
+description instead of resorting to git describe which can change for a
+given commit if multiple lightweight commits point ot it.
+
+Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
+Upstream-Status: Submitted [https://github.com/KhronosGroup/SPIRV-Tools/pull/5758]
+---
+ utils/update_build_version.py | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/utils/update_build_version.py b/utils/update_build_version.py
+index bb66e18a..9115cab1 100755
+--- a/utils/update_build_version.py
++++ b/utils/update_build_version.py
+@@ -24,9 +24,10 @@
+ #  - The software version deduced from the given CHANGES file.
+ #  - A longer string with the project name, the software version number, and
+ #    git commit information for the CHANGES file's directory.  The commit
+-#    information is the output of "git describe" if that succeeds, or "git
+-#    rev-parse HEAD" if that succeeds, or otherwise a message containing the
+-#    phrase "unknown hash".
++#    information is the content of the FORCED_BUILD_VERSION_DESCRIPTION
++#    environement variable is it exists, else the output of "git describe" if
++#    that succeeds, or "git rev-parse HEAD" if that succeeds, or otherwise a
++#    message containing the phrase "unknown hash".
+ # The string contents are escaped as necessary.
+ import datetime
+@@ -150,7 +151,7 @@ def main():
+       sys.exit(1)
+     repo_path = os.path.dirname(changes_file_path)
+-    description = describe(repo_path)
++    description = os.getenv("FORCED_BUILD_VERSION_DESCRIPTION", describe(repo_path))
+     content = OUTPUT_FORMAT.format(version_tag=version, description=description)
+     # Escape file content.
index 1270da5b85eb66d42ea09fffcc8dfc969b7bb609..d0f1c387f1ca274daa2ca41578414e5fc47bc218 100644 (file)
@@ -8,7 +8,9 @@ LICENSE  = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
 SRCREV = "0cfe9e7219148716dfd30b37f4d21753f098707a"
-SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git;branch=main;protocol=https"
+SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git;branch=main;protocol=https \
+           file://0001-update_build_version.py-support-an-envvar-to-force-t.patch \
+           "
 PE = "1"
 # These recipes need to be updated in lockstep with each other:
 # glslang, vulkan-headers, vulkan-loader, vulkan-tools, spirv-headers, spirv-tools
@@ -29,6 +31,11 @@ EXTRA_OECMAKE += "\
     -DSPIRV_SKIP_TESTS=ON \
 "
 
+# Force the version description "git describe" related non-reproducibility
+do_compile:prepend() {
+    export FORCED_BUILD_VERSION_DESCRIPTION="${PV}"
+}
+
 do_install:append:class-target() {
     # Properly set _IMPORT_PREFIX in INTERFACE_LINK_LIBRARIES so that dependent
     # tools can find the right library