From 7b179ae17702758f56230260ad9b95be5ae47fce Mon Sep 17 00:00:00 2001 From: Tobias Thierer Date: Thu, 22 Feb 2018 14:33:55 +0000 Subject: [PATCH] Clarify error message for bootclasspath whitelist. Before this CL, the build could fail with error messages such as: Error: out/target/common/obj/JAVA_LIBRARIES/core-oj_intermediates/classes.jar contains class file jdk/internal/HotSpotIntrinsicCandidate.class, which is not in the whitelist This error message was only moderately helpful because it left a few questions unanswered or misled ("Whitelist for what?", "Where does the whitelist live?", "Is it a whitelist of class files or of packages?"). This CL clarifies that: - it's a whitelist of packages allowed on the bootclasspath, - where it lives (currently build/make/core/tasks/check_boot_jars/package_whitelist.txt) which makes the error message more actionable. Test: manually checked that the error message now looks okay. Bug: 17434570 Change-Id: I2f52a5e2eb532bc4945bedf9811de5857f67a9a3 --- core/tasks/check_boot_jars/check_boot_jars.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/core/tasks/check_boot_jars/check_boot_jars.py b/core/tasks/check_boot_jars/check_boot_jars.py index 1b4540cb8..9d71553c8 100755 --- a/core/tasks/check_boot_jars/check_boot_jars.py +++ b/core/tasks/check_boot_jars/check_boot_jars.py @@ -39,7 +39,7 @@ def LoadWhitelist(filename): return True -def CheckJar(jar): +def CheckJar(whitelist_path, jar): """Check a jar file. """ # Get the list of files inside the jar file. @@ -55,8 +55,9 @@ def CheckJar(jar): package_name = package_name.replace('/', '.') # Skip class without a package name if package_name and not whitelist_re.match(package_name): - print >> sys.stderr, ('Error: %s contains class file %s, which is not in the whitelist' - % (jar, f)) + print >> sys.stderr, ('Error: %s contains class file %s, whose package name %s is not ' + 'in the whitelist %s of packages allowed on the bootclasspath.' + % (jar, f, package_name, whitelist_path)) return False return True @@ -65,13 +66,14 @@ def main(argv): if len(argv) < 2: print __doc__ return 1 + whitelist_path = argv[0] - if not LoadWhitelist(argv[0]): + if not LoadWhitelist(whitelist_path): return 1 passed = True for jar in argv[1:]: - if not CheckJar(jar): + if not CheckJar(whitelist_path, jar): passed = False if not passed: return 1