Add support for python_defaults modules
Test: python_test.go
Change-Id: I2077414a5b06da5e660a1b48bfdb2eb926fb702f
diff --git a/python/defaults.go b/python/defaults.go
new file mode 100644
index 0000000..641aca4
--- /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 d462af1..e63c26c 100644
--- a/python/python.go
+++ b/python/python.go
@@ -109,6 +109,7 @@
type Module struct {
android.ModuleBase
+ android.DefaultableModuleBase
properties BaseProperties
@@ -194,6 +195,7 @@
}
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 5e41877..8737302 100644
--- a/python/python_test.go
+++ b/python/python_test.go
@@ -222,7 +222,28 @@
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 @@
python_binary_host {
name: "bin",
+ defaults: ["default_lib"],
pkg_path: "e/",
srcs: [
"bin.py",
@@ -271,10 +293,13 @@
},
}`,
),
- 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 @@
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 @@
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)