[automerger skipped] [RESTRICT AUTOMERGE] Cleanup RBE logs directory am: 29cbe14265 am: 905d2ed5d7 -s ours
am skip reason: subject contains skip directive
Original change: https://googleplex-android-review.googlesource.com/c/platform/build/soong/+/19049589
Change-Id: I9554aa900081e0d20dcb5c78b79d60e9d32591a8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/android/api_levels.go b/android/api_levels.go
index 93583bc..a337371 100644
--- a/android/api_levels.go
+++ b/android/api_levels.go
@@ -290,6 +290,7 @@
"Q": 29,
"R": 30,
"S": 31,
+ "S-V2": 32,
}
// TODO: Differentiate "current" and "future".
@@ -333,6 +334,7 @@
"Q": 29,
"R": 30,
"S": 31,
+ "S-V2": 32,
}
for i, codename := range config.PlatformVersionActiveCodenames() {
apiLevelsMap[codename] = previewAPILevelBase + i
diff --git a/android/arch.go b/android/arch.go
index bb1b613..6af047c 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -1522,10 +1522,12 @@
return PrefixInList(arch.Abi, "arm")
}
-// hasArmArch returns true if targets has at least non-native_bridge arm Android arch
+// hasArmAndroidArch returns true if targets has at least
+// one arm Android arch (possibly native bridged)
func hasArmAndroidArch(targets []Target) bool {
for _, target := range targets {
- if target.Os == Android && target.Arch.ArchType == Arm {
+ if target.Os == Android &&
+ (target.Arch.ArchType == Arm || target.Arch.ArchType == Arm64) {
return true
}
}
diff --git a/android/variable.go b/android/variable.go
index 0dc5262..741d9ae 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -101,6 +101,8 @@
Keep_symbols *bool
Keep_symbols_and_debug_frame *bool
}
+ Srcs []string
+ Exclude_srcs []string
}
// eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging
diff --git a/apex/apex_singleton.go b/apex/apex_singleton.go
index 9823842..6faed70 100644
--- a/apex/apex_singleton.go
+++ b/apex/apex_singleton.go
@@ -59,8 +59,15 @@
echo "******************************";
echo "Detected changes to allowed dependencies in updatable modules.";
echo "To fix and update packages/modules/common/build/allowed_deps.txt, please run:";
- echo "$$ (croot && packages/modules/common/build/update-apex-allowed-deps.sh)";
- echo "Members of mainline-modularization@google.com will review the changes.";
+ echo -e "$$ (croot && packages/modules/common/build/update-apex-allowed-deps.sh)\n";
+ echo "When submitting the generated CL, you must include the following information";
+ echo "in the commit message if you are adding a new dependency:";
+ echo "Apex-Size-Increase:";
+ echo "Previous-Platform-Support:";
+ echo "Aosp-First:";
+ echo "Test-Info:";
+ echo "You do not need OWNERS approval to submit the change, but mainline-modularization@";
+ echo "will periodically review additions and may require changes.";
echo -e "******************************\n";
exit 1;
fi;
diff --git a/cc/config/arm64_device.go b/cc/config/arm64_device.go
index 864fba1..dbc9c38 100644
--- a/cc/config/arm64_device.go
+++ b/cc/config/arm64_device.go
@@ -33,7 +33,9 @@
},
"armv8-a-branchprot": []string{
"-march=armv8-a",
- "-mbranch-protection=standard",
+ // Disable BTI until drm vendors stop using OS libraries as sources
+ // of gadgets (https://issuetracker.google.com/216395195).
+ "-mbranch-protection=pac-ret",
},
"armv8-2a": []string{
"-march=armv8.2-a",
diff --git a/cmd/multiproduct_kati/main.go b/cmd/multiproduct_kati/main.go
index 55a5470..c7adbbd 100644
--- a/cmd/multiproduct_kati/main.go
+++ b/cmd/multiproduct_kati/main.go
@@ -244,7 +244,7 @@
jobs = runtime.NumCPU() / 4
ramGb := int(config.TotalRAM() / 1024 / 1024 / 1024)
- if ramJobs := ramGb / 25; ramGb > 0 && jobs > ramJobs {
+ if ramJobs := ramGb / 30; ramGb > 0 && jobs > ramJobs {
jobs = ramJobs
}
diff --git a/java/aar.go b/java/aar.go
index 04727e4..a5cf0fd 100644
--- a/java/aar.go
+++ b/java/aar.go
@@ -486,6 +486,18 @@
exportedStaticPackages android.Paths
}
+var _ android.OutputFileProducer = (*AndroidLibrary)(nil)
+
+// For OutputFileProducer interface
+func (a *AndroidLibrary) OutputFiles(tag string) (android.Paths, error) {
+ switch tag {
+ case ".aar":
+ return []android.Path{a.aarFile}, nil
+ default:
+ return a.Library.OutputFiles(tag)
+ }
+}
+
func (a *AndroidLibrary) ExportedProguardFlagFiles() android.Paths {
return a.exportedProguardFlagFiles
}
diff --git a/rust/benchmark.go b/rust/benchmark.go
index b89f5cd..0e84243 100644
--- a/rust/benchmark.go
+++ b/rust/benchmark.go
@@ -101,6 +101,7 @@
func (benchmark *benchmarkDecorator) compilerDeps(ctx DepsContext, deps Deps) Deps {
deps = benchmark.binaryDecorator.compilerDeps(ctx, deps)
+ deps.Rustlibs = append(deps.Rustlibs, "libtest")
deps.Rustlibs = append(deps.Rustlibs, "libcriterion")
return deps
diff --git a/rust/config/global.go b/rust/config/global.go
index 43b49d1..1b56237 100644
--- a/rust/config/global.go
+++ b/rust/config/global.go
@@ -29,7 +29,6 @@
DefaultEdition = "2018"
Stdlibs = []string{
"libstd",
- "libtest",
}
// Mapping between Soong internal arch types and std::env constants.
diff --git a/rust/test.go b/rust/test.go
index 6caa7b1..e95b47c 100644
--- a/rust/test.go
+++ b/rust/test.go
@@ -169,3 +169,11 @@
func (test *testDecorator) stdLinkage(ctx *depsContext) RustLinkage {
return RlibLinkage
}
+
+func (test *testDecorator) compilerDeps(ctx DepsContext, deps Deps) Deps {
+ deps = test.binaryDecorator.compilerDeps(ctx, deps)
+
+ deps.Rustlibs = append(deps.Rustlibs, "libtest")
+
+ return deps
+}
diff --git a/rust/testing.go b/rust/testing.go
index a0f86b2..1e0c5ab 100644
--- a/rust/testing.go
+++ b/rust/testing.go
@@ -162,12 +162,10 @@
name: "libtest",
crate_name: "test",
srcs: ["foo.rs"],
- no_stdlibs: true,
host_supported: true,
vendor_available: true,
vendor_ramdisk_available: true,
native_coverage: false,
- sysroot: true,
apex_available: ["//apex_available:platform", "//apex_available:anyapex"],
min_sdk_version: "29",
}
diff --git a/ui/build/build.go b/ui/build/build.go
index 8f7f64b..9668efd 100644
--- a/ui/build/build.go
+++ b/ui/build/build.go
@@ -244,7 +244,6 @@
}
if config.StartRBE() {
- cleanupRBELogsDir(ctx, config)
startRBE(ctx, config)
defer DumpRBEMetrics(ctx, config, filepath.Join(config.LogsDir(), "rbe_metrics.pb"))
}
diff --git a/ui/build/config.go b/ui/build/config.go
index 249af3a..4ee759f 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -18,13 +18,11 @@
"encoding/json"
"fmt"
"io/ioutil"
- "math/rand"
"os"
"path/filepath"
"runtime"
"strconv"
"strings"
- "syscall"
"time"
"android/soong/shared"
@@ -39,15 +37,6 @@
jsonSuffix = "json"
)
-var (
- rbeRandPrefix int
-)
-
-func init() {
- rand.Seed(time.Now().UnixNano())
- rbeRandPrefix = rand.Intn(1000)
-}
-
type Config struct{ *configImpl }
type configImpl struct {
@@ -1009,25 +998,34 @@
return true
}
-func (c *configImpl) rbeProxyLogsDir() string {
- for _, f := range []string{"RBE_proxy_log_dir", "FLAG_output_dir"} {
+func (c *configImpl) rbeLogDir() string {
+ for _, f := range []string{"RBE_log_dir", "FLAG_log_dir"} {
if v, ok := c.environ.Get(f); ok {
return v
}
}
- buildTmpDir := shared.TempDirForOutDir(c.SoongOutDir())
- return filepath.Join(buildTmpDir, "rbe")
+ if c.Dist() {
+ return c.LogsDir()
+ }
+ return c.OutDir()
}
-func (c *configImpl) shouldCleanupRBELogsDir() bool {
- // Perform a log directory cleanup only when the log directory
- // is auto created by the build rather than user-specified.
- for _, f := range []string{"RBE_proxy_log_dir", "FLAG_output_dir"} {
- if _, ok := c.environ.Get(f); ok {
- return false
+func (c *configImpl) rbeStatsOutputDir() string {
+ for _, f := range []string{"RBE_output_dir", "FLAG_output_dir"} {
+ if v, ok := c.environ.Get(f); ok {
+ return v
}
}
- return true
+ return c.rbeLogDir()
+}
+
+func (c *configImpl) rbeLogPath() string {
+ for _, f := range []string{"RBE_log_path", "FLAG_log_path"} {
+ if v, ok := c.environ.Get(f); ok {
+ return v
+ }
+ }
+ return fmt.Sprintf("text://%v/reproxy_log.txt", c.rbeLogDir())
}
func (c *configImpl) rbeExecRoot() string {
@@ -1079,23 +1077,6 @@
return "RBE_use_application_default_credentials", "true"
}
-func (c *configImpl) rbeSockAddr(dir string) (string, error) {
- maxNameLen := len(syscall.RawSockaddrUnix{}.Path)
- base := fmt.Sprintf("reproxy_%v.sock", rbeRandPrefix)
-
- name := filepath.Join(dir, base)
- if len(name) < maxNameLen {
- return name, nil
- }
-
- name = filepath.Join("/tmp", base)
- if len(name) < maxNameLen {
- return name, nil
- }
-
- return "", fmt.Errorf("cannot generate a proxy socket address shorter than the limit of %v", maxNameLen)
-}
-
func (c *configImpl) UseRemoteBuild() bool {
return c.UseGoma() || c.UseRBE()
}
diff --git a/ui/build/rbe.go b/ui/build/rbe.go
index 3e558f7..8f9a699 100644
--- a/ui/build/rbe.go
+++ b/ui/build/rbe.go
@@ -16,9 +16,12 @@
import (
"fmt"
+ "math/rand"
"os"
"path/filepath"
"runtime"
+ "syscall"
+ "time"
"android/soong/ui/metrics"
)
@@ -51,16 +54,34 @@
return cmdPath
}
+func sockAddr(dir string) (string, error) {
+ maxNameLen := len(syscall.RawSockaddrUnix{}.Path)
+ rand.Seed(time.Now().UnixNano())
+ base := fmt.Sprintf("reproxy_%v.sock", rand.Intn(1000))
+
+ name := filepath.Join(dir, base)
+ if len(name) < maxNameLen {
+ return name, nil
+ }
+
+ name = filepath.Join("/tmp", base)
+ if len(name) < maxNameLen {
+ return name, nil
+ }
+
+ return "", fmt.Errorf("cannot generate a proxy socket address shorter than the limit of %v", maxNameLen)
+}
+
func getRBEVars(ctx Context, config Config) map[string]string {
vars := map[string]string{
- "RBE_log_dir": config.rbeProxyLogsDir(),
+ "RBE_log_path": config.rbeLogPath(),
+ "RBE_log_dir": config.rbeLogDir(),
"RBE_re_proxy": config.rbeReproxy(),
"RBE_exec_root": config.rbeExecRoot(),
- "RBE_output_dir": config.rbeProxyLogsDir(),
- "RBE_proxy_log_dir": config.rbeProxyLogsDir(),
+ "RBE_output_dir": config.rbeStatsOutputDir(),
}
if config.StartRBE() {
- name, err := config.rbeSockAddr(absPath(ctx, config.TempDir()))
+ name, err := sockAddr(absPath(ctx, config.TempDir()))
if err != nil {
ctx.Fatalf("Error retrieving socket address: %v", err)
return nil
@@ -79,17 +100,6 @@
return vars
}
-func cleanupRBELogsDir(ctx Context, config Config) {
- if !config.shouldCleanupRBELogsDir() {
- return
- }
-
- rbeTmpDir := config.rbeProxyLogsDir()
- if err := os.RemoveAll(rbeTmpDir); err != nil {
- fmt.Fprintln(ctx.Writer, "\033[33mUnable to remove RBE log directory: ", err, "\033[0m")
- }
-}
-
func startRBE(ctx Context, config Config) {
ctx.BeginTrace(metrics.RunSetupTool, "rbe_bootstrap")
defer ctx.EndTrace()
@@ -100,11 +110,6 @@
if n := ulimitOrFatal(ctx, config, "-n"); n < rbeLeastNFiles {
ctx.Fatalf("max open files is insufficient: %d; want >= %d.\n", n, rbeLeastNFiles)
}
- if _, err := os.Stat(config.rbeProxyLogsDir()); os.IsNotExist(err) {
- if err := os.MkdirAll(config.rbeProxyLogsDir(), 0744); err != nil {
- ctx.Fatalf("Unable to create logs dir (%v) for RBE: %v", config.rbeProxyLogsDir, err)
- }
- }
cmd := Command(ctx, config, "startRBE bootstrap", rbeCommand(ctx, config, bootstrapCmd))
@@ -146,7 +151,7 @@
return
}
- outputDir := config.rbeProxyLogsDir()
+ outputDir := config.rbeStatsOutputDir()
if outputDir == "" {
ctx.Fatal("RBE output dir variable not defined. Aborting metrics dumping.")
}
diff --git a/ui/build/rbe_test.go b/ui/build/rbe_test.go
index 266f76b..8ff96bc 100644
--- a/ui/build/rbe_test.go
+++ b/ui/build/rbe_test.go
@@ -56,8 +56,7 @@
env := Environment(tt.env)
env.Set("OUT_DIR", tmpDir)
env.Set("RBE_DIR", tmpDir)
- env.Set("RBE_output_dir", tmpDir)
- env.Set("RBE_proxy_log_dir", tmpDir)
+ env.Set("RBE_output_dir", t.TempDir())
config := Config{&configImpl{
environ: &env,
}}