HG: Add compiled hg revision and date to the standard M5 output.
This commit is contained in:
parent
2b4874449c
commit
907b28cc62
|
@ -332,6 +332,10 @@ env.Command('base/traceflags.hh', flags, generate.traceFlagsHH)
|
||||||
env.Command('base/traceflags.cc', flags, generate.traceFlagsCC)
|
env.Command('base/traceflags.cc', flags, generate.traceFlagsCC)
|
||||||
Source('base/traceflags.cc')
|
Source('base/traceflags.cc')
|
||||||
|
|
||||||
|
# Generate program_info.cc
|
||||||
|
env.Command('base/program_info.cc',
|
||||||
|
Value(str(SCons.Node.FS.default_fs.SConstruct_dir)), generate.programInfo)
|
||||||
|
|
||||||
# Build the zip file
|
# Build the zip file
|
||||||
py_compiled = []
|
py_compiled = []
|
||||||
py_zip_depends = []
|
py_zip_depends = []
|
||||||
|
@ -364,11 +368,19 @@ envList = []
|
||||||
# date.cc.
|
# date.cc.
|
||||||
def make_objs(sources, env):
|
def make_objs(sources, env):
|
||||||
objs = [env.Object(s) for s in sources]
|
objs = [env.Object(s) for s in sources]
|
||||||
|
|
||||||
# make date.cc depend on all other objects so it always gets
|
# make date.cc depend on all other objects so it always gets
|
||||||
# recompiled whenever anything else does
|
# recompiled whenever anything else does
|
||||||
date_obj = env.Object('base/date.cc')
|
date_obj = env.Object('base/date.cc')
|
||||||
|
|
||||||
|
# Make the generation of program_info.cc dependend on all
|
||||||
|
# the other cc files and the compiling of program_info.cc
|
||||||
|
# dependent on all the objects but program_info.o
|
||||||
|
pinfo_obj = env.Object('base/program_info.cc')
|
||||||
|
env.Depends('base/program_info.cc', sources)
|
||||||
env.Depends(date_obj, objs)
|
env.Depends(date_obj, objs)
|
||||||
objs.append(date_obj)
|
env.Depends(pinfo_obj, objs)
|
||||||
|
objs.extend([date_obj,pinfo_obj])
|
||||||
return objs
|
return objs
|
||||||
|
|
||||||
# Function to create a new build environment as clone of current
|
# Function to create a new build environment as clone of current
|
||||||
|
|
|
@ -31,8 +31,7 @@ import py_compile
|
||||||
import sys
|
import sys
|
||||||
import zipfile
|
import zipfile
|
||||||
|
|
||||||
from os.path import basename
|
from os.path import basename, exists, isdir, join
|
||||||
from os.path import exists
|
|
||||||
|
|
||||||
class DictImporter(object):
|
class DictImporter(object):
|
||||||
'''This importer takes a dictionary of arbitrary module names that
|
'''This importer takes a dictionary of arbitrary module names that
|
||||||
|
@ -527,3 +526,35 @@ extern const Flags *compoundFlags[];
|
||||||
'''
|
'''
|
||||||
|
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
def programInfo(self, target, source, env):
|
||||||
|
def gen_file(target, rev, node, date):
|
||||||
|
pi_stats = file(target, 'w')
|
||||||
|
print >>pi_stats, 'const char *hgRev = "%s:%s";' % (rev, node)
|
||||||
|
print >>pi_stats, 'const char *hgDate = "%s";' % date
|
||||||
|
pi_stats.close()
|
||||||
|
|
||||||
|
target = str(target[0])
|
||||||
|
scons_dir = eval(str(source[0]))
|
||||||
|
try:
|
||||||
|
import mercurial.demandimport, mercurial.hg, mercurial.ui
|
||||||
|
import mercurial.util, mercurial.node
|
||||||
|
if not exists(scons_dir) or not isdir(scons_dir) or \
|
||||||
|
not exists(join(scons_dir, ".hg")):
|
||||||
|
raise ValueError
|
||||||
|
repo = mercurial.hg.repository(mercurial.ui.ui(), scons_dir)
|
||||||
|
rev = mercurial.node.nullrev + repo.changelog.count()
|
||||||
|
changenode = repo.changelog.node(rev)
|
||||||
|
changes = repo.changelog.read(changenode)
|
||||||
|
date = mercurial.util.datestr(changes[2])
|
||||||
|
|
||||||
|
gen_file(target, rev, mercurial.node.hex(changenode), date)
|
||||||
|
|
||||||
|
mercurial.demandimport.disable()
|
||||||
|
except ImportError:
|
||||||
|
gen_file(target, "Unknown", "Unknown", "Unknown")
|
||||||
|
|
||||||
|
except:
|
||||||
|
print "in except"
|
||||||
|
gen_file(target, "Unknown", "Unknown", "Unknown")
|
||||||
|
mercurial.demandimport.disable()
|
||||||
|
|
|
@ -268,6 +268,10 @@ def main():
|
||||||
print "M5 compiled %s" % internal.core.cvar.compileDate;
|
print "M5 compiled %s" % internal.core.cvar.compileDate;
|
||||||
print "M5 started %s" % datetime.datetime.now().ctime()
|
print "M5 started %s" % datetime.datetime.now().ctime()
|
||||||
print "M5 executing on %s" % socket.gethostname()
|
print "M5 executing on %s" % socket.gethostname()
|
||||||
|
|
||||||
|
print "M5 revision %s" % internal.core.cvar.hgRev
|
||||||
|
print "M5 commit date %s" % internal.core.cvar.hgDate
|
||||||
|
|
||||||
print "command line:",
|
print "command line:",
|
||||||
for argv in sys.argv:
|
for argv in sys.argv:
|
||||||
print argv,
|
print argv,
|
||||||
|
|
|
@ -39,6 +39,8 @@
|
||||||
#include "sim/startup.hh"
|
#include "sim/startup.hh"
|
||||||
|
|
||||||
extern const char *compileDate;
|
extern const char *compileDate;
|
||||||
|
extern const char *hgRev;
|
||||||
|
extern const char *hgDate;
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%include "stdint.i"
|
%include "stdint.i"
|
||||||
|
@ -51,6 +53,8 @@ void SimStartup();
|
||||||
void doExitCleanup();
|
void doExitCleanup();
|
||||||
|
|
||||||
char *compileDate;
|
char *compileDate;
|
||||||
|
char *hgRev;
|
||||||
|
char *hgDate;
|
||||||
|
|
||||||
void setClockFrequency(Tick ticksPerSecond);
|
void setClockFrequency(Tick ticksPerSecond);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue