From 988414c2cf6bfb868df7d402e0bf825d6fd44cc8 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Sat, 11 Jan 2020 01:11:46 +0000 Subject: Sandbox soong_build by changing to root directory This relands I12a0f907753fefd1997ab8b4ea2ac331234093cf along with a fix to blueprint for absolute paths. Store the current working directory and then change to the root directory so that all file accesses must go through helpers in the android package that properly track dependencies. Change-Id: I24ac485677aa102eec1a2521d16820da6ee1ae77 Fixes: 146437378 Test: m checkbuild Test: m OUT_DIR=/tmp/out nothing --- java/dexpreopt_config.go | 7 ++++--- java/jdeps.go | 15 ++++++--------- 2 files changed, 10 insertions(+), 12 deletions(-) (limited to 'java') diff --git a/java/dexpreopt_config.go b/java/dexpreopt_config.go index 35748b8d1..f3191e741 100644 --- a/java/dexpreopt_config.go +++ b/java/dexpreopt_config.go @@ -36,10 +36,11 @@ type globalConfigAndRaw struct { func dexpreoptGlobalConfigRaw(ctx android.PathContext) globalConfigAndRaw { return ctx.Config().Once(dexpreoptGlobalConfigKey, func() interface{} { - if f := ctx.Config().DexpreoptGlobalConfig(); f != "" { + if data, err := ctx.Config().DexpreoptGlobalConfig(ctx); err != nil { + panic(err) + } else if data != nil { soongConfig := dexpreopt.CreateGlobalSoongConfig(ctx) - ctx.AddNinjaFileDeps(f) - globalConfig, data, err := dexpreopt.LoadGlobalConfig(ctx, f, soongConfig) + globalConfig, err := dexpreopt.LoadGlobalConfig(ctx, data, soongConfig) if err != nil { panic(err) } diff --git a/java/jdeps.go b/java/jdeps.go index fccc40fa8..49e3de3cc 100644 --- a/java/jdeps.go +++ b/java/jdeps.go @@ -17,7 +17,6 @@ package java import ( "encoding/json" "fmt" - "os" "android/soong/android" ) @@ -92,23 +91,21 @@ func (j *jdepsGeneratorSingleton) GenerateBuildActions(ctx android.SingletonCont moduleInfos[name] = dpInfo }) - jfpath := android.PathForOutput(ctx, jdepsJsonFileName).String() + jfpath := android.PathForOutput(ctx, jdepsJsonFileName) err := createJsonFile(moduleInfos, jfpath) if err != nil { ctx.Errorf(err.Error()) } } -func createJsonFile(moduleInfos map[string]android.IdeInfo, jfpath string) error { - file, err := os.Create(jfpath) +func createJsonFile(moduleInfos map[string]android.IdeInfo, jfpath android.WritablePath) error { + buf, err := json.MarshalIndent(moduleInfos, "", "\t") if err != nil { - return fmt.Errorf("Failed to create file: %s, relative: %v", jdepsJsonFileName, err) + return fmt.Errorf("JSON marshal of java deps failed: %s", err) } - defer file.Close() - buf, err := json.MarshalIndent(moduleInfos, "", "\t") + err = android.WriteFileToOutputDir(jfpath, buf, 0666) if err != nil { - return fmt.Errorf("Write file failed: %s, relative: %v", jdepsJsonFileName, err) + return fmt.Errorf("Writing java deps to %s failed: %s", jfpath.String(), err) } - fmt.Fprintf(file, string(buf)) return nil } -- cgit v1.2.3-59-g8ed1b