changeset 9e1f352d6761 in /z/repo/m5 details: http://repo.m5sim.org/m5?cmd=changeset;node=9e1f352d6761 summary: HG: Add compiled hg revision and date to the standard M5 output.
changeset 08bd3709d482 in /z/repo/m5 details: http://repo.m5sim.org/m5?cmd=changeset;node=08bd3709d482 summary: Scripts: Check for the appropriate build type as soon as possible. diffstat: 6 files changed, 9 insertions(+), 1 deletion(-) configs/example/fs.py | 2 ++ configs/example/se.py | 2 ++ src/SConscript | 2 ++ src/python/generate.py | 1 - src/python/m5/main.py | 2 ++ src/python/swig/core.i | 1 + diffs (157 lines): diff -r d63afee4c46a -r 08bd3709d482 configs/example/fs.py --- a/configs/example/fs.py Thu Jun 12 01:54:21 2008 -0400 +++ b/configs/example/fs.py Fri Jun 13 01:09:06 2008 -0400 @@ -29,6 +29,10 @@ import optparse, os, sys import optparse, os, sys import m5 + +if not m5.build_env['FULL_SYSTEM']: + m5.panic("This script requires full-system mode (*_FS).") + from m5.objects import * m5.AddToPath('../common') from FSConfig import * @@ -36,9 +40,6 @@ from Benchmarks import * from Benchmarks import * import Simulation from Caches import * - -if not m5.build_env['FULL_SYSTEM']: - m5.panic("This script requires full-system mode (ALPHA_FS).") # Get paths we might need. It's expected this file is in m5/configs/example. config_path = os.path.dirname(os.path.abspath(__file__)) diff -r d63afee4c46a -r 08bd3709d482 configs/example/se.py --- a/configs/example/se.py Thu Jun 12 01:54:21 2008 -0400 +++ b/configs/example/se.py Fri Jun 13 01:09:06 2008 -0400 @@ -31,6 +31,10 @@ # "m5 test.py" import m5 + +if m5.build_env['FULL_SYSTEM']: + m5.panic("This script requires syscall emulation mode (*_SE).") + from m5.objects import * import os, optparse, sys m5.AddToPath('../common') diff -r d63afee4c46a -r 08bd3709d482 src/SConscript --- a/src/SConscript Thu Jun 12 01:54:21 2008 -0400 +++ b/src/SConscript Fri Jun 13 01:09:06 2008 -0400 @@ -332,6 +332,10 @@ env.Command('base/traceflags.cc', flags, env.Command('base/traceflags.cc', flags, generate.traceFlagsCC) 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 py_compiled = [] py_zip_depends = [] @@ -364,11 +368,19 @@ envList = [] # date.cc. def make_objs(sources, env): objs = [env.Object(s) for s in sources] + # make date.cc depend on all other objects so it always gets # recompiled whenever anything else does 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) - objs.append(date_obj) + env.Depends(pinfo_obj, objs) + objs.extend([date_obj,pinfo_obj]) return objs # Function to create a new build environment as clone of current diff -r d63afee4c46a -r 08bd3709d482 src/python/generate.py --- a/src/python/generate.py Thu Jun 12 01:54:21 2008 -0400 +++ b/src/python/generate.py Fri Jun 13 01:09:06 2008 -0400 @@ -31,8 +31,7 @@ import sys import sys import zipfile -from os.path import basename -from os.path import exists +from os.path import basename, exists, isdir, join class DictImporter(object): '''This importer takes a dictionary of arbitrary module names that @@ -527,3 +526,35 @@ extern const Flags *compoundFlags[]; ''' 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() diff -r d63afee4c46a -r 08bd3709d482 src/python/m5/main.py --- a/src/python/m5/main.py Thu Jun 12 01:54:21 2008 -0400 +++ b/src/python/m5/main.py Fri Jun 13 01:09:06 2008 -0400 @@ -268,6 +268,10 @@ def main(): print "M5 compiled %s" % internal.core.cvar.compileDate; print "M5 started %s" % datetime.datetime.now().ctime() 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:", for argv in sys.argv: print argv, diff -r d63afee4c46a -r 08bd3709d482 src/python/swig/core.i --- a/src/python/swig/core.i Thu Jun 12 01:54:21 2008 -0400 +++ b/src/python/swig/core.i Fri Jun 13 01:09:06 2008 -0400 @@ -39,6 +39,8 @@ #include "sim/startup.hh" extern const char *compileDate; +extern const char *hgRev; +extern const char *hgDate; %} %include "stdint.i" @@ -51,6 +53,8 @@ void doExitCleanup(); void doExitCleanup(); char *compileDate; +char *hgRev; +char *hgDate; void setClockFrequency(Tick ticksPerSecond); _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev