mirror of
https://gitlab.freedesktop.org/plymouth/plymouth.git
synced 2026-05-05 15:48:04 +02:00
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
This commit is contained in:
parent
e285c91fc4
commit
36cf20c6fa
2 changed files with 27 additions and 10 deletions
11
meson.build
11
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
|
||||
|
|
|
|||
26
scripts/generate-version.sh
Executable file
26
scripts/generate-version.sh
Executable file
|
|
@ -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)"
|
||||
Loading…
Add table
Reference in a new issue