Browse Source

improved svn version define regeneration

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2850 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.90
nedko 16 years ago
parent
commit
6b10babaeb
3 changed files with 102 additions and 14 deletions
  1. +2
    -1
      linux/dbus/jackdbus.c
  2. +52
    -0
      svnversion_regenerate.sh
  3. +48
    -13
      wscript

+ 2
- 1
linux/dbus/jackdbus.c View File

@@ -42,6 +42,7 @@
#include "jack/jslist.h"
#include "jack/control.h"
#include "sigsegv.h"
#include "svnversion.h"

FILE *g_logfile;
char *g_jackdbus_config_dir;
@@ -760,7 +761,7 @@ main (int argc, char **argv)
setup_sigsegv();

jack_info("------------------");
jack_info("Controller activated. Version %s (%s) built on %s", jack_get_version_string(), JACK_SVNREVISION, timestamp_str);
jack_info("Controller activated. Version %s (%s) built on %s", jack_get_version_string(), SVN_VERSION, timestamp_str);

if (!dbus_threads_init_default())
{


+ 52
- 0
svnversion_regenerate.sh View File

@@ -0,0 +1,52 @@
#!/bin/sh

#set -x

if test $# -ne 1 -a $# -ne 2
then
echo "Usage: "`basename "$0"`" <file> [define_name]"
exit 1
fi

OUTPUT_FILE="`pwd`/${1}"
TEMP_FILE="${OUTPUT_FILE}.tmp"

#echo svnversion...
#pwd
#echo $OUTPUT_FILE
#echo $TEMP_FILE

pushd .. > /dev/null

if test $# -eq 2
then
DEFINE=${2}
else
DEFINE=SVN_VERSION
fi

REV=`svnversion 2> /dev/null`
if test -z ${REV}
then
REV="unknown"
fi

echo "#define ${DEFINE} \"${REV}\"" > ${TEMP_FILE}
if test ! -f ${OUTPUT_FILE}
then
echo "Generated ${OUTPUT_FILE} (r${REV})"
cp ${TEMP_FILE} ${OUTPUT_FILE}
if test $? -ne 0; then exit 1; fi
else
if ! cmp -s ${OUTPUT_FILE} ${TEMP_FILE}
then echo "Regenerated ${OUTPUT_FILE} (r${REV})"
cp ${TEMP_FILE} ${OUTPUT_FILE}
if test $? -ne 0; then exit 1; fi
fi
fi

popd > /dev/null

rm ${TEMP_FILE}

exit $?

+ 48
- 13
wscript View File

@@ -7,6 +7,8 @@ import commands
from Configure import g_maxlen
#g_maxlen = 40
import shutil
import Task
import re

VERSION='1.9.0'
APPNAME='jack'
@@ -32,16 +34,29 @@ def display_feature(msg, build):
else:
display_msg(msg, "no", 'YELLOW')

def fetch_svn_revision(path):
svn_revision_file = "svnrev"
if os.access(svn_revision_file, os.R_OK):
f = open(svn_revision_file, 'r')
return f.read()
cmd = "LANG= "
cmd += "svnversion "
cmd += path
return commands.getoutput(cmd)
def create_svnversion_gen(bld, header='svnversion.h', define=None):
cmd = '../svnversion_regenerate.sh ${TGT}'
if define:
cmd += " " + define
cls = Task.simple_task_type('svnversion', cmd, color='BLUE')
cls.must_run = lambda self: True
#cls.before = 'cxx'

def sg(self):
rt = Params.h_file(self.m_outputs[0].abspath(self.env()))
return rt
cls.signature = sg

#def se(self):
# r = sg(self)
# return (r, r, r, r, r)
#cls.cache_sig = property(sg, None)
cls.cache_sig = None

tsk = cls('svnversion', bld.env().copy())
tsk.m_inputs = []
tsk.m_outputs = [bld.path.find_or_declare(header)]
tsk.prio = 1 # execute this task first

def set_options(opt):
# options provided by the modules
@@ -91,7 +106,6 @@ def configure(conf):
conf.define('MACH_RPC_MACH_SEMA', 1)
conf.define('__SMP__', 1)
conf.define('USE_POSIX_SHM', 1)
conf.define('JACK_SVNREVISION', fetch_svn_revision('.'))
conf.define('JACKMP', 1)
if conf.env['BUILD_JACKDBUS'] == True:
conf.define('JACK_DBUS', 1)
@@ -99,9 +113,23 @@ def configure(conf):
conf.define('JACK_MONITOR', 1)
conf.write_config_header('config.h')

display_msg("\n==================")
display_msg("JACK %s %s" % (VERSION, conf.get_define('JACK_SVNREVISION')))
svnrev = None
if os.access('svnversion.h', os.R_OK):
data = file('svnversion.h').read()
m = re.match(r'^#define SVN_VERSION "([^"]*)"$', data)
if m != None:
svnrev = m.group(1)

print
display_msg("==================")
version_msg = "JACK " + VERSION
if svnrev:
version_msg += " exported from r" + svnrev
else:
version_msg += " svn revision will checked and eventually updated during build"
print version_msg
print

display_msg("Install prefix", conf.env['PREFIX'], 'CYAN')
display_msg("Drivers directory", conf.env['ADDON_DIR'], 'CYAN')
display_feature('Build doxygen documentation', conf.env['BUILD_DOXYGEN_DOCS'])
@@ -130,6 +158,9 @@ def configure(conf):
print

def build(bld):
if not os.access('svnversion.h', os.R_OK):
create_svnversion_gen(bld)

# process subfolders from here
bld.add_subdirs('common')
if bld.env()['IS_LINUX']:
@@ -172,3 +203,7 @@ def build(bld):
os.popen("doxygen").read()
else:
Params.pprint('CYAN', "doxygen documentation already built.")

def dist_hook():
os.remove('svnversion_regenerate.sh')
os.system('../svnversion_regenerate.sh svnversion.h')

Loading…
Cancel
Save