diff options
author | Nan Zhang <nanzhang@google.com> | 2017-07-20 17:43:37 -0700 |
---|---|---|
committer | Nan Zhang <nanzhang@google.com> | 2017-09-05 17:31:24 -0700 |
commit | a3fc4ba733f566074cab3aa0fc6d477c380759ae (patch) | |
tree | 6ce3b5285d8844c2fca0f04d69f9d22f9310a9a9 /python | |
parent | d4e641b6e941d8aeeebdb17786037931184dc0a2 (diff) | |
download | build_soong-a3fc4ba733f566074cab3aa0fc6d477c380759ae.tar.gz build_soong-a3fc4ba733f566074cab3aa0fc6d477c380759ae.tar.bz2 build_soong-a3fc4ba733f566074cab3aa0fc6d477c380759ae.zip |
Add support for python_defaults modules
Test: python_test.go
Change-Id: I2077414a5b06da5e660a1b48bfdb2eb926fb702f
Diffstat (limited to 'python')
-rw-r--r-- | python/defaults.go | 51 | ||||
-rw-r--r-- | python/python.go | 2 | ||||
-rw-r--r-- | python/python_test.go | 40 |
3 files changed, 88 insertions, 5 deletions
diff --git a/python/defaults.go b/python/defaults.go new file mode 100644 index 00000000..641aca45 --- /dev/null +++ b/python/defaults.go @@ -0,0 +1,51 @@ +// Copyright 2017 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package python + +import ( + "android/soong/android" +) + +func init() { + android.RegisterModuleType("python_defaults", defaultsFactory) +} + +type Defaults struct { + android.ModuleBase + android.DefaultsModuleBase +} + +func (d *Defaults) GenerateAndroidBuildActions(ctx android.ModuleContext) { +} + +func (d *Defaults) DepsMutator(ctx android.BottomUpMutatorContext) { +} + +func defaultsFactory() android.Module { + return DefaultsFactory() +} + +func DefaultsFactory(props ...interface{}) android.Module { + module := &Defaults{} + + module.AddProperties(props...) + module.AddProperties( + &BaseProperties{}, + ) + + android.InitDefaultsModule(module) + + return module +} diff --git a/python/python.go b/python/python.go index d462af12..e63c26c4 100644 --- a/python/python.go +++ b/python/python.go @@ -109,6 +109,7 @@ type pathMapping struct { type Module struct { android.ModuleBase + android.DefaultableModuleBase properties BaseProperties @@ -194,6 +195,7 @@ func (p *Module) Init() android.Module { } android.InitAndroidArchModule(p, p.hod, p.multilib) + android.InitDefaultableModule(p) return p } diff --git a/python/python_test.go b/python/python_test.go index 5e418778..87373026 100644 --- a/python/python_test.go +++ b/python/python_test.go @@ -222,7 +222,28 @@ var ( mockFiles: map[string][]byte{ bpFile: []byte(`subdirs = ["dir"]`), filepath.Join("dir", bpFile): []byte( - `python_library_host { + `python_defaults { + name: "default_lib", + srcs: [ + "default.py", + ], + version: { + py2: { + enabled: true, + srcs: [ + "default_py2.py", + ], + }, + py3: { + enabled: false, + srcs: [ + "default_py3.py", + ], + }, + }, + } + + python_library_host { name: "lib5", pkg_path: "a/b/", srcs: [ @@ -251,6 +272,7 @@ var ( python_binary_host { name: "bin", + defaults: ["default_lib"], pkg_path: "e/", srcs: [ "bin.py", @@ -271,10 +293,13 @@ var ( }, }`, ), - filepath.Join("dir", "file1.py"): nil, - filepath.Join("dir", "file2.py"): nil, - filepath.Join("dir", "bin.py"): nil, - filepath.Join("dir", "file4.py"): nil, + filepath.Join("dir", "default.py"): nil, + filepath.Join("dir", "default_py2.py"): nil, + filepath.Join("dir", "default_py3.py"): nil, + filepath.Join("dir", "file1.py"): nil, + filepath.Join("dir", "file2.py"): nil, + filepath.Join("dir", "bin.py"): nil, + filepath.Join("dir", "file4.py"): nil, stubTemplateHost: []byte(`PYTHON_BINARY = '%interpreter%' MAIN_FILE = '%main%'`), }, @@ -283,7 +308,9 @@ var ( name: "bin", actualVersion: "PY3", pyRunfiles: []string{ + "runfiles/e/default.py", "runfiles/e/bin.py", + "runfiles/e/default_py3.py", "runfiles/e/file4.py", }, depsPyRunfiles: []string{ @@ -314,6 +341,9 @@ func TestPythonModule(t *testing.T) { android.ModuleFactoryAdaptor(PythonLibraryHostFactory)) ctx.RegisterModuleType("python_binary_host", android.ModuleFactoryAdaptor(PythonBinaryHostFactory)) + ctx.RegisterModuleType("python_defaults", + android.ModuleFactoryAdaptor(defaultsFactory)) + ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators) ctx.Register() ctx.MockFileSystem(d.mockFiles) _, testErrs := ctx.ParseBlueprintsFiles(bpFile) |