python: Remove Python 'pipes' module

This is scheduled for removal from Python in 3.13:
https://docs.python.org/3/library/pipes.html.

The 'shlex.quote' function can replace the 'pipes.quote' function used
in "main.py". A special wrapper has been made to account for the Windows
case which 'shlex.quote' doesn't handle.

Change-Id: I9c84605f0ccd8468b9cab6cece6248ef8c2107f0
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/71678
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
This commit is contained in:
Bobby R. Bruce
2023-06-13 17:42:23 -07:00
committed by Bobby Bruce
parent 82587ce71b
commit a63d376ecd

View File

@@ -496,10 +496,23 @@ def main():
% (socket.gethostname(), os.getpid())
)
# in Python 3 pipes.quote() is moved to shlex.quote()
import pipes
def quote(arg: str) -> str:
"""Quotes a string for printing in a shell. In addition to Unix,
this is designed to handle the problematic Windows cases where
'shlex.quote' doesn't work"""
print("command line:", " ".join(map(pipes.quote, sys.argv)))
if os.name == "nt" and os.sep == "\\":
# If a Windows machine, we manually quote the string.
arg = arg.replace('"', '\\"')
if re.search("\s", args):
# We quote args which have whitespace.
arg = '"' + arg + '"'
return arg
import shlex
return shlex.quote(arg)
print("command line:", " ".join(map(quote, sys.argv)))
print()
# check to make sure we can find the listed script