diff options
author | Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de> | 2008-01-18 00:07:45 +0100 |
---|---|---|
committer | Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de> | 2008-01-18 00:07:45 +0100 |
commit | fe2a596b9b968b7df225d1c47246b25434c8d469 (patch) | |
tree | e6c62726f7b548c09a60bdb4bccedade47de769b /buildutil | |
parent | 880ee6e7feb33daeb94c6a1195c8eb4202a570b0 (diff) | |
download | vdr-plugin-live-fe2a596b9b968b7df225d1c47246b25434c8d469.tar.gz vdr-plugin-live-fe2a596b9b968b7df225d1c47246b25434c8d469.tar.bz2 |
Based CVS version calculation on checked out version of the single files.
Some script enhancements. Works now even when no version detection is
possible.
Diffstat (limited to 'buildutil')
-rwxr-xr-x | buildutil/version-util | 75 | ||||
-rw-r--r-- | buildutil/version-util.awk | 48 |
2 files changed, 109 insertions, 14 deletions
diff --git a/buildutil/version-util b/buildutil/version-util index f35d7f7..fa4b127 100755 --- a/buildutil/version-util +++ b/buildutil/version-util @@ -1,18 +1,32 @@ #!/bin/sh # ----------------------------------------------------------------------------- -# Small shell script to determine the last commit version of the project -# It checks for CVS and .git repositories. -# The output is a string that can be used in a define at compile time to -# automatically mark repository versions. -# For CVS repositories the string contains the date and time of the commit -# that lead to the current version of files. -# For git repositories the output contains the git-id of the current tree. -# An indication if localy modified files exist is added. +# Shell script to determine the last commit version of the project It +# checks for CVS and .git repositories. The output is a string that +# can be used in a define at compile time to automatically mark +# repository versions. For CVS repositories the string contains the +# date and time of the commit that lead to the current version of +# files. For git repositories the output contains the git-id of the +# current tree. An indication if localy modified files exist is +# added currently only for CVS. # ----------------------------------------------------------------------------- -[ $# -lt 1 ] && echo "USAGE: version-util <versionfile>" && exit 1 +[ $# -lt 1 ] && echo "USAGE: version-util [-F] <versionfile>" && exit 1 VERS_FILE=$1 +FORCE_EMPTY=0 + +[ "$VERS_FILE" == "-F" -a $# -lt 2 ] && echo "USAGE: version-util [-F] <versionfile>" && exit 1 + +if [ $# -gt 1 ]; then + VERS_FILE=$2 + FORCE_EMPTY=1 +fi + + +SCRIPT_PATH=`dirname $0` + +# echo "file: ${VERS_FILE}, force = $FORCE_EMPTY" +# exit 0 function createVers () { @@ -27,11 +41,32 @@ cat <<EOF EOF } +function fileVersions() +{ + for file in `find . -wholename '*CVS/Entries' -print` + do + sed -e's/\//|/g' -e's/|/\//' $file \ + | grep --label=$file -H '^/' \ + | sed -e's/\/CVS\/Entries://' -e's/\.\///' + done +} + +function cvsLog() +{ + echo "= == ===marker=== == =" + cvs log -b -N 2> /dev/null +} + +function cvsData() +{ + fileVersions + cvsLog +} + function cvsVers () { - d=`cvs log -r -N 2> /dev/null \ - | grep '^date:' \ - | cut -d ' ' -f 2-4 \ + d=`cvsData \ + | awk -f ${SCRIPT_PATH}/version-util.awk \ | sort -u \ | tail -1 \ | tr -d ' \-:'` @@ -51,6 +86,11 @@ function gitVers () echo "_git_${b}_${h}" } +function emptyVers () +{ + echo "" +} + function checkVers () { s=`$1` @@ -60,8 +100,6 @@ function checkVers () else v=`grep '^#define VERSION_SUFFIX' ${VERS_FILE} \ | awk '{print $3}'` - echo "s: $s" - echo "v: $v" if [ "$v" != "\"$s\"" ]; then echo "$VERS_FILE is being recreated!" createVers $s > ${VERS_FILE} @@ -69,10 +107,19 @@ function checkVers () fi } +if [ $FORCE_EMPTY -eq 1 ]; then + checkVers emptyVers + exit 0 +fi + if [ -d CVS ]; then checkVers cvsVers + exit 0 fi if [ -d .git ]; then checkVers gitVers + exit 0 fi + +checkVers emptyVers diff --git a/buildutil/version-util.awk b/buildutil/version-util.awk new file mode 100644 index 0000000..0ed59c5 --- /dev/null +++ b/buildutil/version-util.awk @@ -0,0 +1,48 @@ +BEGIN { + FS="|"; + init_revisions = 1; + rev_trigger = 0; + date_trigger = 0; +} + +/= == ===marker=== == =/ { + init_revisions = 0; + FS=";"; + next; +} + +init_revisions == 1 { + # print "XXX " $1, $2; + file_revs[$1] = $2; + next; +} + +/^Working file:/ { + rev_trigger = 0; + if (match($0, "^Working file: (.*)$", f) > 0) { + if (f[1] in file_revs) { + revision = "revision " file_revs[f[1]]; + rev_trigger = 1; + } + } + # print "FFF " f[1], revision, rev_trigger; + next; +} + +rev_trigger == 1 && /^revision/ { + if (match($0, revision) > 0) { + # print "FOUND " revision, $0; + rev_trigger = 0; + date_trigger = 1; + } + next; +} + +date_trigger == 1 { + if (match($1, "date: (.*)", d) > 0) { + print d[1]; + } + date_trigger = 0; +} + +{ next; } |