[PATCH 1/2] GIT-VERSION-GEN: fix overriding version via environment
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Dec 19, 2024, 15:53 UTC
- Message-ID
- <20241219-b4-pks-git-version-via-environment-v1-1-9393af058240@pks.im>
- In-Reply-To
- <20241219-b4-pks-git-version-via-environment-v1-0-9393af058240@pks.im>
GIT-VERSION-GEN tries to derive the version that Git is being built from via multiple different sources in the following order:
1. A file called "version" in the source tree's root directory, if it
exists.2. The current commit in case Git is built from a Git repository.
3. Otherwise, we use a fallback version stored in a variable which is
bumped whenever a new Git version is getting tagged.It used to be possible to override the version by overriding the `GIT_VERSION` Makefile variable (e.g. `make GIT_VERSION=foo`). This worked somewhat by chance, only: `GIT-VERSION-GEN` would write the actual Git version into `GIT-VERSION-FILE`, not the overridden value, but when including the file into our Makefile we would not override the `GIT_VERSION` variable because it has already been set by the user. And because our Makefile used the variable to propagate the version to our build tools instead of using `GIT-VERSION-FILE` the resulting build artifacts used the overridden version.
But that subtle mechanism broke with 4838deab65 (Makefile: refactor GIT-VERSION-GEN to be reusable, 2024-12-06) and subsequent commits because the version information is not propagated via the Makefile variable anymore, but instead via the files that `GIT-VERSION-GEN` started to write. And as the script never knew about the `GIT_VERSION` environment variable in the first place it uses one of the values listed above instead of the overridden value.
Fix this issue by making `GIT-VERSION-GEN` handle the case where `GIT_VERSION` has been set via the environment.
Signed-off-by: Patrick Steinhardt <ps@pks.im> --- GIT-VERSION-GEN | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index de0e63bdfbac263884e2ea328cc2ef11ace7a238..787c6cfd04f0a43d0c1c8a6690185d26ccf2fc2f 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -29,7 +29,10 @@ export GIT_CEILING_DIRECTORIES # First see if there is a version file (included in release tarballs), # then try git-describe, then default. -if test -f "$SOURCE_DIR"/version +if test -n "$GIT_VERSION" +then + VN="$GIT_VERSION" +elif test -f "$SOURCE_DIR"/version then VN=$(cat "$SOURCE_DIR"/version) || VN="$DEF_VER" elif {
-- 2.47.0