From db39cc76982b8d5e4732c25e46774f988d3df377 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Mon, 18 Oct 2021 10:29:42 +0100 Subject: build: Preserve upstream git versioning using meson dist When distributions build and package libcamera libraries, they may not necessarily run the build in the upstream source tree. In these cases, the git SHA1 versioning information will be lost. This change addresses that problem by requiring package managers to run 'meson dist' to create a tarball of the source files and build from there. On runing 'meson dist', the utils/run-dist.sh script will create a .tarball-version file in the release tarball with the version string generated from the existing utils/gen-version.sh script. The utils/gen-version.sh script has been updated to check for the presence of this .tarball-version file and read the version string from it instead of creating one. Signed-off-by: Naushir Patuck Reviewed-by: Laurent Pinchart Signed-off-by: Laurent Pinchart --- meson.build | 3 +++ utils/gen-version.sh | 9 +++++++++ utils/run-dist.sh | 11 +++++++++++ 3 files changed, 23 insertions(+) create mode 100644 utils/run-dist.sh diff --git a/meson.build b/meson.build index bd3246eb..7892a9e3 100644 --- a/meson.build +++ b/meson.build @@ -25,6 +25,9 @@ endif libcamera_version = libcamera_git_version.split('+')[0] +# This script gererates the .tarball-version file on a 'meson dist' command. +meson.add_dist_script('utils/run-dist.sh') + # Configure the build environment. cc = meson.get_compiler('c') cxx = meson.get_compiler('cpp') diff --git a/utils/gen-version.sh b/utils/gen-version.sh index d0048179..eb7c7268 100755 --- a/utils/gen-version.sh +++ b/utils/gen-version.sh @@ -6,6 +6,15 @@ build_dir="$1" src_dir="$2" +# If .tarball-version exists, output the version string from the file and exit. +# This file is auto-generated on a 'meson dist' command from the run-dist.sh +# script. +if [ -n "$src_dir" ] && [ -f "$src_dir"/.tarball-version ] +then + cat "$src_dir"/.tarball-version + exit 0 +fi + # Bail out if the directory isn't under git control git_dir=$(git rev-parse --git-dir 2>&1) || exit 1 diff --git a/utils/run-dist.sh b/utils/run-dist.sh new file mode 100644 index 00000000..e89c3733 --- /dev/null +++ b/utils/run-dist.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +# SPDX-License-Identifier: GPL-2.0-or-later +# +# On a meson dist run, generate the version string and store it in a file. +# This will later be picked up by the utils/gen-version.sh script and used +# instead of re-generating it. This way, if we are not building in the upstream +# git source tree, the upstream version information will be preserved. + +cd "$MESON_SOURCE_ROOT" || return +./utils/gen-version.sh > "$MESON_DIST_ROOT"/.tarball-version -- cgit v1.2.1