base,misc: Added version to code
authorBobby R. Bruce <bbruce@ucdavis.edu>
Mon, 13 Apr 2020 21:01:11 +0000 (14:01 -0700)
committerBobby R. Bruce <bbruce@ucdavis.edu>
Wed, 22 Apr 2020 19:50:39 +0000 (19:50 +0000)
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 <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/SConscript
src/base/SConscript
src/base/version.cc [new file with mode: 0644]
src/python/m5/main.py
src/python/pybind11/core.cc
tests/gem5/verifier.py

index 90f9b76831adf82cf7295b8a2421bfadaa00de63..c7251fcebb71e9de11ba7bba3e9c5d55f1b76233 100644 (file)
@@ -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_'):
index f2fb91cadb9b2db6e930dcdd02d744d105677323..fe4e3613b07b5a5ce2afb2b15f2c028ee689b368 100644 (file)
@@ -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 (file)
index 0000000..7182b55
--- /dev/null
@@ -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]";
index 82ef4d99da2ce873100b5362677265eb18d772a9..6fe92180ee986c47b475d7afe38cb9e18b884f91 100644 (file)
@@ -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" %
index 4b7defed3da9a55bb067fb10668362daf12f6cc9..8655d736db7891414453e290b489a3da91aecce0 100644 (file)
@@ -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);
index a7e6d4ed2aad04b242b33a7c2a0632017e21ab03..73a7499c731497f612bf64385ee39ec18fca3a61 100644 (file)
@@ -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 '),