Merge "Use prebuild modules even when coverage is enabled." into sc-dev
diff --git a/apex/platform_bootclasspath_test.go b/apex/platform_bootclasspath_test.go
index bd4a9d5..bc35479 100644
--- a/apex/platform_bootclasspath_test.go
+++ b/apex/platform_bootclasspath_test.go
@@ -398,6 +398,7 @@
name: "foo",
prefer: false,
shared_library: false,
+ permitted_packages: ["foo"],
public: {
jars: ["sdk_library/public/foo-stubs.jar"],
stub_srcs: ["sdk_library/public/foo_stub_sources"],
diff --git a/cmd/soong_ui/main.go b/cmd/soong_ui/main.go
index 22922c0..8bcc712 100644
--- a/cmd/soong_ui/main.go
+++ b/cmd/soong_ui/main.go
@@ -16,6 +16,7 @@
import (
"context"
+ "encoding/json"
"flag"
"fmt"
"io/ioutil"
@@ -34,6 +35,11 @@
"android/soong/ui/tracer"
)
+const (
+ configDir = "vendor/google/tools/soong_config"
+ jsonSuffix = "json"
+)
+
// A command represents an operation to be executed in the soong build
// system.
type command struct {
@@ -110,6 +116,34 @@
return indexList(s, list) != -1
}
+func loadEnvConfig() error {
+ bc := os.Getenv("ANDROID_BUILD_ENVIRONMENT_CONFIG")
+ if bc == "" {
+ return nil
+ }
+ cfgFile := filepath.Join(os.Getenv("TOP"), configDir, fmt.Sprintf("%s.%s", bc, jsonSuffix))
+
+ envVarsJSON, err := ioutil.ReadFile(cfgFile)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "\033[33mWARNING:\033[0m failed to open config file %s: %s\n", cfgFile, err.Error())
+ return nil
+ }
+
+ var envVars map[string]map[string]string
+ if err := json.Unmarshal(envVarsJSON, &envVars); err != nil {
+ return fmt.Errorf("env vars config file: %s did not parse correctly: %s", cfgFile, err.Error())
+ }
+ for k, v := range envVars["env"] {
+ if os.Getenv(k) != "" {
+ continue
+ }
+ if err := os.Setenv(k, v); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
// Main execution of soong_ui. The command format is as follows:
//
// soong_ui <command> [<arg 1> <arg 2> ... <arg n>]
@@ -173,6 +207,12 @@
config := c.config(buildCtx, args...)
+ if err := loadEnvConfig(); err != nil {
+ fmt.Fprintf(os.Stderr, "failed to parse env config files: %v", err)
+ os.Exit(1)
+ }
+
+
build.SetupOutDir(buildCtx, config)
if config.UseBazel() && config.Dist() {
diff --git a/java/java.go b/java/java.go
index 727cef5..bbed42d 100644
--- a/java/java.go
+++ b/java/java.go
@@ -1192,6 +1192,12 @@
minSdkVersion android.SdkSpec
}
+var _ PermittedPackagesForUpdatableBootJars = (*Import)(nil)
+
+func (j *Import) PermittedPackagesForUpdatableBootJars() []string {
+ return j.properties.Permitted_packages
+}
+
func (j *Import) SdkVersion(ctx android.EarlyModuleContext) android.SdkSpec {
return android.SdkSpecFrom(ctx, String(j.properties.Sdk_version))
}
diff --git a/java/sdk_library.go b/java/sdk_library.go
index c0e5662..8c66438 100644
--- a/java/sdk_library.go
+++ b/java/sdk_library.go
@@ -1991,6 +1991,12 @@
return module
}
+var _ PermittedPackagesForUpdatableBootJars = (*SdkLibraryImport)(nil)
+
+func (module *SdkLibraryImport) PermittedPackagesForUpdatableBootJars() []string {
+ return module.properties.Permitted_packages
+}
+
func (module *SdkLibraryImport) Prebuilt() *android.Prebuilt {
return &module.prebuilt
}
diff --git a/sdk/bootclasspath_fragment_sdk_test.go b/sdk/bootclasspath_fragment_sdk_test.go
index c30324a..412e806 100644
--- a/sdk/bootclasspath_fragment_sdk_test.go
+++ b/sdk/bootclasspath_fragment_sdk_test.go
@@ -532,6 +532,12 @@
out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/index-from-classes.csv
snapshot/hiddenapi/index.csv
`, rule)
+
+ // Make sure that the permitted packages from the prebuilts end up in the
+ // updatable-bcp-packages.txt file.
+ rule = module.Output("updatable-bcp-packages.txt")
+ expectedContents := `'mybootlib\nmyothersdklibrary\n'`
+ android.AssertStringEquals(t, "updatable-bcp-packages.txt", expectedContents, rule.Args["content"])
}),
snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),