[libcamera-devel] [PATCH] meson: Fix git version parsing

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Mar 10 12:30:55 CET 2023


Hi Michael,

On Fri, Mar 10, 2023 at 06:00:43AM +0100, Michael Riesch wrote:
> On 3/9/23 18:37, Kieran Bingham wrote:
> > Quoting Laurent Pinchart (2023-03-09 17:21:15)
> >> When extracting the build metadata from the git version, we use the
> >> string strip() method to remove the version prefix. This is incorrect,
> >> as the strip() method takes a set of characters to be removed, not a
> >> literal string. Fix it by splitting the git version string on the '+'
> >> character and keeping the suffix.
> >>
> >> Fixes: 02518e598e8f ("meson: Rewrite .replace usage")
> >> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> >> ---
> >>  meson.build | 4 ++--
> >>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/meson.build b/meson.build
> >> index 0f89b45a0169..189e97736d90 100644
> >> --- a/meson.build
> >> +++ b/meson.build
> >> @@ -41,8 +41,8 @@ if libcamera_version != project_version
> >>  
> >>      # Replace the version components reported by git with the release version,
> >>      # but keep all trailing information supplied by git.
> >> -    libcamera_git_version = (project_version +
> >> -                             libcamera_git_version.strip(libcamera_version))
> >> +    libcamera_git_version = (project_version + '+' +
> >> +                             libcamera_git_version.split('+')[1])
> 
> Is it safe to assume that metadata is present in this case, i.e., the
> list produced by libcamera_git_version.split('+') contains at least two
> entries?

Good point. I don't think it should happen in practice, as this code is
only reached when the meson and git version don't match, and in that
case I wouldn't expect the branch HEAD to point to a tag, so there
should be a '+' sign. Nonetheless, I think we should fix it.

There's also an issue if the string contains multiple '+', which can be
the case when the build metadata contain a timestamp with a timezone.
meson doesn't support arrays slicing (e.g. .split('+')[1:]), and has no
string .length() method that would allow us to use .substring(). I'll
see what I can do.

> With that addressed:
> 
> Reviewed-by: Michael Riesch <michael.riesch at wolfvision.net>
> 
> Best regards,
> Michael
> 
> > Looks too obvious. Why didn't I use this in the first place ;-)
> > 
> > Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> > 
> >>      libcamera_version = project_version
> >>  
> >>      # Append a marker to show we have modified this version string
> >>
> >> base-commit: f852b7fbc4960ea83bab49b75408fb13462db8ba

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list