Merge changes I13910647,Ie061e90c,I1c1cb098

* changes:
  Escape genrule commands
  Allow java binary wrapper files to reference filegroups
  Allow globs in tool_files
diff --git a/cc/config/global.go b/cc/config/global.go
index 4057317..5d1f7c4 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -132,15 +132,12 @@
 
 	// Some Android.mk files still have warnings.
 	WarningAllowedOldProjects = []string{
-		"cts/hostsidetests/security/securityPatch/",
-		"cts/tests/tests/permission/jni/",
 		"frameworks/av/drm/mediacas/plugins/",
 		"frameworks/av/services/mediaextractor/",
 		"frameworks/webview/chromium/",
 		"hardware/libhardware/modules/",
 		"hardware/qcom/",
 		"sdk/emulator/mksdcard/",
-		"system/vold/tests/",
 		"tools/adt/idea/android/ultimate/get_modification_time/jni/",
 	}
 )
diff --git a/java/config/makevars.go b/java/config/makevars.go
index b9009f3..dc9a91b 100644
--- a/java/config/makevars.go
+++ b/java/config/makevars.go
@@ -36,6 +36,8 @@
 	}
 
 	ctx.Strict("ANDROID_JAVA_HOME", "${JavaHome}")
+	ctx.Strict("ANDROID_JAVA8_HOME", "prebuilts/jdk/jdk8/${hostPrebuiltTag}")
+	ctx.Strict("ANDROID_JAVA9_HOME", "prebuilts/jdk/jdk9/${hostPrebuiltTag}")
 	ctx.Strict("ANDROID_JAVA_TOOLCHAIN", "${JavaToolchain}")
 	ctx.Strict("JAVA", "${JavaCmd}")
 	ctx.Strict("JAVAC", "${JavacCmd}")
diff --git a/ui/build/finder.go b/ui/build/finder.go
index f35133b..a0f5d08 100644
--- a/ui/build/finder.go
+++ b/ui/build/finder.go
@@ -38,15 +38,28 @@
 	if err != nil {
 		ctx.Fatalf("No working directory for module-finder: %v", err.Error())
 	}
+	filesystem := fs.OsFs
+
+	// if the root dir is ignored, then the subsequent error messages are very confusing,
+	// so check for that upfront
+	pruneFiles := []string{".out-dir", ".find-ignore"}
+	for _, name := range pruneFiles {
+		prunePath := filepath.Join(dir, name)
+		_, statErr := filesystem.Lstat(prunePath)
+		if statErr == nil {
+			ctx.Fatalf("%v must not exist", prunePath)
+		}
+	}
+
 	cacheParams := finder.CacheParams{
 		WorkingDirectory: dir,
 		RootDirs:         []string{"."},
 		ExcludeDirs:      []string{".git", ".repo"},
-		PruneFiles:       []string{".out-dir", ".find-ignore"},
+		PruneFiles:       pruneFiles,
 		IncludeFiles:     []string{"Android.mk", "Android.bp", "Blueprints", "CleanSpec.mk", "TEST_MAPPING"},
 	}
 	dumpDir := config.FileListDir()
-	f, err = finder.New(cacheParams, fs.OsFs, logger.New(ioutil.Discard),
+	f, err = finder.New(cacheParams, filesystem, logger.New(ioutil.Discard),
 		filepath.Join(dumpDir, "files.db"))
 	if err != nil {
 		ctx.Fatalf("Could not create module-finder: %v", err)
@@ -82,6 +95,9 @@
 
 	androidBps := f.FindNamedAt(".", "Android.bp")
 	androidBps = append(androidBps, f.FindNamedAt("build/blueprint", "Blueprints")...)
+	if len(androidBps) == 0 {
+		ctx.Fatalf("No Android.bp found")
+	}
 	err = dumpListToFile(androidBps, filepath.Join(dumpDir, "Android.bp.list"))
 	if err != nil {
 		ctx.Fatalf("Could not find modules: %v", err)