# HG changeset patch # User Gilles Duboscq # Date 1429793364 -7200 # Node ID 3f51d02e536f9ddd3ab2c9a4ce6bb88ec05c453e # Parent 5d09e1eda92223b06fa448c7cfba6f1543b6117b Make should export graal service files diff -r 5d09e1eda922 -r 3f51d02e536f make/Makefile --- a/make/Makefile Thu Apr 23 13:31:20 2015 +0200 +++ b/make/Makefile Thu Apr 23 14:49:24 2015 +0200 @@ -635,6 +635,9 @@ $(EXPORT_JRE_LIB_GRAAL_DIR)/%.jar: $(SHARED_DIR)/%.jar $(install-file) +$(EXPORT_JRE_LIB_GRAAL_SERVICES_DIR)/%: $(SHARED_DIR)/services/% + $(install-file) + $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/code/% $(install-file) diff -r 5d09e1eda922 -r 3f51d02e536f make/defs.make --- a/make/defs.make Thu Apr 23 13:31:20 2015 +0200 +++ b/make/defs.make Thu Apr 23 14:49:24 2015 +0200 @@ -342,6 +342,7 @@ EXPORT_JRE_LIB_DIR = $(EXPORT_JRE_DIR)/lib EXPORT_JRE_LIB_EXT_DIR = $(EXPORT_JRE_LIB_DIR)/ext EXPORT_JRE_LIB_GRAAL_DIR = $(EXPORT_JRE_LIB_DIR)/graal +EXPORT_JRE_LIB_GRAAL_SERVICES_DIR = $(EXPORT_JRE_LIB_GRAAL_DIR)/services EXPORT_JRE_LIB_ARCH_DIR = $(EXPORT_JRE_LIB_DIR)/$(LIBARCH) # non-universal macosx builds need to appear universal @@ -357,10 +358,17 @@ EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jni.h 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-loader.jar +EXPORT_LIST += $(EXPORT_JRE_LIB_DIR)/truffle.jar EXPORT_LIST += $(EXPORT_JRE_LIB_GRAAL_DIR)/graal.jar EXPORT_LIST += $(EXPORT_JRE_LIB_GRAAL_DIR)/graal-truffle.jar -EXPORT_LIST += $(EXPORT_JRE_LIB_DIR)/graal-loader.jar -EXPORT_LIST += $(EXPORT_JRE_LIB_DIR)/truffle.jar + +EXPORT_LIST += $(EXPORT_JRE_LIB_GRAAL_SERVICES_DIR)/com.oracle.graal.compiler.match.MatchStatementSet +EXPORT_LIST += $(EXPORT_JRE_LIB_GRAAL_SERVICES_DIR)/com.oracle.graal.hotspot.HotSpotBackendFactory +EXPORT_LIST += $(EXPORT_JRE_LIB_GRAAL_SERVICES_DIR)/com.oracle.graal.nodes.spi.ReplacementsProvider +EXPORT_LIST += $(EXPORT_JRE_LIB_GRAAL_SERVICES_DIR)/com.oracle.graal.phases.tiers.CompilerConfiguration +EXPORT_LIST += $(EXPORT_JRE_LIB_GRAAL_SERVICES_DIR)/com.oracle.graal.truffle.hotspot.nfi.RawNativeCallNodeFactory +EXPORT_LIST += $(EXPORT_JRE_LIB_GRAAL_SERVICES_DIR)/com.oracle.graal.truffle.OptimizedCallTargetInstrumentationFactory .PHONY: $(HS_ALT_MAKE)/defs.make diff -r 5d09e1eda922 -r 3f51d02e536f mx/mx_graal.py --- a/mx/mx_graal.py Thu Apr 23 13:31:20 2015 +0200 +++ b/mx/mx_graal.py Thu Apr 23 14:49:24 2015 +0200 @@ -618,13 +618,12 @@ return True return False -def _updateGraalServiceFiles(jdkDir): - jreGraalDir = join(jdkDir, 'jre', 'lib', 'graal') - graalJars = [join(jreGraalDir, e) for e in os.listdir(jreGraalDir) if e.startswith('graal') and e.endswith('.jar')] - jreGraalServicesDir = join(jreGraalDir, 'services') - if exists(jreGraalServicesDir): - shutil.rmtree(jreGraalServicesDir) - os.makedirs(jreGraalServicesDir) +def _extractGraalServiceFiles(graalJars, destination, cleanDestination=True): + services = set() + if cleanDestination: + if exists(destination): + shutil.rmtree(destination) + os.makedirs(destination) for jar in graalJars: if os.path.isfile(jar): with zipfile.ZipFile(jar) as zf: @@ -636,7 +635,8 @@ assert serviceName and member == 'META-INF/services/' + serviceName if not _isGraalService(serviceName, graalJars): continue - target = join(jreGraalServicesDir, serviceName) + services.add(serviceName) + target = join(destination, serviceName) lines = [] with zf.open(member) as serviceFile: lines.extend(serviceFile.readlines()) @@ -646,6 +646,13 @@ with open(target, "w+") as targetFile: for line in lines: targetFile.write(line.rstrip() + os.linesep) + return services + +def _updateGraalServiceFiles(jdkDir): + jreGraalDir = join(jdkDir, 'jre', 'lib', 'graal') + graalJars = [join(jreGraalDir, e) for e in os.listdir(jreGraalDir) if e.startswith('graal') and e.endswith('.jar')] + jreGraalServicesDir = join(jreGraalDir, 'services') + _extractGraalServiceFiles(graalJars, jreGraalServicesDir) @@ -845,6 +852,7 @@ defsPath = join(_graal_home, 'make', 'defs.make') with open(defsPath) as fp: defs = fp.read() + graalJars = [] for jdkDist in _jdkDeployedDists: dist = mx.distribution(jdkDist.name) defLine = 'EXPORT_LIST += $(EXPORT_JRE_LIB_DIR)/' + basename(dist.path) @@ -852,11 +860,17 @@ defLine = 'EXPORT_LIST += $(EXPORT_JRE_LIB_EXT_DIR)/' + basename(dist.path) elif jdkDist.isGraalClassLoader: defLine = 'EXPORT_LIST += $(EXPORT_JRE_LIB_GRAAL_DIR)/' + basename(dist.path) + graalJars.append(dist.path) else: 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) + services = _extractGraalServiceFiles(graalJars, join(opts2.export_dir, 'services')) + for service in services: + defLine = 'EXPORT_LIST += $(EXPORT_JRE_LIB_GRAAL_SERVICES_DIR)/' + service + if defLine not in defs: + mx.abort('Missing following line in ' + defsPath + ' for service from ' + dist.name + '\n' + defLine) graalOptions = join(_graal_home, 'graal.options') if exists(graalOptions): shutil.copy(graalOptions, opts2.export_dir)