diff options
author | Paul Elder <paul.elder@ideasonboard.com> | 2019-07-10 20:29:44 +0900 |
---|---|---|
committer | Paul Elder <paul.elder@ideasonboard.com> | 2019-07-11 12:22:40 +0900 |
commit | 10ec09025d6f52f2c1d0ba6b7e6943a603a386d9 (patch) | |
tree | 88155bb4924380641b1212219f5b697b121177ca | |
parent | 6a27bd33879970e182949ad2010687886d2dc671 (diff) |
libcamera: skip auto version generation when building for Chromium OS
Commit b817bcec6b53 ("libcamera: Auto generate version information")
causes the build to fail in the Chromium OS build environment, because
git update-index tries to take a lock (ie. write) in the git repo that
is outside of the build directory.
The solution is to simply skip git update-index if we are building in
the Chromium OS build environment, and this decision is made if the
build directory is not a subdirectory of the source directory.
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r-- | meson.build | 2 | ||||
-rw-r--r-- | src/libcamera/meson.build | 2 | ||||
-rwxr-xr-x | utils/gen-version.sh | 13 |
3 files changed, 9 insertions, 8 deletions
diff --git a/meson.build b/meson.build index 8f3d0ce9..13d0605f 100644 --- a/meson.build +++ b/meson.build @@ -15,7 +15,7 @@ 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.source_root()).stdout().strip() + meson.build_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 97ff86e2..adc749ec 100644 --- a/src/libcamera/meson.build +++ b/src/libcamera/meson.build @@ -81,7 +81,7 @@ libcamera_sources += control_types_cpp gen_version = join_paths(meson.source_root(), 'utils', 'gen-version.sh') -version_cpp = vcs_tag(command : [gen_version, meson.source_root()], +version_cpp = vcs_tag(command : [gen_version, meson.build_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 708c01d3..7f7872ce 100755 --- a/utils/gen-version.sh +++ b/utils/gen-version.sh @@ -3,13 +3,11 @@ # SPDX-License-Identifier: GPL-2.0-or-later # Generate a version string using git describe -if [ -n "$1" ] -then - cd "$1" 2>/dev/null || exit 1 -fi +build_dir="$1" # Bail out if the directory isn't under git control -git rev-parse --git-dir >/dev/null 2>&1 || exit 1 +src_dir=$(git rev-parse --git-dir 2>&1) || exit 1 +src_dir=$(readlink -f "$src_dir/..") # Get a short description from the tree. version=$(git describe --abbrev=8 --match "v[0-9]*" 2>/dev/null) @@ -24,7 +22,10 @@ fi # Append a '-dirty' suffix if the working tree is dirty. Prevent false # positives due to changed timestamps by running git update-index. -git update-index --refresh > /dev/null 2>&1 +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" # Replace first '-' with a '+' to denote build metadata, strip the 'g' in from |