Mercurial > hg > truffle
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') |