Gabe Black has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/32115 )

Change subject: scons: Remove the AddLocalOption workaround.
......................................................................

scons: Remove the AddLocalOption workaround.

The "append" option of the Help() scons method can be used to avoid
clobbering the built in and local option help.

This has the nice side effect of making it easier to add options in
other files since you now only need the built in AddOption provided by
scons itself, not the custom AddLocalOption version.

Change-Id: Ifa566087797d578df0c90f8f4fca70c8152fbf63
---
M SConstruct
1 file changed, 40 insertions(+), 85 deletions(-)



diff --git a/SConstruct b/SConstruct
index 27a5a61..400af5b 100755
--- a/SConstruct
+++ b/SConstruct
@@ -99,75 +99,38 @@

 from m5.util import compareVersions, readCommand, readCommandWithReturn

-help_texts = {
-    "options" : "",
-    "global_vars" : "",
-    "local_vars" : ""
-}

-Export("help_texts")
-
-
-# There's a bug in scons in that (1) by default, the help texts from
-# AddOption() are supposed to be displayed when you type 'scons -h'
-# and (2) you can override the help displayed by 'scons -h' using the
-# Help() function, but these two features are incompatible: once
-# you've overridden the help text using Help(), there's no way to get
-# at the help texts from AddOptions.  See:
-#     https://github.com/SCons/scons/issues/2356
-#     https://github.com/SCons/scons/issues/2611
-# This hack lets us extract the help text from AddOptions and
-# re-inject it via Help().  Ideally someday this bug will be fixed and
-# we can just use AddOption directly.
-def AddLocalOption(*args, **kwargs):
-    col_width = 30
-
-    help = "  " + ", ".join(args)
-    if "help" in kwargs:
-        length = len(help)
-        if length >= col_width:
-            help += "\n" + " " * col_width
-        else:
-            help += " " * (col_width - length)
-        help += kwargs["help"]
-    help_texts["options"] += help + "\n"
-
-    AddOption(*args, **kwargs)
-
-AddLocalOption('--colors', dest='use_colors', action='store_true',
-               help="Add color to abbreviated scons output")
-AddLocalOption('--no-colors', dest='use_colors', action='store_false',
-               help="Don't add color to abbreviated scons output")
-AddLocalOption('--with-cxx-config', dest='with_cxx_config',
-               action='store_true',
-               help="Build with support for C++-based configuration")
-AddLocalOption('--default', dest='default', type='string', action='store',
-               help='Override which build_opts file to use for defaults')
-AddLocalOption('--ignore-style', dest='ignore_style', action='store_true',
-               help='Disable style checking hooks')
-AddLocalOption('--gold-linker', dest='gold_linker', action='store_true',
-               help='Use the gold linker')
-AddLocalOption('--no-lto', dest='no_lto', action='store_true',
-               help='Disable Link-Time Optimization for fast')
-AddLocalOption('--force-lto', dest='force_lto', action='store_true',
- help='Use Link-Time Optimization instead of partial linking' + - ' when the compiler doesn\'t support using them together.')
-AddLocalOption('--update-ref', dest='update_ref', action='store_true',
-               help='Update test reference outputs')
-AddLocalOption('--verbose', dest='verbose', action='store_true',
-               help='Print full tool command lines')
-AddLocalOption('--without-python', dest='without_python',
-               action='store_true',
-               help='Build without Python configuration support')
-AddLocalOption('--without-tcmalloc', dest='without_tcmalloc',
-               action='store_true',
-               help='Disable linking against tcmalloc')
-AddLocalOption('--with-ubsan', dest='with_ubsan', action='store_true',
-               help='Build with Undefined Behavior Sanitizer if available')
-AddLocalOption('--with-asan', dest='with_asan', action='store_true',
-               help='Build with Address Sanitizer if available')
-AddLocalOption('--with-systemc-tests', dest='with_systemc_tests',
-               action='store_true', help='Build systemc tests')
+AddOption('--colors', dest='use_colors', action='store_true',
+          help="Add color to abbreviated scons output")
+AddOption('--no-colors', dest='use_colors', action='store_false',
+          help="Don't add color to abbreviated scons output")
+AddOption('--with-cxx-config', dest='with_cxx_config', action='store_true',
+          help="Build with support for C++-based configuration")
+AddOption('--default', dest='default', type='string', action='store',
+          help='Override which build_opts file to use for defaults')
+AddOption('--ignore-style', dest='ignore_style', action='store_true',
+          help='Disable style checking hooks')
+AddOption('--gold-linker', dest='gold_linker', action='store_true',
+          help='Use the gold linker')
+AddOption('--no-lto', dest='no_lto', action='store_true',
+          help='Disable Link-Time Optimization for fast')
+AddOption('--force-lto', dest='force_lto', action='store_true',
+          help='Use Link-Time Optimization instead of partial linking' +
+               ' when the compiler doesn\'t support using them together.')
+AddOption('--update-ref', dest='update_ref', action='store_true',
+          help='Update test reference outputs')
+AddOption('--verbose', dest='verbose', action='store_true',
+          help='Print full tool command lines')
+AddOption('--without-python', dest='without_python', action='store_true',
+          help='Build without Python configuration support')
+AddOption('--without-tcmalloc', dest='without_tcmalloc', action='store_true',
+          help='Disable linking against tcmalloc')
+AddOption('--with-ubsan', dest='with_ubsan', action='store_true',
+          help='Build with Undefined Behavior Sanitizer if available')
+AddOption('--with-asan', dest='with_asan', action='store_true',
+          help='Build with Address Sanitizer if available')
+AddOption('--with-systemc-tests', dest='with_systemc_tests',
+          action='store_true', help='Build systemc tests')

 from gem5_scons import Transform, error, warning, summarize_warnings

@@ -289,7 +252,10 @@

 # Update main environment with values from ARGUMENTS & global_vars_file
 global_vars.Update(main)
-help_texts["global_vars"] += global_vars.GenerateHelpText(main)
+Help('''
+Global build variables:
+{help}
+'''.format(help=global_vars.GenerateHelpText(main)), append=True)

 # Save sticky variable settings back to current variables file
 global_vars.Save(global_vars_file, main)
@@ -1227,9 +1193,11 @@
     # Apply current variable settings to env
     sticky_vars.Update(env)

-    help_texts["local_vars"] += \
-        "Build variables for %s:\n" % variant_dir \
-                 + sticky_vars.GenerateHelpText(env)
+    Help('''
+Build variables for {dir}:
+{help}
+'''.format(dir=variant_dir, help=sticky_vars.GenerateHelpText(env)),
+         append=True)

     # Process variable settings.

@@ -1291,17 +1259,4 @@
     SConscript('src/SConscript', variant_dir=variant_path,
                exports=['env', 'marshal_env'])

-# base help text
-Help('''
-Usage: scons [scons options] [build variables] [target(s)]
-
-Extra scons options:
-%(options)s
-
-Global build variables:
-%(global_vars)s
-
-%(local_vars)s
-''' % help_texts)
-
 atexit.register(summarize_warnings)

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/32115
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: Ifa566087797d578df0c90f8f4fca70c8152fbf63
Gerrit-Change-Number: 32115
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <gabebl...@google.com>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to