From 3d81138852bad568fdff42012e8fd8d1e8b9cc87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chojnowski?= Date: Tue, 6 Feb 2024 19:46:26 +0100 Subject: [PATCH] configure.py: don't modify `modes` in write_build_file() The true motivation for this patch is a certain problem with configure.py in scylla-enterprise, which can only be solved by moving the `extra_cxxflags` lines before configure_seastar(). This patch does that by hoisting get_extra_cxxflags() up to create_build_system(). But this patch makes sense even if we disregard the real motivation. It's weird that a function called `write_build_file()` adds additional build flags on its own. Closes scylladb/scylladb#17189 --- configure.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/configure.py b/configure.py index f6eabe1179..b02502876d 100755 --- a/configure.py +++ b/configure.py @@ -1942,16 +1942,6 @@ def write_build_file(f, for mode in build_modes: modeval = modes[mode] - modeval.update(query_seastar_flags(f'{outdir}/{mode}/seastar/seastar.pc', - modeval['build_seastar_shared_libs'], - args.staticcxx)) - - extra_cxxflags = ' '.join(get_extra_cxxflags(mode, modeval, args.cxx, args.debuginfo)) - modeval['cxxflags'] += f' {extra_cxxflags}' - - modeval['per_src_extra_cxxflags']['release.cc'] = ' '.join(get_release_cxxflags(scylla_version, - scylla_release)) - fmt_lib = 'fmt' f.write(textwrap.dedent('''\ cxx_ld_flags_{mode} = {cxx_ld_flags} @@ -2419,6 +2409,14 @@ def create_build_system(args): os.makedirs(outdir, exist_ok=True) + scylla_product, scylla_version, scylla_release = generate_version(args.date_stamp) + + for mode, mode_config in build_modes.items(): + extra_cxxflags = ' '.join(get_extra_cxxflags(mode, mode_config, args.cxx, args.debuginfo)) + mode_config['cxxflags'] += f' {extra_cxxflags}' + + mode_config['per_src_extra_cxxflags']['release.cc'] = ' '.join(get_release_cxxflags(scylla_version, scylla_release)) + if not args.dist_only: # args.buildfile builds seastar with the rules of # {outdir}/{mode}/seastar/build.ninja, and @@ -2426,9 +2424,13 @@ def create_build_system(args): for mode, mode_config in build_modes.items(): configure_seastar(outdir, mode, mode_config) + for mode, mode_config in build_modes.items(): + mode_config.update(query_seastar_flags(f'{outdir}/{mode}/seastar/seastar.pc', + mode_config['build_seastar_shared_libs'], + args.staticcxx)) + ninja = find_ninja() with open(args.buildfile, 'w') as f: - scylla_product, scylla_version, scylla_release = generate_version(args.date_stamp) arch = platform.machine() write_build_file(f, arch,