Allow genrules to depend on tools with symlinks
Symlink PackagingSpecs don't have a sourcePath, so it crashes soong
if you try to add a tool with symlinks to a genrule. Make RuleBuilder
ignore symlink packaging specs.
We could make RuleBuilder add them to the sandbox later if needed.
Bug: 395988167
Test: go test
Change-Id: I4dd2bdec6ff6e94f5014889e4a9378ae4c20f9e3
diff --git a/android/rule_builder.go b/android/rule_builder.go
index ea6aaa4..01fe6d8 100644
--- a/android/rule_builder.go
+++ b/android/rule_builder.go
@@ -660,12 +660,17 @@
}
for _, c := range r.commands {
for _, tool := range c.packagedTools {
- command.CopyBefore = append(command.CopyBefore, &sbox_proto.Copy{
- From: proto.String(tool.srcPath.String()),
- To: proto.String(sboxPathForPackagedToolRel(tool)),
- Executable: proto.Bool(tool.executable),
- })
- tools = append(tools, tool.srcPath)
+ if tool.srcPath != nil {
+ command.CopyBefore = append(command.CopyBefore, &sbox_proto.Copy{
+ From: proto.String(tool.srcPath.String()),
+ To: proto.String(sboxPathForPackagedToolRel(tool)),
+ Executable: proto.Bool(tool.executable),
+ })
+ tools = append(tools, tool.srcPath)
+ } else if tool.SymlinkTarget() == "" {
+ // We ignore symlinks for now, could be added later if needed
+ panic("Expected tool packagingSpec to either be a file or symlink")
+ }
}
}
}