# HG changeset patch # User Doug Simon # Date 1408747844 -7200 # Node ID 0583d157992aca428a0f2757a471ad7a38753767 # Parent 451468f7340b157f0e2a4dd2443028b820710e2c formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment diff -r 451468f7340b -r 0583d157992a make/defs.make --- a/make/defs.make Sat Aug 23 00:21:50 2014 +0200 +++ b/make/defs.make Sat Aug 23 00:50:44 2014 +0200 @@ -347,6 +347,9 @@ EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jmm.h EXPORT_LIST += $(EXPORT_JRE_LIB_DIR)/graal.jar +EXPORT_LIST += $(EXPORT_JRE_LIB_DIR)/graal-truffle.jar +EXPORT_LIST += $(EXPORT_JRE_LIB_DIR)/graal-loader.jar +EXPORT_LIST += $(EXPORT_JRE_LIB_DIR)/truffle.jar .PHONY: $(HS_ALT_MAKE)/defs.make diff -r 451468f7340b -r 0583d157992a mx/mx_graal.py --- a/mx/mx_graal.py Sat Aug 23 00:21:50 2014 +0200 +++ b/mx/mx_graal.py Sat Aug 23 00:50:44 2014 +0200 @@ -83,6 +83,18 @@ _minVersion = mx.VersionSpec('1.8') +class JDKDeployedDist: + def __init__(self, name, isExtension): + self.name = name + self.isExtension = isExtension + +_jdkDeployedDists = [ + JDKDeployedDist('TRUFFLE', isExtension=False), + JDKDeployedDist('GRAAL_LOADER', isExtension=False), + JDKDeployedDist('GRAAL', isExtension=False), + JDKDeployedDist('GRAAL_TRUFFLE', isExtension=False) +] + JDK_UNIX_PERMISSIONS_DIR = 0755 JDK_UNIX_PERMISSIONS_FILE = 0644 JDK_UNIX_PERMISSIONS_EXEC = 0755 @@ -459,14 +471,10 @@ _handle_missing_VM(build, vmToCheck if vmToCheck else 'graal') if installJars: - def _installDistInJdksIfExists(dist): + for jdkDist in _jdkDeployedDists: + dist = mx.distribution(jdkDist.name) if exists(dist.path): - _installDistInJdks(dist) - - _installDistInJdksIfExists(mx.distribution('GRAAL')) - _installDistInJdksIfExists(mx.distribution('GRAAL_LOADER')) - _installDistInJdksIfExists(mx.distribution('TRUFFLE')) - _installDistInJdksIfExists(mx.distribution('GRAAL_TRUFFLE')) + _installDistInJdks(dist, jdkDist.isExtension) if vmToCheck is not None: jvmCfg = _vmCfgInJdk(jdk) @@ -569,6 +577,9 @@ shutil.move(tmp, dstLib) os.chmod(dstLib, permissions) +def _installDistInJdksExt(dist): + _installDistInJdks(dist, True) + def _installDistInJdks(dist, ext=False): """ Installs the jar(s) for a given Distribution into all existing Graal JDKs @@ -740,8 +751,15 @@ else: assert os.path.isdir(opts2.export_dir), '{} is not a directory'.format(opts2.export_dir) - shutil.copy(mx.distribution('GRAAL').path, opts2.export_dir) - shutil.copy(mx.distribution('GRAAL_LOADER').path, opts2.export_dir) + defsPath = join(_graal_home, 'make', 'defs.make') + with open(defsPath) as fp: + defs = fp.read() + for jdkDist in _jdkDeployedDists: + dist = mx.distribution(jdkDist.name) + defLine = 'EXPORT_LIST += $(EXPORT_JRE_LIB_DIR)/' + basename(dist.path) + if defLine not in defs: + mx.abort('Missing following line in ' + defsPath + '\n' + defLine) + shutil.copy(dist.path, opts2.export_dir) graalOptions = join(_graal_home, 'graal.options') if exists(graalOptions): shutil.copy(graalOptions, opts2.export_dir) @@ -1132,9 +1150,11 @@ # access core Graal classes. cp = prefixCp + coreCp + os.pathsep + projectsCp if isGraalEnabled(_get_vm()): - graalDist = mx.distribution('GRAAL') - graalJarCp = set([d.output_dir() for d in graalDist.sorted_deps()]) - cp = os.pathsep.join([e for e in cp.split(os.pathsep) if e not in graalJarCp]) + excluded = set() + for jdkDist in _jdkDeployedDists: + dist = mx.distribution(jdkDist.name) + excluded.update([d.output_dir() for d in dist.sorted_deps()]) + cp = os.pathsep.join([e for e in cp.split(os.pathsep) if e not in excluded]) vmArgs = ['-XX:-UseGraalClassLoader'] + vmArgs if len(testclasses) == 1: @@ -2170,7 +2190,7 @@ cmd = ['-jar', findbugsJar, '-textui', '-low', '-maxRank', '15'] if sys.stdout.isatty(): cmd.append('-progress') - cmd = cmd + ['-auxclasspath', mx.classpath(['GRAAL'] + [p.name for p in nonTestProjects]), '-output', findbugsResults, '-exitcode'] + args + outputDirs + cmd = cmd + ['-auxclasspath', mx.classpath([d.name for d in _jdkDeployedDists] + [p.name for p in nonTestProjects]), '-output', findbugsResults, '-exitcode'] + args + outputDirs exitcode = mx.run_java(cmd, nonZeroIsFatal=False) if exitcode != 0: with open(findbugsResults) as fp: @@ -2286,7 +2306,8 @@ global _vm_prefix _vm_prefix = opts.vm_prefix - mx.distribution('GRAAL').add_update_listener(_installDistInJdks) - mx.distribution('GRAAL_LOADER').add_update_listener(_installDistInJdks) - mx.distribution('TRUFFLE').add_update_listener(_installDistInJdks) - mx.distribution('GRAAL_TRUFFLE').add_update_listener(_installDistInJdks) + for jdkDist in _jdkDeployedDists: + if jdkDist.isExtension: + mx.distribution(jdkDist.name).add_update_listener(_installDistInJdksExt) + else: + mx.distribution(jdkDist.name).add_update_listener(_installDistInJdks)