Merge branch 'version_utils' into jgrpp
This commit is contained in:
@@ -122,6 +122,30 @@ elif [ -d "$ROOT_DIR/.hg" ]; then
|
||||
# No rev? Maybe it is a custom hgsubversion clone
|
||||
REV_NR=`LC_ALL=C HGPLAIN= hg parent --template="{svnrev}"`
|
||||
fi
|
||||
elif [ -f "$ROOT_DIR/.ottdrev-vc" ]; then
|
||||
VERSION_DATA="`cat "$ROOT_DIR/.ottdrev-vc" | sed -n -e '1 p;'`"
|
||||
HASH_DATA="`cat "$ROOT_DIR/.ottdrev-vc" | sed -n -e '2 p;'`"
|
||||
REV="`echo "$VERSION_DATA" | cut -f 1 -d' '`"
|
||||
REV_NR="`echo "$VERSION_DATA" | cut -f 2 -d' '`"
|
||||
MODIFIED="`echo "$VERSION_DATA" | cut -f 3 -d' '`"
|
||||
CLEAN_REV="`echo "$VERSION_DATA" | cut -f 4 -d' '`"
|
||||
if [ "$MODIFIED" = "2" ]; then
|
||||
CLEAN_REV="`echo "$CLEAN_REV" | sed -e 's/M$//'`"
|
||||
fi
|
||||
BRANCH="`echo "$REV" | sed -n -e "s|^${CLEAN_REV}M\?-\(.\+\)$|\1|p"`"
|
||||
REV="$CLEAN_REV"
|
||||
if ! $ROOT_DIR/version_utils.sh -o; then
|
||||
MODIFIED="1"
|
||||
else
|
||||
CURRENT_HASH="`$ROOT_DIR/version_utils.sh -s`"
|
||||
if [ "$CURRENT_HASH" != "$HASH_DATA" ]; then
|
||||
MODIFIED="2"
|
||||
if [ -n "$BRANCH" ]; then
|
||||
BRANCH="$BRANCH-"
|
||||
fi
|
||||
BRANCH="${BRANCH}H`echo "$CURRENT_HASH" | cut -c 1-8`"
|
||||
fi
|
||||
fi
|
||||
elif [ -f "$ROOT_DIR/.ottdrev" ]; then
|
||||
# We are an exported source bundle
|
||||
cat $ROOT_DIR/.ottdrev
|
||||
|
||||
145
version_utils.sh
Executable file
145
version_utils.sh
Executable file
@@ -0,0 +1,145 @@
|
||||
#!/bin/bash
|
||||
|
||||
# $Id$
|
||||
|
||||
# This file is part of OpenTTD.
|
||||
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
function show_help {
|
||||
echo "Usage: version_utils.sh OPTION" >&2
|
||||
echo "-s: Output a SHA-256 of the source tree" >&2
|
||||
echo "-l: Output the names of all files in the source tree with their SHA-256 hash" >&2
|
||||
echo "-n: Output the names of all files in the source tree without a hash" >&2
|
||||
echo "-o: Return true (0) if SHA-256 utility can be found" >&2
|
||||
echo "-w: Write ./.ottdrev-vc" >&2
|
||||
echo "-r TAGNAME: Create a tag, write ./.ottdrev-vc referencing the tag," >&2
|
||||
echo " commit it and move the tag to point to the new revision. Requires git." >&2
|
||||
echo "-h: Show this help" >&2
|
||||
}
|
||||
|
||||
NAMES=
|
||||
HASHLIST=
|
||||
HASH=
|
||||
TESTOK=
|
||||
WRITE=
|
||||
RELEASETAG=
|
||||
while getopts ":hslnowr:" opt; do
|
||||
case $opt in
|
||||
s)
|
||||
HASH=1
|
||||
;;
|
||||
l)
|
||||
HASHLIST=1
|
||||
;;
|
||||
n)
|
||||
NAMES=1
|
||||
;;
|
||||
o)
|
||||
TESTOK=1
|
||||
;;
|
||||
w)
|
||||
WRITE=1
|
||||
;;
|
||||
r)
|
||||
RELEASETAG="$OPTARG"
|
||||
;;
|
||||
h | \?)
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
HASH_CMD=
|
||||
|
||||
function handle_source {
|
||||
if [ -n "$2" ]; then
|
||||
$HASH_CMD "$1"
|
||||
else
|
||||
echo "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
function find_hasher {
|
||||
if [ "`echo -n "test" | sha256sum 2> /dev/null`" == "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 -" ]; then
|
||||
HASH_CMD=sha256sum
|
||||
elif [ "`echo -n "test" | shasum -a 256 2> /dev/null`" == "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 -" ]; then
|
||||
HASH_CMD=shasum -a 256
|
||||
elif [ "`echo -n "test" | shasum -a 256 -p 2> /dev/null`" == "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 -" ]; then
|
||||
HASH_CMD=shasum -a 256 -p
|
||||
else
|
||||
echo "Could not generate SHA-256" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function output_hash_list {
|
||||
read_source "1"
|
||||
}
|
||||
|
||||
function read_source {
|
||||
handle_source "source.list" "$1"
|
||||
handle_source "config.lib" "$1"
|
||||
handle_source "configure" "$1"
|
||||
handle_source "Makefile.in" "$1"
|
||||
handle_source "Makefile.bundle.in" "$1"
|
||||
handle_source "Makefile.grf.in" "$1"
|
||||
handle_source "Makefile.setting.in" "$1"
|
||||
handle_source "Makefile.src.in" "$1"
|
||||
while IFS=$'\n' read -r line; do
|
||||
handle_source "src/$line" "$1"
|
||||
done < <( sed -e 's/^[ \t]*//; s/[ \t]*$//;' -e '/^$/ d;' -e '/^#/ d;' -e '/^..\// d;' "source.list" )
|
||||
}
|
||||
|
||||
if [ -z "$HASH" -a -z "$NAMES" -a -z "$HASHLIST" -a -z "$TESTOK" -a -z "$WRITE" -a -z "$RELEASETAG" ]; then
|
||||
show_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "$NAMES" ]; then
|
||||
read_source
|
||||
fi
|
||||
|
||||
if [ -n "$HASHLIST" ]; then
|
||||
find_hasher
|
||||
output_hash_list
|
||||
fi
|
||||
|
||||
if [ -n "$HASH" ]; then
|
||||
find_hasher
|
||||
output_hash_list | $HASH_CMD
|
||||
fi
|
||||
|
||||
if [ -n "$WRITE" ]; then
|
||||
find_hasher
|
||||
./findversion.sh > .ottdrev-vc-tmp
|
||||
output_hash_list | $HASH_CMD >> .ottdrev-vc-tmp
|
||||
mv .ottdrev-vc-tmp .ottdrev-vc
|
||||
fi
|
||||
|
||||
if [ -n "$RELEASETAG" ]; then
|
||||
if ! git diff-index --quiet HEAD; then
|
||||
echo "Repo is dirty, aborting" >&2
|
||||
exit 1
|
||||
fi
|
||||
if ! git diff-index --quiet --cached HEAD; then
|
||||
echo "Repo is dirty, aborting" >&2
|
||||
exit 1
|
||||
fi
|
||||
if ! git tag "$RELEASETAG"; then
|
||||
echo "Tag already exists or is not valid, aborting" >&2
|
||||
exit 1
|
||||
fi
|
||||
if ! ./version_utils.sh -w; then
|
||||
exit 1
|
||||
fi
|
||||
git add .ottdrev-vc
|
||||
git commit -m "Version: Committing version data for tag: $RELEASETAG"
|
||||
git tag -f "$RELEASETAG"
|
||||
fi
|
||||
|
||||
if [ -n "$TESTOK" ]; then
|
||||
find_hasher 2> /dev/null
|
||||
fi
|
||||
Reference in New Issue
Block a user