Jason Lowe-Power has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/63151?usp=email )

Change subject: python: Update -c to work like normal python
......................................................................

python: Update -c to work like normal python

In python, when you use -c it consumes all subsequent parameters and
appends them to argv. Now, gem5 and python behave the same with -c.

Python:
python -c "import sys; print(sys.argv)" --hello -j
['-c', '--hello', '-j']

gem5:
gem5.opt -c "import sys; print(sys.argv)" --hello -j
gem5 Simulator System.  https://www.gem5.org
gem5 is copyrighted software; use the --copyright option for details.

gem5 version [DEVELOP-FOR-22.1]
gem5 compiled Oct 17 2022 15:47:46
gem5 started Oct 17 2022 15:53:45
gem5 executing on challenger, pid 4021103
command line: build/ALL/gem5.opt -c 'import sys; print(sys.argv)' --hello -j

['-c', '--hello', '-j']

Change-Id: I53e87712be9523e0583149235c9787c92618f884
Signed-off-by: Jason Lowe-Power <ja...@lowepower.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/63151
Tested-by: kokoro <noreply+kok...@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandb...@arm.com>
Maintainer: Andreas Sandberg <andreas.sandb...@arm.com>
---
M src/python/m5/main.py
1 file changed, 53 insertions(+), 9 deletions(-)

Approvals:
  Andreas Sandberg: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass




diff --git a/src/python/m5/main.py b/src/python/m5/main.py
index 2f11633..205f3f1 100644
--- a/src/python/m5/main.py
+++ b/src/python/m5/main.py
@@ -176,6 +176,23 @@
"-v", "--verbose", action="count", default=0, help="Increase verbosity"
     )

+ # To make gem5 mimic python better. After `-c` we should consume all other
+    # arguments and add those to argv.
+    def collect_args(option, opt_str, value, parser):
+        extra_args = parser.rargs[:]
+        del parser.rargs[:]
+        setattr(parser.values, option.dest, (value, extra_args))
+
+    option(
+        "-c",
+        type=str,
+        help="program passed in as string (terminates option list)",
+        default="",
+        metavar="cmd",
+        action="callback",
+        callback=collect_args,
+    )
+
     # Statistics options
     group("Statistics Options")
     option(
@@ -281,14 +298,6 @@
help="List all built-in SimObjects, their params and default values",
     )

-    option(
-        "-c",
-        type=str,
-        help="program passed in as string (terminates option list)",
-        default="",
-        metavar="cmd",
-    )
-
     arguments = options.parse_args()
     return options, arguments

@@ -556,8 +565,9 @@
     sys.argv = arguments

     if options.c:
-        filedata = options.c
+        filedata = options.c[0]
         filecode = compile(filedata, "<string>", "exec")
+        sys.argv = ["-c"] + options.c[1]
         scope = {"__name__": "__m5_main__"}
     else:
         sys.path = [os.path.dirname(sys.argv[0])] + sys.path

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/63151?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I53e87712be9523e0583149235c9787c92618f884
Gerrit-Change-Number: 63151
Gerrit-PatchSet: 4
Gerrit-Owner: Jason Lowe-Power <power...@gmail.com>
Gerrit-Reviewer: Andreas Sandberg <andreas.sandb...@arm.com>
Gerrit-Reviewer: Jason Lowe-Power <ja...@lowepower.com>
Gerrit-Reviewer: Jason Lowe-Power <power...@gmail.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org

Reply via email to