Merge "Syntax check generated Android.bp snapshot"
This commit is contained in:
commit
6b3ca917b0
|
@ -104,6 +104,8 @@ type EarlyModuleContext interface {
|
||||||
type BaseModuleContext interface {
|
type BaseModuleContext interface {
|
||||||
EarlyModuleContext
|
EarlyModuleContext
|
||||||
|
|
||||||
|
blueprintBaseModuleContext() blueprint.BaseModuleContext
|
||||||
|
|
||||||
OtherModuleName(m blueprint.Module) string
|
OtherModuleName(m blueprint.Module) string
|
||||||
OtherModuleDir(m blueprint.Module) string
|
OtherModuleDir(m blueprint.Module) string
|
||||||
OtherModuleErrorf(m blueprint.Module, fmt string, args ...interface{})
|
OtherModuleErrorf(m blueprint.Module, fmt string, args ...interface{})
|
||||||
|
@ -1439,6 +1441,10 @@ func (b *baseModuleContext) GetDirectDepWithTag(name string, tag blueprint.Depen
|
||||||
return b.bp.GetDirectDepWithTag(name, tag)
|
return b.bp.GetDirectDepWithTag(name, tag)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *baseModuleContext) blueprintBaseModuleContext() blueprint.BaseModuleContext {
|
||||||
|
return b.bp
|
||||||
|
}
|
||||||
|
|
||||||
type moduleContext struct {
|
type moduleContext struct {
|
||||||
bp blueprint.ModuleContext
|
bp blueprint.ModuleContext
|
||||||
baseModuleContext
|
baseModuleContext
|
||||||
|
@ -2361,3 +2367,8 @@ type IdeInfo struct {
|
||||||
Installed_paths []string `json:"installed,omitempty"`
|
Installed_paths []string `json:"installed,omitempty"`
|
||||||
SrcJars []string `json:"srcjars,omitempty"`
|
SrcJars []string `json:"srcjars,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CheckBlueprintSyntax(ctx BaseModuleContext, filename string, contents string) []error {
|
||||||
|
bpctx := ctx.blueprintBaseModuleContext()
|
||||||
|
return blueprint.CheckBlueprintSyntax(bpctx.ModuleFactories(), filename, contents)
|
||||||
|
}
|
||||||
|
|
|
@ -350,6 +350,9 @@ func (s *sdk) buildSnapshot(ctx android.ModuleContext, sdkVariants []*sdk) andro
|
||||||
bp = newGeneratedFile(ctx, "snapshot", "Android.bp")
|
bp = newGeneratedFile(ctx, "snapshot", "Android.bp")
|
||||||
generateBpContents(&bp.generatedContents, bpFile)
|
generateBpContents(&bp.generatedContents, bpFile)
|
||||||
|
|
||||||
|
contents := bp.content.String()
|
||||||
|
syntaxCheckSnapshotBpFile(ctx, contents)
|
||||||
|
|
||||||
bp.build(pctx, ctx, nil)
|
bp.build(pctx, ctx, nil)
|
||||||
|
|
||||||
filesToZip := builder.filesToZip
|
filesToZip := builder.filesToZip
|
||||||
|
@ -394,6 +397,36 @@ func (s *sdk) buildSnapshot(ctx android.ModuleContext, sdkVariants []*sdk) andro
|
||||||
return outputZipFile
|
return outputZipFile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check the syntax of the generated Android.bp file contents and if they are
|
||||||
|
// invalid then log an error with the contents (tagged with line numbers) and the
|
||||||
|
// errors that were found so that it is easy to see where the problem lies.
|
||||||
|
func syntaxCheckSnapshotBpFile(ctx android.ModuleContext, contents string) {
|
||||||
|
errs := android.CheckBlueprintSyntax(ctx, "Android.bp", contents)
|
||||||
|
if len(errs) != 0 {
|
||||||
|
message := &strings.Builder{}
|
||||||
|
_, _ = fmt.Fprint(message, `errors in generated Android.bp snapshot:
|
||||||
|
|
||||||
|
Generated Android.bp contents
|
||||||
|
========================================================================
|
||||||
|
`)
|
||||||
|
for i, line := range strings.Split(contents, "\n") {
|
||||||
|
_, _ = fmt.Fprintf(message, "%6d: %s\n", i+1, line)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, _ = fmt.Fprint(message, `
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
Errors found:
|
||||||
|
`)
|
||||||
|
|
||||||
|
for _, err := range errs {
|
||||||
|
_, _ = fmt.Fprintf(message, "%s\n", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.ModuleErrorf("%s", message.String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func extractCommonProperties(ctx android.ModuleContext, extractor *commonValueExtractor, commonProperties interface{}, inputPropertiesSlice interface{}) {
|
func extractCommonProperties(ctx android.ModuleContext, extractor *commonValueExtractor, commonProperties interface{}, inputPropertiesSlice interface{}) {
|
||||||
err := extractor.extractCommonProperties(commonProperties, inputPropertiesSlice)
|
err := extractor.extractCommonProperties(commonProperties, inputPropertiesSlice)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue