[gem5-dev] Change in gem5/gem5[develop]: base,misc: Added version to code

2020-04-22 Thread Bobby R. Bruce (Gerrit) via gem5-dev
Bobby R. Bruce has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/27787 )


Change subject: base,misc: Added version to code
..

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 
---
M src/SConscript
M src/base/SConscript
A src/base/version.cc
M src/python/m5/main.py
M src/python/pybind11/core.cc
M tests/gem5/verifier.py
6 files changed, 36 insertions(+), 0 deletions(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/SConscript b/src/SConscript
index 90f9b76..c7251fc 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -830,6 +830,7 @@
 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 f2fb91c..fe4e361 100644
--- a/src/base/SConscript
+++ b/src/base/SConscript
@@ -73,6 +73,7 @@
 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 000..7182b55
--- /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 82ef4d9..6fe9218 100644
--- a/src/python/m5/main.py
+++ b/src/python/m5/main.py
@@ -273,6 +273,7 @@
 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 @@
 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 4b7defe..8655d73 100644
--- a/src/python/pybind11/core.cc
+++ b/src/python/pybind11/core.cc
@@ -79,6 +79,7 @@
 }

 extern const char *compileDate;
+extern const char *gem5Version;

 #ifdef DEBUG
 const bool flag_DEBUG = true;
@@ -260,6 +261,7 @@

 /* 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 a7e6d4e..73a7499 100644
--- a/tests/gem5/verifier.py
+++ b/tests/gem5/verifier.py

[gem5-dev] Change in gem5/gem5[develop]: base, misc: Added version to code

2020-04-13 Thread Bobby R. Bruce (Gerrit)
Bobby R. Bruce has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/27787 )



Change subject: base,misc: Added version to code
..

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". In this commit the version is fixed to 20.0.0.0; the
upcoming gem5 commit. 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
---
M src/SConscript
M src/base/SConscript
A src/base/version.cc
M src/python/m5/main.py
M src/python/pybind11/core.cc
M tests/gem5/verifier.py
6 files changed, 36 insertions(+), 0 deletions(-)



diff --git a/src/SConscript b/src/SConscript
index ed7e1ea..f6b58c5 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -833,6 +833,7 @@
 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 f2fb91c..fe4e361 100644
--- a/src/base/SConscript
+++ b/src/base/SConscript
@@ -73,6 +73,7 @@
 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 000..c5fbca0
--- /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 = "20.0.0.0";
diff --git a/src/python/m5/main.py b/src/python/m5/main.py
index 82ef4d9..6fe9218 100644
--- a/src/python/m5/main.py
+++ b/src/python/m5/main.py
@@ -273,6 +273,7 @@
 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 @@
 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 44e1833..329cd5c 100644
--- a/src/python/pybind11/core.cc
+++ b/src/python/pybind11/core.cc
@@ -79,6 +79,7 @@
 }

 extern const char *compileDate;
+extern const char *gem5Version;

 #ifdef DEBUG
 const bool flag_DEBUG = true;
@@ -260,6 +261,7 @@

 /* 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 a7e6d4e..73a7499 100644
--- a/tests/gem5/verifier.py
+++ b/tests/gem5/verifier.py
@@ -127,6 +127,7 @@
 _file = constants.gem5_simulation_stdout
 _default_ignore_regex = [
 re.compile('^Redirecting (stdout|stderr) to'),
+re.compile(