Setup java paths in soong_ui
This way config.mk no longer needs to check which java is in PATH and fix it. It'll be consistent for all build steps under soong_ui. Also unify handling of ANDROID_JAVA_HOME / JAVA_HOME with OVERRIDE_ANDROID_JAVA_HOME / EXPERIMENTAL_USE_OPENJDK9. Test: m nothing Test: build/soong/soong_ui.bash --make-mode nothing (w/o envsetup.sh) Test: aosp_arm ninja files are the same before/after Test: before/after ninja files match with OVERRIDE_ANDROID_JAVA_HOME Test: before/after ninja files match with EXPERIMENTAL_USE_OPENJDK9 Change-Id: Icdb65093d9c346524074de239a4f895e4230a24d
This commit is contained in:
parent
d293e65c82
commit
d9e8f0a95a
|
@ -55,13 +55,8 @@ func init() {
|
|||
pctx.VariableConfigMethod("hostPrebuiltTag", android.Config.PrebuiltOS)
|
||||
|
||||
pctx.VariableFunc("JavaHome", func(config interface{}) (string, error) {
|
||||
if override := config.(android.Config).Getenv("OVERRIDE_ANDROID_JAVA_HOME"); override != "" {
|
||||
return override, nil
|
||||
}
|
||||
if config.(android.Config).UseOpenJDK9() {
|
||||
return "prebuilts/jdk/jdk9/${hostPrebuiltTag}", nil
|
||||
}
|
||||
return "prebuilts/jdk/jdk8/${hostPrebuiltTag}", nil
|
||||
// This is set up and guaranteed by soong_ui
|
||||
return config.(android.Config).Getenv("ANDROID_JAVA_HOME"), nil
|
||||
})
|
||||
|
||||
pctx.SourcePathVariable("JavaToolchain", "${JavaHome}/bin")
|
||||
|
|
|
@ -104,6 +104,9 @@ func NewConfig(ctx Context, args ...string) Config {
|
|||
"MAKEFLAGS",
|
||||
"MAKELEVEL",
|
||||
"MFLAGS",
|
||||
|
||||
// Set in envsetup.sh, reset in makefiles
|
||||
"ANDROID_JAVA_TOOLCHAIN",
|
||||
)
|
||||
|
||||
// Tell python not to spam the source tree with .pyc files.
|
||||
|
@ -117,14 +120,12 @@ func NewConfig(ctx Context, args ...string) Config {
|
|||
log.Fatalln("Error verifying tree state:", err)
|
||||
}
|
||||
|
||||
if srcDir, err := filepath.Abs("."); err == nil {
|
||||
if strings.ContainsRune(srcDir, ' ') {
|
||||
log.Println("You are building in a directory whose absolute path contains a space character:")
|
||||
log.Println()
|
||||
log.Printf("%q\n", srcDir)
|
||||
log.Println()
|
||||
log.Fatalln("Directory names containing spaces are not supported")
|
||||
}
|
||||
if srcDir := absPath(ctx, "."); strings.ContainsRune(srcDir, ' ') {
|
||||
log.Println("You are building in a directory whose absolute path contains a space character:")
|
||||
log.Println()
|
||||
log.Printf("%q\n", srcDir)
|
||||
log.Println()
|
||||
log.Fatalln("Directory names containing spaces are not supported")
|
||||
}
|
||||
|
||||
if outDir := ret.OutDir(); strings.ContainsRune(outDir, ' ') {
|
||||
|
@ -143,6 +144,27 @@ func NewConfig(ctx Context, args ...string) Config {
|
|||
log.Fatalln("Directory names containing spaces are not supported")
|
||||
}
|
||||
|
||||
// Configure Java-related variables, including adding it to $PATH
|
||||
javaHome := func() string {
|
||||
if override, ok := ret.environ.Get("OVERRIDE_ANDROID_JAVA_HOME"); ok {
|
||||
return override
|
||||
}
|
||||
if v, ok := ret.environ.Get("EXPERIMENTAL_USE_OPENJDK9"); ok && v != "" {
|
||||
return filepath.Join("prebuilts/jdk/jdk9", ret.HostPrebuiltTag())
|
||||
}
|
||||
return filepath.Join("prebuilts/jdk/jdk8", ret.HostPrebuiltTag())
|
||||
}()
|
||||
absJavaHome := absPath(ctx, javaHome)
|
||||
|
||||
newPath := []string{filepath.Join(absJavaHome, "bin")}
|
||||
if path, ok := ret.environ.Get("PATH"); ok && path != "" {
|
||||
newPath = append(newPath, path)
|
||||
}
|
||||
ret.environ.Unset("OVERRIDE_ANDROID_JAVA_HOME")
|
||||
ret.environ.Set("JAVA_HOME", absJavaHome)
|
||||
ret.environ.Set("ANDROID_JAVA_HOME", javaHome)
|
||||
ret.environ.Set("PATH", strings.Join(newPath, string(filepath.ListSeparator)))
|
||||
|
||||
return Config{ret}
|
||||
}
|
||||
|
||||
|
|
|
@ -50,14 +50,8 @@ func (c *Cmd) sandboxSupported() bool {
|
|||
|
||||
func (c *Cmd) wrapSandbox() {
|
||||
homeDir, _ := c.Environment.Get("HOME")
|
||||
outDir, err := filepath.Abs(c.config.OutDir())
|
||||
if err != nil {
|
||||
c.ctx.Fatalln("Failed to get absolute path of OUT_DIR:", err)
|
||||
}
|
||||
distDir, err := filepath.Abs(c.config.DistDir())
|
||||
if err != nil {
|
||||
c.ctx.Fatalln("Failed to get absolute path of DIST_DIR:", err)
|
||||
}
|
||||
outDir := absPath(c.ctx, c.config.OutDir())
|
||||
distDir := absPath(c.ctx, c.config.DistDir())
|
||||
|
||||
c.Args[0] = c.Path
|
||||
c.Path = sandboxExecPath
|
||||
|
|
|
@ -77,9 +77,7 @@ func runSoong(ctx Context, config Config) {
|
|||
var cfg microfactory.Config
|
||||
cfg.Map("github.com/google/blueprint", "build/blueprint")
|
||||
|
||||
if absPath, err := filepath.Abs("."); err == nil {
|
||||
cfg.TrimPath = absPath
|
||||
}
|
||||
cfg.TrimPath = absPath(ctx, ".")
|
||||
|
||||
minibp := filepath.Join(config.SoongOutDir(), ".minibootstrap/minibp")
|
||||
if _, err := microfactory.Build(&cfg, minibp, "github.com/google/blueprint/bootstrap/minibp"); err != nil {
|
||||
|
|
|
@ -24,6 +24,14 @@ import (
|
|||
"unsafe"
|
||||
)
|
||||
|
||||
func absPath(ctx Context, p string) string {
|
||||
ret, err := filepath.Abs(p)
|
||||
if err != nil {
|
||||
ctx.Fatalf("Failed to get absolute path: %v", err)
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
// indexList finds the index of a string in a []string
|
||||
func indexList(s string, list []string) int {
|
||||
for i, l := range list {
|
||||
|
|
Loading…
Reference in New Issue