crash: fix reproducibility

Fix reproducibility issue by retrieving the compiler version from the CC
env variable, which define the compiler used in the build and not from
the native gcc compiler install in the host machine.

Signed-off-by: Kéléfa Sané <kelefa.sane@smile.fr>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
(cherry picked from commit df7e1b55d5)
Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
This commit is contained in:
Kéléfa Sané 2025-09-30 22:18:32 +13:00 committed by Gyorgy Sarvari
parent 6cc88c4e9b
commit c8b8a7cfcd
3 changed files with 49 additions and 3 deletions

View File

@ -7,9 +7,6 @@ KNOWN_NON_REPRO_META_OE = " \
boinc-client-dev \
cjson-ptest \
cpuid-doc \
crash \
crash-dbg \
crash-src \
dhrystone \
dhrystone-dbg \
dhrystone-dev \

View File

@ -27,6 +27,7 @@ SRC_URI = "git://github.com/crash-utility/${BPN}.git;branch=master;protocol=http
file://0003-Fix-build-failure-in-readline-lib.patch \
file://0004-tools.c-do-not-use-keywords-nullptr-as-a-variable-in.patch \
file://0005-Fix-build-failure-on-32bit-machine-i686.patch \
file://0001-Use-CC-env-var-to-get-compiler-version.patch \
"
SRCREV = "f13853cef53f5c5463a51021edbc81977e2b1405"

View File

@ -0,0 +1,48 @@
From 6ad5e9302057e157ab701880a8543ca59058df2d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9l=C3=A9fa=20San=C3=A9?= <kelefa.sane@smile.fr>
Date: Fri, 16 May 2025 16:18:28 +0200
Subject: [PATCH v2] Use CC env var to get compiler version
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The source file build_data.c generated at compilation time define a
variable compiler_version which is obtained by calling "gcc --version"
cmd. This call retrieve the native gcc compiler install on host build
machine but not necessarily the compiler use to build the project (ex:
cross compilation).
The CC env variable commonly used in Makefile project define the
compiler to use at build, so this is the appropriate way to retrieve the
compiler version, when the CC env var is define.
Upstream-Status: Submitted [https://lists.crash-utility.osci.io/archives/list/devel@lists.crash-utility.osci.io/thread/V3G3QH3YW6WZWD56TVTFQIHYLZ33UIJL/]
Signed-off-by: Kéléfa Sané <kelefa.sane@smile.fr>
---
configure.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/configure.c b/configure.c
index 4668c9a..4b65bd7 100644
--- a/configure.c
+++ b/configure.c
@@ -1362,7 +1362,17 @@ make_build_data(char *target)
fp1 = popen("date", "r");
fp2 = popen("id", "r");
- fp3 = popen("gcc --version", "r");
+
+ const char *cc_env = getenv("CC");
+ if(NULL == cc_env) {
+ fp3 = popen("gcc --version", "r");
+ }
+ else {
+ char compiler_version_cmd[512];
+
+ snprintf(compiler_version_cmd, sizeof(compiler_version_cmd), "%s --version", cc_env);
+ fp3 = popen(compiler_version_cmd, "r");
+ }
if ((fp4 = fopen("build_data.c", "w")) == NULL) {
perror("build_data.c");