summaryrefslogtreecommitdiff
path: root/utils/gen-version.sh
diff options
context:
space:
mode:
Diffstat (limited to 'utils/gen-version.sh')
-rwxr-xr-xutils/gen-version.sh29
1 files changed, 26 insertions, 3 deletions
diff --git a/utils/gen-version.sh b/utils/gen-version.sh
index 7f7872ce..1b818e9e 100755
--- a/utils/gen-version.sh
+++ b/utils/gen-version.sh
@@ -4,10 +4,26 @@
# Generate a version string using git describe
build_dir="$1"
+src_dir="$2"
+project_version="$3"
+
+# If .tarball-version exists, output the version string from the file and exit.
+# This file is auto-generated on a 'meson dist' command from the run-dist.sh
+# script.
+if [ -n "$src_dir" ] && [ -f "$src_dir"/.tarball-version ]
+then
+ cat "$src_dir"/.tarball-version
+ exit 0
+fi
# Bail out if the directory isn't under git control
-src_dir=$(git rev-parse --git-dir 2>&1) || exit 1
-src_dir=$(readlink -f "$src_dir/..")
+git_dir=$(git rev-parse --git-dir 2>&1) || exit 1
+
+# Derive the source directory from the git directory if not specified.
+if [ -z "$src_dir" ]
+then
+ src_dir=$(readlink -f "$git_dir/..")
+fi
# Get a short description from the tree.
version=$(git describe --abbrev=8 --match "v[0-9]*" 2>/dev/null)
@@ -26,7 +42,14 @@ if [ -z "$build_dir" ] || (echo "$build_dir" | grep -q "$src_dir")
then
git update-index --refresh > /dev/null 2>&1
fi
-git diff-index --quiet HEAD || version="$version-dirty"
+git diff-index --quiet HEAD || version="$version-dirty ($(date +%Y-%m-%dT%H:%M:%S%Z))"
+
+# If a project version is provided, use it to replace the version number.
+if [ -n "$project_version" ]
+then
+ version=$(echo "$version" | sed -e 's/^[^-]*-//')
+ version="v$project_version-$version"
+fi
# Replace first '-' with a '+' to denote build metadata, strip the 'g' in from
# of the git SHA1 and remove the initial 'v'.