[gem5-dev] Change in gem5/gem5[develop]: base,misc: Added version to code
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
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(