From a0414b585b97e798807e7a8fc62450f191ccbb08 Mon Sep 17 00:00:00 2001 From: Nikos Nikoleris Date: Thu, 30 Apr 2020 17:33:13 +0100 Subject: [PATCH] scons: Build the marshal binary in a bare minimum environment This change adds an additional bare minimum environment that includes python only and changes the marshal binary to compile using it. Change-Id: Id5d1ee6899796d746d8dc1a004cfe4795f040c55 Signed-off-by: Nikos Nikoleris Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28428 Reviewed-by: Gabe Black Maintainer: Gabe Black Tested-by: kokoro --- SConstruct | 9 ++++++--- src/SConscript | 8 ++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/SConstruct b/SConstruct index 334514812..ba4affaf7 100755 --- a/SConstruct +++ b/SConstruct @@ -709,6 +709,10 @@ if main['USE_PYTHON']: if not conf.CheckLib(lib): error("Can't find library %s required by python." % lib) +main.Prepend(CPPPATH=Dir('ext/pybind11/include/')) +# Bare minimum environment that only includes python +base_py_env = main.Clone() + # On Solaris you need to use libsocket for socket ops if not conf.CheckLibWithHeader(None, 'sys/socket.h', 'C++', 'accept(0,0,0);'): if not conf.CheckLibWithHeader('socket', 'sys/socket.h', @@ -1100,8 +1104,6 @@ for root, dirs, files in os.walk(ext_dir): gdb_xml_dir = joinpath(ext_dir, 'gdb-xml') Export('gdb_xml_dir') -main.Prepend(CPPPATH=Dir('ext/pybind11/include/')) - ################################################### # # This builder and wrapper method are used to set up a directory with @@ -1259,7 +1261,8 @@ for variant_path in variant_paths: # The src/SConscript file sets up the build rules in 'env' according # to the configured variables. It returns a list of environments, # one for each variant build (debug, opt, etc.) - SConscript('src/SConscript', variant_dir = variant_path, exports = 'env') + SConscript('src/SConscript', variant_dir=variant_path, + exports=['env', 'base_py_env']) # base help text Help(''' diff --git a/src/SConscript b/src/SConscript index c7251fceb..134e2a598 100644 --- a/src/SConscript +++ b/src/SConscript @@ -1,6 +1,6 @@ # -*- mode:python -*- -# Copyright (c) 2018 ARM Limited +# Copyright (c) 2018, 2020 ARM Limited # # The license below extends only to copyright in the software and shall # not be construed as granting a license to any other intellectual @@ -1140,7 +1140,7 @@ env.AlwaysBuild(tags) # Build a small helper that marshals the Python code using the same # version of Python as gem5. This is in an unorthodox location to # avoid building it for every variant. -py_marshal = env.Program('marshal', 'python/marshal.cc')[0] +py_marshal = base_py_env.Program('marshal', 'python/marshal.cc')[0] # Embed python files. All .py files that have been indicated by a # PySource() call in a SConscript need to be embedded into the M5 @@ -1196,8 +1196,8 @@ EmbeddedPython embedded_${sym}( code.write(str(target[0])) for source in PySource.all: - env.Command(source.cpp, [ py_marshal, source.tnode ], - MakeAction(embedPyFile, Transform("EMBED PY"))) + base_py_env.Command(source.cpp, [ py_marshal, source.tnode ], + MakeAction(embedPyFile, Transform("EMBED PY"))) Source(source.cpp, tags=source.tags, add_tags='python') ######################################################################## -- 2.30.2