From 62a3f9b029f7ef4af1a2ea1e6362141164e48eab Mon Sep 17 00:00:00 2001 From: Refael Ackermann Date: Wed, 22 Aug 2018 11:02:27 -0400 Subject: [PATCH] build: add `--verbose` to `./configure` PR-URL: https://github.com/nodejs/node/pull/22450 Reviewed-By: Joyee Cheung --- configure.py | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/configure.py b/configure.py index ac1137a3419633..da696a92b48c1a 100755 --- a/configure.py +++ b/configure.py @@ -559,6 +559,12 @@ default=False, help='build V8 using GN instead of gyp') +parser.add_option('--verbose', + action='store_true', + dest='verbose', + default=False, + help='get more output from this script') + # Create compile_commands.json in out/Debug and out/Release. parser.add_option('-C', action='store_true', @@ -587,6 +593,14 @@ def warn(msg): # track if warnings occurred warn.warned = False +def print_verbose(x): + if not options.verbose: + return + if type(x) is str: + print x + else: + pprint.pprint(x, indent=2) + def b(value): """Returns the string 'true' if value is truthy, 'false' otherwise.""" if value: @@ -1199,7 +1213,7 @@ def without_ssl_error(option): def configure_static(o): if options.fully_static or options.partly_static: if flavor == 'mac': - print("Generation of static executable will not work on OSX " + warn("Generation of static executable will not work on OSX " "when using the default compilation environment") return @@ -1213,9 +1227,9 @@ def configure_static(o): def write(filename, data): filename = filename - print('creating %s' % filename) - f = open(filename, 'w+') - f.write(data) + print_verbose('creating %s' % filename) + with open(filename, 'w+') as f: + f.write(data) do_not_edit = '# Do not edit. Generated by the configure script.\n' @@ -1233,7 +1247,7 @@ def glob_to_var(dir_base, dir_sub, patch_dir): patchfile = '%s/%s/%s' % (dir_base, patch_dir, file) if os.path.isfile(patchfile): srcfile = '%s/%s' % (patch_dir, file) - print('Using version-specific floating patch %s' % patchfile) + warn('Using floating patch "%s" from "%s"' % (patchfile, dir_base)) list.append(srcfile) break return list @@ -1267,8 +1281,8 @@ def icu_download(path): if (md5 == gotmd5): return targetfile else: - print('Expected: %s *MISMATCH*' % md5) - print('\n ** Corrupted ZIP? Delete %s to retry download.\n' % targetfile) + error('Expected: %s *MISMATCH*' % md5) + error('\n ** Corrupted ZIP? Delete %s to retry download.\n' % targetfile) return None icu_config = { 'variables': {} @@ -1369,7 +1383,7 @@ def write_config(data, name): # --with-icu-source processing # now, check that they didn't pass --with-icu-source=deps/icu elif with_icu_source and os.path.abspath(icu_full_path) == os.path.abspath(with_icu_source): - print('Ignoring redundant --with-icu-source=%s' % with_icu_source) + warn('Ignoring redundant --with-icu-source=%s' % with_icu_source) with_icu_source = None # if with_icu_source is still set, try to use it. if with_icu_source: @@ -1412,7 +1426,7 @@ def write_config(data, name): # ICU source dir relative to tools/icu (for .gyp file) o['variables']['icu_path'] = icu_full_path if not os.path.isdir(icu_full_path): - print('* ECMA-402 (Intl) support didn\'t find ICU in %s..' % icu_full_path) + warn('* ECMA-402 (Intl) support didn\'t find ICU in %s..' % icu_full_path) # can we download (or find) a zipfile? localzip = icu_download(icu_full_path) if localzip: @@ -1421,7 +1435,7 @@ def write_config(data, name): error('''Cannot build Intl without ICU in %s. Fix, or disable with "--with-intl=none"''' % icu_full_path) else: - print('* Using ICU in %s' % icu_full_path) + print_verbose('* Using ICU in %s' % icu_full_path) # Now, what version of ICU is it? We just need the "major", such as 54. # uvernum.h contains it as a #define. uvernum_h = os.path.join(icu_full_path, 'source/common/unicode/uvernum.h') @@ -1584,7 +1598,7 @@ def make_bin_override(): if make_global_settings: output['make_global_settings'] = make_global_settings -pprint.pprint(output, indent=2) +print_verbose(output) write('config.gypi', do_not_edit + pprint.pformat(output, indent=2) + '\n') @@ -1623,9 +1637,11 @@ def make_bin_override(): if options.compile_commands_json: gyp_args += ['-f', 'compile_commands_json'] +# pass the leftover positional arguments to GYP gyp_args += args -if warn.warned: +if warn.warned and not options.verbose: warn('warnings were emitted in the configure phase') +print_verbose("running: \n " + " ".join(['python', 'tools/gyp_node.py'] + gyp_args)) run_gyp(gyp_args)