before this change the argument passed to --date-stamp option is
ignored, as we don't reference the date-stamp specified with this option
at all. instead, we always overwrite it with the the output of
`date --utc +%Y%m%d`, if we are going to reference this value.
so, in this change instead of unconditionally overwriting it, we
keep its value intact if it is already set.
the change which introduced this regression was 839d8f40e6
Fixes #15894
Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
Closes scylladb/scylladb#15895
117 lines
2.8 KiB
Bash
Executable File
117 lines
2.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
USAGE=$(cat <<-END
|
|
Usage: $(basename "$0") [-h|--help] [-o|--output-dir PATH] [--date-stamp DATE] -- 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.
|
|
-d|--date-stamp DATE manually set date for release parameter
|
|
-v|--verbose also print out the version number
|
|
|
|
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
|
|
)
|
|
|
|
DATE=""
|
|
PRINT_VERSION=false
|
|
|
|
while [ $# -gt 0 ]; do
|
|
opt="$1"
|
|
case $opt in
|
|
-h|--help)
|
|
echo "$USAGE"
|
|
exit 0
|
|
;;
|
|
-o|--output-dir)
|
|
OUTPUT_DIR="$2"
|
|
shift
|
|
shift
|
|
;;
|
|
--date-stamp)
|
|
DATE="$2"
|
|
shift
|
|
shift
|
|
;;
|
|
-v|--verbose)
|
|
PRINT_VERSION=true
|
|
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
|
|
|
|
if [ -z "$DATE" ]; then
|
|
DATE=$(date --utc +%Y%m%d)
|
|
fi
|
|
|
|
# Default scylla product/version tags
|
|
PRODUCT=scylla
|
|
VERSION=5.5.0-dev
|
|
|
|
if test -f version
|
|
then
|
|
SCYLLA_VERSION=$(cat version | awk -F'-' '{print $1}')
|
|
SCYLLA_RELEASE=$(cat version | awk -F'-' '{print $2}')
|
|
else
|
|
SCYLLA_VERSION=$VERSION
|
|
if [ -z "$SCYLLA_RELEASE" ]; then
|
|
GIT_COMMIT=$(git -C "$SCRIPT_DIR" log --pretty=format:'%h' -n 1 --abbrev=12)
|
|
# 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
|
|
elif [ -f "$OUTPUT_DIR/SCYLLA-RELEASE-FILE" ]; then
|
|
echo "setting SCYLLA_RELEASE only makes sense in clean builds" 1>&2
|
|
exit 1
|
|
fi
|
|
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
|
|
|
|
if $PRINT_VERSION; then
|
|
echo "$SCYLLA_VERSION-$SCYLLA_RELEASE"
|
|
fi
|
|
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"
|