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

Naushir Patuck naush at raspberrypi.com
Fri Oct 15 09:39:58 CEST 2021


Hi Laurent,


On Thu, 14 Oct 2021 at 21:37, Laurent Pinchart <
laurent.pinchart at ideasonboard.com> wrote:

> 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 ?
>

Will do!


>
> > -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 :-)),
>

Kieran had a suggestion in his feedback on a previous version of the patch.
$build_dir/source symlinks to our source tree.  This is created from the top
level meson.build file:

# Create a symlink from the build root to the source root. This is used when
# running libcamera from the build directory to locate resources in the
source
# directory (such as IPA configuration files).
run_command('ln', '-fsT', meson.source_root(), meson.build_root() /
'source')

Assuming this does not disappear in the future, I can use that to reference
the
source dir in the gen-version script. This will effectively make this patch
(1/2)
redundant, and I only need to change gen-version.sh appropriately.  What
do you think?

Naush



>
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20211015/2e9a1d68/attachment-0001.htm>


More information about the libcamera-devel mailing list