Aegisub/tools/version.sh

76 lines
2.2 KiB
Bash
Executable File

builddir="$1"
srcdir="$2"
export GIT_DIR="${srcdir}/.git"
# If no git repo try to read from the existing git_version.h, for building from tarballs
version_h_path="${builddir}/git_version.h"
if ! test -e "${srcdir}/.git"; then
if test -f "${version_h_path}"; then
while read line; do
set -- $line
export $2=$(echo $3 | sed 's/"//g')
done < "${version_h_path}"
if test x$BUILD_GIT_VERSION_NUMBER != x -a x$BUILD_GIT_VERSION_STRING != x; then
exit 0
else
echo "invalid git_version.h"
exit 2
fi
else
echo "git repo not found and no cached git_version.h"
exit 2
fi
fi
osx_bundle_sed_path="${builddir}/osx-bundle.sed"
last_svn_revision=6962
last_svn_hash="16cd907fe7482cb54a7374cd28b8501f138116be"
git_revision=$(expr $last_svn_revision + $(git rev-list --count $last_svn_hash..HEAD))
git_version_str=$(git describe --exact-match 2> /dev/null)
installer_version='0.0.0'
resource_version='0, 0, 0'
if test x$git_version_str != x; then
git_version_str="${git_version_str##v}"
tagged_release=1
if [ $(echo $git_version_str | grep '\d\.\d\.\d') ]; then
installer_version=$git_version_str
resource_version=$(echo $git_version_str | sed 's/\./, /g')
fi
else
git_branch="$(git symbolic-ref HEAD 2> /dev/null)" || git_branch="(unnamed branch)"
git_branch="${git_branch##refs/heads/}"
git_hash=$(git rev-parse --short HEAD)
git_version_str="${git_revision}-${git_branch}-${git_hash}"
tagged_release=0
fi
build_date="$(date "+%Y-%m-%d %H:%M %Z")"
new_version_h="\
#define BUILD_GIT_VERSION_NUMBER ${git_revision}
#define BUILD_GIT_VERSION_STRING \"${git_version_str}\"
#define TAGGED_RELEASE ${tagged_release}
#define INSTALLER_VERSION \"${installer_version}\"
#define RESOURCE_BASE_VERSION ${resource_version}"
osx_bundle_sed="\
s/@PLIST_VERSION@/${git_version_str}/g
s/@PLIST_BUILD_DATE@/${build_date}/g
/ *@LOCALIZATIONS@/ {
r languages
d
}"
# Write it only if it's changed to avoid spurious rebuilds
# This bizzare comparison method is due to that newlines in shell variables are very exciting
case "$(cat ${version_h_path} 2> /dev/null)"
in
"${new_version_h}");;
*)
echo "${new_version_h}" > "${version_h_path}"
echo "${osx_bundle_sed}" > "${osx_bundle_sed_path}"
;;
esac