Bobby Bruce has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/71679?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.
Change-Id: I1e3a944446149f3cd6cbf4211a1565b5f74c85a0
---
M src/SConscript
M src/python/gem5/resources/client_api/client_wrapper.py
2 files changed, 22 insertions(+), 8 deletions(-)
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 ebf1b8e..d2baabc 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
@@ -247,12 +246,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/+/71679?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: public/gem5
Gerrit-Branch: release-staging-v23-0
Gerrit-Change-Id: I1e3a944446149f3cd6cbf4211a1565b5f74c85a0
Gerrit-Change-Number: 71679
Gerrit-PatchSet: 1
Gerrit-Owner: Bobby Bruce <bbr...@ucdavis.edu>
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org