Bobby Bruce has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/71741?usp=email )
Change subject: scons,stdlib: Remove deprecated 'distutils' module
......................................................................
scons,stdlib: Remove deprecated 'distutils' module
The Python module 'distutils' will be removed in Python 3.12:
https://docs.python.org/3/library/distutils.html
This patch removed usage of 'distutils' in the gem5 code base.
M src/SConscript
M src/python/gem5/resources/client_api/client_wrapper.py
2 files changed, 22 insertions(+), 8 deletions(-)
Approvals:
kokoro: Regressions pass
Bobby Bruce: Looks good to me, approved; Looks good to me, approved
diff --git a/src/SConscript b/src/SConscript
index d26bf49..1b44303 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -39,7 +39,7 @@
import collections
import copy
-import distutils.spawn
+from shutil import which
import itertools
import os
import os.path
@@ -269,7 +269,7 @@
'''Add a Protocol Buffer to build'''
Source(source, tags, add_tags,
append={'CXXFLAGS': '-Wno-array-bounds'})
-env['PROTOC_GRPC'] = distutils.spawn.find_executable('grpc_cpp_plugin')
+env['PROTOC_GRPC'] = which('grpc_cpp_plugin')
if env['PROTOC_GRPC']:
with Configure(env) as conf:
if (not env['HAVE_PKG_CONFIG'] or
diff --git a/src/python/gem5/resources/client_api/client_wrapper.py
b/src/python/gem5/resources/client_api/client_wrapper.py
index 74ee831..69787a0 100644
--- a/src/python/gem5/resources/client_api/client_wrapper.py
+++ b/src/python/gem5/resources/client_api/client_wrapper.py
@@ -27,8 +27,7 @@
from .jsonclient import JSONClient
from .atlasclient import AtlasClient
from _m5 import core
-from typing import Optional, Dict, List
-from distutils.version import StrictVersion
+from typing import Optional, Dict, List, Tuple
import itertools
from m5.util import warn
@@ -191,12 +190,27 @@
:param resources: A list of resources to sort.
:return: A list of sorted resources.
"""
+
def sort_tuple(resource: Dict) -> Tuple:
"""This is used for sorting resources by ID and version. First
the ID is sorted, then the version. In cases where the version
contains periods, it's assumed this is to separate a
"major.minor.hotfix" style versioning system. In which case,
the
value separated in the most-significant position is sorted
before
those less significant. If the value is a digit it is cast as
an
int, otherwise, it is cast as a string, to lower-case.
"""
to_return = (resource["id"].lower(),)
for val in resource["resource_version"].split("."):
if val.isdigit():
to_return += (int(val),)
else:
to_return += (str(val).lower(),)
return to_return
return sorted(
resources,
key=lambda resource: (
resource["id"].lower(),
StrictVersion(resource["resource_version"]),
),
key=lambda resource: sort_tuple(resource),
reverse=True,
)
--
To view, visit
https://gem5-review.googlesource.com/c/public/gem5/+/71741?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I1e3a944446149f3cd6cbf4211a1565b5f74c85a0
Gerrit-Change-Number: 71741
Gerrit-PatchSet: 2
Gerrit-Owner: Bobby Bruce bbruce@ucdavis.edu
Gerrit-Reviewer: Bobby Bruce bbruce@ucdavis.edu
Gerrit-Reviewer: Gabe Black gabe.black@gmail.com
Gerrit-Reviewer: kokoro noreply+kokoro@google.com
Gerrit-CC: kokoro noreply+kokoro@google.com