From: Ray Strode Date: Tue, 29 Nov 2022 19:26:43 +0000 (-0500) Subject: meson: Generate version for reproducibility X-Git-Tag: 23.51.283~42^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=36cf20c6fa544f05b74aa2129261cedacfc96a80;p=thirdparty%2Fplymouth.git meson: Generate version for reproducibility Right now we call date directly from meson.build leading to non-reproducible builds. This commit makes it only call date when building from git, otherwise it extracts the version from the tarball name. script borrowed from accountsservice. Closes https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/188 --- diff --git a/meson.build b/meson.build index bd55c1c8..78b815ad 100644 --- a/meson.build +++ b/meson.build @@ -1,15 +1,6 @@ project('plymouth', 'c', meson_version: '>= 0.61', - version: run_command( - 'date', '+%y.%V.' + run_command( - 'git', 'rev-list', - run_command('git', 'describe', '--abbrev=0', check: true).stdout().strip() + '..HEAD', - '--count', - check: true, - ).stdout().strip(), - '-d', '@' + run_command('git', 'log', '-1', '--pretty=format:%ct', check: true).stdout().strip(), - check: true, - ).stdout().strip(), + version: run_command(['scripts/generate-version.sh'], check: true).stdout().strip(), ) # Modules diff --git a/scripts/generate-version.sh b/scripts/generate-version.sh new file mode 100755 index 00000000..83553ad9 --- /dev/null +++ b/scripts/generate-version.sh @@ -0,0 +1,26 @@ +#!/bin/sh +exec 3>&2 2> /dev/null +SRCDIR=$(dirname "$0") +cd "$SRCDIR" +CWD=$(realpath "$PWD") +TOPLEVEL_WORKING_DIR=$(realpath "$(git rev-parse --show-toplevel)") +SCRIPTDIR=${SRCDIR#"${TOPLEVEL_WORKING_DIR}/"} +exec 2>&3 + +# If it's not from a git checkout, assume it's from a tarball +if [ "${TOPLEVEL_WORKING_DIR}/${SCRIPTDIR}" != "$CWD" ]; then + VERSION_FROM_DIR_NAME=$(basename "$CWD" | sed -n 's/^plymouth-\([^-]*\)$/\1/p') + + if [ -n "$VERSION_FROM_DIR_NAME" ]; then + echo "$VERSION_FROM_DIR_NAME" + exit 0 + fi + + echo "Source doesn't appear to come from an plymouth git clone or tarball. Version unknown." + exit 1 +fi + +# If it is from a git checkout, derive the version from the date of the last commit, and the number +# of commits since the last release. +COMMITS_SINCE_LAST_RELEASE=$(git rev-list $(git describe --abbrev=0)..HEAD --count) +date +%y.%V.${COMMITS_SINCE_LAST_RELEASE} -d "@$(git log -1 --pretty=format:%ct)"