build: use VPP_BUILD_TOPDIR from environment if set 01/41501/2
authorOleksandr Hnatiuk <[email protected]>
Thu, 29 Aug 2024 04:20:04 +0000 (21:20 -0700)
committerDamjan Marion <[email protected]>
Thu, 12 Dec 2024 15:48:32 +0000 (15:48 +0000)
Commit 3d14f036199d added the possibility to use `VPP_BUILD_USER` and
`VPP_BUILD_HOST` from environment (if they are set) to avoid
reproducibility issues by hard-coding such data in the build system.
However, there's no way to provide VPP_BUILD_TOPDIR externally. Add this
feature to improve binary reproducibility.

Type: improvement
Change-Id: I3a7ee47d75af9635b636fa3750a3688314eaa60d
Signed-off-by: Oleksandr Hnatiuk <[email protected]>
src/scripts/generate_version_h

index cdcdf5d..e837955 100755 (executable)
@@ -1,6 +1,7 @@
 #!/usr/bin/env bash
 : ${VPP_BUILD_USER:=$(whoami)}
 : ${VPP_BUILD_HOST:=$(hostname)}
+: ${VPP_BUILD_TOPDIR:=$(git rev-parse --show-toplevel 2> /dev/null)}
 DATE_FMT="+%Y-%m-%dT%H:%M:%S"
 SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
 VPP_BUILD_DATE=$(date -u -d "@$SOURCE_DATE_EPOCH" "$DATE_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "$DATE_FMT" 2>/dev/null || date -u "$DATE_FMT")
@@ -27,7 +28,7 @@ cat > ${1} << __EOF__
 #define VPP_BUILD_DATE "$VPP_BUILD_DATE"
 #define VPP_BUILD_USER "$VPP_BUILD_USER"
 #define VPP_BUILD_HOST "$VPP_BUILD_HOST"
-#define VPP_BUILD_TOPDIR "$(git rev-parse --show-toplevel 2> /dev/null)"
+#define VPP_BUILD_TOPDIR "$VPP_BUILD_TOPDIR"
 #define VPP_BUILD_VER "$(scripts/version)"
 #endif
 __EOF__