Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Change: [Makefile] replace custom git-detection with 'findversion.sh' (…
…#25) 'findversion.sh' is a script from the OpenTTD repository. This means OpenGFX now acts the same as OpenTTD in terms of version, filename, etc. Makefile.vcs is now only used to know when to retrigger targets, and no longer part of the source tarballs.
- Loading branch information
Showing
3 changed files
with
142 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,7 +4,6 @@ Makefile.local | |
# Generated files | ||
Makefile.vcs | ||
Makefile.gfx | ||
.version | ||
custom_tags.txt | ||
.nmlcache | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
#!/bin/sh | ||
|
||
# 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/>. | ||
|
||
|
||
# Arguments given? Show help text. | ||
if [ "$#" != "0" ]; then | ||
cat <<EOF | ||
Usage: ./findversion.sh | ||
Finds the current revision and if the code is modified. | ||
Output: <VERSION>\t<ISODATE>\t<MODIFIED>\t<HASH> | ||
VERSION | ||
a string describing what version of the code the current checkout is | ||
based on. | ||
This also includes the commit date, an indication of whether the checkout | ||
was modified and which branch was checked out. This value is not | ||
guaranteed to be sortable, but is mainly meant for identifying the | ||
revision and user display. | ||
If no revision identifier could be found, this is left empty. | ||
ISODATE | ||
the commit date of the revision this checkout is based on. | ||
The commit date may differ from the author date. | ||
This can be used to decide upon the age of the source. | ||
If no timestamp could be found, this is left empty. | ||
MODIFIED | ||
Whether (the src directory of) this checkout is modified or not. A | ||
value of 0 means not modified, a value of 2 means it was modified. | ||
A value of 1 means that the modified status is unknown, because this | ||
is not an git checkout for example. | ||
HASH | ||
the git revision hash | ||
By setting the AWK environment variable, a caller can determine which | ||
version of "awk" is used. If nothing is set, this script defaults to | ||
"awk". | ||
EOF | ||
exit 1; | ||
fi | ||
|
||
# Allow awk to be provided by the caller. | ||
if [ -z "$AWK" ]; then | ||
AWK=awk | ||
fi | ||
|
||
# Find out some dirs | ||
cd `dirname "$0"` | ||
ROOT_DIR=`pwd` | ||
|
||
# Determine if we are using a modified version | ||
# Assume the dir is not modified | ||
MODIFIED="0" | ||
if [ -d "$ROOT_DIR/.git" ] || [ -f "$ROOT_DIR/.git" ]; then | ||
# We are a git checkout | ||
# Refresh the index to make sure file stat info is in sync, then look for modifications | ||
git update-index --refresh >/dev/null | ||
if [ -n "`git diff-index HEAD`" ]; then | ||
MODIFIED="2" | ||
fi | ||
HASH=`LC_ALL=C git rev-parse --verify HEAD 2>/dev/null` | ||
SHORTHASH=`echo ${HASH} | cut -c1-10` | ||
ISODATE=`LC_ALL=C git show -s --pretty='format:%ci' HEAD | "$AWK" '{ gsub("-", "", $1); print $1 }'` | ||
BRANCH="`git symbolic-ref -q HEAD 2>/dev/null | sed 's@.*/@@'`" | ||
TAG="`git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null | sed 's@\^0$@@'`" | ||
|
||
if [ "$MODIFIED" -eq "0" ]; then | ||
hashprefix="-g" | ||
elif [ "$MODIFIED" -eq "2" ]; then | ||
hashprefix="-m" | ||
else | ||
hashprefix="-u" | ||
fi | ||
|
||
if [ -n "$TAG" ]; then | ||
VERSION="${TAG}" | ||
ISTAG="1" | ||
if [ -n "`echo \"${TAG}\" | grep \"^[0-9.]*$\"`" ]; then | ||
ISSTABLETAG="1" | ||
else | ||
ISSTABLETAG="0" | ||
fi | ||
else | ||
VERSION="${ISODATE}-${BRANCH}${hashprefix}${SHORTHASH}" | ||
ISTAG="0" | ||
ISSTABLETAG="0" | ||
fi | ||
|
||
elif [ -f "$ROOT_DIR/.ottdrev" ]; then | ||
# We are an exported source bundle | ||
cat $ROOT_DIR/.ottdrev | ||
exit | ||
else | ||
# We don't know | ||
MODIFIED="1" | ||
HASH="" | ||
SHORTHASH="" | ||
BRANCH="" | ||
ISODATE="" | ||
TAG="" | ||
VERSION="" | ||
ISTAG="0" | ||
ISSTABLETAG="0" | ||
fi | ||
|
||
echo "$VERSION $ISODATE $MODIFIED $HASH $ISTAG $ISSTABLETAG" |