77 lines
2.8 KiB
Bash
Executable File
77 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# This script is called from tools/generateSourceTarball
|
|
# It is used to generate a ReleaseInfo.cmake file with commit information which
|
|
# enables compilation without needing to have git installed.
|
|
|
|
rm -f ReleaseInfo.cmake
|
|
|
|
# Get version description.
|
|
# Depending on whether you checked out a branch (dev) or a tag (release),
|
|
# "git describe" will return "5.0-gtk2-2-g12345678" or "5.0-gtk2", respectively.
|
|
gitDescribe="$(git describe --tags --always)"
|
|
|
|
# Get branch name.
|
|
# Will return empty if you checked out a commit or tag. Empty string handled later.
|
|
gitBranch="$(git symbolic-ref --short -q HEAD)"
|
|
|
|
# Get commit hash.
|
|
gitCommit="$(git rev-parse --short --verify HEAD)"
|
|
|
|
# Get commit date, YYYY-MM-DD.
|
|
gitCommitDate="$(git show -s --format=%cd --date=format:%Y-%m-%d)"
|
|
|
|
# Get number of commits since tagging. This is what gitDescribe uses.
|
|
# Works when checking out branch, tag or commit.
|
|
gitCommitsSinceTag="$(git rev-list --count HEAD --not $(git tag --merged HEAD))"
|
|
|
|
# Get number of commits since branching.
|
|
# Works when checking out branch, tag or commit.
|
|
gitCommitsSinceBranch="$(git rev-list --count HEAD --not --tags)"
|
|
|
|
if [[ -z $gitDescribe ]]; then
|
|
printf '%s\n' "Failed finding commit description, aborting."
|
|
exit 1
|
|
fi
|
|
if [[ -z $gitBranch ]]; then
|
|
printf '%s\n' "No branch found. Using commit description as branch name."
|
|
gitBranch="$gitDescribe"
|
|
fi
|
|
if [[ -z $gitCommit ]]; then
|
|
printf '%s\n' "Failed finding commit hash, aborting."
|
|
exit 1
|
|
fi
|
|
if [[ -z $gitCommitDate ]]; then
|
|
printf '%s\n' "Failed finding commit date, aborting."
|
|
exit 1
|
|
fi
|
|
|
|
# Create numeric version.
|
|
# This version is nonsense, either don't use it at all or use it only where you have no other choice, e.g. Inno Setup's VersionInfoVersion.
|
|
# Strip everything after hyphen, e.g. "5.0-gtk2" -> "5.0", "5.1-rc1" -> "5.1" (ergo BS).
|
|
if [[ -z $gitCommitsSinceTag ]]; then
|
|
gitVersionNumericBS="0.0.0"
|
|
else
|
|
gitVersionNumericBS="${gitDescribe%%-*}" # Remove everything after first hyphen.
|
|
gitVersionNumericBS="${gitVersionNumericBS}.${gitCommitsSinceTag}" # Remove everything until after first hyphen: 5.0
|
|
fi
|
|
|
|
cat <<EOF > ReleaseInfo.cmake
|
|
set(GIT_DESCRIBE $gitDescribe)
|
|
set(GIT_BRANCH $gitBranch)
|
|
set(GIT_COMMIT $gitCommit)
|
|
set(GIT_COMMIT_DATE $gitCommitDate)
|
|
set(GIT_COMMITS_SINCE_TAG $gitCommitsSinceTag)
|
|
set(GIT_COMMITS_SINCE_BRANCH $gitCommitsSinceBranch)
|
|
set(GIT_VERSION_NUMERIC_BS $gitVersionNumericBS)
|
|
EOF
|
|
|
|
printf '%s\n' "Git checkout information:" \
|
|
" Commit description: ${gitDescribe}" \
|
|
" Branch: ${gitBranch}" \
|
|
" Commit: ${gitCommit}" \
|
|
" Commit date: ${gitCommitDate}" \
|
|
" Commits since tag: ${gitCommitsSinceTag}" \
|
|
" Commits since branch: ${gitCommitsSinceBranch}" \
|
|
" Version (unreliable): ${gitVersionNumericBS}" \
|
|
""
|