Add support for python_defaults modules

Test: python_test.go
Change-Id: I2077414a5b06da5e660a1b48bfdb2eb926fb702f
This commit is contained in:
Nan Zhang 2017-07-20 17:43:37 -07:00
parent d4e641b6e9
commit a3fc4ba733
4 changed files with 89 additions and 5 deletions

View file

@ -238,6 +238,7 @@ bootstrap_go_package {
"python/androidmk.go", "python/androidmk.go",
"python/binary.go", "python/binary.go",
"python/builder.go", "python/builder.go",
"python/defaults.go",
"python/installer.go", "python/installer.go",
"python/library.go", "python/library.go",
"python/python.go", "python/python.go",

51
python/defaults.go Normal file
View file

@ -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
}

View file

@ -109,6 +109,7 @@ type pathMapping struct {
type Module struct { type Module struct {
android.ModuleBase android.ModuleBase
android.DefaultableModuleBase
properties BaseProperties properties BaseProperties
@ -194,6 +195,7 @@ func (p *Module) Init() android.Module {
} }
android.InitAndroidArchModule(p, p.hod, p.multilib) android.InitAndroidArchModule(p, p.hod, p.multilib)
android.InitDefaultableModule(p)
return p return p
} }

View file

@ -222,7 +222,28 @@ var (
mockFiles: map[string][]byte{ mockFiles: map[string][]byte{
bpFile: []byte(`subdirs = ["dir"]`), bpFile: []byte(`subdirs = ["dir"]`),
filepath.Join("dir", bpFile): []byte( 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", name: "lib5",
pkg_path: "a/b/", pkg_path: "a/b/",
srcs: [ srcs: [
@ -251,6 +272,7 @@ var (
python_binary_host { python_binary_host {
name: "bin", name: "bin",
defaults: ["default_lib"],
pkg_path: "e/", pkg_path: "e/",
srcs: [ srcs: [
"bin.py", "bin.py",
@ -271,10 +293,13 @@ var (
}, },
}`, }`,
), ),
filepath.Join("dir", "file1.py"): nil, filepath.Join("dir", "default.py"): nil,
filepath.Join("dir", "file2.py"): nil, filepath.Join("dir", "default_py2.py"): nil,
filepath.Join("dir", "bin.py"): nil, filepath.Join("dir", "default_py3.py"): nil,
filepath.Join("dir", "file4.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%' stubTemplateHost: []byte(`PYTHON_BINARY = '%interpreter%'
MAIN_FILE = '%main%'`), MAIN_FILE = '%main%'`),
}, },
@ -283,7 +308,9 @@ var (
name: "bin", name: "bin",
actualVersion: "PY3", actualVersion: "PY3",
pyRunfiles: []string{ pyRunfiles: []string{
"runfiles/e/default.py",
"runfiles/e/bin.py", "runfiles/e/bin.py",
"runfiles/e/default_py3.py",
"runfiles/e/file4.py", "runfiles/e/file4.py",
}, },
depsPyRunfiles: []string{ depsPyRunfiles: []string{
@ -314,6 +341,9 @@ func TestPythonModule(t *testing.T) {
android.ModuleFactoryAdaptor(PythonLibraryHostFactory)) android.ModuleFactoryAdaptor(PythonLibraryHostFactory))
ctx.RegisterModuleType("python_binary_host", ctx.RegisterModuleType("python_binary_host",
android.ModuleFactoryAdaptor(PythonBinaryHostFactory)) android.ModuleFactoryAdaptor(PythonBinaryHostFactory))
ctx.RegisterModuleType("python_defaults",
android.ModuleFactoryAdaptor(defaultsFactory))
ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
ctx.Register() ctx.Register()
ctx.MockFileSystem(d.mockFiles) ctx.MockFileSystem(d.mockFiles)
_, testErrs := ctx.ParseBlueprintsFiles(bpFile) _, testErrs := ctx.ParseBlueprintsFiles(bpFile)