aboutsummaryrefslogtreecommitdiffstats
path: root/android
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2019-02-11 14:11:09 -0800
committerColin Cross <ccross@android.com>2019-02-13 08:03:29 -0800
commitdeabb94380ad37d89e164946f8076adf433bfa22 (patch)
tree9e385ba01c2fbce9e629579f1ea5933e33bec102 /android
parentbd907cb12bad59f35bdb73476c9a785d7be06b7d (diff)
downloadbuild_soong-deabb94380ad37d89e164946f8076adf433bfa22.tar.gz
build_soong-deabb94380ad37d89e164946f8076adf433bfa22.tar.bz2
build_soong-deabb94380ad37d89e164946f8076adf433bfa22.zip
Add RuleBuilder.Installs().String()
Add a RuleBuilderInstalls type for a slice of RuleBuilderInstalls, and give it a String() method that returns the list of installs in the format that is convenient for passing to Make. Test: rule_builder_test.go Change-Id: I2e9cd9abf4dfb0ad312d0a6662f1567baf9cd222
Diffstat (limited to 'android')
-rw-r--r--android/rule_builder.go23
-rw-r--r--android/rule_builder_test.go13
2 files changed, 33 insertions, 3 deletions
diff --git a/android/rule_builder.go b/android/rule_builder.go
index 468b617b..3b869470 100644
--- a/android/rule_builder.go
+++ b/android/rule_builder.go
@@ -28,7 +28,7 @@ import (
// graph.
type RuleBuilder struct {
commands []*RuleBuilderCommand
- installs []RuleBuilderInstall
+ installs RuleBuilderInstalls
temporariesSet map[string]bool
restat bool
missingDeps []string
@@ -46,6 +46,23 @@ type RuleBuilderInstall struct {
From, To string
}
+type RuleBuilderInstalls []RuleBuilderInstall
+
+// String returns the RuleBuilderInstalls in the form used by $(call copy-many-files) in Make, a space separated
+// list of from:to tuples.
+func (installs RuleBuilderInstalls) String() string {
+ sb := strings.Builder{}
+ for i, install := range installs {
+ if i != 0 {
+ sb.WriteRune(' ')
+ }
+ sb.WriteString(install.From)
+ sb.WriteRune(':')
+ sb.WriteString(install.To)
+ }
+ return sb.String()
+}
+
// MissingDeps adds modules to the list of missing dependencies. If MissingDeps
// is called with a non-empty input, any call to Build will result in a rule
// that will print an error listing the missing dependencies and fail.
@@ -145,8 +162,8 @@ func (r *RuleBuilder) Outputs() []string {
}
// Installs returns the list of tuples passed to Install.
-func (r *RuleBuilder) Installs() []RuleBuilderInstall {
- return append([]RuleBuilderInstall(nil), r.installs...)
+func (r *RuleBuilder) Installs() RuleBuilderInstalls {
+ return append(RuleBuilderInstalls(nil), r.installs...)
}
func (r *RuleBuilder) toolsSet() map[string]bool {
diff --git a/android/rule_builder_test.go b/android/rule_builder_test.go
index 53a5b489..f9473489 100644
--- a/android/rule_builder_test.go
+++ b/android/rule_builder_test.go
@@ -84,6 +84,19 @@ func ExampleRuleBuilder_DeleteTemporaryFiles() {
// outputs: ["c"]
}
+func ExampleRuleBuilder_Installs() {
+ rule := NewRuleBuilder()
+
+ rule.Command().Tool("ld").Inputs([]string{"a.o", "b.o"}).FlagWithOutput("-o ", "linked")
+ rule.Install("linked", "/bin/linked")
+ rule.Install("linked", "/sbin/linked")
+
+ fmt.Printf("rule.Installs().String() = %q\n", rule.Installs().String())
+
+ // Output:
+ // rule.Installs().String() = "linked:/bin/linked linked:/sbin/linked"
+}
+
func ExampleRuleBuilderCommand() {
rule := NewRuleBuilder()