Use Rule-local implicit dependencies
Depends on https://github.com/google/blueprint/pull/78
This uses the new CommandDeps field to move implicit dependencies
embedded in the Command string next to the definition, instead of having
to specify them in every BuildParam struct. This should make it easier
to verify dependencies.
Change-Id: I2711b160920e22fa962a436e1f7041272166f50f
diff --git a/java/app_builder.go b/java/app_builder.go
index 8e907d2..4b3d315 100644
--- a/java/app_builder.go
+++ b/java/app_builder.go
@@ -34,6 +34,7 @@
`$aaptCmd package -m $aaptFlags -P $publicResourcesFile -G $proguardOptionsFile ` +
`-J $javaDir || ( rm -rf "$javaDir/*"; exit 41 ) && ` +
`find $javaDir -name "*.java" > $javaFileList`,
+ CommandDeps: []string{"$aaptCmd"},
Description: "aapt create R.java $out",
},
"aaptFlags", "publicResourcesFile", "proguardOptionsFile", "javaDir", "javaFileList")
@@ -41,6 +42,7 @@
aaptCreateAssetsPackage = pctx.StaticRule("aaptCreateAssetsPackage",
blueprint.RuleParams{
Command: `rm -f $out && $aaptCmd package $aaptFlags -F $out`,
+ CommandDeps: []string{"$aaptCmd"},
Description: "aapt export package $out",
},
"aaptFlags", "publicResourcesFile", "proguardOptionsFile", "javaDir", "javaFileList")
@@ -49,6 +51,7 @@
blueprint.RuleParams{
// TODO: add-jni-shared-libs-to-package
Command: `cp -f $in $out.tmp && $aaptCmd package -u $aaptFlags -F $out.tmp && mv $out.tmp $out`,
+ CommandDeps: []string{"$aaptCmd"},
Description: "aapt package $out",
},
"aaptFlags")
@@ -56,6 +59,7 @@
zipalign = pctx.StaticRule("zipalign",
blueprint.RuleParams{
Command: `$zipalignCmd -f $zipalignFlags 4 $in $out`,
+ CommandDeps: []string{"$zipalignCmd"},
Description: "zipalign $out",
},
"zipalignFlags")
@@ -63,6 +67,7 @@
signapk = pctx.StaticRule("signapk",
blueprint.RuleParams{
Command: `java -jar $signapkCmd $certificates $in $out`,
+ CommandDeps: []string{"$signapkCmd"},
Description: "signapk $out",
},
"certificates")
@@ -71,6 +76,7 @@
blueprint.RuleParams{
Command: "java -classpath $androidManifestMergerCmd com.android.manifmerger.Main merge " +
"--main $in --libs $libsManifests --out $out",
+ CommandDeps: []string{"$androidManifestMergerCmd"},
Description: "merge manifest files $out",
},
"libsManifests")
@@ -96,8 +102,6 @@
publicResourcesFile := filepath.Join(common.ModuleOutDir(ctx), "public_resources.xml")
proguardOptionsFile := filepath.Join(common.ModuleOutDir(ctx), "proguard.options")
- deps = append([]string{"$aaptCmd"}, deps...)
-
ctx.Build(pctx, blueprint.BuildParams{
Rule: aaptCreateResourceJavaFile,
Outputs: []string{publicResourcesFile, proguardOptionsFile, javaFileList},
@@ -117,8 +121,6 @@
func CreateExportPackage(ctx common.AndroidModuleContext, flags []string, deps []string) string {
outputFile := filepath.Join(common.ModuleOutDir(ctx), "package-export.apk")
- deps = append([]string{"$aaptCmd"}, deps...)
-
ctx.Build(pctx, blueprint.BuildParams{
Rule: aaptCreateAssetsPackage,
Outputs: []string{outputFile},
@@ -137,10 +139,9 @@
resourceApk := filepath.Join(common.ModuleOutDir(ctx), "resources.apk")
ctx.Build(pctx, blueprint.BuildParams{
- Rule: aaptAddResources,
- Outputs: []string{resourceApk},
- Inputs: []string{jarFile},
- Implicits: []string{"$aaptCmd"},
+ Rule: aaptAddResources,
+ Outputs: []string{resourceApk},
+ Inputs: []string{jarFile},
Args: map[string]string{
"aaptFlags": strings.Join(flags, " "),
},
@@ -154,10 +155,9 @@
}
ctx.Build(pctx, blueprint.BuildParams{
- Rule: signapk,
- Outputs: []string{signedApk},
- Inputs: []string{resourceApk},
- Implicits: []string{"$signapkCmd"},
+ Rule: signapk,
+ Outputs: []string{signedApk},
+ Inputs: []string{resourceApk},
Args: map[string]string{
"certificates": strings.Join(certificateArgs, " "),
},
@@ -166,10 +166,9 @@
outputFile := filepath.Join(common.ModuleOutDir(ctx), "package.apk")
ctx.Build(pctx, blueprint.BuildParams{
- Rule: zipalign,
- Outputs: []string{outputFile},
- Inputs: []string{signedApk},
- Implicits: []string{"$zipalignCmd"},
+ Rule: zipalign,
+ Outputs: []string{outputFile},
+ Inputs: []string{signedApk},
Args: map[string]string{
"zipalignFlags": "",
},
diff --git a/java/builder.go b/java/builder.go
index 4eda6adf..36506ae 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -52,6 +52,7 @@
jar = pctx.StaticRule("jar",
blueprint.RuleParams{
Command: `$jarCmd -o $out $jarArgs`,
+ CommandDeps: []string{"$jarCmd"},
Description: "jar $out",
},
"jarCmd", "jarArgs")
@@ -61,6 +62,7 @@
Command: `rm -rf "$outDir" && mkdir -p "$outDir" && ` +
`$dxCmd --dex --output=$outDir $dxFlags $in || ( rm -rf "$outDir"; exit 41 ) && ` +
`find "$outDir" -name "classes*.dex" > $out`,
+ CommandDeps: []string{"$dxCmd"},
Description: "dex $out",
},
"outDir", "dxFlags")
@@ -68,6 +70,7 @@
jarjar = pctx.StaticRule("jarjar",
blueprint.RuleParams{
Command: "java -jar $jarjarCmd process $rulesFile $in $out",
+ CommandDeps: []string{"$jarjarCmd", "$rulesFile"},
Description: "jarjar $out",
},
"rulesFile")
@@ -156,8 +159,6 @@
jarArgs = append(jarArgs, "-m "+manifest)
}
- deps = append(deps, "$jarCmd")
-
ctx.Build(pctx, blueprint.BuildParams{
Rule: jar,
Outputs: []string{outputFile},
@@ -177,10 +178,9 @@
outputFile := filepath.Join(common.ModuleOutDir(ctx), "dex.filelist")
ctx.Build(pctx, blueprint.BuildParams{
- Rule: dx,
- Outputs: []string{outputFile},
- Inputs: []string{classesJar},
- Implicits: []string{"$dxCmd"},
+ Rule: dx,
+ Outputs: []string{outputFile},
+ Inputs: []string{classesJar},
Args: map[string]string{
"dxFlags": flags.dxFlags,
"outDir": outDir,
@@ -205,8 +205,6 @@
deps = append(deps, dexJarSpec.fileList)
jarArgs = append(jarArgs, dexJarSpec.soongJarArgs())
- deps = append(deps, "$jarCmd")
-
ctx.Build(pctx, blueprint.BuildParams{
Rule: jar,
Outputs: []string{outputFile},
@@ -222,10 +220,9 @@
func TransformJarJar(ctx common.AndroidModuleContext, classesJar string, rulesFile string) string {
outputFile := filepath.Join(common.ModuleOutDir(ctx), "classes-jarjar.jar")
ctx.Build(pctx, blueprint.BuildParams{
- Rule: jarjar,
- Outputs: []string{outputFile},
- Inputs: []string{classesJar},
- Implicits: []string{"$jarjarCmd"},
+ Rule: jarjar,
+ Outputs: []string{outputFile},
+ Inputs: []string{classesJar},
Args: map[string]string{
"rulesFile": rulesFile,
},
diff --git a/java/gen.go b/java/gen.go
index 6e8313a..f989875 100644
--- a/java/gen.go
+++ b/java/gen.go
@@ -44,6 +44,7 @@
aidl = pctx.StaticRule("aidl",
blueprint.RuleParams{
Command: "$aidlCmd -d$depFile $aidlFlags $in $out",
+ CommandDeps: []string{"$aidlCmd"},
Description: "aidl $out",
},
"depFile", "aidlFlags")
@@ -51,12 +52,14 @@
logtags = pctx.StaticRule("logtags",
blueprint.RuleParams{
Command: "$logtagsCmd -o $out $in $allLogtagsFile",
+ CommandDeps: []string{"$logtagsCmd"},
Description: "logtags $out",
})
mergeLogtags = pctx.StaticRule("mergeLogtags",
blueprint.RuleParams{
Command: "$mergeLogtagsCmd -o $out $in",
+ CommandDeps: []string{"$mergeLogtagsCmd"},
Description: "merge logtags $out",
})
)
@@ -68,10 +71,9 @@
depFile := javaFile + ".d"
ctx.Build(pctx, blueprint.BuildParams{
- Rule: aidl,
- Outputs: []string{javaFile},
- Inputs: []string{aidlFile},
- Implicits: []string{"$aidlCmd"},
+ Rule: aidl,
+ Outputs: []string{javaFile},
+ Inputs: []string{aidlFile},
Args: map[string]string{
"depFile": depFile,
"aidlFlags": aidlFlags,
@@ -87,10 +89,9 @@
javaFile = pathtools.ReplaceExtension(javaFile, "java")
ctx.Build(pctx, blueprint.BuildParams{
- Rule: logtags,
- Outputs: []string{javaFile},
- Inputs: []string{logtagsFile},
- Implicits: []string{"$logtagsCmd"},
+ Rule: logtags,
+ Outputs: []string{javaFile},
+ Inputs: []string{logtagsFile},
})
return javaFile