comparison mx.graal/mx_graal.py @ 22041:56c50504d60d

mx: removed JVMCI code from Distribution.make_archive
author Doug Simon <doug.simon@oracle.com>
date Sat, 20 Jun 2015 12:37:01 +0200
parents 434fbaaf53d7
children db48a62aba36 1ccd66f5890c
comparison
equal deleted inserted replaced
22040:0751fdae4e7a 22041:56c50504d60d
2341 mx.add_argument('--gdb', action='store_const', const='/usr/bin/gdb --args', dest='vm_prefix', help='alias for --vmprefix "/usr/bin/gdb --args"') 2341 mx.add_argument('--gdb', action='store_const', const='/usr/bin/gdb --args', dest='vm_prefix', help='alias for --vmprefix "/usr/bin/gdb --args"')
2342 mx.add_argument('--lldb', action='store_const', const='lldb --', dest='vm_prefix', help='alias for --vmprefix "lldb --"') 2342 mx.add_argument('--lldb', action='store_const', const='lldb --', dest='vm_prefix', help='alias for --vmprefix "lldb --"')
2343 2343
2344 mx.update_commands(suite, commands) 2344 mx.update_commands(suite, commands)
2345 2345
2346 class JVMCIArchiveParticipant:
2347 def __init__(self, dist):
2348 self.dist = dist
2349 self.jvmciServices = {}
2350
2351 def __opened__(self, arc, srcArc, services):
2352 self.services = services
2353 self.arc = arc
2354 self.expectedOptionsProviders = set()
2355
2356 def __add__(self, arcname, contents):
2357 if arcname.startswith('META-INF/jvmci.services/'):
2358 service = arcname[len('META-INF/jvmci.services/'):]
2359 self.jvmciServices.setdefault(service, []).extend([provider for provider in contents.split('\n')])
2360 return True
2361 if arcname.startswith('META-INF/jvmci.providers/'):
2362 provider = arcname[len('META-INF/jvmci.providers/'):]
2363 for service in contents.split('\n'):
2364 self.jvmciServices.setdefault(service, []).append(provider)
2365 return True
2366 elif arcname.startswith('META-INF/jvmci.options/'):
2367 # Need to create service files for the providers of the
2368 # com.oracle.jvmci.options.Options service created by
2369 # com.oracle.jvmci.options.processor.OptionProcessor.
2370 optionsOwner = arcname[len('META-INF/jvmci.options/'):]
2371 provider = optionsOwner + '_Options'
2372 self.expectedOptionsProviders.add(provider.replace('.', '/') + '.class')
2373 #assert exists(providerClassfile), 'missing generated Options provider ' + providerClassfile
2374 self.services.setdefault('com.oracle.jvmci.options.Options', []).append(provider)
2375 return False
2376
2377 def __addsrc__(self, arcname, contents):
2378 return False
2379
2380 def __closing__(self):
2381 self.expectedOptionsProviders -= set(self.arc.zf.namelist())
2382 assert len(self.expectedOptionsProviders) == 0, 'missing generated Options providers:\n ' + '\n '.join(self.expectedOptionsProviders)
2383 for service, providers in self.jvmciServices.iteritems():
2384 arcname = 'META-INF/jvmci.services/' + service
2385 self.arc.zf.writestr(arcname, '\n'.join(providers))
2386
2346 def mx_post_parse_cmd_line(opts): # 2387 def mx_post_parse_cmd_line(opts): #
2347 # TODO _minVersion check could probably be part of a Suite in mx? 2388 # TODO _minVersion check could probably be part of a Suite in mx?
2348 def _versionCheck(version): 2389 def _versionCheck(version):
2349 return version >= _minVersion and (not _untilVersion or version >= _untilVersion) 2390 return version >= _minVersion and (not _untilVersion or version >= _untilVersion)
2350 versionDesc = ">=" + str(_minVersion) 2391 versionDesc = ">=" + str(_minVersion)
2375 def _install(dist): 2416 def _install(dist):
2376 assert dist.name == jdkDeployable.name, dist.name + "!=" + jdkDeployable.name 2417 assert dist.name == jdkDeployable.name, dist.name + "!=" + jdkDeployable.name
2377 if not jdkDist.partOfHotSpot: 2418 if not jdkDist.partOfHotSpot:
2378 _installDistInJdks(jdkDeployable) 2419 _installDistInJdks(jdkDeployable)
2379 return _install 2420 return _install
2380 mx.distribution(jdkDist.name).add_update_listener(_close(jdkDist)) 2421 dist = mx.distribution(jdkDist.name)
2422 dist.add_update_listener(_close(jdkDist))
2423 if jdkDist.usesJVMCIClassLoader:
2424 dist.set_archiveparticipant(JVMCIArchiveParticipant(dist))
2425