# HG changeset patch # User Gilles Duboscq # Date 1429630373 -7200 # Node ID 0eff75735b2913fd4ca7400accda72bb6fcb277a # Parent 69d03eeb5eedc3c7df2d8906233841504dd791c4# Parent 2ee48d02afe375ced155314889c985dd5b7317cf Merge diff -r 69d03eeb5eed -r 0eff75735b29 make/Makefile --- a/make/Makefile Tue Apr 21 11:40:25 2015 +0200 +++ b/make/Makefile Tue Apr 21 17:32:53 2015 +0200 @@ -632,6 +632,9 @@ $(EXPORT_JRE_LIB_EXT_DIR)/%.jar: $(SHARED_DIR)/%.jar $(install-file) +$(EXPORT_JRE_LIB_GRAAL_DIR)/%.jar: $(SHARED_DIR)/%.jar + $(install-file) + $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/code/% $(install-file) diff -r 69d03eeb5eed -r 0eff75735b29 mx/mx_graal.py --- a/mx/mx_graal.py Tue Apr 21 11:40:25 2015 +0200 +++ b/mx/mx_graal.py Tue Apr 21 17:32:53 2015 +0200 @@ -594,6 +594,35 @@ shutil.move(tmp, dstLib) os.chmod(dstLib, permissions) +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) + for jar in graalJars: + if os.path.isfile(jar): + with zipfile.ZipFile(jar) as zf: + for member in zf.namelist(): + if not member.startswith('META-INF/services'): + continue + serviceName = basename(member) + # we don't handle directories + assert serviceName + target = join(jreGraalServicesDir, serviceName) + lines = [] + with zf.open(member) as serviceFile: + lines.extend(serviceFile.readlines()) + if exists(target): + with open(target) as targetFile: + lines.extend(targetFile.readlines()) + with open(target, "w+") as targetFile: + for line in lines: + targetFile.write(line.rstrip() + os.linesep) + + + def _installDistInJdks(deployableDist): """ Installs the jar(s) for a given Distribution into all existing Graal JDKs @@ -613,7 +642,8 @@ if exists(jdks): for e in os.listdir(jdks): - jreLibDir = join(jdks, e, 'jre', 'lib') + jdkDir = join(jdks, e) + jreLibDir = join(jdkDir, 'jre', 'lib') if exists(jreLibDir): if deployableDist.isExtension: targetDir = join(jreLibDir, 'ext') @@ -625,23 +655,10 @@ os.makedirs(targetDir) _copyToJdk(dist.path, targetDir) if dist.sourcesPath: - _copyToJdk(dist.sourcesPath, join(jdks, e)) - # deploy service files + _copyToJdk(dist.sourcesPath, jdkDir) if deployableDist.isGraalClassLoader: - # deploy services files - jreGraalServicesDir = join(jreLibDir, 'graal', 'services') - if not exists(jreGraalServicesDir): - os.makedirs(jreGraalServicesDir) - with zipfile.ZipFile(dist.path) as zf: - for member in zf.namelist(): - if not member.startswith('META-INF/services'): - continue - serviceName = basename(member) - # we don't handle directories - assert serviceName - target = join(jreGraalServicesDir, serviceName) - with zf.open(member) as serviceFile, open(target, "w+") as targetFile: - shutil.copyfileobj(serviceFile, targetFile) + # deploy service files + _updateGraalServiceFiles(jdkDir) # run a command in the windows SDK Debug Shell def _runInDebugShell(cmd, workingDir, logFile=None, findInOutput=None, respondTo=None): diff -r 69d03eeb5eed -r 0eff75735b29 mxtool/mx.py --- a/mxtool/mx.py Tue Apr 21 11:40:25 2015 +0200 +++ b/mxtool/mx.py Tue Apr 21 17:32:53 2015 +0200 @@ -2798,7 +2798,7 @@ archive(['@' + dist.name]) if args.check_distributions and not dist.isProcessorDistribution: with zipfile.ZipFile(dist.path, 'r') as zf: - files.extend([member for member in zf.namelist() if not member.startswith('META-INF/services')]) + files.extend([member for member in zf.namelist() if not member.startswith('META-INF')]) dups = set([x for x in files if files.count(x) > 1]) if len(dups) > 0: abort('Distributions overlap! duplicates: ' + str(dups))