[libcamera-devel] [PATCH 4/4] utils: Provide a release script

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Sep 30 22:37:23 CEST 2022


Hi Kieran,

Thank you for the patch.

On Fri, Sep 30, 2022 at 04:43:31PM +0100, Kieran Bingham via libcamera-devel wrote:
> Quoting Jacopo Mondi (2022-09-30 16:35:28)
> > On Thu, Sep 29, 2022 at 03:36:26PM +0100, Kieran Bingham via libcamera-devel wrote:
> > > Support making releases of libcamera by introducing a helper script
> > > which will facilitate the increment of any release version, along with
> > > generating an associated tag.
> > >
> > > Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> > >
> > > ---
> > > This can later be extended to support or enforce adding an overview
> > > changelog to the commit, and annotated tag.
> > >
> > >  utils/release.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
> > >  1 file changed, 48 insertions(+)
> > >  create mode 100755 utils/release.sh
> > >
> > > diff --git a/utils/release.sh b/utils/release.sh
> > > new file mode 100755
> > > index 000000000000..c1c35dacab8e
> > > --- /dev/null
> > > +++ b/utils/release.sh
> > > @@ -0,0 +1,48 @@
> > > +#!/bin/sh
> > > +
> > > +# SPDX-License-Identifier: GPL-2.0-or-later
> > > +# Prepare a project release
> > > +
> > > +# Abort if we are not within the project root or the tree is not clean.
> > > +if [ ! -e utils/gen-version.sh -o ! -e .git ]; then

gen-version.sh uses

# Bail out if the directory isn't under git control
git_dir=$(git rev-parse --git-dir 2>&1) || exit 1

which makes sure that the .git directory contains something valid.

> > > +     echo "This release script must be run from the root of libcamera git clone."

s/libcamera git clone/a libcamera git tree/

> > > +     exit 1
> > > +fi
> > > +
> > > +if ! git diff-index --quiet HEAD; then
> > 
> > Took me a while to validate this as --quite implies --exit-code which
> > is documented as:
> > 
> > Make the program exit with codes similar to diff(1). That is, it exits
> > with 1 if there were differences and 0 means no differences.
> > 
> > But in bash an exit code 0 mean success, so it's right to negate it
> 
> Yes, we use this in utils/gen-version.sh
> 
> > > +     echo "Tree must be clean to release."
> > > +     exit 1
> > > +fi
> > > +
> > > +# Identify current version components
> > > +version=$(./utils/gen-version.sh)

Hmmm... gen-version.sh retrieves the version from git tags only, and now
we're also bumping the project version in the root meson.build. With the
current implementation, the project version is used as a fallback only,
if gen-version.sh fails. Is this something we need to revisit ? Do we
need to worry about a mismatch between the two ? It can be handling on
top, but I'd like to hear your opinion.

> > > +
> > > +# Decide if we are here to bump major, minor, or patch release.
> > > +case $1 in
> > > +     major|minor|patch)
> > > +             bump=$1;
> > > +             ;;
> > > +     *)
> > > +             echo "You must specify the version bump level:"
> > > +             echo " - major"
> > > +             echo " - minor"
> > > +             echo " - patch"

This could hold on one line:

		echo "You must specify the version bump level (major, minor, patch)"

Up to you.

> > > +             exit 1
> > > +             ;;
> > > +esac
> > > +
> > > +new_version=$(./utils/semver bump "$bump" "$version")
> > > +
> > > +echo "Bumping $bump"
> > > +echo "  Existing version is: $version"
> > > +echo "  New version is : $new_version"
> > > +
> > > +# Patch in the version to our meson.build
> > > +sed -i -E "s/ version : '.*',/ version : '$new_version',/" meson.build
> > > +
> > > +# Commit the update
> > > +git add meson.build
> > > +git commit meson.build -m "libcamera v$new_version"

You can drop meson.build here. I would also add -s to add a SoB line.

> > > +
> > > +# Create a tag
> > > +git tag v$new_version -am "libcamera v$new_version"

And here too, -s, to sign the tag.

> > The rest looks good
> > Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list