From af4b13dbe4c4063f784777fc4f58b6fd4f727c6a Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Wed, 14 Sep 2022 15:25:15 -0700 Subject: Add flag to not add top-level modules to PYTHONPATH stub_template_host.txt added all the top-level modules to the PYTHONPATH, which isn't correct, and caused absl.logging to override the built-in logging module. Removing this also makes it more consistent with python binaries built with embedded_launcher: true. embedded_launcher: true binaries don't add the top-level modules. Fixes: 245583294 Test: m py_dont_add_top_level_dirs_test && out/host/linux-x86/testcases/py_dont_add_top_level_dirs_test/x86_64/py_dont_add_top_level_dirs_test Change-Id: Id3069565d2b2c4b2bda0ff5301e757a7b4201751 --- python/binary.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'python/binary.go') diff --git a/python/binary.go b/python/binary.go index af29bb6b8..9c8c1f43b 100644 --- a/python/binary.go +++ b/python/binary.go @@ -116,6 +116,14 @@ type BinaryProperties struct { // doesn't exist next to the Android.bp, this attribute doesn't need to be set to true // explicitly. Auto_gen_config *bool + + // Currently, both the root of the zipfile and all the directories 1 level + // below that are added to the python path. When this flag is set to true, + // only the root of the zipfile will be added to the python path. This flag + // will be removed after all the python modules in the tree have been updated + // to support it. When using embedded_launcher: true, this is already the + // behavior. The default is currently false. + Dont_add_top_level_directories_to_path *bool } type binaryDecorator struct { @@ -128,10 +136,6 @@ type IntermPathProvider interface { IntermPathForModuleOut() android.OptionalPath } -var ( - StubTemplateHost = "build/soong/python/scripts/stub_template_host.txt" -) - func NewBinary(hod android.HostOrDeviceSupported) (*Module, *binaryDecorator) { module := newModule(hod, android.MultilibFirst) decorator := &binaryDecorator{pythonInstaller: NewPythonInstaller("bin", "")} @@ -180,9 +184,12 @@ func (binary *binaryDecorator) bootstrap(ctx android.ModuleContext, actualVersio }) } + addTopDirectoriesToPath := !proptools.BoolDefault(binary.binaryProperties.Dont_add_top_level_directories_to_path, false) + binFile := registerBuildActionForParFile(ctx, embeddedLauncher, launcherPath, binary.getHostInterpreterName(ctx, actualVersion), - main, binary.getStem(ctx), append(android.Paths{srcsZip}, depsSrcsZips...)) + main, binary.getStem(ctx), append(android.Paths{srcsZip}, depsSrcsZips...), + addTopDirectoriesToPath) return android.OptionalPathForPath(binFile) } -- cgit v1.2.3-59-g8ed1b