diff mx/commands.py @ 10083:8dc4cdde75fb

remove build-graal.xml and have make directly call mx to generate graal.jar
author Doug Simon <doug.simon@oracle.com>
date Tue, 18 Jun 2013 18:17:04 +0200
parents 0d378ea2b822
children acc1c61ba408
line wrap: on
line diff
--- a/mx/commands.py	Tue Jun 18 16:39:17 2013 +0200
+++ b/mx/commands.py	Tue Jun 18 18:17:04 2013 +0200
@@ -424,119 +424,6 @@
     build = _vmbuild if _vmSourcesAvailable else 'product'
     print join(_graal_home, 'jdk' + str(mx.java().version), build)
 
-def initantbuild(args):
-    """(re)generates an ant build file for producing graal.jar"""
-    parser=ArgumentParser(prog='mx initantbuild')
-    parser.add_argument('-f', '--buildfile', help='file to generate', default=join(_graal_home, 'make', 'build-graal.xml'))
-
-    args = parser.parse_args(args)
-    
-    out = mx.XMLDoc()
-    
-    out.comment("""
- Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
- This code is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
-""")
-    
-    out.open('project', {'name' : 'graal', 'default' : 'main', 'basedir' : '.'})
-    out.element('property', {'name' : 'src.dir', 'value' : '${gamma.dir}/graal'})
-    out.element('property', {'name' : 'classes.dir', 'value' : '${shared.dir}/graal'})
-    out.element('property', {'name' : 'jar.dir', 'value' : '${shared.dir}'})
-    out.element('property', {'name' : 'jar.file', 'value' : '${jar.dir}/graal.jar'})
-    
-    out.element('target', {'name' : 'main', 'depends' : 'options,jar'})
-
-    serviceMap = {};
-    def addService(service, provider):
-        if service not in serviceMap:
-            serviceMap[service] = set();
-        serviceMap[service].add(provider)
-
-    out.open('target', {'name' : 'compile', 'depends' : 'cleanclasses'})
-    out.element('mkdir', {'dir' : '${classes.dir}'})
-    out.open('javac', {'destdir' : '${classes.dir}', 'debug' : 'on', 'includeantruntime' : 'false', })
-
-    for p in mx.sorted_deps(mx.distribution('GRAAL').deps):
-        out.element('src', {'path' : '${src.dir}/' + p.name})
-        servicesDir = join(p.output_dir(), 'META-INF', 'services')
-        if exists(servicesDir):
-            for service in os.listdir(servicesDir):
-                with open(join(servicesDir, service), 'r') as serviceFile:
-                    for line in serviceFile:
-                        addService(service, line.strip())
-        providersDir = join(p.output_dir(), 'META-INF', 'providers')
-        if exists(providersDir):
-            for provider in os.listdir(providersDir):
-                with open(join(providersDir, provider), 'r') as providerFile:
-                    for line in providerFile:
-                        addService(line.strip(), provider)
-
-    out.element('compilerarg', {'value' : '-XDignore.symbol.file'})
-    
-    out.open('classpath')
-    out.open('fileset', {'dir' : '${java.home}/../lib'})
-    out.element('include', {'name' : 'tools.jar'})
-    out.close('fileset')
-    out.close('classpath')
-    
-    out.close('javac')
-    out.close('target')
-
-    out.open('target', {'name' : 'jar', 'depends' : 'compile'})
-    out.element('mkdir', {'dir' : '${jar.dir}'})
-    out.open('jar', {'destfile' : '${jar.file}', 'basedir' : '${classes.dir}'})
-
-    for service in sorted(serviceMap.iterkeys()):
-        out.open('service', {'type' : service})
-        for provider in sorted(serviceMap[service]):
-            out.element('provider', {'classname' : provider})
-        out.close('service')
-
-    out.close('jar');
-    out.close('target')
-    
-    out.open('target', {'name' : 'cleanclasses'})
-    out.element('delete', {'dir' : '${classes.dir}'})
-    out.close('target')
-
-    out.open('target', {'name' : 'options', 'if' : 'graal.options.exists'})
-    out.open('copy', {'todir' : '${jar.dir}'})
-    out.element('filelist', {'dir' : '${gamma.dir}', 'files' : 'graal.options'})
-    out.close('copy')
-    out.close('target')
-
-    out.open('target', {'name' : 'check-graal-options-exists'})
-    out.element('available', {'property' : 'graal.options.exists', 'file' : '${gamma.dir}/graal.options'})
-    out.close('target')
-    
-    out.open('target', {'name' : 'clean', 'depends' : 'cleanclasses'})
-    out.element('delete', {'file' : '${jar.file}'})
-    out.close('target')
-
-    out.close('project')
-    
-    return mx.update_file(args.buildfile, out.xml(indent='  ', newl='\n'))
-
 def buildvars(args):
     """Describes the variables that can be set by the -D option to the 'mx build' commmand"""
 
@@ -567,9 +454,21 @@
 
     # Call mx.build to compile the Java sources
     parser=ArgumentParser(prog='mx build')
+    parser.add_argument('--export-dir', help='directory to which graal.jar and graal.options will be copied', metavar='<path>')
     parser.add_argument('-D', action='append', help='set a HotSpot build variable (run \'mx buildvars\' to list variables)', metavar='name=value')
     opts2 = mx.build(['--source', '1.7'] + args, parser=parser)
 
+    if opts2.export_dir is not None:
+        if not exists(opts2.export_dir):
+            os.makedirs(opts2.export_dir)
+        else:
+            assert os.path.isdir(opts2.export_dir), '{} is not a directory'.format(opts2.export_dir)
+
+        shutil.copy(mx.distribution('GRAAL').path, opts2.export_dir)
+        graalOptions = join(_graal_home, 'graal.options')
+        if exists(graalOptions):
+            shutil.copy(graalOptions, opts2.export_dir)
+
     if not _vmSourcesAvailable or not opts2.native:
         return
 
@@ -590,8 +489,6 @@
         assert vm == 'graal', vm
         buildSuffix = 'graal'
         
-    initantbuild([])
-
     for build in builds:
         if build == 'ide-build-target':
             build = os.environ.get('IDE_BUILD_TARGET', 'product')
@@ -1011,12 +908,6 @@
         build(['--no-native', '--jdt-warning-as-error'])
         tasks.append(t.stop())
 
-        t = Task('Check build-graal.xml')
-        mx.log(time.strftime('%d %b %Y %H:%M:%S - Ensuring make/build-graal.xml file is up to date...'))
-        if initantbuild([]):
-            t.abort('Rerun "mx build" and check-in the modified make/build-graal.xml file.')
-        tasks.append(t.stop())
-        
         t = Task('Checkstyle')
         if mx.checkstyle([]) != 0:
             t.abort('Checkstyle warnings were found')
@@ -1384,7 +1275,6 @@
         'clean': [clean, ''],
         'hsdis': [hsdis, '[att]'],
         'hcfdis': [hcfdis, ''],
-        'initantbuild' : [initantbuild, '[-options]'],
         'igv' : [igv, ''],
         'jdkhome': [jdkhome, ''],
         'dacapo': [dacapo, '[[n] benchmark] [VM options|@DaCapo options]'],