From 571ab4ad702c234d71ffb384e80f84ac17b22923 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 13 Apr 2020 14:01:11 -0700 Subject: [PATCH] base,misc: Added version to code This version ID string can be accessed from elsewhere in the CPP codebase using `extern const char *gem5Version;`. The python variable "gem5Version" may be accessed in by importing the generated "defines.py". When gem5 now runs it will output the version currently being used to the CLI. Change-Id: I4feb6b7317cd2922c56eb8ce3e532b0bfa0e6ed3 Issue-on: https://gem5.atlassian.net/browse/GEM5-411 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27787 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/SConscript | 1 + src/base/SConscript | 1 + src/base/version.cc | 29 +++++++++++++++++++++++++++++ src/python/m5/main.py | 2 ++ src/python/pybind11/core.cc | 2 ++ tests/gem5/verifier.py | 1 + 6 files changed, 36 insertions(+) create mode 100644 src/base/version.cc diff --git a/src/SConscript b/src/SConscript index 90f9b7683..c7251fceb 100644 --- a/src/SConscript +++ b/src/SConscript @@ -830,6 +830,7 @@ import m5.util buildEnv = m5.util.SmartDict($build_env) compileDate = _m5.core.compileDate +gem5Version = _m5.core.gem5Version _globals = globals() for key,val in _m5.core.__dict__.items(): if key.startswith('flag_'): diff --git a/src/base/SConscript b/src/base/SConscript index f2fb91cad..fe4e3613b 100644 --- a/src/base/SConscript +++ b/src/base/SConscript @@ -73,6 +73,7 @@ Source('statistics.cc') Source('str.cc') GTest('str.test', 'str.test.cc', 'str.cc') Source('time.cc') +Source('version.cc') Source('trace.cc') GTest('trie.test', 'trie.test.cc') Source('types.cc') diff --git a/src/base/version.cc b/src/base/version.cc new file mode 100644 index 000000000..7182b5507 --- /dev/null +++ b/src/base/version.cc @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2020 The Regents of The University of California + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +const char *gem5Version = "[develop]"; diff --git a/src/python/m5/main.py b/src/python/m5/main.py index 82ef4d99d..6fe92180e 100644 --- a/src/python/m5/main.py +++ b/src/python/m5/main.py @@ -273,6 +273,7 @@ def main(*args): done = True print('Build information:') print() + print('gem5 version %s' % defines.gem5Version) print('compiled %s' % defines.compileDate) print('build options:') keys = list(defines.buildEnv.keys()) @@ -336,6 +337,7 @@ def main(*args): print(brief_copyright) print() + print("gem5 version %s" % defines.gem5Version) print("gem5 compiled %s" % defines.compileDate) print("gem5 started %s" % diff --git a/src/python/pybind11/core.cc b/src/python/pybind11/core.cc index 4b7defed3..8655d736d 100644 --- a/src/python/pybind11/core.cc +++ b/src/python/pybind11/core.cc @@ -79,6 +79,7 @@ PybindSimObjectResolver::resolveSimObject(const std::string &name) } extern const char *compileDate; +extern const char *gem5Version; #ifdef DEBUG const bool flag_DEBUG = true; @@ -260,6 +261,7 @@ pybind_init_core(py::module &m_native) /* TODO: These should be read-only */ m_core.attr("compileDate") = py::cast(compileDate); + m_core.attr("gem5Version") = py::cast(gem5Version); m_core.attr("flag_DEBUG") = py::cast(flag_DEBUG); m_core.attr("flag_DEBUG") = py::cast(flag_DEBUG); diff --git a/tests/gem5/verifier.py b/tests/gem5/verifier.py index a7e6d4ed2..73a7499c7 100644 --- a/tests/gem5/verifier.py +++ b/tests/gem5/verifier.py @@ -127,6 +127,7 @@ class MatchStdout(DerivedGoldStandard): _file = constants.gem5_simulation_stdout _default_ignore_regex = [ re.compile('^Redirecting (stdout|stderr) to'), + re.compile('^gem5 version '), re.compile('^gem5 compiled '), re.compile('^gem5 started '), re.compile('^gem5 executing on '), -- 2.30.2