comparison mx/commands.py @ 9163:45b37dcb24de

Automatically add service providers to build-graal.xml
author Roland Schatz <roland.schatz@oracle.com>
date Tue, 16 Apr 2013 19:01:24 +0200
parents 8d4174140745
children 0f3fe35513a0
comparison
equal deleted inserted replaced
9162:85b71f453ef5 9163:45b37dcb24de
499 out.element('property', {'name' : 'jar.dir', 'value' : '${shared.dir}'}) 499 out.element('property', {'name' : 'jar.dir', 'value' : '${shared.dir}'})
500 out.element('property', {'name' : 'jar.file', 'value' : '${jar.dir}/graal.jar'}) 500 out.element('property', {'name' : 'jar.file', 'value' : '${jar.dir}/graal.jar'})
501 501
502 out.element('target', {'name' : 'main', 'depends' : 'jar'}) 502 out.element('target', {'name' : 'main', 'depends' : 'jar'})
503 503
504 serviceMap = {};
505 def addService(service, provider):
506 if service not in serviceMap:
507 serviceMap[service] = set();
508 serviceMap[service].add(provider)
509
504 out.open('target', {'name' : 'compile', 'depends' : 'cleanclasses'}) 510 out.open('target', {'name' : 'compile', 'depends' : 'cleanclasses'})
505 out.element('mkdir', {'dir' : '${classes.dir}'}) 511 out.element('mkdir', {'dir' : '${classes.dir}'})
506 out.open('javac', {'destdir' : '${classes.dir}', 'debug' : 'on', 'includeantruntime' : 'false', 'encoding' : 'UTF-8'}) 512 out.open('javac', {'destdir' : '${classes.dir}', 'debug' : 'on', 'includeantruntime' : 'false', 'encoding' : 'UTF-8'})
513
507 for p in mx.sorted_deps(mx.distribution('GRAAL').deps): 514 for p in mx.sorted_deps(mx.distribution('GRAAL').deps):
508 out.element('src', {'path' : '${src.dir}/' + p.name}) 515 out.element('src', {'path' : '${src.dir}/' + p.name})
516 servicesDir = join(p.output_dir(), 'META-INF', 'services')
517 if exists(servicesDir):
518 for service in os.listdir(servicesDir):
519 with open(join(servicesDir, service), 'r') as serviceFile:
520 for line in serviceFile:
521 addService(service, line.strip())
522 providersDir = join(p.output_dir(), 'META-INF', 'providers')
523 if exists(providersDir):
524 for provider in os.listdir(providersDir):
525 with open(join(providersDir, provider), 'r') as providerFile:
526 for line in providerFile:
527 addService(line.strip(), provider)
528
509 out.element('compilerarg', {'value' : '-XDignore.symbol.file'}) 529 out.element('compilerarg', {'value' : '-XDignore.symbol.file'})
510 530
511 out.open('classpath') 531 out.open('classpath')
512 out.open('fileset', {'dir' : '${java.home}/../lib'}) 532 out.open('fileset', {'dir' : '${java.home}/../lib'})
513 out.element('include', {'name' : 'tools.jar'}) 533 out.element('include', {'name' : 'tools.jar'})
517 out.close('javac') 537 out.close('javac')
518 out.close('target') 538 out.close('target')
519 539
520 out.open('target', {'name' : 'jar', 'depends' : 'compile'}) 540 out.open('target', {'name' : 'jar', 'depends' : 'compile'})
521 out.element('mkdir', {'dir' : '${jar.dir}'}) 541 out.element('mkdir', {'dir' : '${jar.dir}'})
522 out.element('jar', {'destfile' : '${jar.file}', 'basedir' : '${classes.dir}'}) 542 out.open('jar', {'destfile' : '${jar.file}', 'basedir' : '${classes.dir}'})
543
544 for service, providers in serviceMap.iteritems():
545 out.open('service', {'type' : service})
546 for provider in providers:
547 out.element('provider', {'classname' : provider})
548 out.close('service')
549
550 out.close('jar');
523 out.close('target') 551 out.close('target')
524 552
525 out.open('target', {'name' : 'cleanclasses'}) 553 out.open('target', {'name' : 'cleanclasses'})
526 out.element('delete', {'dir' : '${classes.dir}'}) 554 out.element('delete', {'dir' : '${classes.dir}'})
527 out.close('target') 555 out.close('target')