aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
authorNan Zhang <nanzhang@google.com>2017-07-20 17:43:37 -0700
committerNan Zhang <nanzhang@google.com>2017-09-05 17:31:24 -0700
commita3fc4ba733f566074cab3aa0fc6d477c380759ae (patch)
tree6ce3b5285d8844c2fca0f04d69f9d22f9310a9a9 /python
parentd4e641b6e941d8aeeebdb17786037931184dc0a2 (diff)
downloadbuild_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.go51
-rw-r--r--python/python.go2
-rw-r--r--python/python_test.go40
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)