Mercurial > hg > truffle
diff mx/mx_graal.py @ 21887:543f150e7fa0
com.oracle.jvmci.service.Service is now a marker for service implementations available via JVMCI; removed Truffle -> JVMCI dependency
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 09 Jun 2015 22:44:34 +0200 |
parents | b1234c06ea49 |
children | 9fe51d8fae0f |
line wrap: on
line diff
--- a/mx/mx_graal.py Tue Jun 09 22:31:05 2015 +0200 +++ b/mx/mx_graal.py Tue Jun 09 22:44:34 2015 +0200 @@ -550,18 +550,24 @@ shutil.move(tmp, dstLib) os.chmod(dstLib, permissions) -def _filterJVMCIServices(serviceImplNames, classpath): +def _filterJVMCIServices(servicesMap, classpath): """ Filters and returns the names in 'serviceImplNames' that denote types available in 'classpath' implementing or extending com.oracle.jvmci.service.Service. """ _, binDir = mx._compile_mx_class('FilterTypes', os.pathsep.join(classpath), myDir=dirname(__file__)) - cmd = [mx.java().java, '-cp', mx._cygpathU2W(os.pathsep.join([binDir] + classpath)), 'FilterTypes', 'com.oracle.jvmci.service.Service'] + serviceImplNames - services = subprocess.check_output(cmd) - if len(services) == 0: - return [] - return services.split('|') + serialized = [k + '=' + ','.join(v) for k, v in servicesMap.iteritems()] + cmd = [mx.java().java, '-cp', mx._cygpathU2W(os.pathsep.join([binDir] + classpath)), 'FilterTypes', 'com.oracle.jvmci.service.Service'] + serialized + serialized = subprocess.check_output(cmd) + if len(serialized) == 0: + return {} + servicesMap = {} + for e in serialized.split(' '): + k, v = e.split('=') + impls = v.split(',') + servicesMap[k] = impls + return servicesMap def _extractJVMCIFiles(jdkJars, jvmciJars, servicesDir, optionsDir, cleanDestination=True): if cleanDestination: @@ -602,9 +608,8 @@ with zf.open(member) as optionsFile, \ file(targetpath, "wb") as target: shutil.copyfileobj(optionsFile, target) - jvmciServices = _filterJVMCIServices(servicesMap.keys(), jdkJars) - for serviceName in jvmciServices: - serviceImpls = servicesMap[serviceName] + servicesMap = _filterJVMCIServices(servicesMap, jdkJars) + for serviceName, serviceImpls in servicesMap.iteritems(): fd, tmp = tempfile.mkstemp(prefix=serviceName) f = os.fdopen(fd, 'w+') for serviceImpl in serviceImpls: @@ -614,7 +619,6 @@ shutil.move(tmp, target) if mx.get_os() != 'windows': os.chmod(target, JDK_UNIX_PERMISSIONS_FILE) - return (jvmciServices, optionsFiles) def _updateJVMCIFiles(jdkDir): jreJVMCIDir = join(jdkDir, 'jre', 'lib', 'jvmci')