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:
@@ -55,13 +55,8 @@ func init() {
|
|||||||
pctx.VariableConfigMethod("hostPrebuiltTag", android.Config.PrebuiltOS)
|
pctx.VariableConfigMethod("hostPrebuiltTag", android.Config.PrebuiltOS)
|
||||||
|
|
||||||
pctx.VariableFunc("JavaHome", func(config interface{}) (string, error) {
|
pctx.VariableFunc("JavaHome", func(config interface{}) (string, error) {
|
||||||
if override := config.(android.Config).Getenv("OVERRIDE_ANDROID_JAVA_HOME"); override != "" {
|
// This is set up and guaranteed by soong_ui
|
||||||
return override, nil
|
return config.(android.Config).Getenv("ANDROID_JAVA_HOME"), nil
|
||||||
}
|
|
||||||
if config.(android.Config).UseOpenJDK9() {
|
|
||||||
return "prebuilts/jdk/jdk9/${hostPrebuiltTag}", nil
|
|
||||||
}
|
|
||||||
return "prebuilts/jdk/jdk8/${hostPrebuiltTag}", nil
|
|
||||||
})
|
})
|
||||||
|
|
||||||
pctx.SourcePathVariable("JavaToolchain", "${JavaHome}/bin")
|
pctx.SourcePathVariable("JavaToolchain", "${JavaHome}/bin")
|
||||||
|
@@ -104,6 +104,9 @@ func NewConfig(ctx Context, args ...string) Config {
|
|||||||
"MAKEFLAGS",
|
"MAKEFLAGS",
|
||||||
"MAKELEVEL",
|
"MAKELEVEL",
|
||||||
"MFLAGS",
|
"MFLAGS",
|
||||||
|
|
||||||
|
// Set in envsetup.sh, reset in makefiles
|
||||||
|
"ANDROID_JAVA_TOOLCHAIN",
|
||||||
)
|
)
|
||||||
|
|
||||||
// Tell python not to spam the source tree with .pyc files.
|
// 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)
|
log.Fatalln("Error verifying tree state:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if srcDir, err := filepath.Abs("."); err == nil {
|
if srcDir := absPath(ctx, "."); strings.ContainsRune(srcDir, ' ') {
|
||||||
if strings.ContainsRune(srcDir, ' ') {
|
log.Println("You are building in a directory whose absolute path contains a space character:")
|
||||||
log.Println("You are building in a directory whose absolute path contains a space character:")
|
log.Println()
|
||||||
log.Println()
|
log.Printf("%q\n", srcDir)
|
||||||
log.Printf("%q\n", srcDir)
|
log.Println()
|
||||||
log.Println()
|
log.Fatalln("Directory names containing spaces are not supported")
|
||||||
log.Fatalln("Directory names containing spaces are not supported")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if outDir := ret.OutDir(); strings.ContainsRune(outDir, ' ') {
|
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")
|
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}
|
return Config{ret}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -50,14 +50,8 @@ func (c *Cmd) sandboxSupported() bool {
|
|||||||
|
|
||||||
func (c *Cmd) wrapSandbox() {
|
func (c *Cmd) wrapSandbox() {
|
||||||
homeDir, _ := c.Environment.Get("HOME")
|
homeDir, _ := c.Environment.Get("HOME")
|
||||||
outDir, err := filepath.Abs(c.config.OutDir())
|
outDir := absPath(c.ctx, c.config.OutDir())
|
||||||
if err != nil {
|
distDir := absPath(c.ctx, c.config.DistDir())
|
||||||
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
c.Args[0] = c.Path
|
c.Args[0] = c.Path
|
||||||
c.Path = sandboxExecPath
|
c.Path = sandboxExecPath
|
||||||
|
@@ -77,9 +77,7 @@ func runSoong(ctx Context, config Config) {
|
|||||||
var cfg microfactory.Config
|
var cfg microfactory.Config
|
||||||
cfg.Map("github.com/google/blueprint", "build/blueprint")
|
cfg.Map("github.com/google/blueprint", "build/blueprint")
|
||||||
|
|
||||||
if absPath, err := filepath.Abs("."); err == nil {
|
cfg.TrimPath = absPath(ctx, ".")
|
||||||
cfg.TrimPath = absPath
|
|
||||||
}
|
|
||||||
|
|
||||||
minibp := filepath.Join(config.SoongOutDir(), ".minibootstrap/minibp")
|
minibp := filepath.Join(config.SoongOutDir(), ".minibootstrap/minibp")
|
||||||
if _, err := microfactory.Build(&cfg, minibp, "github.com/google/blueprint/bootstrap/minibp"); err != nil {
|
if _, err := microfactory.Build(&cfg, minibp, "github.com/google/blueprint/bootstrap/minibp"); err != nil {
|
||||||
|
@@ -24,6 +24,14 @@ import (
|
|||||||
"unsafe"
|
"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
|
// indexList finds the index of a string in a []string
|
||||||
func indexList(s string, list []string) int {
|
func indexList(s string, list []string) int {
|
||||||
for i, l := range list {
|
for i, l := range list {
|
||||||
|
Reference in New Issue
Block a user