From 54637a615dcdac20f1f61a017d3bae429aa389e4 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Mon, 18 Oct 2021 10:29:41 +0100 Subject: utils: gen-version: Pass the meson source root to the gen-version.sh script The gen-version.sh script expects to be called from a git repo, and sets its src_root variable accordingly. This may not always be the case if it is built from a tarball source - full support for which is in a future commit. The MESON_SOURCE_ROOT environnement variable does not get set when called from the meson vcs_tag() function, but does when called from the run_command() function, so that cannot be used either. Instead, explicitly pass the meson source root to the gen-version.sh script. Signed-off-by: Naushir Patuck Reviewed-by: Laurent Pinchart Signed-off-by: Laurent Pinchart --- meson.build | 3 ++- src/libcamera/meson.build | 4 +++- utils/gen-version.sh | 10 ++++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index dfed01ba..bd3246eb 100644 --- a/meson.build +++ b/meson.build @@ -17,7 +17,8 @@ project('libcamera', 'c', 'cpp', # git version tag, the build metadata (e.g. +211-c94a24f4) is omitted from # libcamera_git_version. libcamera_git_version = run_command('utils/gen-version.sh', - meson.build_root()).stdout().strip() + meson.build_root(), + meson.source_root()).stdout().strip() if libcamera_git_version == '' libcamera_git_version = meson.project_version() endif diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build index 243dd3c1..6727a777 100644 --- a/src/libcamera/meson.build +++ b/src/libcamera/meson.build @@ -95,7 +95,9 @@ libcamera_sources += control_sources gen_version = meson.source_root() / 'utils' / 'gen-version.sh' -version_cpp = vcs_tag(command : [gen_version, meson.build_root()], +# Use vcs_tag() and not configure_file() or run_command(), to ensure that the +# version gets updated with every ninja build and not just at meson setup time. +version_cpp = vcs_tag(command : [gen_version, meson.build_root(), meson.source_root()], input : 'version.cpp.in', output : 'version.cpp', fallback : meson.project_version()) diff --git a/utils/gen-version.sh b/utils/gen-version.sh index b09ad495..d0048179 100755 --- a/utils/gen-version.sh +++ b/utils/gen-version.sh @@ -4,10 +4,16 @@ # Generate a version string using git describe build_dir="$1" +src_dir="$2" # 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) -- cgit v1.2.1