summaryrefslogtreecommitdiff
path: root/buildutil
diff options
context:
space:
mode:
authorDieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>2008-01-17 23:07:45 (GMT)
committerDieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>2008-01-17 23:07:45 (GMT)
commitfe2a596b9b968b7df225d1c47246b25434c8d469 (patch)
treee6c62726f7b548c09a60bdb4bccedade47de769b /buildutil
parent880ee6e7feb33daeb94c6a1195c8eb4202a570b0 (diff)
downloadvdr-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-xbuildutil/version-util75
-rw-r--r--buildutil/version-util.awk48
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; }