From 10ec09025d6f52f2c1d0ba6b7e6943a603a386d9 Mon Sep 17 00:00:00 2001 From: Paul Elder Date: Wed, 10 Jul 2019 20:29:44 +0900 Subject: 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 Reviewed-by: Kieran Bingham Reviewed-by: Laurent Pinchart --- meson.build | 2 +- src/libcamera/meson.build | 2 +- 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 -- cgit v1.2.1