Noticed this issue during my debug sessions while building Scylla on x86 and Arm (https://jenkins.scylladb.com/job/scylla-master/job/releng-testing/job/build/670/artifact/) from x86 log (https://jenkins.scylladb.com/job/scylla-master/job/releng-testing/job/build/670/artifact/output-build-x86_64.txt) ``` [883/2823] cd tools/python3 && ./reloc/build_reloc.sh --version $(<../../build/SCYLLA-PRODUCT-FILE)-$(<../../build/SCYLLA-VERSION-FILE)-$(<../../build/SCYLLA-RELEASE-FILE) --nodeps --packages "python3-pyyaml python3-urwid python3-pyparsing python3-requests python3-pyudev python3-setuptools python3-psutil python3-distro python3-click python3-six" --pip-packages "scylla-driver geomet" 5.1.dev-0.20220209.23da2b58796 ``` from arm log (https://jenkins.scylladb.com/job/scylla-master/job/releng-testing/job/build/670/artifact/output-build-aarch64.txt) ``` [244/2823] cd tools/python3 && ./reloc/build_reloc.sh --version $(<../../build/SCYLLA-PRODUCT-FILE)-$(<../../build/SCYLLA-VERSION-FILE)-$(<../../build/SCYLLA-RELEASE-FILE) --nodeps --packages "python3-pyyaml python3-urwid python3-pyparsing python3-requests python3-pyudev python3-setuptools python3-psutil python3-distro python3-click python3-six" --pip-packages "scylla-driver geomet" 5.1.dev-0.20220209.23da2b587 ``` Related to git config parameter core.abbrev which is not defined so default is set for auto (based: https://git-scm.com/docs/git-config#Documentation/git-config.txt-coreabbrev) Fixes: https://github.com/scylladb/scylla/issues/10108 Closes #10109
93 lines
2.3 KiB
Bash
Executable File
93 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
USAGE=$(cat <<-END
|
|
Usage: $(basename "$0") [-h|--help] [-o|--output-dir PATH] -- generate Scylla version and build information files.
|
|
|
|
Options:
|
|
-h|--help show this help message.
|
|
-o|--output-dir PATH specify destination path at which the version files are to be created.
|
|
|
|
By default, the script will attempt to parse 'version' file
|
|
in the current directory, which should contain a string of
|
|
'\$version-\$release' form.
|
|
|
|
Otherwise, it will call 'git log' on the source tree (the
|
|
directory, which contains the script) to obtain current
|
|
commit hash and use it for building the version and release
|
|
strings.
|
|
|
|
The script assumes that it's called from the Scylla source
|
|
tree.
|
|
|
|
The files created are:
|
|
SCYLLA-VERSION-FILE
|
|
SCYLLA-RELEASE-FILE
|
|
SCYLLA-PRODUCT-FILE
|
|
|
|
By default, these files are created in the 'build'
|
|
subdirectory under the directory containing the script.
|
|
The destination directory can be overriden by
|
|
using '-o PATH' option.
|
|
END
|
|
)
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
opt="$1"
|
|
case $opt in
|
|
-h|--help)
|
|
echo "$USAGE"
|
|
exit 0
|
|
;;
|
|
-o|--output-dir)
|
|
OUTPUT_DIR="$2"
|
|
shift
|
|
shift
|
|
;;
|
|
*)
|
|
echo "Unexpected argument found: $1"
|
|
echo
|
|
echo "$USAGE"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
SCRIPT_DIR="$(dirname "$0")"
|
|
|
|
if [ -z "$OUTPUT_DIR" ]; then
|
|
OUTPUT_DIR="$SCRIPT_DIR/build"
|
|
fi
|
|
|
|
# Default scylla product/version tags
|
|
PRODUCT=scylla
|
|
VERSION=5.1.dev
|
|
|
|
if test -f version
|
|
then
|
|
SCYLLA_VERSION=$(cat version | awk -F'-' '{print $1}')
|
|
SCYLLA_RELEASE=$(cat version | awk -F'-' '{print $2}')
|
|
else
|
|
DATE=$(date --utc +%Y%m%d)
|
|
GIT_COMMIT=$(git -C "$SCRIPT_DIR" log --pretty=format:'%h' -n 1 --abbrev=12)
|
|
SCYLLA_VERSION=$VERSION
|
|
# For custom package builds, replace "0" with "counter.your_name",
|
|
# where counter starts at 1 and increments for successive versions.
|
|
# This ensures that the package manager will select your custom
|
|
# package over the standard release.
|
|
SCYLLA_BUILD=0
|
|
SCYLLA_RELEASE=$SCYLLA_BUILD.$DATE.$GIT_COMMIT
|
|
fi
|
|
|
|
if [ -f "$OUTPUT_DIR/SCYLLA-RELEASE-FILE" ]; then
|
|
GIT_COMMIT_FILE=$(cat "$OUTPUT_DIR/SCYLLA-RELEASE-FILE" |cut -d . -f 3)
|
|
if [ "$GIT_COMMIT" = "$GIT_COMMIT_FILE" ]; then
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
echo "$SCYLLA_VERSION-$SCYLLA_RELEASE"
|
|
mkdir -p "$OUTPUT_DIR"
|
|
echo "$SCYLLA_VERSION" > "$OUTPUT_DIR/SCYLLA-VERSION-FILE"
|
|
echo "$SCYLLA_RELEASE" > "$OUTPUT_DIR/SCYLLA-RELEASE-FILE"
|
|
echo "$PRODUCT" > "$OUTPUT_DIR/SCYLLA-PRODUCT-FILE"
|