[libcamera-devel] [PATCH v4 1/2] utils: gen-version: Pass the meson source root to the gen-version.sh script

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Oct 14 22:37:05 CEST 2021


Hi Naush,

Thank you for the patch.

On Thu, Oct 14, 2021 at 12:59:50PM +0100, Naushir Patuck wrote:
> 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 <naush at raspberrypi.com>
> ---
>  meson.build               | 3 ++-
>  src/libcamera/meson.build | 2 +-
>  utils/gen-version.sh      | 4 ++--
>  3 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/meson.build b/meson.build
> index a49c484fe64e..556a3f7c42f8 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 243dd3c180eb..d8dd8344002c 100644
> --- a/src/libcamera/meson.build
> +++ b/src/libcamera/meson.build
> @@ -95,7 +95,7 @@ libcamera_sources += control_sources
>  
>  gen_version = meson.source_root() / 'utils' / 'gen-version.sh'
>  

While at it, could you please add

# 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.

so we'll remember next time ?

> -version_cpp = vcs_tag(command : [gen_version, meson.build_root()],
> +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 b09ad495f86a..da191691a7c5 100755
> --- a/utils/gen-version.sh
> +++ b/utils/gen-version.sh
> @@ -4,10 +4,10 @@
>  # 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 rev-parse --git-dir > /dev/null 2>&1 || exit 1

It would be nice if we could make the source directory optional, the
same way the build directory is, so that running gen-version.sh from the
command line for testing would be easier. How about the following ?

# Bail out if the directory isn't under git control
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


With this (and assuming it works :-)),

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

>  # Get a short description from the tree.
>  version=$(git describe --abbrev=8 --match "v[0-9]*" 2>/dev/null)

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list