aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaewoong Jung <jungjw@google.com>2019-02-14 01:51:04 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2019-02-14 01:51:04 +0000
commitdfa4a486eb0146582fe015ac4466dc39ae0e5f7d (patch)
tree7d8c76b52367d37c43940cc44a74247ebae19a15
parente9433ca127cdadd41fe3521b2aa2cd12949dbba8 (diff)
parent7089c27c07afef014b49455e41dc586f6d418b3f (diff)
downloadandroid_build_soong-dfa4a486eb0146582fe015ac4466dc39ae0e5f7d.tar.gz
android_build_soong-dfa4a486eb0146582fe015ac4466dc39ae0e5f7d.tar.bz2
android_build_soong-dfa4a486eb0146582fe015ac4466dc39ae0e5f7d.zip
Merge "Update Soong docs generator for blueprint changes"
-rw-r--r--android/register.go16
-rw-r--r--cmd/soong_build/main.go6
-rw-r--r--cmd/soong_build/writedocs.go17
3 files changed, 32 insertions, 7 deletions
diff --git a/android/register.go b/android/register.go
index 10e14fe0..19745fed 100644
--- a/android/register.go
+++ b/android/register.go
@@ -20,7 +20,7 @@ import (
type moduleType struct {
name string
- factory blueprint.ModuleFactory
+ factory ModuleFactory
}
var moduleTypes []moduleType
@@ -40,8 +40,6 @@ type mutator struct {
parallel bool
}
-var mutators []*mutator
-
type ModuleFactory func() Module
// ModuleFactoryAdaptor wraps a ModuleFactory into a blueprint.ModuleFactory by converting a Module
@@ -65,7 +63,7 @@ func SingletonFactoryAdaptor(factory SingletonFactory) blueprint.SingletonFactor
}
func RegisterModuleType(name string, factory ModuleFactory) {
- moduleTypes = append(moduleTypes, moduleType{name, ModuleFactoryAdaptor(factory)})
+ moduleTypes = append(moduleTypes, moduleType{name, factory})
}
func RegisterSingletonType(name string, factory SingletonFactory) {
@@ -90,7 +88,7 @@ func (ctx *Context) Register() {
}
for _, t := range moduleTypes {
- ctx.RegisterModuleType(t.name, t.factory)
+ ctx.RegisterModuleType(t.name, ModuleFactoryAdaptor(t.factory))
}
for _, t := range singletons {
@@ -105,3 +103,11 @@ func (ctx *Context) Register() {
// Register env last so that it can track all used environment variables
ctx.RegisterSingletonType("env", SingletonFactoryAdaptor(EnvSingleton))
}
+
+func ModuleTypeFactories() map[string]ModuleFactory {
+ ret := make(map[string]ModuleFactory)
+ for _, t := range moduleTypes {
+ ret[t.name] = t.factory
+ }
+ return ret
+}
diff --git a/cmd/soong_build/main.go b/cmd/soong_build/main.go
index a4c6898d..1f6002ee 100644
--- a/cmd/soong_build/main.go
+++ b/cmd/soong_build/main.go
@@ -75,6 +75,10 @@ func main() {
bootstrap.Main(ctx.Context, configuration, configuration.ConfigFileName, configuration.ProductVariablesFileName)
if docFile != "" {
- writeDocs(ctx, docFile)
+ err := writeDocs(ctx, docFile)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "%s", err)
+ os.Exit(1)
+ }
}
}
diff --git a/cmd/soong_build/writedocs.go b/cmd/soong_build/writedocs.go
index a6686c0d..8f86b332 100644
--- a/cmd/soong_build/writedocs.go
+++ b/cmd/soong_build/writedocs.go
@@ -19,18 +19,33 @@ import (
"bytes"
"html/template"
"io/ioutil"
+ "reflect"
+ "sort"
"github.com/google/blueprint/bootstrap"
+ "github.com/google/blueprint/bootstrap/bpdoc"
)
func writeDocs(ctx *android.Context, filename string) error {
- moduleTypeList, err := bootstrap.ModuleTypeDocs(ctx.Context)
+ moduleTypeFactories := android.ModuleTypeFactories()
+ bpModuleTypeFactories := make(map[string]reflect.Value)
+ for moduleType, factory := range moduleTypeFactories {
+ bpModuleTypeFactories[moduleType] = reflect.ValueOf(factory)
+ }
+
+ packages, err := bootstrap.ModuleTypeDocs(ctx.Context, bpModuleTypeFactories)
if err != nil {
return err
}
buf := &bytes.Buffer{}
+ var moduleTypeList []*bpdoc.ModuleType
+ for _, pkg := range packages {
+ moduleTypeList = append(moduleTypeList, pkg.ModuleTypes...)
+ }
+ sort.Slice(moduleTypeList, func(i, j int) bool { return moduleTypeList[i].Name < moduleTypeList[j].Name })
+
unique := 0
tmpl, err := template.New("file").Funcs(map[string]interface{}{