annotate mx/mx_graal.py @ 13509:a8831418ff04

mx: add completion support for hotspot options (GRAAL-297)
author Bernhard Urban <bernhard.urban@jku.at>
date Sat, 04 Jan 2014 01:43:37 +0200
parents 8a5b39d0bfb5
children 51e16c7a5685
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
1 #
4225
339cf8d4904d Made mx.run work properly when stderr is redirected to stdout.
Doug Simon <doug.simon@oracle.com>
parents: 4219
diff changeset
2 # commands.py - the GraalVM specific commands
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
3 #
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
4 # ----------------------------------------------------------------------------------------------------
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
5 #
4187
ac5c2bdfcca2 Disabled copyright check in the gate until the CheckCopyright tools supports the HotSpot copyright notice format.
Doug Simon <doug.simon@oracle.com>
parents: 4185
diff changeset
6 # Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
8 #
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
9 # This code is free software; you can redistribute it and/or modify it
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
10 # under the terms of the GNU General Public License version 2 only, as
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
11 # published by the Free Software Foundation.
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
12 #
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
13 # This code is distributed in the hope that it will be useful, but WITHOUT
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
14 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
15 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
16 # version 2 for more details (a copy is included in the LICENSE file that
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
17 # accompanied this code).
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
18 #
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
19 # You should have received a copy of the GNU General Public License version
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
20 # 2 along with this work; if not, write to the Free Software Foundation,
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
21 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
22 #
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
23 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
24 # or visit www.oracle.com if you need additional information or have any
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
25 # questions.
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
26 #
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
27 # ----------------------------------------------------------------------------------------------------
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
28
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
29 import os, sys, shutil, zipfile, tempfile, re, time, datetime, platform, subprocess, multiprocessing, StringIO
8406
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
30 from os.path import join, exists, dirname, basename, getmtime
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
31 from argparse import ArgumentParser, REMAINDER
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
32 from outputparser import OutputParser, ValuesMatcher
4144
34527a24bcf8 Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents: 3736
diff changeset
33 import mx
13472
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
34 import xml.dom.minidom
4215
a2caa019ba3a Fix mx : commands' scripts mx_init hook should be called before parsing command line arguments.
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4187
diff changeset
35 import sanitycheck
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
36 import itertools
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
37 import json, textwrap
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
38
10574
0cad5096735e commands.py: Make sure _jdk returns an absolute path. Use _jdk and _jdksDir where necessary
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10570
diff changeset
39 # This works because when mx loads this file, it makes sure __file__ gets an absolute path
4144
34527a24bcf8 Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents: 3736
diff changeset
40 _graal_home = dirname(dirname(__file__))
4417
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
41
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
42 """ Used to distinguish an exported GraalVM (see 'mx export'). """
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
43 _vmSourcesAvailable = exists(join(_graal_home, 'make')) and exists(join(_graal_home, 'src'))
4417
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
44
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
45 """ The VMs that can be built and run along with an optional description. Only VMs with a
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
46 description are listed in the dialogue for setting the default VM (see _get_vm()). """
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
47 _vmChoices = {
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
48 'graal' : 'All compilation is performed with Graal. This includes bootstrapping Graal itself unless -XX:-BootstrapGraal is used.',
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
49 'server' : 'Normal compilation is performed with the tiered system (i.e., client + server), Truffle compilation is performed with Graal. Use this for optimal Truffle performance.',
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
50 'client' : None, # normal compilation with client compiler, explicit compilation (e.g., by Truffle) with Graal
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
51 'server-nograal' : None, # all compilation with tiered system (i.e., client + server), Graal omitted
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
52 'client-nograal' : None, # all compilation with client compiler, Graal omitted
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
53 'original' : None, # default VM copied from bootstrap JDK
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
54 }
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
55
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
56 """ The VM that will be run by the 'vm' command and built by default by the 'build' command.
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
57 This can be set via the global '--vm' option or the DEFAULT_VM environment variable.
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
58 It can also be temporarily set by using of a VM context manager object in a 'with' statement. """
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
59 _vm = None
4417
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
60
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
61 """ The VM builds that will be run by the 'vm' command - default is first in list """
9157
a38d748d4130 Add support for the 'optimized' build in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9130
diff changeset
62 _vmbuildChoices = ['product', 'fastdebug', 'debug', 'optimized']
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
63
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
64 """ The VM build that will be run by the 'vm' command.
11371
74414b248381 mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents: 11368
diff changeset
65 This can be set via the global '--vmbuild' option.
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
66 It can also be temporarily set by using of a VM context manager object in a 'with' statement. """
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
67 _vmbuild = _vmbuildChoices[0]
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
68
5024
7ccdae96e98a Allow JaCoCon to append to the execution file
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5016
diff changeset
69 _jacoco = 'off'
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
70
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
71 """ The current working directory to switch to before running the VM. """
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
72 _vm_cwd = None
10454
590b0c26877f mx: add --workdir argument
Bernhard Urban <bernhard.urban@jku.at>
parents: 10417
diff changeset
73
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
74 """ The base directory in which the JDKs cloned from $JAVA_HOME exist. """
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
75 _installed_jdks = None
10570
2f80624df8a2 Add a --vmdir argument to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10568
diff changeset
76
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
77 """ Prefix for running the VM. """
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
78 _vm_prefix = None
5875
000fb0550afe Add an option to launch the vm from a debugger in mx's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5871
diff changeset
79
5194
a6eceb5efb0e added --ecl option to mx for saving VM execution(s) as Eclipse launch configurations
Doug Simon <doug.simon@oracle.com>
parents: 5189
diff changeset
80 _make_eclipse_launch = False
a6eceb5efb0e added --ecl option to mx for saving VM execution(s) as Eclipse launch configurations
Doug Simon <doug.simon@oracle.com>
parents: 5189
diff changeset
81
13471
020099961eb4 renamed JavaVersion to VersionSpec
Doug Simon <doug.simon@oracle.com>
parents: 13378
diff changeset
82 _minVersion = mx.VersionSpec('1.7.0_04')
7916
9bff64f43299 Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 7788
diff changeset
83
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
84 def _get_vm():
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
85 """
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
86 Gets the configured VM, presenting a dialogue if there is no currently configured VM.
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
87 """
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
88 global _vm
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
89 if _vm:
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
90 return _vm
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
91 vm = mx.get_env('DEFAULT_VM')
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
92 if vm is None:
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
93 if not sys.stdout.isatty():
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
94 mx.abort('Need to specify VM with --vm option or DEFAULT_VM environment variable')
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
95 envPath = join(_graal_home, 'mx', 'env')
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
96 mx.log('Please select the VM to be executed from the following: ')
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
97 items = [k for k in _vmChoices.keys() if _vmChoices[k] is not None]
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
98 descriptions = [_vmChoices[k] for k in _vmChoices.keys() if _vmChoices[k] is not None]
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
99 vm = mx.select_items(items, descriptions, allowMultiple=False)
11511
3110bea9a6b0 mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11493
diff changeset
100 if mx.ask_yes_no('Persist this choice by adding "DEFAULT_VM=' + vm + '" to ' + envPath, 'y'):
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
101 with open(envPath, 'a') as fp:
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
102 print >> fp, 'DEFAULT_VM=' + vm
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
103 _vm = vm
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
104 return vm
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
105
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
106 """
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
107 A context manager that can be used with the 'with' statement to set the VM
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
108 used by all VM executions within the scope of the 'with' statement. For example:
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
109
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
110 with VM('server'):
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
111 dacapo(['pmd'])
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
112 """
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
113 class VM:
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
114 def __init__(self, vm=None, build=None):
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
115 assert vm is None or vm in _vmChoices.keys()
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
116 assert build is None or build in _vmbuildChoices
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
117 self.vm = vm if vm else _vm
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
118 self.build = build if build else _vmbuild
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
119 self.previousVm = _vm
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
120 self.previousBuild = _vmbuild
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
121
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
122 def __enter__(self):
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
123 global _vm, _vmbuild
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
124 _vm = self.vm
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
125 _vmbuild = self.build
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
126
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
127 def __exit__(self, exc_type, exc_value, traceback):
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
128 global _vm, _vmbuild
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
129 _vm = self.previousVm
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
130 _vmbuild = self.previousBuild
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
131
6705
0cb1ac637dd0 Added recursive chmod for cases where JAVA_HOME is not owned by graal workspace owner.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6702
diff changeset
132 def _chmodDir(chmodFlags, dirname, fnames):
0cb1ac637dd0 Added recursive chmod for cases where JAVA_HOME is not owned by graal workspace owner.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6702
diff changeset
133 os.chmod(dirname, chmodFlags)
7509
442668d41bc2 fixed warnings
Doug Simon <doug.simon@oracle.com>
parents: 7345
diff changeset
134 for name in fnames:
442668d41bc2 fixed warnings
Doug Simon <doug.simon@oracle.com>
parents: 7345
diff changeset
135 os.chmod(os.path.join(dirname, name), chmodFlags)
6705
0cb1ac637dd0 Added recursive chmod for cases where JAVA_HOME is not owned by graal workspace owner.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6702
diff changeset
136
0cb1ac637dd0 Added recursive chmod for cases where JAVA_HOME is not owned by graal workspace owner.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6702
diff changeset
137 def chmodRecursive(dirname, chmodFlags):
0cb1ac637dd0 Added recursive chmod for cases where JAVA_HOME is not owned by graal workspace owner.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6702
diff changeset
138 os.path.walk(dirname, _chmodDir, chmodFlags)
0cb1ac637dd0 Added recursive chmod for cases where JAVA_HOME is not owned by graal workspace owner.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6702
diff changeset
139
4144
34527a24bcf8 Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents: 3736
diff changeset
140 def clean(args):
6291
633136426f26 consolidated jtt command into unittest command and removed need for explicit 'testHarness' property in 'projects' file
Doug Simon <doug.simon@oracle.com>
parents: 6278
diff changeset
141 """clean the GraalVM source tree"""
4247
3f6c6e61614e Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents: 4244
diff changeset
142 opts = mx.clean(args, parser=ArgumentParser(prog='mx clean'))
4226
e03ff10d4bfc Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents: 4225
diff changeset
143 if opts.native:
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
144 def rmIfExists(name):
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
145 if os.path.isdir(name):
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
146 shutil.rmtree(name)
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
147 elif os.path.isfile(name):
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
148 os.unlink(name)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
149
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
150 rmIfExists(join(_graal_home, 'build'))
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
151 rmIfExists(join(_graal_home, 'build-nograal'))
9119
0c9c4ae236b2 refactoring to ensure the path to the JDKs dir is consistent between the _jdk() and clean() command
Doug Simon <doug.simon@oracle.com>
parents: 9118
diff changeset
152 rmIfExists(_jdksDir())
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
153 rmIfExists(mx.distribution('GRAAL').path)
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
154
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
155 def export(args):
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
156 """create a GraalVM zip file for distribution"""
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
157
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
158 parser = ArgumentParser(prog='mx export')
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
159 parser.add_argument('--omit-vm-build', action='store_false', dest='vmbuild', help='omit VM build step')
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
160 parser.add_argument('--omit-dist-init', action='store_false', dest='distInit', help='omit class files and IDE configurations from distribution')
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
161 parser.add_argument('zipfile', nargs=REMAINDER, metavar='zipfile')
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
162
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
163 args = parser.parse_args(args)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
164
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
165 tmp = tempfile.mkdtemp(prefix='tmp', dir=_graal_home)
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
166 if args.vmbuild:
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
167 # Make sure the product VM binary is up to date
11371
74414b248381 mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents: 11368
diff changeset
168 with VM(vmbuild='product'):
74414b248381 mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents: 11368
diff changeset
169 build([])
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
170
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
171 mx.log('Copying Java sources and mx files...')
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
172 mx.run(('hg archive -I graal -I mx -I mxtool -I mx.sh ' + tmp).split())
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
173
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
174 # Copy the GraalVM JDK
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
175 mx.log('Copying GraalVM JDK...')
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
176 src = _jdk()
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
177 dst = join(tmp, basename(src))
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
178 shutil.copytree(src, dst)
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
179 zfName = join(_graal_home, 'graalvm-' + mx.get_os() + '.zip')
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
180 zf = zipfile.ZipFile(zfName, 'w')
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
181 for root, _, files in os.walk(tmp):
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
182 for f in files:
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
183 name = join(root, f)
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
184 arcname = name[len(tmp) + 1:]
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
185 zf.write(join(tmp, name), arcname)
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
186
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
187 # create class files and IDE configurations
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
188 if args.distInit:
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
189 mx.log('Creating class files...')
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
190 mx.run('mx build'.split(), cwd=tmp)
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
191 mx.log('Creating IDE configurations...')
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
192 mx.run('mx ideinit'.split(), cwd=tmp)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
193
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
194 # clean up temp directory
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
195 mx.log('Cleaning up...')
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
196 shutil.rmtree(tmp)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
197
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
198 mx.log('Created distribution in ' + zfName)
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
199
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
200 def _run_benchmark(args, availableBenchmarks, runBenchmark):
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
201
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
202 vmOpts, benchmarksAndOptions = _extract_VM_args(args, useDoubleDash=availableBenchmarks is None)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
203
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
204 if availableBenchmarks is None:
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
205 harnessArgs = benchmarksAndOptions
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
206 return runBenchmark(None, harnessArgs, vmOpts)
4215
a2caa019ba3a Fix mx : commands' scripts mx_init hook should be called before parsing command line arguments.
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4187
diff changeset
207
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
208 if len(benchmarksAndOptions) == 0:
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
209 mx.abort('at least one benchmark name or "all" must be specified')
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
210 benchmarks = list(itertools.takewhile(lambda x: not x.startswith('-'), benchmarksAndOptions))
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
211 harnessArgs = benchmarksAndOptions[len(benchmarks):]
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
212
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
213 if 'all' in benchmarks:
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
214 benchmarks = availableBenchmarks
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
215 else:
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
216 for bm in benchmarks:
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
217 if bm not in availableBenchmarks:
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
218 mx.abort('unknown benchmark: ' + bm + '\nselect one of: ' + str(availableBenchmarks))
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
219
4215
a2caa019ba3a Fix mx : commands' scripts mx_init hook should be called before parsing command line arguments.
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4187
diff changeset
220 failed = []
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
221 for bm in benchmarks:
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
222 if not runBenchmark(bm, harnessArgs, vmOpts):
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
223 failed.append(bm)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
224
4157
b26279781d95 Simplified 'dacapo' command and made it more suitable for gate usage.
Doug Simon <doug.simon@oracle.com>
parents: 4156
diff changeset
225 if len(failed) != 0:
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
226 mx.abort('Benchmark failures: ' + str(failed))
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
227
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
228 def dacapo(args):
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
229 """run one or more DaCapo benchmarks"""
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
230
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
231 def launcher(bm, harnessArgs, extraVmOpts):
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
232 return sanitycheck.getDacapo(bm, harnessArgs).test(_get_vm(), extraVmOpts=extraVmOpts)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
233
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
234 _run_benchmark(args, sanitycheck.dacapoSanityWarmup.keys(), launcher)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
235
4480
7d6490436b57 Add Scala DaCapo benchs
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4438
diff changeset
236 def scaladacapo(args):
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
237 """run one or more Scala DaCapo benchmarks"""
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
238
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
239 def launcher(bm, harnessArgs, extraVmOpts):
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
240 return sanitycheck.getScalaDacapo(bm, harnessArgs).test(_get_vm(), extraVmOpts=extraVmOpts)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
241
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
242 _run_benchmark(args, sanitycheck.dacapoScalaSanityWarmup.keys(), launcher)
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
243
6495
75f130f2b30f moved AMD64 specific HotSpot code in com.oracle.graal.hotspot.amd64 project
Doug Simon <doug.simon@oracle.com>
parents: 6340
diff changeset
244 def _arch():
6512
edea9ba7ac7b Windows-specific fix for mx.
Christian Haeubl <haeubl@ssw.jku.at>
parents: 6506
diff changeset
245 machine = platform.uname()[4]
6558
0a6d8857306d arch is i86pc on solaris x64 boxes.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6512
diff changeset
246 if machine in ['amd64', 'AMD64', 'x86_64', 'i86pc']:
6495
75f130f2b30f moved AMD64 specific HotSpot code in com.oracle.graal.hotspot.amd64 project
Doug Simon <doug.simon@oracle.com>
parents: 6340
diff changeset
247 return 'amd64'
11784
a2958b7bf83f add "sun4u" as a valid identifier for the SPARC architecture
Doug Simon <doug.simon@oracle.com>
parents: 11777
diff changeset
248 if machine in ['sun4v', 'sun4u']:
12540
0aa37fd2f33e mx: fix detection for sparc. ignore unparsable lines in jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents: 12497
diff changeset
249 return 'sparcv9'
6566
ef48be91f5fd fixed detection of architecture on Snow Leopard and earlier versions of MacOSX
Doug Simon <doug.simon@oracle.com>
parents: 6558
diff changeset
250 if machine == 'i386' and mx.get_os() == 'darwin':
ef48be91f5fd fixed detection of architecture on Snow Leopard and earlier versions of MacOSX
Doug Simon <doug.simon@oracle.com>
parents: 6558
diff changeset
251 try:
ef48be91f5fd fixed detection of architecture on Snow Leopard and earlier versions of MacOSX
Doug Simon <doug.simon@oracle.com>
parents: 6558
diff changeset
252 # Support for Snow Leopard and earlier version of MacOSX
ef48be91f5fd fixed detection of architecture on Snow Leopard and earlier versions of MacOSX
Doug Simon <doug.simon@oracle.com>
parents: 6558
diff changeset
253 if subprocess.check_output(['sysctl', '-n', 'hw.cpu64bit_capable']).strip() == '1':
ef48be91f5fd fixed detection of architecture on Snow Leopard and earlier versions of MacOSX
Doug Simon <doug.simon@oracle.com>
parents: 6558
diff changeset
254 return 'amd64'
ef48be91f5fd fixed detection of architecture on Snow Leopard and earlier versions of MacOSX
Doug Simon <doug.simon@oracle.com>
parents: 6558
diff changeset
255 except OSError:
ef48be91f5fd fixed detection of architecture on Snow Leopard and earlier versions of MacOSX
Doug Simon <doug.simon@oracle.com>
parents: 6558
diff changeset
256 # sysctl is not available
ef48be91f5fd fixed detection of architecture on Snow Leopard and earlier versions of MacOSX
Doug Simon <doug.simon@oracle.com>
parents: 6558
diff changeset
257 pass
ef48be91f5fd fixed detection of architecture on Snow Leopard and earlier versions of MacOSX
Doug Simon <doug.simon@oracle.com>
parents: 6558
diff changeset
258 mx.abort('unknown or unsupported architecture: os=' + mx.get_os() + ', machine=' + machine)
6495
75f130f2b30f moved AMD64 specific HotSpot code in com.oracle.graal.hotspot.amd64 project
Doug Simon <doug.simon@oracle.com>
parents: 6340
diff changeset
259
4607
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
260 def _vmLibDirInJdk(jdk):
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
261 """
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
262 Get the directory within a JDK where the server and client
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
263 subdirectories are located.
4607
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
264 """
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
265 if platform.system() == 'Darwin':
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
266 return join(jdk, 'jre', 'lib')
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
267 if platform.system() == 'Windows':
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
268 return join(jdk, 'jre', 'bin')
6495
75f130f2b30f moved AMD64 specific HotSpot code in com.oracle.graal.hotspot.amd64 project
Doug Simon <doug.simon@oracle.com>
parents: 6340
diff changeset
269 return join(jdk, 'jre', 'lib', _arch())
4607
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
270
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
271 def _vmCfgInJdk(jdk):
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
272 """
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
273 Get the jvm.cfg file.
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
274 """
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
275 if platform.system() == 'Windows':
6495
75f130f2b30f moved AMD64 specific HotSpot code in com.oracle.graal.hotspot.amd64 project
Doug Simon <doug.simon@oracle.com>
parents: 6340
diff changeset
276 return join(jdk, 'jre', 'lib', _arch(), 'jvm.cfg')
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
277 return join(_vmLibDirInJdk(jdk), 'jvm.cfg')
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
278
9119
0c9c4ae236b2 refactoring to ensure the path to the JDKs dir is consistent between the _jdk() and clean() command
Doug Simon <doug.simon@oracle.com>
parents: 9118
diff changeset
279 def _jdksDir():
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
280 return os.path.abspath(join(_installed_jdks if _installed_jdks else _graal_home, 'jdk' + str(mx.java().version)))
9119
0c9c4ae236b2 refactoring to ensure the path to the JDKs dir is consistent between the _jdk() and clean() command
Doug Simon <doug.simon@oracle.com>
parents: 9118
diff changeset
281
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
282 def _handle_missing_VM(bld, vm):
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
283 mx.log('The ' + bld + ' ' + vm + ' VM has not been created')
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
284 if sys.stdout.isatty():
11511
3110bea9a6b0 mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11493
diff changeset
285 if mx.ask_yes_no('Build it now', 'y'):
11371
74414b248381 mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents: 11368
diff changeset
286 with VM(vm, bld):
74414b248381 mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents: 11368
diff changeset
287 build([])
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
288 return
11493
94779c895aad fixed documentation of --installed-jdks mx option
Doug Simon <doug.simon@oracle.com>
parents: 11424
diff changeset
289 mx.abort('You need to run "mx --vm ' + vm + ' --vmbuild ' + bld + ' build" to build the selected VM')
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
290
10574
0cad5096735e commands.py: Make sure _jdk returns an absolute path. Use _jdk and _jdksDir where necessary
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10570
diff changeset
291 def _jdk(build='product', vmToCheck=None, create=False, installGraalJar=True):
4155
394404b2d9bd Removed strict requirement for GRAAL environment variable. It only needs to be set now if the graal directory is not in the directory hierarchy of GraalVM JDK.
Doug Simon <doug.simon@oracle.com>
parents: 4153
diff changeset
292 """
394404b2d9bd Removed strict requirement for GRAAL environment variable. It only needs to be set now if the graal directory is not in the directory hierarchy of GraalVM JDK.
Doug Simon <doug.simon@oracle.com>
parents: 4153
diff changeset
293 Get the JDK into which Graal is installed, creating it first if necessary.
394404b2d9bd Removed strict requirement for GRAAL environment variable. It only needs to be set now if the graal directory is not in the directory hierarchy of GraalVM JDK.
Doug Simon <doug.simon@oracle.com>
parents: 4153
diff changeset
294 """
9119
0c9c4ae236b2 refactoring to ensure the path to the JDKs dir is consistent between the _jdk() and clean() command
Doug Simon <doug.simon@oracle.com>
parents: 9118
diff changeset
295 jdk = join(_jdksDir(), build)
4582
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
296 if create:
10574
0cad5096735e commands.py: Make sure _jdk returns an absolute path. Use _jdk and _jdksDir where necessary
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10570
diff changeset
297 srcJdk = mx.java().jdk
0cad5096735e commands.py: Make sure _jdk returns an absolute path. Use _jdk and _jdksDir where necessary
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10570
diff changeset
298 jdkContents = ['bin', 'include', 'jre', 'lib']
0cad5096735e commands.py: Make sure _jdk returns an absolute path. Use _jdk and _jdksDir where necessary
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10570
diff changeset
299 if exists(join(srcJdk, 'db')):
0cad5096735e commands.py: Make sure _jdk returns an absolute path. Use _jdk and _jdksDir where necessary
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10570
diff changeset
300 jdkContents.append('db')
0cad5096735e commands.py: Make sure _jdk returns an absolute path. Use _jdk and _jdksDir where necessary
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10570
diff changeset
301 if mx.get_os() != 'windows' and exists(join(srcJdk, 'man')):
0cad5096735e commands.py: Make sure _jdk returns an absolute path. Use _jdk and _jdksDir where necessary
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10570
diff changeset
302 jdkContents.append('man')
4582
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
303 if not exists(jdk):
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
304 mx.log('Creating ' + jdk + ' from ' + srcJdk)
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
305 os.makedirs(jdk)
4252
67e88b7624d5 Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents: 4247
diff changeset
306 for d in jdkContents:
4582
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
307 src = join(srcJdk, d)
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
308 dst = join(jdk, d)
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
309 if not exists(src):
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
310 mx.abort('Host JDK directory is missing: ' + src)
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
311 shutil.copytree(src, dst)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
312
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
313 # Make a copy of the default VM so that this JDK can be
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
314 # reliably used as the bootstrap for a HotSpot build.
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
315 jvmCfg = _vmCfgInJdk(jdk)
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
316 if not exists(jvmCfg):
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
317 mx.abort(jvmCfg + ' does not exist')
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
318
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
319 defaultVM = None
8647
5f8299106dd9 A server0 "build" needs to create a jdk copy if it does not exist yet
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8646
diff changeset
320 jvmCfgLines = []
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
321 with open(jvmCfg) as f:
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
322 for line in f:
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
323 if line.startswith('-') and defaultVM is None:
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
324 parts = line.split()
12540
0aa37fd2f33e mx: fix detection for sparc. ignore unparsable lines in jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents: 12497
diff changeset
325 if len(parts) == 2:
0aa37fd2f33e mx: fix detection for sparc. ignore unparsable lines in jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents: 12497
diff changeset
326 assert parts[1] == 'KNOWN', parts[1]
0aa37fd2f33e mx: fix detection for sparc. ignore unparsable lines in jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents: 12497
diff changeset
327 defaultVM = parts[0][1:]
0aa37fd2f33e mx: fix detection for sparc. ignore unparsable lines in jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents: 12497
diff changeset
328 jvmCfgLines += ['# default VM is a copy of the unmodified ' + defaultVM + ' VM\n']
0aa37fd2f33e mx: fix detection for sparc. ignore unparsable lines in jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents: 12497
diff changeset
329 jvmCfgLines += ['-original KNOWN\n']
0aa37fd2f33e mx: fix detection for sparc. ignore unparsable lines in jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents: 12497
diff changeset
330 else:
0aa37fd2f33e mx: fix detection for sparc. ignore unparsable lines in jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents: 12497
diff changeset
331 # skip lines which we cannot parse (e.g. '-hotspot ALIASED_TO -client')
12583
110c3faa57e9 mx: print warning if encounter a non-parsable line in jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents: 12540
diff changeset
332 mx.log("WARNING: skipping not parsable line \"" + line + "\"")
8647
5f8299106dd9 A server0 "build" needs to create a jdk copy if it does not exist yet
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8646
diff changeset
333 else:
5f8299106dd9 A server0 "build" needs to create a jdk copy if it does not exist yet
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8646
diff changeset
334 jvmCfgLines += [line]
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
335
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
336 assert defaultVM is not None, 'Could not find default VM in ' + jvmCfg
6687
a9a50f21e000 Added change to copied directory's protection when source JDK directories are read-only.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6566
diff changeset
337 if mx.get_os() != 'windows':
6705
0cb1ac637dd0 Added recursive chmod for cases where JAVA_HOME is not owned by graal workspace owner.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6702
diff changeset
338 chmodRecursive(jdk, 0755)
9117
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
339 shutil.move(join(_vmLibDirInJdk(jdk), defaultVM), join(_vmLibDirInJdk(jdk), 'original'))
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
340
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
341
8261
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
342 with open(jvmCfg, 'w') as fp:
8647
5f8299106dd9 A server0 "build" needs to create a jdk copy if it does not exist yet
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8646
diff changeset
343 for line in jvmCfgLines:
5f8299106dd9 A server0 "build" needs to create a jdk copy if it does not exist yet
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8646
diff changeset
344 fp.write(line)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
345
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
346 # Install a copy of the disassembler library
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
347 try:
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
348 hsdis([], copyToDir=_vmLibDirInJdk(jdk))
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
349 except SystemExit:
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
350 pass
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
351 else:
4582
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
352 if not exists(jdk):
11797
65dbed1fdf46 be verbose when the JDK specified by --installed-jdks is missing
Doug Simon <doug.simon@oracle.com>
parents: 11784
diff changeset
353 if _installed_jdks:
65dbed1fdf46 be verbose when the JDK specified by --installed-jdks is missing
Doug Simon <doug.simon@oracle.com>
parents: 11784
diff changeset
354 mx.log("The selected JDK directory does not (yet) exist: " + jdk)
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
355 _handle_missing_VM(build, vmToCheck if vmToCheck else 'graal')
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
356
10574
0cad5096735e commands.py: Make sure _jdk returns an absolute path. Use _jdk and _jdksDir where necessary
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10570
diff changeset
357 if installGraalJar:
0cad5096735e commands.py: Make sure _jdk returns an absolute path. Use _jdk and _jdksDir where necessary
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10570
diff changeset
358 _installGraalJarInJdks(mx.distribution('GRAAL'))
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
359
8261
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
360 if vmToCheck is not None:
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
361 jvmCfg = _vmCfgInJdk(jdk)
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
362 found = False
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
363 with open(jvmCfg) as f:
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
364 for line in f:
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
365 if line.strip() == '-' + vmToCheck + ' KNOWN':
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
366 found = True
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
367 break
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
368 if not found:
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
369 _handle_missing_VM(build, vmToCheck)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
370
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
371 return jdk
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
372
11936
4cdf7623fbe6 ensure graal.options in the JDK is deployed/updated/deleted each time the VM is run
Doug Simon <doug.simon@oracle.com>
parents: 11867
diff changeset
373 def _updateInstalledGraalOptionsFile(jdk):
4cdf7623fbe6 ensure graal.options in the JDK is deployed/updated/deleted each time the VM is run
Doug Simon <doug.simon@oracle.com>
parents: 11867
diff changeset
374 graalOptions = join(_graal_home, 'graal.options')
4cdf7623fbe6 ensure graal.options in the JDK is deployed/updated/deleted each time the VM is run
Doug Simon <doug.simon@oracle.com>
parents: 11867
diff changeset
375 jreLibDir = join(jdk, 'jre', 'lib')
4cdf7623fbe6 ensure graal.options in the JDK is deployed/updated/deleted each time the VM is run
Doug Simon <doug.simon@oracle.com>
parents: 11867
diff changeset
376 if exists(graalOptions):
4cdf7623fbe6 ensure graal.options in the JDK is deployed/updated/deleted each time the VM is run
Doug Simon <doug.simon@oracle.com>
parents: 11867
diff changeset
377 shutil.copy(graalOptions, join(jreLibDir, 'graal.options'))
4cdf7623fbe6 ensure graal.options in the JDK is deployed/updated/deleted each time the VM is run
Doug Simon <doug.simon@oracle.com>
parents: 11867
diff changeset
378 else:
4cdf7623fbe6 ensure graal.options in the JDK is deployed/updated/deleted each time the VM is run
Doug Simon <doug.simon@oracle.com>
parents: 11867
diff changeset
379 toDelete = join(jreLibDir, 'graal.options')
4cdf7623fbe6 ensure graal.options in the JDK is deployed/updated/deleted each time the VM is run
Doug Simon <doug.simon@oracle.com>
parents: 11867
diff changeset
380 if exists(toDelete):
4cdf7623fbe6 ensure graal.options in the JDK is deployed/updated/deleted each time the VM is run
Doug Simon <doug.simon@oracle.com>
parents: 11867
diff changeset
381 os.unlink(toDelete)
4cdf7623fbe6 ensure graal.options in the JDK is deployed/updated/deleted each time the VM is run
Doug Simon <doug.simon@oracle.com>
parents: 11867
diff changeset
382
8134
6e3ebc6fd5a4 graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents: 8132
diff changeset
383 def _installGraalJarInJdks(graalDist):
6e3ebc6fd5a4 graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents: 8132
diff changeset
384 graalJar = graalDist.path
10574
0cad5096735e commands.py: Make sure _jdk returns an absolute path. Use _jdk and _jdksDir where necessary
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10570
diff changeset
385 jdks = _jdksDir()
8134
6e3ebc6fd5a4 graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents: 8132
diff changeset
386 if exists(jdks):
6e3ebc6fd5a4 graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents: 8132
diff changeset
387 for e in os.listdir(jdks):
6e3ebc6fd5a4 graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents: 8132
diff changeset
388 jreLibDir = join(jdks, e, 'jre', 'lib')
6e3ebc6fd5a4 graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents: 8132
diff changeset
389 if exists(jreLibDir):
8180
0934903d28f3 use shutil.move to make concurrent updating/replacement of graal.jar atomic
Doug Simon <doug.simon@oracle.com>
parents: 8135
diff changeset
390 # do a copy and then a move to get atomic updating (on Unix) of graal.jar in the JRE
8183
4b11a0983557 fixed issue with deleting temp files on Windows
Doug Simon <doug.simon@oracle.com>
parents: 8182
diff changeset
391 fd, tmp = tempfile.mkstemp(suffix='', prefix='graal.jar', dir=jreLibDir)
8180
0934903d28f3 use shutil.move to make concurrent updating/replacement of graal.jar atomic
Doug Simon <doug.simon@oracle.com>
parents: 8135
diff changeset
392 shutil.copyfile(graalJar, tmp)
8183
4b11a0983557 fixed issue with deleting temp files on Windows
Doug Simon <doug.simon@oracle.com>
parents: 8182
diff changeset
393 os.close(fd)
8180
0934903d28f3 use shutil.move to make concurrent updating/replacement of graal.jar atomic
Doug Simon <doug.simon@oracle.com>
parents: 8135
diff changeset
394 shutil.move(tmp, join(jreLibDir, 'graal.jar'))
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
395
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
396 # run a command in the windows SDK Debug Shell
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
397 def _runInDebugShell(cmd, workingDir, logFile=None, findInOutput=None, respondTo=None):
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
398 if respondTo is None:
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
399 respondTo = {}
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
400 newLine = os.linesep
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
401 startToken = 'RUNINDEBUGSHELL_STARTSEQUENCE'
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
402 endToken = 'RUNINDEBUGSHELL_ENDSEQUENCE'
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
403
4252
67e88b7624d5 Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents: 4247
diff changeset
404 winSDK = mx.get_env('WIN_SDK', 'C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\')
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
405
6306
2a819543cc45 Warnings for windows build if there is no SDK
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6294
diff changeset
406 if not exists(winSDK):
2a819543cc45 Warnings for windows build if there is no SDK
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6294
diff changeset
407 mx.abort("Could not find Windows SDK : '" + winSDK + "' does not exist")
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
408
6306
2a819543cc45 Warnings for windows build if there is no SDK
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6294
diff changeset
409 if not exists(join(winSDK, 'Bin', 'SetEnv.cmd')):
2a819543cc45 Warnings for windows build if there is no SDK
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6294
diff changeset
410 mx.abort("Invalid Windows SDK path (" + winSDK + ") : could not find Bin/SetEnv.cmd (you can use the WIN_SDK environment variable to specify an other path)")
4252
67e88b7624d5 Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents: 4247
diff changeset
411
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
412 p = subprocess.Popen('cmd.exe /E:ON /V:ON /K ""' + winSDK + '/Bin/SetEnv.cmd" & echo ' + startToken + '"', \
4252
67e88b7624d5 Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents: 4247
diff changeset
413 shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)
4269
ffd5ce8fc736 Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents: 4257
diff changeset
414 stdout = p.stdout
ffd5ce8fc736 Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents: 4257
diff changeset
415 stdin = p.stdin
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
416 if logFile:
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
417 log = open(logFile, 'w')
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
418 ret = False
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
419 while True:
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
420
7291
a748e4d44694 Truffle API to specify type-specalized Node classes; annotation processor for automatic code generation of the type-specialized Node classes during the build process
Christian Humer <christian.humer@gmail.com>
parents: 7290
diff changeset
421 # encoding may be None on windows plattforms
a748e4d44694 Truffle API to specify type-specalized Node classes; annotation processor for automatic code generation of the type-specialized Node classes during the build process
Christian Humer <christian.humer@gmail.com>
parents: 7290
diff changeset
422 if sys.stdout.encoding is None:
a748e4d44694 Truffle API to specify type-specalized Node classes; annotation processor for automatic code generation of the type-specialized Node classes during the build process
Christian Humer <christian.humer@gmail.com>
parents: 7290
diff changeset
423 encoding = 'utf-8'
a748e4d44694 Truffle API to specify type-specalized Node classes; annotation processor for automatic code generation of the type-specialized Node classes during the build process
Christian Humer <christian.humer@gmail.com>
parents: 7290
diff changeset
424 else:
a748e4d44694 Truffle API to specify type-specalized Node classes; annotation processor for automatic code generation of the type-specialized Node classes during the build process
Christian Humer <christian.humer@gmail.com>
parents: 7290
diff changeset
425 encoding = sys.stdout.encoding
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
426
7291
a748e4d44694 Truffle API to specify type-specalized Node classes; annotation processor for automatic code generation of the type-specialized Node classes during the build process
Christian Humer <christian.humer@gmail.com>
parents: 7290
diff changeset
427 line = stdout.readline().decode(encoding)
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
428 if logFile:
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
429 log.write(line.encode('utf-8'))
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
430 line = line.strip()
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
431 mx.log(line)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
432 if line == startToken:
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
433 stdin.write('cd /D ' + workingDir + ' & ' + cmd + ' & echo ' + endToken + newLine)
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
434 for regex in respondTo.keys():
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
435 match = regex.search(line)
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
436 if match:
4269
ffd5ce8fc736 Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents: 4257
diff changeset
437 stdin.write(respondTo[regex] + newLine)
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
438 if findInOutput:
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
439 match = findInOutput.search(line)
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
440 if match:
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
441 ret = True
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
442 if line == endToken:
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
443 if not findInOutput:
5868
a10e72af4dc5 Make windows build work even if Visual Studio is not installed (only the Windows SDK is required)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5782
diff changeset
444 stdin.write('echo ERRXXX%errorlevel%' + newLine)
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
445 else:
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
446 break
5868
a10e72af4dc5 Make windows build work even if Visual Studio is not installed (only the Windows SDK is required)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5782
diff changeset
447 if line.startswith('ERRXXX'):
a10e72af4dc5 Make windows build work even if Visual Studio is not installed (only the Windows SDK is required)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5782
diff changeset
448 if line == 'ERRXXX0':
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
449 ret = True
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
450 break
4269
ffd5ce8fc736 Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents: 4257
diff changeset
451 stdin.write('exit' + newLine)
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
452 if logFile:
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
453 log.close()
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
454 return ret
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
455
11605
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
456 def jdkhome(vm=None):
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
457 """return the JDK directory selected for the 'vm' command"""
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
458 build = _vmbuild if _vmSourcesAvailable else 'product'
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
459 return _jdk(build, installGraalJar=False)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
460
11605
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
461 def print_jdkhome(args, vm=None):
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
462 """print the JDK directory selected for the 'vm' command"""
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
463 print jdkhome(vm)
5103
276e14614531 Added jdkhome command to mx.
Doug Simon <doug.simon@oracle.com>
parents: 5094
diff changeset
464
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
465 def buildvars(args):
11377
0fbc1e418c88 fixed capitalization and tense in documentation of some mx commands
Doug Simon <doug.simon@oracle.com>
parents: 11373
diff changeset
466 """describe the variables that can be set by the -D option to the 'mx build' commmand"""
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
467
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
468 buildVars = {
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
469 'ALT_BOOTDIR' : 'The location of the bootstrap JDK installation (default: ' + mx.java().jdk + ')',
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
470 'ALT_OUTPUTDIR' : 'Build directory',
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
471 'HOTSPOT_BUILD_JOBS' : 'Number of CPUs used by make (default: ' + str(multiprocessing.cpu_count()) + ')',
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
472 'INSTALL' : 'Install the built VM into the JDK? (default: y)',
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
473 'ZIP_DEBUGINFO_FILES' : 'Install zipped debug symbols file? (default: 0)',
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
474 }
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
475
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
476 mx.log('HotSpot build variables that can be set by the -D option to "mx build":')
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
477 mx.log('')
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
478 for n in sorted(buildVars.iterkeys()):
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
479 mx.log(n)
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
480 mx.log(textwrap.fill(buildVars[n], initial_indent=' ', subsequent_indent=' ', width=200))
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
481
9120
9f361c0f912b added note about mx/env to the output of 'mx buildvars'
Doug Simon <doug.simon@oracle.com>
parents: 9119
diff changeset
482 mx.log('')
9f361c0f912b added note about mx/env to the output of 'mx buildvars'
Doug Simon <doug.simon@oracle.com>
parents: 9119
diff changeset
483 mx.log('Note that these variables can be given persistent values in the file ' + join(_graal_home, 'mx', 'env') + ' (see \'mx about\').')
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
484
4577
bc8b58c11768 Added debug build of HotSpot Client to the gate.
Doug Simon <doug.simon@oracle.com>
parents: 4575
diff changeset
485 def build(args, vm=None):
4575
ccb5369481a2 Clarified mx help text on how to build/run [Graal|Client|Server].
Doug Simon <doug.simon@oracle.com>
parents: 4572
diff changeset
486 """build the VM binary
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
487
11392
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
488 The global '--vm' and '--vmbuild' options select which VM type and build target to build."""
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
489
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
490 # Override to fail quickly if extra arguments are given
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
491 # at the end of the command line. This allows for a more
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
492 # helpful error message.
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
493 class AP(ArgumentParser):
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
494 def __init__(self):
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
495 ArgumentParser.__init__(self, prog='mx build')
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
496 def parse_args(self, args):
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
497 result = ArgumentParser.parse_args(self, args)
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
498 if len(result.remainder) != 0:
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
499 firstBuildTarget = result.remainder[0]
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
500 mx.abort('To specify the ' + firstBuildTarget + ' VM build target, you need to use the global "--vmbuild" option. For example:\n' +
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
501 ' mx --vmbuild ' + firstBuildTarget + ' build')
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
502 return result
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
503
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
504 # Call mx.build to compile the Java sources
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
505 parser = AP()
10083
8dc4cdde75fb remove build-graal.xml and have make directly call mx to generate graal.jar
Doug Simon <doug.simon@oracle.com>
parents: 10067
diff changeset
506 parser.add_argument('--export-dir', help='directory to which graal.jar and graal.options will be copied', metavar='<path>')
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
507 parser.add_argument('-D', action='append', help='set a HotSpot build variable (run \'mx buildvars\' to list variables)', metavar='name=value')
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
508 opts2 = mx.build(['--source', '1.7'] + args, parser=parser)
11392
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
509 assert len(opts2.remainder) == 0
4145
9aee7df31417 Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents: 4144
diff changeset
510
10083
8dc4cdde75fb remove build-graal.xml and have make directly call mx to generate graal.jar
Doug Simon <doug.simon@oracle.com>
parents: 10067
diff changeset
511 if opts2.export_dir is not None:
8dc4cdde75fb remove build-graal.xml and have make directly call mx to generate graal.jar
Doug Simon <doug.simon@oracle.com>
parents: 10067
diff changeset
512 if not exists(opts2.export_dir):
8dc4cdde75fb remove build-graal.xml and have make directly call mx to generate graal.jar
Doug Simon <doug.simon@oracle.com>
parents: 10067
diff changeset
513 os.makedirs(opts2.export_dir)
8dc4cdde75fb remove build-graal.xml and have make directly call mx to generate graal.jar
Doug Simon <doug.simon@oracle.com>
parents: 10067
diff changeset
514 else:
8dc4cdde75fb remove build-graal.xml and have make directly call mx to generate graal.jar
Doug Simon <doug.simon@oracle.com>
parents: 10067
diff changeset
515 assert os.path.isdir(opts2.export_dir), '{} is not a directory'.format(opts2.export_dir)
8dc4cdde75fb remove build-graal.xml and have make directly call mx to generate graal.jar
Doug Simon <doug.simon@oracle.com>
parents: 10067
diff changeset
516
8dc4cdde75fb remove build-graal.xml and have make directly call mx to generate graal.jar
Doug Simon <doug.simon@oracle.com>
parents: 10067
diff changeset
517 shutil.copy(mx.distribution('GRAAL').path, opts2.export_dir)
8dc4cdde75fb remove build-graal.xml and have make directly call mx to generate graal.jar
Doug Simon <doug.simon@oracle.com>
parents: 10067
diff changeset
518 graalOptions = join(_graal_home, 'graal.options')
8dc4cdde75fb remove build-graal.xml and have make directly call mx to generate graal.jar
Doug Simon <doug.simon@oracle.com>
parents: 10067
diff changeset
519 if exists(graalOptions):
8dc4cdde75fb remove build-graal.xml and have make directly call mx to generate graal.jar
Doug Simon <doug.simon@oracle.com>
parents: 10067
diff changeset
520 shutil.copy(graalOptions, opts2.export_dir)
8dc4cdde75fb remove build-graal.xml and have make directly call mx to generate graal.jar
Doug Simon <doug.simon@oracle.com>
parents: 10067
diff changeset
521
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4540
diff changeset
522 if not _vmSourcesAvailable or not opts2.native:
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
523 return
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
524
11371
74414b248381 mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents: 11368
diff changeset
525 builds = [_vmbuild]
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
526
4577
bc8b58c11768 Added debug build of HotSpot Client to the gate.
Doug Simon <doug.simon@oracle.com>
parents: 4575
diff changeset
527 if vm is None:
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
528 vm = _get_vm()
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
529
9117
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
530 if vm == 'original':
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
531 pass
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
532 elif vm.startswith('server'):
4417
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
533 buildSuffix = ''
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
534 elif vm.startswith('client'):
4417
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
535 buildSuffix = '1'
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
536 else:
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4540
diff changeset
537 assert vm == 'graal', vm
4417
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
538 buildSuffix = 'graal'
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
539
11530
be9e54fbb699 Use a better warning message for building with --installed-jdks set
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11526
diff changeset
540 if _installed_jdks and _installed_jdks != _graal_home:
be9e54fbb699 Use a better warning message for building with --installed-jdks set
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11526
diff changeset
541 if not mx.ask_yes_no("Warning: building while --installed-jdks is set (" + _installed_jdks + ") is not recommanded - are you sure you want to continue", 'n'):
11512
38acec26d535 If _installed_jdk is set, ask confirmation before building
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11511
diff changeset
542 mx.abort(1)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
543
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
544 for build in builds:
5094
d3f547b08304 added mechanism for disabling automatic native builds from the IDE (set IDE_BUILD_TARGET="" in mx/env)
Doug Simon <doug.simon@oracle.com>
parents: 5090
diff changeset
545 if build == 'ide-build-target':
11302
fcb4cf14a3c3 absence of IDE_BUILD_TARGET environment variable prevents HotSpot builds when editing C++ sources in Eclipse
Doug Simon <doug.simon@oracle.com>
parents: 11296
diff changeset
546 build = os.environ.get('IDE_BUILD_TARGET', None)
fcb4cf14a3c3 absence of IDE_BUILD_TARGET environment variable prevents HotSpot builds when editing C++ sources in Eclipse
Doug Simon <doug.simon@oracle.com>
parents: 11296
diff changeset
547 if build is None or len(build) == 0:
5094
d3f547b08304 added mechanism for disabling automatic native builds from the IDE (set IDE_BUILD_TARGET="" in mx/env)
Doug Simon <doug.simon@oracle.com>
parents: 5090
diff changeset
548 continue
d3f547b08304 added mechanism for disabling automatic native builds from the IDE (set IDE_BUILD_TARGET="" in mx/env)
Doug Simon <doug.simon@oracle.com>
parents: 5090
diff changeset
549
9098
d766fd8eede0 VM copy made during initial copy of the JDK is now named 'boot' instead of 'server0' to better reflect that it is the default VM (which may not be 'server') from the boot JDK
Doug Simon <doug.simon@oracle.com>
parents: 9097
diff changeset
550 jdk = _jdk(build, create=True)
8647
5f8299106dd9 A server0 "build" needs to create a jdk copy if it does not exist yet
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8646
diff changeset
551
9117
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
552 if vm == 'original':
9098
d766fd8eede0 VM copy made during initial copy of the JDK is now named 'boot' instead of 'server0' to better reflect that it is the default VM (which may not be 'server') from the boot JDK
Doug Simon <doug.simon@oracle.com>
parents: 9097
diff changeset
553 if build != 'product':
9117
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
554 mx.log('only product build of original VM exists')
9098
d766fd8eede0 VM copy made during initial copy of the JDK is now named 'boot' instead of 'server0' to better reflect that it is the default VM (which may not be 'server') from the boot JDK
Doug Simon <doug.simon@oracle.com>
parents: 9097
diff changeset
555 continue
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
556
4607
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
557 vmDir = join(_vmLibDirInJdk(jdk), vm)
4417
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
558 if not exists(vmDir):
6687
a9a50f21e000 Added change to copied directory's protection when source JDK directories are read-only.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6566
diff changeset
559 if mx.get_os() != 'windows':
6705
0cb1ac637dd0 Added recursive chmod for cases where JAVA_HOME is not owned by graal workspace owner.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6702
diff changeset
560 chmodRecursive(jdk, 0755)
4417
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
561 mx.log('Creating VM directory in JDK7: ' + vmDir)
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
562 os.makedirs(vmDir)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
563
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
564 def filterXusage(line):
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
565 if not 'Xusage.txt' in line:
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
566 sys.stderr.write(line + os.linesep)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
567
5239
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
568 # Check if a build really needs to be done
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
569 timestampFile = join(vmDir, '.build-timestamp')
9098
d766fd8eede0 VM copy made during initial copy of the JDK is now named 'boot' instead of 'server0' to better reflect that it is the default VM (which may not be 'server') from the boot JDK
Doug Simon <doug.simon@oracle.com>
parents: 9097
diff changeset
570 if opts2.force or not exists(timestampFile):
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
571 mustBuild = True
5239
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
572 else:
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
573 mustBuild = False
5239
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
574 timestamp = os.path.getmtime(timestampFile)
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
575 sources = []
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
576 for d in ['src', 'make']:
5244
55ff4ba8d7b1 ignore src/share/tools directory in native build out-of-date check
Doug Simon <doug.simon@oracle.com>
parents: 5239
diff changeset
577 for root, dirnames, files in os.walk(join(_graal_home, d)):
5239
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
578 # ignore <graal>/src/share/tools
5244
55ff4ba8d7b1 ignore src/share/tools directory in native build out-of-date check
Doug Simon <doug.simon@oracle.com>
parents: 5239
diff changeset
579 if root == join(_graal_home, 'src', 'share'):
55ff4ba8d7b1 ignore src/share/tools directory in native build out-of-date check
Doug Simon <doug.simon@oracle.com>
parents: 5239
diff changeset
580 dirnames.remove('tools')
55ff4ba8d7b1 ignore src/share/tools directory in native build out-of-date check
Doug Simon <doug.simon@oracle.com>
parents: 5239
diff changeset
581 sources += [join(root, name) for name in files]
5239
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
582 for f in sources:
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
583 if len(f) != 0 and os.path.getmtime(f) > timestamp:
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
584 mustBuild = True
5244
55ff4ba8d7b1 ignore src/share/tools directory in native build out-of-date check
Doug Simon <doug.simon@oracle.com>
parents: 5239
diff changeset
585 break
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
586
5239
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
587 if not mustBuild:
10568
070b4a3c56f3 disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents: 10527
diff changeset
588 mx.logv('[all files in src and make directories are older than ' + timestampFile[len(_graal_home) + 1:] + ' - skipping native build]')
5239
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
589 continue
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
590
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
591 if platform.system() == 'Windows':
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
592 compilelogfile = _graal_home + '/graalCompile.log'
4252
67e88b7624d5 Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents: 4247
diff changeset
593 mksHome = mx.get_env('MKS_HOME', 'C:\\cygwin\\bin')
67e88b7624d5 Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents: 4247
diff changeset
594
4572
76841bdd5f3e (Windows) Add Graal build configurations (with GRAAL defined) and fix build command.
Andreas Woess <andreas.woess@jku.at>
parents: 4559
diff changeset
595 variant = {'client': 'compiler1', 'server': 'compiler2'}.get(vm, vm)
76841bdd5f3e (Windows) Add Graal build configurations (with GRAAL defined) and fix build command.
Andreas Woess <andreas.woess@jku.at>
parents: 4559
diff changeset
596 project_config = variant + '_' + build
76841bdd5f3e (Windows) Add Graal build configurations (with GRAAL defined) and fix build command.
Andreas Woess <andreas.woess@jku.at>
parents: 4559
diff changeset
597 _runInDebugShell('msbuild ' + _graal_home + r'\build\vs-amd64\jvm.vcproj /p:Configuration=' + project_config + ' /target:clean', _graal_home)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
598 winCompileCmd = r'set HotSpotMksHome=' + mksHome + r'& set OUT_DIR=' + jdk + r'& set JAVA_HOME=' + jdk + r'& set path=%JAVA_HOME%\bin;%path%;%HotSpotMksHome%& cd /D "' + _graal_home + r'\make\windows"& call create.bat ' + _graal_home
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
599 print(winCompileCmd)
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
600 winCompileSuccess = re.compile(r"^Writing \.vcxproj file:")
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
601 if not _runInDebugShell(winCompileCmd, _graal_home, compilelogfile, winCompileSuccess):
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
602 mx.log('Error executing create command')
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
603 return
4572
76841bdd5f3e (Windows) Add Graal build configurations (with GRAAL defined) and fix build command.
Andreas Woess <andreas.woess@jku.at>
parents: 4559
diff changeset
604 winBuildCmd = 'msbuild ' + _graal_home + r'\build\vs-amd64\jvm.vcxproj /p:Configuration=' + project_config + ' /p:Platform=x64'
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
605 if not _runInDebugShell(winBuildCmd, _graal_home, compilelogfile):
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
606 mx.log('Error building project')
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
607 return
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
608 else:
4582
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
609 cpus = multiprocessing.cpu_count()
6718
cce59a7ee92c Avoids stripping libjvm.so when building debug on Solaris (.debuginfo files don't work well with Oracle Solaris Studio 12.3's solaris).
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6705
diff changeset
610 runCmd = [mx.gmake_cmd()]
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
611 runCmd.append(build + buildSuffix)
8884
51a8368d0231 Adapt to changes in hotspot makefiles : pass our JAVA_HOME as ALT_BOOTDIR (so that things are built with a 'safe' jdk) and our jdk copy as JAVA_HOME (so that the jvm gets installed there)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8647
diff changeset
612 env = os.environ.copy()
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
613
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
614 if opts2.D:
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
615 for nv in opts2.D:
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
616 name, value = nv.split('=', 1)
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
617 env[name.strip()] = value
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
618
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
619 env.setdefault('ARCH_DATA_MODEL', '64')
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
620 env.setdefault('LANG', 'C')
4582
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
621 env.setdefault('HOTSPOT_BUILD_JOBS', str(cpus))
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
622 env.setdefault('ALT_BOOTDIR', mx.java().jdk)
9161
8d4174140745 Make the native build less verbose unless mx -v is used
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9159
diff changeset
623 if not mx._opts.verbose:
8d4174140745 Make the native build less verbose unless mx -v is used
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9159
diff changeset
624 runCmd.append('MAKE_VERBOSE=')
8884
51a8368d0231 Adapt to changes in hotspot makefiles : pass our JAVA_HOME as ALT_BOOTDIR (so that things are built with a 'safe' jdk) and our jdk copy as JAVA_HOME (so that the jvm gets installed there)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8647
diff changeset
625 env['JAVA_HOME'] = jdk
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
626 if vm.endswith('nograal'):
9166
0f3fe35513a0 renamed build variable used to make a Graal/non-Graal build from OMIT_GRAAL to INCLUDE_GRAAL and ensured it is only used internally
Doug Simon <doug.simon@oracle.com>
parents: 9163
diff changeset
627 env['INCLUDE_GRAAL'] = 'false'
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
628 env.setdefault('ALT_OUTPUTDIR', join(_graal_home, 'build-nograal', mx.get_os()))
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
629 else:
9166
0f3fe35513a0 renamed build variable used to make a Graal/non-Graal build from OMIT_GRAAL to INCLUDE_GRAAL and ensured it is only used internally
Doug Simon <doug.simon@oracle.com>
parents: 9163
diff changeset
630 env['INCLUDE_GRAAL'] = 'true'
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
631 env.setdefault('INSTALL', 'y')
6702
602ee4d1db61 added setup of ENFORCE_COMPILER_REV and ENFORCE_CC_COMPILER_REV when using sunstudio compilers on Solaris to avoid build complaint from HotSpot makefiles.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6701
diff changeset
632 if mx.get_os() == 'solaris' :
602ee4d1db61 added setup of ENFORCE_COMPILER_REV and ENFORCE_CC_COMPILER_REV when using sunstudio compilers on Solaris to avoid build complaint from HotSpot makefiles.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6701
diff changeset
633 # If using sparcWorks, setup flags to avoid make complaining about CC version
602ee4d1db61 added setup of ENFORCE_COMPILER_REV and ENFORCE_CC_COMPILER_REV when using sunstudio compilers on Solaris to avoid build complaint from HotSpot makefiles.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6701
diff changeset
634 cCompilerVersion = subprocess.Popen('CC -V', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True).stderr.readlines()[0]
602ee4d1db61 added setup of ENFORCE_COMPILER_REV and ENFORCE_CC_COMPILER_REV when using sunstudio compilers on Solaris to avoid build complaint from HotSpot makefiles.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6701
diff changeset
635 if cCompilerVersion.startswith('CC: Sun C++') :
602ee4d1db61 added setup of ENFORCE_COMPILER_REV and ENFORCE_CC_COMPILER_REV when using sunstudio compilers on Solaris to avoid build complaint from HotSpot makefiles.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6701
diff changeset
636 compilerRev = cCompilerVersion.split(' ')[3]
6718
cce59a7ee92c Avoids stripping libjvm.so when building debug on Solaris (.debuginfo files don't work well with Oracle Solaris Studio 12.3's solaris).
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6705
diff changeset
637 env.setdefault('ENFORCE_COMPILER_REV', compilerRev)
cce59a7ee92c Avoids stripping libjvm.so when building debug on Solaris (.debuginfo files don't work well with Oracle Solaris Studio 12.3's solaris).
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6705
diff changeset
638 env.setdefault('ENFORCE_CC_COMPILER_REV', compilerRev)
cce59a7ee92c Avoids stripping libjvm.so when building debug on Solaris (.debuginfo files don't work well with Oracle Solaris Studio 12.3's solaris).
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6705
diff changeset
639 if build == 'jvmg':
cce59a7ee92c Avoids stripping libjvm.so when building debug on Solaris (.debuginfo files don't work well with Oracle Solaris Studio 12.3's solaris).
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6705
diff changeset
640 # I want ALL the symbols when I'm debugging on Solaris
cce59a7ee92c Avoids stripping libjvm.so when building debug on Solaris (.debuginfo files don't work well with Oracle Solaris Studio 12.3's solaris).
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6705
diff changeset
641 # Some Makefile variable are overloaded by environment variable so we need to explicitely
cce59a7ee92c Avoids stripping libjvm.so when building debug on Solaris (.debuginfo files don't work well with Oracle Solaris Studio 12.3's solaris).
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6705
diff changeset
642 # pass them down in the command line. This one is an example of that.
cce59a7ee92c Avoids stripping libjvm.so when building debug on Solaris (.debuginfo files don't work well with Oracle Solaris Studio 12.3's solaris).
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6705
diff changeset
643 runCmd.append('STRIP_POLICY=no_strip')
6276
03c4c25ae726 disabled zipping of lib*.debuginfo files to simplify debugging with gdb
Doug Simon <doug.simon@oracle.com>
parents: 5881
diff changeset
644 # This removes the need to unzip the *.diz files before debugging in gdb
03c4c25ae726 disabled zipping of lib*.debuginfo files to simplify debugging with gdb
Doug Simon <doug.simon@oracle.com>
parents: 5881
diff changeset
645 env.setdefault('ZIP_DEBUGINFO_FILES', '0')
03c4c25ae726 disabled zipping of lib*.debuginfo files to simplify debugging with gdb
Doug Simon <doug.simon@oracle.com>
parents: 5881
diff changeset
646
4582
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
647 # Clear these 2 variables as having them set can cause very confusing build problems
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
648 env.pop('LD_LIBRARY_PATH', None)
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
649 env.pop('CLASSPATH', None)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
650
8884
51a8368d0231 Adapt to changes in hotspot makefiles : pass our JAVA_HOME as ALT_BOOTDIR (so that things are built with a 'safe' jdk) and our jdk copy as JAVA_HOME (so that the jvm gets installed there)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8647
diff changeset
651 mx.run(runCmd, cwd=join(_graal_home, 'make'), err=filterXusage, env=env)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
652
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
653 jvmCfg = _vmCfgInJdk(jdk)
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4540
diff changeset
654 if not exists(jvmCfg):
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4540
diff changeset
655 mx.abort(jvmCfg + ' does not exist')
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
656
8901
8ddaac81cb21 Be more careful while updating jvm.cfg (fixes a bug where the -server configuration would overwrite the -server0 one)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8900
diff changeset
657 prefix = '-' + vm + ' '
8ddaac81cb21 Be more careful while updating jvm.cfg (fixes a bug where the -server configuration would overwrite the -server0 one)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8900
diff changeset
658 vmKnown = prefix + 'KNOWN\n'
8889
c669e8e621a1 Update the -client line in jvm.cfg when it already exists (ie IGNORE)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8887
diff changeset
659 lines = []
c669e8e621a1 Update the -client line in jvm.cfg when it already exists (ie IGNORE)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8887
diff changeset
660 found = False
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4540
diff changeset
661 with open(jvmCfg) as f:
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4540
diff changeset
662 for line in f:
8889
c669e8e621a1 Update the -client line in jvm.cfg when it already exists (ie IGNORE)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8887
diff changeset
663 if line.strip() == vmKnown.strip():
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4540
diff changeset
664 found = True
8889
c669e8e621a1 Update the -client line in jvm.cfg when it already exists (ie IGNORE)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8887
diff changeset
665 lines.append(line)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
666
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4540
diff changeset
667 if not found:
8901
8ddaac81cb21 Be more careful while updating jvm.cfg (fixes a bug where the -server configuration would overwrite the -server0 one)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8900
diff changeset
668 mx.log('Appending "' + prefix + 'KNOWN" to ' + jvmCfg)
6688
806821a1c0a8 Make sure files in copy of JDK has write-protection unset before modifying it.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6687
diff changeset
669 if mx.get_os() != 'windows':
806821a1c0a8 Make sure files in copy of JDK has write-protection unset before modifying it.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6687
diff changeset
670 os.chmod(jvmCfg, 0755)
8889
c669e8e621a1 Update the -client line in jvm.cfg when it already exists (ie IGNORE)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8887
diff changeset
671 with open(jvmCfg, 'w') as f:
c669e8e621a1 Update the -client line in jvm.cfg when it already exists (ie IGNORE)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8887
diff changeset
672 for line in lines:
c669e8e621a1 Update the -client line in jvm.cfg when it already exists (ie IGNORE)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8887
diff changeset
673 if line.startswith(prefix):
c669e8e621a1 Update the -client line in jvm.cfg when it already exists (ie IGNORE)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8887
diff changeset
674 line = vmKnown
c669e8e621a1 Update the -client line in jvm.cfg when it already exists (ie IGNORE)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8887
diff changeset
675 found = True
c669e8e621a1 Update the -client line in jvm.cfg when it already exists (ie IGNORE)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8887
diff changeset
676 f.write(line)
c669e8e621a1 Update the -client line in jvm.cfg when it already exists (ie IGNORE)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8887
diff changeset
677 if not found:
c669e8e621a1 Update the -client line in jvm.cfg when it already exists (ie IGNORE)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8887
diff changeset
678 f.write(vmKnown)
5194
a6eceb5efb0e added --ecl option to mx for saving VM execution(s) as Eclipse launch configurations
Doug Simon <doug.simon@oracle.com>
parents: 5189
diff changeset
679
5239
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
680 if exists(timestampFile):
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
681 os.utime(timestampFile, None)
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
682 else:
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
683 file(timestampFile, 'a')
b9db4fee6eb2 skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents: 5234
diff changeset
684
5257
a549662f6c6f added 'vmg' and 'vmfg' commands to mx as convenient aliases for running the debug and fastdebug builds of the selected VM
Doug Simon <doug.simon@oracle.com>
parents: 5245
diff changeset
685 def vmg(args):
a549662f6c6f added 'vmg' and 'vmfg' commands to mx as convenient aliases for running the debug and fastdebug builds of the selected VM
Doug Simon <doug.simon@oracle.com>
parents: 5245
diff changeset
686 """run the debug build of VM selected by the '--vm' option"""
a549662f6c6f added 'vmg' and 'vmfg' commands to mx as convenient aliases for running the debug and fastdebug builds of the selected VM
Doug Simon <doug.simon@oracle.com>
parents: 5245
diff changeset
687 return vm(args, vmbuild='debug')
a549662f6c6f added 'vmg' and 'vmfg' commands to mx as convenient aliases for running the debug and fastdebug builds of the selected VM
Doug Simon <doug.simon@oracle.com>
parents: 5245
diff changeset
688
a549662f6c6f added 'vmg' and 'vmfg' commands to mx as convenient aliases for running the debug and fastdebug builds of the selected VM
Doug Simon <doug.simon@oracle.com>
parents: 5245
diff changeset
689 def vmfg(args):
a549662f6c6f added 'vmg' and 'vmfg' commands to mx as convenient aliases for running the debug and fastdebug builds of the selected VM
Doug Simon <doug.simon@oracle.com>
parents: 5245
diff changeset
690 """run the fastdebug build of VM selected by the '--vm' option"""
a549662f6c6f added 'vmg' and 'vmfg' commands to mx as convenient aliases for running the debug and fastdebug builds of the selected VM
Doug Simon <doug.simon@oracle.com>
parents: 5245
diff changeset
691 return vm(args, vmbuild='fastdebug')
a549662f6c6f added 'vmg' and 'vmfg' commands to mx as convenient aliases for running the debug and fastdebug builds of the selected VM
Doug Simon <doug.simon@oracle.com>
parents: 5245
diff changeset
692
4417
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
693 def vm(args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, vmbuild=None):
4575
ccb5369481a2 Clarified mx help text on how to build/run [Graal|Client|Server].
Doug Simon <doug.simon@oracle.com>
parents: 4572
diff changeset
694 """run the VM selected by the '--vm' option"""
4219
47f7d91d34cf Fix javac build issues with classpath
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4216
diff changeset
695
4417
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
696 if vm is None:
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
697 vm = _get_vm()
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
698
10454
590b0c26877f mx: add --workdir argument
Bernhard Urban <bernhard.urban@jku.at>
parents: 10417
diff changeset
699 if cwd is None:
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
700 cwd = _vm_cwd
11424
ece40b452e65 mx: Fix commands.vm when an explicit cwd is passed and no --vmcwd is given
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11415
diff changeset
701 elif _vm_cwd is not None and _vm_cwd != cwd:
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
702 mx.abort("conflicting working directories: do not set --vmcwd for this command")
10454
590b0c26877f mx: add --workdir argument
Bernhard Urban <bernhard.urban@jku.at>
parents: 10417
diff changeset
703
4219
47f7d91d34cf Fix javac build issues with classpath
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4216
diff changeset
704 build = vmbuild if vmbuild is not None else _vmbuild if _vmSourcesAvailable else 'product'
11286
485a5f029b32 mx: graal.jar is not silently updated anymore in the vm function
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11237
diff changeset
705 jdk = _jdk(build, vmToCheck=vm, installGraalJar=False)
11936
4cdf7623fbe6 ensure graal.options in the JDK is deployed/updated/deleted each time the VM is run
Doug Simon <doug.simon@oracle.com>
parents: 11867
diff changeset
706 _updateInstalledGraalOptionsFile(jdk)
5189
6fbf12b8e572 automated download of hsdis lib if PrintAssembly option is used; added support for hsdis on the Mac
Doug Simon <doug.simon@oracle.com>
parents: 5153
diff changeset
707 mx.expand_project_in_args(args)
5194
a6eceb5efb0e added --ecl option to mx for saving VM execution(s) as Eclipse launch configurations
Doug Simon <doug.simon@oracle.com>
parents: 5189
diff changeset
708 if _make_eclipse_launch:
a6eceb5efb0e added --ecl option to mx for saving VM execution(s) as Eclipse launch configurations
Doug Simon <doug.simon@oracle.com>
parents: 5189
diff changeset
709 mx.make_eclipse_launch(args, 'graal-' + build, name=None, deps=mx.project('com.oracle.graal.hotspot').all_deps([], True))
5189
6fbf12b8e572 automated download of hsdis lib if PrintAssembly option is used; added support for hsdis on the Mac
Doug Simon <doug.simon@oracle.com>
parents: 5153
diff changeset
710 if len([a for a in args if 'PrintAssembly' in a]) != 0:
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
711 hsdis([], copyToDir=_vmLibDirInJdk(jdk))
5032
e2de9649f0a9 Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents: 5024
diff changeset
712 if mx.java().debug_port is not None:
e2de9649f0a9 Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents: 5024
diff changeset
713 args = ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=' + str(mx.java().debug_port)] + args
5024
7ccdae96e98a Allow JaCoCon to append to the execution file
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5016
diff changeset
714 if _jacoco == 'on' or _jacoco == 'append':
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
715 jacocoagent = mx.library("JACOCOAGENT", True)
5366
67e63e8dcbd2 build JaCoCo exclude list by scanning for snippets
Doug Simon <doug.simon@oracle.com>
parents: 5295
diff changeset
716 # Exclude all compiler tests and snippets
5881
472a648769e4 better JaCoCo : only include com.oracle.graal.* and com.oracle.max.*, exclude com.oracle.graal.jtt.*
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5878
diff changeset
717 excludes = ['com.oracle.graal.compiler.tests.*', 'com.oracle.graal.jtt.*']
5366
67e63e8dcbd2 build JaCoCo exclude list by scanning for snippets
Doug Simon <doug.simon@oracle.com>
parents: 5295
diff changeset
718 for p in mx.projects():
8607
c7672a325faf search for classes containing annotations returns source file as well as class name
Doug Simon <doug.simon@oracle.com>
parents: 8554
diff changeset
719 excludes += _find_classes_with_annotations(p, None, ['@Snippet', '@ClassSubstitution', '@Test'], includeInnerClasses=True).keys()
c7672a325faf search for classes containing annotations returns source file as well as class name
Doug Simon <doug.simon@oracle.com>
parents: 8554
diff changeset
720 excludes += p.find_classes_with_matching_source_line(None, lambda line: 'JaCoCo Exclude' in line, includeInnerClasses=True).keys()
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
721
9343
cdc21fd3d389 removed obsolete JaCoCo inclusion filter
Doug Simon <doug.simon@oracle.com>
parents: 9291
diff changeset
722 includes = ['com.oracle.graal.*']
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
723 agentOptions = {
5024
7ccdae96e98a Allow JaCoCon to append to the execution file
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5016
diff changeset
724 'append' : 'true' if _jacoco == 'append' else 'false',
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
725 'bootclasspath' : 'true',
5881
472a648769e4 better JaCoCo : only include com.oracle.graal.* and com.oracle.max.*, exclude com.oracle.graal.jtt.*
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5878
diff changeset
726 'includes' : ':'.join(includes),
5878
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
727 'excludes' : ':'.join(excludes),
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
728 'destfile' : 'jacoco.exec'
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
729 }
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
730 args = ['-javaagent:' + jacocoagent.get_path(True) + '=' + ','.join([k + '=' + v for k, v in agentOptions.items()])] + args
6691
9611d0ccb4ec Automatically add -d64 vm options when running graal
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6688
diff changeset
731 if '-d64' not in args:
9611d0ccb4ec Automatically add -d64 vm options when running graal
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6688
diff changeset
732 args = ['-d64'] + args
8132
394f685c1502 prepend -XX:GraalClassPath option if graal.jar exists (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents: 7925
diff changeset
733
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
734 exe = join(jdk, 'bin', mx.exe_suffix('java'))
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
735 pfx = _vm_prefix.split() if _vm_prefix is not None else []
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
736
9667
1ef7b26e9177 mx/commands.py: warn about arguments after '-version' when launching the vm
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9639
diff changeset
737 if '-version' in args:
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
738 ignoredArgs = args[args.index('-version') + 1:]
9667
1ef7b26e9177 mx/commands.py: warn about arguments after '-version' when launching the vm
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9639
diff changeset
739 if len(ignoredArgs) > 0:
1ef7b26e9177 mx/commands.py: warn about arguments after '-version' when launching the vm
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9639
diff changeset
740 mx.log("Warning: The following options will be ignored by the vm because they come after the '-version' argument: " + ' '.join(ignoredArgs))
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
741
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
742 return mx.run(pfx + [exe, '-' + vm] + args, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd, timeout=timeout)
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
743
5762
b30cced39597 generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents: 5729
diff changeset
744 def _find_classes_with_annotations(p, pkgRoot, annotations, includeInnerClasses=False):
5366
67e63e8dcbd2 build JaCoCo exclude list by scanning for snippets
Doug Simon <doug.simon@oracle.com>
parents: 5295
diff changeset
745 """
5482
9f4783c0269e folded -G:+CheckcastCounters functionality into checkcast snippets
Doug Simon <doug.simon@oracle.com>
parents: 5438
diff changeset
746 Scan the sources of project 'p' for Java source files containing a line starting with 'annotation'
5762
b30cced39597 generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents: 5729
diff changeset
747 (ignoring preceding whitespace) and return the fully qualified class name for each Java
b30cced39597 generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents: 5729
diff changeset
748 source file matched in a list.
5366
67e63e8dcbd2 build JaCoCo exclude list by scanning for snippets
Doug Simon <doug.simon@oracle.com>
parents: 5295
diff changeset
749 """
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
750
5762
b30cced39597 generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents: 5729
diff changeset
751 matches = lambda line : len([a for a in annotations if line == a or line.startswith(a + '(')]) != 0
b30cced39597 generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents: 5729
diff changeset
752 return p.find_classes_with_matching_source_line(pkgRoot, matches, includeInnerClasses)
5366
67e63e8dcbd2 build JaCoCo exclude list by scanning for snippets
Doug Simon <doug.simon@oracle.com>
parents: 5295
diff changeset
753
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
754 def _extract_VM_args(args, allowClasspath=False, useDoubleDash=False):
11359
51b0b1104114 changed unittest command to remove use of '@' character. The format is now: mx unittest [VM options] [test filters...]
Doug Simon <doug.simon@oracle.com>
parents: 11302
diff changeset
755 """
51b0b1104114 changed unittest command to remove use of '@' character. The format is now: mx unittest [VM options] [test filters...]
Doug Simon <doug.simon@oracle.com>
parents: 11302
diff changeset
756 Partitions a command line into a leading sequence of HotSpot VM options and the rest.
51b0b1104114 changed unittest command to remove use of '@' character. The format is now: mx unittest [VM options] [test filters...]
Doug Simon <doug.simon@oracle.com>
parents: 11302
diff changeset
757 """
51b0b1104114 changed unittest command to remove use of '@' character. The format is now: mx unittest [VM options] [test filters...]
Doug Simon <doug.simon@oracle.com>
parents: 11302
diff changeset
758 for i in range(0, len(args)):
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
759 if useDoubleDash:
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
760 if args[i] == '--':
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
761 vmArgs = args[:i]
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
762 remainder = args[i + 1:]
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
763 return vmArgs, remainder
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
764 else:
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
765 if not args[i].startswith('-'):
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
766 if i != 0 and (args[i - 1] == '-cp' or args[i - 1] == '-classpath'):
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
767 if not allowClasspath:
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
768 mx.abort('Cannot supply explicit class path option')
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
769 else:
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
770 continue
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
771 vmArgs = args[:i]
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
772 remainder = args[i:]
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
773 return vmArgs, remainder
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
774
11359
51b0b1104114 changed unittest command to remove use of '@' character. The format is now: mx unittest [VM options] [test filters...]
Doug Simon <doug.simon@oracle.com>
parents: 11302
diff changeset
775 return args, []
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
776
8406
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
777 def _run_tests(args, harness, annotations, testfile):
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
778
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
779
11359
51b0b1104114 changed unittest command to remove use of '@' character. The format is now: mx unittest [VM options] [test filters...]
Doug Simon <doug.simon@oracle.com>
parents: 11302
diff changeset
780 vmArgs, tests = _extract_VM_args(args)
51b0b1104114 changed unittest command to remove use of '@' character. The format is now: mx unittest [VM options] [test filters...]
Doug Simon <doug.simon@oracle.com>
parents: 11302
diff changeset
781 for t in tests:
51b0b1104114 changed unittest command to remove use of '@' character. The format is now: mx unittest [VM options] [test filters...]
Doug Simon <doug.simon@oracle.com>
parents: 11302
diff changeset
782 if t.startswith('-'):
11403
e45b540b0ef2 clearer error message
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
783 mx.abort('VM option ' + t + ' must precede ' + tests[0])
4159
e253ca26b2d5 Added 'unittest' command to run the Graal unit tests.
Doug Simon <doug.simon@oracle.com>
parents: 4157
diff changeset
784
10606
a6c0ae38e05e more robust command line checking for unittest (at cost of removing support for negative filters)
Doug Simon <doug.simon@oracle.com>
parents: 10574
diff changeset
785 candidates = []
11777
f3e5cbd1efae move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents: 11758
diff changeset
786 for p in mx.projects_opt_limit_to_suites():
9639
fde5ccbab3a3 made unittest command take Java compliance of a project into account
Doug Simon <doug.simon@oracle.com>
parents: 9598
diff changeset
787 if mx.java().javaCompliance < p.javaCompliance:
fde5ccbab3a3 made unittest command take Java compliance of a project into account
Doug Simon <doug.simon@oracle.com>
parents: 9598
diff changeset
788 continue
10606
a6c0ae38e05e more robust command line checking for unittest (at cost of removing support for negative filters)
Doug Simon <doug.simon@oracle.com>
parents: 10574
diff changeset
789 candidates += _find_classes_with_annotations(p, None, annotations).keys()
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
790
10606
a6c0ae38e05e more robust command line checking for unittest (at cost of removing support for negative filters)
Doug Simon <doug.simon@oracle.com>
parents: 10574
diff changeset
791 classes = []
10608
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
792 if len(tests) == 0:
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
793 classes = candidates
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
794 else:
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
795 for t in tests:
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
796 found = False
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
797 for c in candidates:
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
798 if t in c:
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
799 found = True
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
800 classes.append(c)
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
801 if not found:
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
802 mx.log('warning: no tests matched by substring "' + t)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
803
11777
f3e5cbd1efae move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents: 11758
diff changeset
804 projectscp = mx.classpath([pcp.name for pcp in mx.projects_opt_limit_to_suites() if pcp.javaCompliance <= mx.java().javaCompliance])
8343
a3c30d467f96 unittest: just do a single JVM call
Bernhard Urban <bernhard.urban@jku.at>
parents: 8340
diff changeset
805
a3c30d467f96 unittest: just do a single JVM call
Bernhard Urban <bernhard.urban@jku.at>
parents: 8340
diff changeset
806 if len(classes) != 0:
8406
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
807 f_testfile = open(testfile, 'w')
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
808 for c in classes:
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
809 f_testfile.write(c + '\n')
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
810 f_testfile.close()
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
811 harness(projectscp, vmArgs)
5649
14505f3e6b4c modified harness for running JUnit and JTT tests such that only projects declaring a 'testHarness' attribute in mx/projects are scanned for tests
Doug Simon <doug.simon@oracle.com>
parents: 5596
diff changeset
812
13320
093353894575 Test the Truffle JAR after building.
Chris Seaton <chris.seaton@oracle.com>
parents: 13319
diff changeset
813 def _unittest(args, annotations, prefixcp=""):
8406
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
814 mxdir = dirname(__file__)
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
815 name = 'JUnitWrapper'
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
816 javaSource = join(mxdir, name + '.java')
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
817 javaClass = join(mxdir, name + '.class')
9010
08a16c26907f MX_TESTFILE environment variable can be used to specify (and preserve) the test list file used by 'mx unittest'.
Doug Simon <doug.simon@oracle.com>
parents: 8901
diff changeset
818 testfile = os.environ.get('MX_TESTFILE', None)
08a16c26907f MX_TESTFILE environment variable can be used to specify (and preserve) the test list file used by 'mx unittest'.
Doug Simon <doug.simon@oracle.com>
parents: 8901
diff changeset
819 if testfile is None:
08a16c26907f MX_TESTFILE environment variable can be used to specify (and preserve) the test list file used by 'mx unittest'.
Doug Simon <doug.simon@oracle.com>
parents: 8901
diff changeset
820 (_, testfile) = tempfile.mkstemp(".testclasses", "graal")
9236
ec607ddaa99b windows-specific mx fix for executing unit tests selectively
Christian Haeubl <haeubl@ssw.jku.at>
parents: 9177
diff changeset
821 os.close(_)
8406
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
822
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
823 def harness(projectscp, vmArgs):
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
824 if not exists(javaClass) or getmtime(javaClass) < getmtime(javaSource):
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
825 subprocess.check_call([mx.java().javac, '-cp', projectscp, '-d', mxdir, javaSource])
12647
b038b643a3a4 restricted BootstrapGraal option to GRAALVM builds only
Doug Simon <doug.simon@oracle.com>
parents: 12605
diff changeset
826 if _get_vm() != 'graal':
8440
2d0160c35f8f Fix unittest on server0.
Roland Schatz <roland.schatz@oracle.com>
parents: 8433
diff changeset
827 prefixArgs = ['-esa', '-ea']
2d0160c35f8f Fix unittest on server0.
Roland Schatz <roland.schatz@oracle.com>
parents: 8433
diff changeset
828 else:
2d0160c35f8f Fix unittest on server0.
Roland Schatz <roland.schatz@oracle.com>
parents: 8433
diff changeset
829 prefixArgs = ['-XX:-BootstrapGraal', '-esa', '-ea']
11227
bd0e589a9a65 avoid use of JUnitWrapper when exactly one test is being executed
Doug Simon <doug.simon@oracle.com>
parents: 11179
diff changeset
830 with open(testfile) as fp:
bd0e589a9a65 avoid use of JUnitWrapper when exactly one test is being executed
Doug Simon <doug.simon@oracle.com>
parents: 11179
diff changeset
831 testclasses = [l.rstrip() for l in fp.readlines()]
bd0e589a9a65 avoid use of JUnitWrapper when exactly one test is being executed
Doug Simon <doug.simon@oracle.com>
parents: 11179
diff changeset
832 if len(testclasses) == 1:
bd0e589a9a65 avoid use of JUnitWrapper when exactly one test is being executed
Doug Simon <doug.simon@oracle.com>
parents: 11179
diff changeset
833 # Execute Junit directly when one test is being run. This simplifies
bd0e589a9a65 avoid use of JUnitWrapper when exactly one test is being executed
Doug Simon <doug.simon@oracle.com>
parents: 11179
diff changeset
834 # replaying the VM execution in a native debugger (e.g., gdb).
13320
093353894575 Test the Truffle JAR after building.
Chris Seaton <chris.seaton@oracle.com>
parents: 13319
diff changeset
835 vm(prefixArgs + vmArgs + ['-cp', prefixcp + projectscp, 'org.junit.runner.JUnitCore'] + testclasses)
11227
bd0e589a9a65 avoid use of JUnitWrapper when exactly one test is being executed
Doug Simon <doug.simon@oracle.com>
parents: 11179
diff changeset
836 else:
13320
093353894575 Test the Truffle JAR after building.
Chris Seaton <chris.seaton@oracle.com>
parents: 13319
diff changeset
837 vm(prefixArgs + vmArgs + ['-cp', prefixcp + projectscp + os.pathsep + mxdir, name] + [testfile])
8406
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
838
8433
87346100d7a5 temporary file is removed when unittests fail
Doug Simon <doug.simon@oracle.com>
parents: 8406
diff changeset
839 try:
87346100d7a5 temporary file is removed when unittests fail
Doug Simon <doug.simon@oracle.com>
parents: 8406
diff changeset
840 _run_tests(args, harness, annotations, testfile)
87346100d7a5 temporary file is removed when unittests fail
Doug Simon <doug.simon@oracle.com>
parents: 8406
diff changeset
841 finally:
9010
08a16c26907f MX_TESTFILE environment variable can be used to specify (and preserve) the test list file used by 'mx unittest'.
Doug Simon <doug.simon@oracle.com>
parents: 8901
diff changeset
842 if os.environ.get('MX_TESTFILE') is None:
08a16c26907f MX_TESTFILE environment variable can be used to specify (and preserve) the test list file used by 'mx unittest'.
Doug Simon <doug.simon@oracle.com>
parents: 8901
diff changeset
843 os.remove(testfile)
8340
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
844
9598
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
845 _unittestHelpSuffix = """
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
846
5649
14505f3e6b4c modified harness for running JUnit and JTT tests such that only projects declaring a 'testHarness' attribute in mx/projects are scanned for tests
Doug Simon <doug.simon@oracle.com>
parents: 5596
diff changeset
847 If filters are supplied, only tests whose fully qualified name
10606
a6c0ae38e05e more robust command line checking for unittest (at cost of removing support for negative filters)
Doug Simon <doug.simon@oracle.com>
parents: 10574
diff changeset
848 includes a filter as a substring are run.
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
849
9598
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
850 For example, this command line:
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
851
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
852 mx unittest -G:Dump= -G:MethodFilter=BC_aload.* -G:+PrintCFG BC_aload
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
853
9598
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
854 will run all JUnit test classes that contain 'BC_aload' in their
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
855 fully qualified name and will pass these options to the VM:
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
856
9598
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
857 -G:Dump= -G:MethodFilter=BC_aload.* -G:+PrintCFG
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
858
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
859 To get around command line length limitations on some OSes, the
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
860 JUnit class names to be executed are written to a file that a
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
861 custom JUnit wrapper reads and passes onto JUnit proper. The
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
862 MX_TESTFILE environment variable can be set to specify a
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
863 file which will not be deleted once the unittests are done
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
864 (unlike the temporary file otherwise used).
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
865
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
866 As with all other commands, using the global '-v' before 'unittest'
11359
51b0b1104114 changed unittest command to remove use of '@' character. The format is now: mx unittest [VM options] [test filters...]
Doug Simon <doug.simon@oracle.com>
parents: 11302
diff changeset
867 command will cause mx to show the complete command line
9598
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
868 it uses to run the VM.
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
869 """
9598
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
870
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
871 def unittest(args):
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
872 """run the JUnit tests (all testcases){0}"""
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
873
11237
2e38c55153e5 unittest: also pick up @Parameters annotation
Bernhard Urban <bernhard.urban@jku.at>
parents: 11227
diff changeset
874 _unittest(args, ['@Test', '@LongTest', '@Parameters'])
8340
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
875
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
876 def shortunittest(args):
9598
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
877 """run the JUnit tests (short testcases only){0}"""
8340
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
878
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
879 _unittest(args, ['@Test'])
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
880
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
881 def longunittest(args):
9598
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
882 """run the JUnit tests (long testcases only){0}"""
8340
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
883
11237
2e38c55153e5 unittest: also pick up @Parameters annotation
Bernhard Urban <bernhard.urban@jku.at>
parents: 11227
diff changeset
884 _unittest(args, ['@LongTest', '@Parameters'])
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
885
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
886 def buildvms(args):
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
887 """build one or more VMs in various configurations"""
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
888
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
889 vmsDefault = ','.join(_vmChoices.keys())
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
890 vmbuildsDefault = ','.join(_vmbuildChoices)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
891
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
892 parser = ArgumentParser(prog='mx buildvms')
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
893 parser.add_argument('--vms', help='a comma separated list of VMs to build (default: ' + vmsDefault + ')', metavar='<args>', default=vmsDefault)
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
894 parser.add_argument('--builds', help='a comma separated list of build types (default: ' + vmbuildsDefault + ')', metavar='<args>', default=vmbuildsDefault)
9096
d4b868ed9cfb buildvms command now runs "java -version" for each VM built unless -n option is specified
Doug Simon <doug.simon@oracle.com>
parents: 9095
diff changeset
895 parser.add_argument('-n', '--no-check', action='store_true', help='omit running "java -version" after each build')
9097
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
896 parser.add_argument('-c', '--console', action='store_true', help='send build output to console instead of log file')
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
897
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
898 args = parser.parse_args(args)
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
899 vms = args.vms.split(',')
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
900 builds = args.builds.split(',')
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
901
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
902 allStart = time.time()
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
903 for v in vms:
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
904 for vmbuild in builds:
9117
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
905 if v == 'original' and vmbuild != 'product':
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
906 continue
9097
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
907 if not args.console:
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
908 logFile = join(v + '-' + vmbuild + '.log')
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
909 log = open(join(_graal_home, logFile), 'wb')
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
910 start = time.time()
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
911 mx.log('BEGIN: ' + v + '-' + vmbuild + '\t(see: ' + logFile + ')')
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
912 # Run as subprocess so that output can be directed to a file
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
913 subprocess.check_call([sys.executable, '-u', join('mxtool', 'mx.py'), '--vm', v, '--vmbuild',
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
914 vmbuild, 'build'], cwd=_graal_home, stdout=log, stderr=subprocess.STDOUT)
9097
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
915 duration = datetime.timedelta(seconds=time.time() - start)
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
916 mx.log('END: ' + v + '-' + vmbuild + '\t[' + str(duration) + ']')
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
917 else:
11371
74414b248381 mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents: 11368
diff changeset
918 with VM(v, vmbuild):
74414b248381 mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents: 11368
diff changeset
919 build([])
9096
d4b868ed9cfb buildvms command now runs "java -version" for each VM built unless -n option is specified
Doug Simon <doug.simon@oracle.com>
parents: 9095
diff changeset
920 if not args.no_check:
d4b868ed9cfb buildvms command now runs "java -version" for each VM built unless -n option is specified
Doug Simon <doug.simon@oracle.com>
parents: 9095
diff changeset
921 vmargs = ['-version']
d4b868ed9cfb buildvms command now runs "java -version" for each VM built unless -n option is specified
Doug Simon <doug.simon@oracle.com>
parents: 9095
diff changeset
922 if v == 'graal':
d4b868ed9cfb buildvms command now runs "java -version" for each VM built unless -n option is specified
Doug Simon <doug.simon@oracle.com>
parents: 9095
diff changeset
923 vmargs.insert(0, '-XX:-BootstrapGraal')
d4b868ed9cfb buildvms command now runs "java -version" for each VM built unless -n option is specified
Doug Simon <doug.simon@oracle.com>
parents: 9095
diff changeset
924 vm(vmargs, vm=v, vmbuild=vmbuild)
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
925 allDuration = datetime.timedelta(seconds=time.time() - allStart)
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
926 mx.log('TOTAL TIME: ' + '[' + str(allDuration) + ']')
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
927
11756
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
928 class Task:
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
929 def __init__(self, title):
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
930 self.start = time.time()
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
931 self.title = title
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
932 self.end = None
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
933 self.duration = None
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
934 mx.log(time.strftime('gate: %d %b %Y %H:%M:%S: BEGIN: ') + title)
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
935 def stop(self):
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
936 self.end = time.time()
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
937 self.duration = datetime.timedelta(seconds=self.end - self.start)
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
938 mx.log(time.strftime('gate: %d %b %Y %H:%M:%S: END: ') + self.title + ' [' + str(self.duration) + ']')
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
939 return self
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
940 def abort(self, codeOrMessage):
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
941 self.end = time.time()
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
942 self.duration = datetime.timedelta(seconds=self.end - self.start)
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
943 mx.log(time.strftime('gate: %d %b %Y %H:%M:%S: ABORT: ') + self.title + ' [' + str(self.duration) + ']')
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
944 mx.abort(codeOrMessage)
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
945 return self
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
946
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
947 def _basic_gate_body(args, tasks):
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
948 t = Task('BuildHotSpotGraal: fastdebug,product')
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
949 buildvms(['--vms', 'graal,server', '--builds', 'fastdebug,product'])
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
950 tasks.append(t.stop())
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
951
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
952 with VM('graal', 'fastdebug'):
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
953 t = Task('BootstrapWithSystemAssertions:fastdebug')
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
954 vm(['-esa', '-version'])
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
955 tasks.append(t.stop())
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
956
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
957 with VM('graal', 'product'):
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
958 t = Task('BootstrapWithGCVerification:product')
12042
fbe1ee508936 added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents: 11936
diff changeset
959 out = mx.DuplicateSuppressingStream(['VerifyAfterGC:', 'VerifyBeforeGC:']).write
fbe1ee508936 added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents: 11936
diff changeset
960 vm(['-XX:+UnlockDiagnosticVMOptions', '-XX:+VerifyBeforeGC', '-XX:+VerifyAfterGC', '-version'], out=out)
11756
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
961 tasks.append(t.stop())
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
962
12412
3c11430f62d8 Re-enable G1 verification in gate
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12359
diff changeset
963 with VM('graal', 'product'):
3c11430f62d8 Re-enable G1 verification in gate
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12359
diff changeset
964 t = Task('BootstrapWithG1GCVerification:product')
3c11430f62d8 Re-enable G1 verification in gate
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12359
diff changeset
965 out = mx.DuplicateSuppressingStream(['VerifyAfterGC:', 'VerifyBeforeGC:']).write
12605
868dba721f1e Remove UseNewCode from gate G1 verification run
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12583
diff changeset
966 vm(['-XX:+UnlockDiagnosticVMOptions', '-XX:-UseSerialGC', '-XX:+UseG1GC', '-XX:+VerifyBeforeGC', '-XX:+VerifyAfterGC', '-version'], out=out)
12412
3c11430f62d8 Re-enable G1 verification in gate
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12359
diff changeset
967 tasks.append(t.stop())
11756
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
968
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
969 with VM('graal', 'product'):
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
970 t = Task('BootstrapWithRegisterPressure:product')
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
971 vm(['-G:RegisterPressure=rbx,r11,r10,r14,xmm3,xmm11,xmm14', '-esa', '-version'])
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
972 tasks.append(t.stop())
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
973
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
974 with VM('graal', 'product'):
13378
16d99e9d77ad Options: rename flag (AOTCompilation -> ImmutableCode)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13347
diff changeset
975 t = Task('BootstrapWithImmutableCode:product')
16d99e9d77ad Options: rename flag (AOTCompilation -> ImmutableCode)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13347
diff changeset
976 vm(['-G:+ImmutableCode', '-G:+VerifyPhases', '-esa', '-version'])
11756
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
977 tasks.append(t.stop())
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
978
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
979 with VM('server', 'product'): # hosted mode
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
980 t = Task('UnitTests:hosted-product')
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
981 unittest([])
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
982 tasks.append(t.stop())
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
983
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
984 for vmbuild in ['fastdebug', 'product']:
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
985 for test in sanitycheck.getDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild):
13471
020099961eb4 renamed JavaVersion to VersionSpec
Doug Simon <doug.simon@oracle.com>
parents: 13378
diff changeset
986 if 'eclipse' in str(test) and mx.java().version >= mx.VersionSpec('1.8'):
13486
441b54753cda fixed grammar in comment
Doug Simon <doug.simon@oracle.com>
parents: 13472
diff changeset
987 # DaCapo eclipse doesn't run under JDK8
13267
58d8de1f384b add support for JAVA7_HOME environment variable in igv command as a convenience work-around until igv works with jdk8
Doug Simon <doug.simon@oracle.com>
parents: 13244
diff changeset
988 continue
58d8de1f384b add support for JAVA7_HOME environment variable in igv command as a convenience work-around until igv works with jdk8
Doug Simon <doug.simon@oracle.com>
parents: 13244
diff changeset
989
11756
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
990 t = Task(str(test) + ':' + vmbuild)
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
991 if not test.test('graal'):
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
992 t.abort(test.name + ' Failed')
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
993 tasks.append(t.stop())
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
994
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
995 if args.jacocout is not None:
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
996 jacocoreport([args.jacocout])
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
997
11758
4ac92e735a16 pylint fixes (retry)
Mick Jordan <mick.jordan@oracle.com>
parents: 11757
diff changeset
998 global _jacoco
11756
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
999 _jacoco = 'off'
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1000
12497
98caa3872d83 gate: clean and build IGV (not GV)
Bernhard Urban <bernhard.urban@jku.at>
parents: 12412
diff changeset
1001 t = Task('CleanAndBuildIdealGraphVisualizer')
98caa3872d83 gate: clean and build IGV (not GV)
Bernhard Urban <bernhard.urban@jku.at>
parents: 12412
diff changeset
1002 mx.run(['ant', '-f', join(_graal_home, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml'), '-q', 'clean', 'build'])
11756
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1003 tasks.append(t.stop())
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1004
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1005 # Prevent Graal modifications from breaking the standard builds
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1006 if args.buildNonGraal:
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1007 t = Task('BuildHotSpotVarieties')
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1008 buildvms(['--vms', 'client,server', '--builds', 'fastdebug,product'])
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1009 buildvms(['--vms', 'server-nograal', '--builds', 'product'])
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1010 buildvms(['--vms', 'server-nograal', '--builds', 'optimized'])
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1011 tasks.append(t.stop())
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1012
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1013 for vmbuild in ['product', 'fastdebug']:
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1014 for theVm in ['client', 'server']:
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1015 with VM(theVm, vmbuild):
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1016 t = Task('DaCapo_pmd:' + theVm + ':' + vmbuild)
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1017 dacapo(['pmd'])
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1018 tasks.append(t.stop())
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1019
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1020 t = Task('UnitTests:' + theVm + ':' + vmbuild)
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1021 unittest(['-XX:CompileCommand=exclude,*::run*', 'graal.api'])
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1022 tasks.append(t.stop())
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1023
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1024
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1025 def gate(args, gate_body=_basic_gate_body):
4159
e253ca26b2d5 Added 'unittest' command to run the Graal unit tests.
Doug Simon <doug.simon@oracle.com>
parents: 4157
diff changeset
1026 """run the tests used to validate a push
e253ca26b2d5 Added 'unittest' command to run the Graal unit tests.
Doug Simon <doug.simon@oracle.com>
parents: 4157
diff changeset
1027
4438
0312460af9fc Made gate do a full clean and added timing report for all gate tasks to end of gate log.
Doug Simon <doug.simon@oracle.com>
parents: 4417
diff changeset
1028 If this command exits with a 0 exit code, then the source code is in
4159
e253ca26b2d5 Added 'unittest' command to run the Graal unit tests.
Doug Simon <doug.simon@oracle.com>
parents: 4157
diff changeset
1029 a state that would be accepted for integration into the main repository."""
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1030
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1031 parser = ArgumentParser(prog='mx gate')
5232
c005ca943790 added -j option to gate command to disable cleaning of Java class files
Doug Simon <doug.simon@oracle.com>
parents: 5197
diff changeset
1032 parser.add_argument('-j', '--omit-java-clean', action='store_false', dest='cleanJava', help='omit cleaning Java native code')
5750
30876d0bb92d In gate command, allways build natives, use '-n' to avoid cleaning them only
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5729
diff changeset
1033 parser.add_argument('-n', '--omit-native-clean', action='store_false', dest='cleanNative', help='omit cleaning and building native code')
4608
05a33fabcfe6 Added -g option to 'mx gate' to omit the server and client builds (i.e. -g == graal only).
Doug Simon <doug.simon@oracle.com>
parents: 4607
diff changeset
1034 parser.add_argument('-g', '--only-build-graalvm', action='store_false', dest='buildNonGraal', help='only build the Graal VM')
5033
d7ecce178ad2 Add jacoco report and a -XX:+DeoptimizeALot -XX:+VerifyOops bootstrap run to the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5032
diff changeset
1035 parser.add_argument('--jacocout', help='specify the output directory for jacoco report')
4601
ade18666f2be Added --omit-native-build to gate command so that native cleaning and building can be omitted for changesets that made no changes to the C/C++ code.
Doug Simon <doug.simon@oracle.com>
parents: 4584
diff changeset
1036
ade18666f2be Added --omit-native-build to gate command so that native cleaning and building can be omitted for changesets that made no changes to the C/C++ code.
Doug Simon <doug.simon@oracle.com>
parents: 4584
diff changeset
1037 args = parser.parse_args(args)
ade18666f2be Added --omit-native-build to gate command so that native cleaning and building can be omitted for changesets that made no changes to the C/C++ code.
Doug Simon <doug.simon@oracle.com>
parents: 4584
diff changeset
1038
5431
0bd1ba69db2a removed double declaration of _vmbuild global variable in gate command
Doug Simon <doug.simon@oracle.com>
parents: 5430
diff changeset
1039 global _jacoco
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1040
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1041 tasks = []
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
1042 total = Task('Gate')
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
1043 try:
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1044
11526
db297343d44e added pylint to gate
Doug Simon <doug.simon@oracle.com>
parents: 11525
diff changeset
1045 t = Task('Pylint')
11777
f3e5cbd1efae move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents: 11758
diff changeset
1046 mx.pylint([])
11526
db297343d44e added pylint to gate
Doug Simon <doug.simon@oracle.com>
parents: 11525
diff changeset
1047 tasks.append(t.stop())
db297343d44e added pylint to gate
Doug Simon <doug.simon@oracle.com>
parents: 11525
diff changeset
1048
4438
0312460af9fc Made gate do a full clean and added timing report for all gate tasks to end of gate log.
Doug Simon <doug.simon@oracle.com>
parents: 4417
diff changeset
1049 t = Task('Clean')
5232
c005ca943790 added -j option to gate command to disable cleaning of Java class files
Doug Simon <doug.simon@oracle.com>
parents: 5197
diff changeset
1050 cleanArgs = []
5750
30876d0bb92d In gate command, allways build natives, use '-n' to avoid cleaning them only
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5729
diff changeset
1051 if not args.cleanNative:
5232
c005ca943790 added -j option to gate command to disable cleaning of Java class files
Doug Simon <doug.simon@oracle.com>
parents: 5197
diff changeset
1052 cleanArgs.append('--no-native')
c005ca943790 added -j option to gate command to disable cleaning of Java class files
Doug Simon <doug.simon@oracle.com>
parents: 5197
diff changeset
1053 if not args.cleanJava:
c005ca943790 added -j option to gate command to disable cleaning of Java class files
Doug Simon <doug.simon@oracle.com>
parents: 5197
diff changeset
1054 cleanArgs.append('--no-java')
c005ca943790 added -j option to gate command to disable cleaning of Java class files
Doug Simon <doug.simon@oracle.com>
parents: 5197
diff changeset
1055 clean(cleanArgs)
4438
0312460af9fc Made gate do a full clean and added timing report for all gate tasks to end of gate log.
Doug Simon <doug.simon@oracle.com>
parents: 4417
diff changeset
1056 tasks.append(t.stop())
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1057
9824
6fa4b4933892 added check to gate that generated IDE configurations don't break the build
Doug Simon <doug.simon@oracle.com>
parents: 9803
diff changeset
1058 t = Task('IDEConfigCheck')
6fa4b4933892 added check to gate that generated IDE configurations don't break the build
Doug Simon <doug.simon@oracle.com>
parents: 9803
diff changeset
1059 mx.ideclean([])
6fa4b4933892 added check to gate that generated IDE configurations don't break the build
Doug Simon <doug.simon@oracle.com>
parents: 9803
diff changeset
1060 mx.ideinit([])
6fa4b4933892 added check to gate that generated IDE configurations don't break the build
Doug Simon <doug.simon@oracle.com>
parents: 9803
diff changeset
1061 tasks.append(t.stop())
6fa4b4933892 added check to gate that generated IDE configurations don't break the build
Doug Simon <doug.simon@oracle.com>
parents: 9803
diff changeset
1062
7533
29b0768b7ba6 added eclipseformat to the gate
Doug Simon <doug.simon@oracle.com>
parents: 7509
diff changeset
1063 eclipse_exe = os.environ.get('ECLIPSE_EXE')
29b0768b7ba6 added eclipseformat to the gate
Doug Simon <doug.simon@oracle.com>
parents: 7509
diff changeset
1064 if eclipse_exe is not None:
29b0768b7ba6 added eclipseformat to the gate
Doug Simon <doug.simon@oracle.com>
parents: 7509
diff changeset
1065 t = Task('CodeFormatCheck')
29b0768b7ba6 added eclipseformat to the gate
Doug Simon <doug.simon@oracle.com>
parents: 7509
diff changeset
1066 if mx.eclipseformat(['-e', eclipse_exe]) != 0:
29b0768b7ba6 added eclipseformat to the gate
Doug Simon <doug.simon@oracle.com>
parents: 7509
diff changeset
1067 t.abort('Formatter modified files - run "mx eclipseformat", check in changes and repush')
29b0768b7ba6 added eclipseformat to the gate
Doug Simon <doug.simon@oracle.com>
parents: 7509
diff changeset
1068 tasks.append(t.stop())
8211
74896b25297a Test canonicalization and checkstyle early in gate process
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8183
diff changeset
1069
74896b25297a Test canonicalization and checkstyle early in gate process
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8183
diff changeset
1070 t = Task('Canonicalization Check')
74896b25297a Test canonicalization and checkstyle early in gate process
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8183
diff changeset
1071 mx.log(time.strftime('%d %b %Y %H:%M:%S - Ensuring mx/projects files are canonicalized...'))
74896b25297a Test canonicalization and checkstyle early in gate process
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8183
diff changeset
1072 if mx.canonicalizeprojects([]) != 0:
74896b25297a Test canonicalization and checkstyle early in gate process
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8183
diff changeset
1073 t.abort('Rerun "mx canonicalizeprojects" and check-in the modified mx/projects files.')
74896b25297a Test canonicalization and checkstyle early in gate process
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8183
diff changeset
1074 tasks.append(t.stop())
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1075
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
1076 t = Task('BuildJava')
7748
2d57a3bd82ab Make gate fail on warnings
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 7730
diff changeset
1077 build(['--no-native', '--jdt-warning-as-error'])
4438
0312460af9fc Made gate do a full clean and added timing report for all gate tasks to end of gate log.
Doug Simon <doug.simon@oracle.com>
parents: 4417
diff changeset
1078 tasks.append(t.stop())
9172
bc5c5336008b Add gate test to check build-graal.xml is up to date.
Roland Schatz <roland.schatz@oracle.com>
parents: 9169
diff changeset
1079
8211
74896b25297a Test canonicalization and checkstyle early in gate process
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8183
diff changeset
1080 t = Task('Checkstyle')
74896b25297a Test canonicalization and checkstyle early in gate process
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8183
diff changeset
1081 if mx.checkstyle([]) != 0:
74896b25297a Test canonicalization and checkstyle early in gate process
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8183
diff changeset
1082 t.abort('Checkstyle warnings were found')
74896b25297a Test canonicalization and checkstyle early in gate process
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8183
diff changeset
1083 tasks.append(t.stop())
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1084
5878
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1085 if exists('jacoco.exec'):
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1086 os.unlink('jacoco.exec')
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1087
5878
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1088 if args.jacocout is not None:
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1089 _jacoco = 'append'
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1090 else:
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1091 _jacoco = 'off'
11757
ec058ce90a3d pylint fixes
Mick Jordan <mick.jordan@oracle.com>
parents: 11756
diff changeset
1092
11756
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1093 gate_body(args, tasks)
7155
c356cab093bc added execution of the Graal API unittest with non-GraalVM HotSpot builds to the gate
Doug Simon <doug.simon@oracle.com>
parents: 7154
diff changeset
1094
4247
3f6c6e61614e Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents: 4244
diff changeset
1095 except KeyboardInterrupt:
3f6c6e61614e Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents: 4244
diff changeset
1096 total.abort(1)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1097
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
1098 except BaseException as e:
4247
3f6c6e61614e Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents: 4244
diff changeset
1099 import traceback
3f6c6e61614e Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents: 4244
diff changeset
1100 traceback.print_exc()
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
1101 total.abort(str(e))
4159
e253ca26b2d5 Added 'unittest' command to run the Graal unit tests.
Doug Simon <doug.simon@oracle.com>
parents: 4157
diff changeset
1102
4234
057620486c90 Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents: 4230
diff changeset
1103 total.stop()
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1104
4438
0312460af9fc Made gate do a full clean and added timing report for all gate tasks to end of gate log.
Doug Simon <doug.simon@oracle.com>
parents: 4417
diff changeset
1105 mx.log('Gate task times:')
0312460af9fc Made gate do a full clean and added timing report for all gate tasks to end of gate log.
Doug Simon <doug.simon@oracle.com>
parents: 4417
diff changeset
1106 for t in tasks:
0312460af9fc Made gate do a full clean and added timing report for all gate tasks to end of gate log.
Doug Simon <doug.simon@oracle.com>
parents: 4417
diff changeset
1107 mx.log(' ' + str(t.duration) + '\t' + t.title)
0312460af9fc Made gate do a full clean and added timing report for all gate tasks to end of gate log.
Doug Simon <doug.simon@oracle.com>
parents: 4417
diff changeset
1108 mx.log(' =======')
0312460af9fc Made gate do a full clean and added timing report for all gate tasks to end of gate log.
Doug Simon <doug.simon@oracle.com>
parents: 4417
diff changeset
1109 mx.log(' ' + str(total.duration))
11757
ec058ce90a3d pylint fixes
Mick Jordan <mick.jordan@oracle.com>
parents: 11756
diff changeset
1110
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1111 def deoptalot(args):
11377
0fbc1e418c88 fixed capitalization and tense in documentation of some mx commands
Doug Simon <doug.simon@oracle.com>
parents: 11373
diff changeset
1112 """bootstrap a fastdebug Graal VM with DeoptimizeALot and VerifyOops on
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1113
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1114 If the first argument is a number, the process will be repeated
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1115 this number of times. All other arguments are passed to the VM."""
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1116 count = 1
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1117 if len(args) > 0 and args[0].isdigit():
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1118 count = int(args[0])
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1119 del args[0]
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1120
7509
442668d41bc2 fixed warnings
Doug Simon <doug.simon@oracle.com>
parents: 7345
diff changeset
1121 for _ in range(count):
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1122 if not vm(['-XX:+DeoptimizeALot', '-XX:+VerifyOops'] + args + ['-version'], vmbuild='fastdebug') == 0:
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1123 mx.abort("Failed")
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1124
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1125 def longtests(args):
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1126
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1127 deoptalot(['15', '-Xmx48m'])
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1128
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1129 dacapo(['100', 'eclipse', '-esa'])
4215
a2caa019ba3a Fix mx : commands' scripts mx_init hook should be called before parsing command line arguments.
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4187
diff changeset
1130
4536
8caa4f2df081 Added 'gv' command to mx for launching the GraalVisualizer.
Doug Simon <doug.simon@oracle.com>
parents: 4483
diff changeset
1131 def gv(args):
8caa4f2df081 Added 'gv' command to mx for launching the GraalVisualizer.
Doug Simon <doug.simon@oracle.com>
parents: 4483
diff changeset
1132 """run the Graal Visualizer"""
5047
6bc165b0fdcd Added 'intro' command to mx that runs a simple 'hello world' program and visualizes its compilation in the Graal Visualizer.
Doug Simon <doug.simon@oracle.com>
parents: 5034
diff changeset
1133 with open(join(_graal_home, '.graal_visualizer.log'), 'w') as fp:
10568
070b4a3c56f3 disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents: 10527
diff changeset
1134 mx.logv('[Graal Visualizer log is in ' + fp.name + ']')
5089
206e68bb66c6 Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents: 5064
diff changeset
1135 if not exists(join(_graal_home, 'visualizer', 'build.xml')):
10568
070b4a3c56f3 disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents: 10527
diff changeset
1136 mx.logv('[This initial execution may take a while as the NetBeans platform needs to be downloaded]')
5047
6bc165b0fdcd Added 'intro' command to mx that runs a simple 'hello world' program and visualizes its compilation in the Graal Visualizer.
Doug Simon <doug.simon@oracle.com>
parents: 5034
diff changeset
1137 mx.run(['ant', '-f', join(_graal_home, 'visualizer', 'build.xml'), '-l', fp.name, 'run'])
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1138
5089
206e68bb66c6 Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents: 5064
diff changeset
1139 def igv(args):
206e68bb66c6 Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents: 5064
diff changeset
1140 """run the Ideal Graph Visualizer"""
206e68bb66c6 Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents: 5064
diff changeset
1141 with open(join(_graal_home, '.ideal_graph_visualizer.log'), 'w') as fp:
10568
070b4a3c56f3 disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents: 10527
diff changeset
1142 mx.logv('[Ideal Graph Visualizer log is in ' + fp.name + ']')
13472
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1143 nbplatform = join(_graal_home, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'nbplatform')
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1144
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1145 # Remove NetBeans platform if it is earlier than the current supported version
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1146 if exists(nbplatform):
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1147 dom = xml.dom.minidom.parse(join(nbplatform, 'platform', 'update_tracking', 'org-netbeans-core.xml'))
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1148 currentVersion = mx.VersionSpec(dom.getElementsByTagName('module_version')[0].getAttribute('specification_version'))
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1149 supportedVersion = mx.VersionSpec('3.43.1')
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1150 if currentVersion < supportedVersion:
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1151 mx.log('Replacing NetBeans platform version ' + str(currentVersion) + ' with version ' + str(supportedVersion))
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1152 shutil.rmtree(nbplatform)
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1153 elif supportedVersion < currentVersion:
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1154 mx.log('Supported NetBeans version in igv command should be updated to ' + str(currentVersion))
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1155
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1156 if not exists(nbplatform):
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1157 mx.logv('[This execution may take a while as the NetBeans platform needs to be downloaded]')
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1158 mx.run(['ant', '-f', join(_graal_home, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml'), '-l', fp.name, 'run'])
5089
206e68bb66c6 Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents: 5064
diff changeset
1159
4215
a2caa019ba3a Fix mx : commands' scripts mx_init hook should be called before parsing command line arguments.
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4187
diff changeset
1160 def bench(args):
4324
b0aa4a52b89c Added support for project specs in classpath.
Doug Simon <doug.simon@oracle.com>
parents: 4294
diff changeset
1161 """run benchmarks and parse their output for results
4282
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1162
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1163 Results are JSON formated : {group : {benchmark : score}}."""
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1164 resultFile = None
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1165 if '-resultfile' in args:
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1166 index = args.index('-resultfile')
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1167 if index + 1 < len(args):
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1168 resultFile = args[index + 1]
4293
d4906ea4255b Handle SIGTERM : killing mx will properly kill subprocesses
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4288
diff changeset
1169 del args[index]
d4906ea4255b Handle SIGTERM : killing mx will properly kill subprocesses
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4288
diff changeset
1170 del args[index]
4282
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1171 else:
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1172 mx.abort('-resultfile must be followed by a file name')
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
1173 vm = _get_vm()
4282
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1174 if len(args) is 0:
7563
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1175 args = ['all']
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1176
8459
3393f870e6a4 Allow vm arguments in mx bench
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8440
diff changeset
1177 vmArgs = [arg for arg in args if arg.startswith('-')]
7563
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1178
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1179 def benchmarks_in_group(group):
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1180 prefix = group + ':'
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1181 return [a[len(prefix):] for a in args if a.startswith(prefix)]
4282
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1182
4219
47f7d91d34cf Fix javac build issues with classpath
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4216
diff changeset
1183 results = {}
4282
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1184 benchmarks = []
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1185 # DaCapo
4282
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1186 if ('dacapo' in args or 'all' in args):
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1187 benchmarks += sanitycheck.getDacapos(level=sanitycheck.SanityCheckLevel.Benchmark)
4335
0d661161fa24 Add possibility to run individual DaCapo & SPECjvm2008 benchmarks, small fix in success and score regular expressions for SPECjvm2008
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4330
diff changeset
1188 else:
7563
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1189 dacapos = benchmarks_in_group('dacapo')
4335
0d661161fa24 Add possibility to run individual DaCapo & SPECjvm2008 benchmarks, small fix in success and score regular expressions for SPECjvm2008
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4330
diff changeset
1190 for dacapo in dacapos:
0d661161fa24 Add possibility to run individual DaCapo & SPECjvm2008 benchmarks, small fix in success and score regular expressions for SPECjvm2008
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4330
diff changeset
1191 if dacapo not in sanitycheck.dacapoSanityWarmup.keys():
7563
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1192 mx.abort('Unknown DaCapo : ' + dacapo)
8891
ca82d06ec93a mx: bench command should not run dacapos with -n 0 when using a specification such as scaladacapo:specs
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8890
diff changeset
1193 iterations = sanitycheck.dacapoSanityWarmup[dacapo][sanitycheck.SanityCheckLevel.Benchmark]
ca82d06ec93a mx: bench command should not run dacapos with -n 0 when using a specification such as scaladacapo:specs
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8890
diff changeset
1194 if (iterations > 0):
ca82d06ec93a mx: bench command should not run dacapos with -n 0 when using a specification such as scaladacapo:specs
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8890
diff changeset
1195 benchmarks += [sanitycheck.getDacapo(dacapo, iterations)]
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1196
4480
7d6490436b57 Add Scala DaCapo benchs
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4438
diff changeset
1197 if ('scaladacapo' in args or 'all' in args):
7d6490436b57 Add Scala DaCapo benchs
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4438
diff changeset
1198 benchmarks += sanitycheck.getScalaDacapos(level=sanitycheck.SanityCheckLevel.Benchmark)
7d6490436b57 Add Scala DaCapo benchs
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4438
diff changeset
1199 else:
7563
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1200 scaladacapos = benchmarks_in_group('scaladacapo')
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1201 for scaladacapo in scaladacapos:
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1202 if scaladacapo not in sanitycheck.dacapoScalaSanityWarmup.keys():
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1203 mx.abort('Unknown Scala DaCapo : ' + scaladacapo)
8891
ca82d06ec93a mx: bench command should not run dacapos with -n 0 when using a specification such as scaladacapo:specs
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8890
diff changeset
1204 iterations = sanitycheck.dacapoScalaSanityWarmup[scaladacapo][sanitycheck.SanityCheckLevel.Benchmark]
ca82d06ec93a mx: bench command should not run dacapos with -n 0 when using a specification such as scaladacapo:specs
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8890
diff changeset
1205 if (iterations > 0):
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1206 benchmarks += [sanitycheck.getScalaDacapo(scaladacapo, ['-n', str(iterations)])]
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1207
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1208 # Bootstrap
4282
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1209 if ('bootstrap' in args or 'all' in args):
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1210 benchmarks += sanitycheck.getBootstraps()
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1211 # SPECjvm2008
4282
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1212 if ('specjvm2008' in args or 'all' in args):
11373
6675167d52b6 fixed specjvm2008 regression in bench command
Doug Simon <doug.simon@oracle.com>
parents: 11372
diff changeset
1213 benchmarks += [sanitycheck.getSPECjvm2008(['-ikv', '-wt', '120', '-it', '120'])]
4335
0d661161fa24 Add possibility to run individual DaCapo & SPECjvm2008 benchmarks, small fix in success and score regular expressions for SPECjvm2008
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4330
diff changeset
1214 else:
7563
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1215 specjvms = benchmarks_in_group('specjvm2008')
4335
0d661161fa24 Add possibility to run individual DaCapo & SPECjvm2008 benchmarks, small fix in success and score regular expressions for SPECjvm2008
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4330
diff changeset
1216 for specjvm in specjvms:
11373
6675167d52b6 fixed specjvm2008 regression in bench command
Doug Simon <doug.simon@oracle.com>
parents: 11372
diff changeset
1217 benchmarks += [sanitycheck.getSPECjvm2008(['-ikv', '-wt', '120', '-it', '120', specjvm])]
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1218
5877
0e54d9bb922d Add SPECjbb2005 to the benchmarks
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5875
diff changeset
1219 if ('specjbb2005' in args or 'all' in args):
0e54d9bb922d Add SPECjbb2005 to the benchmarks
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5875
diff changeset
1220 benchmarks += [sanitycheck.getSPECjbb2005()]
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1221
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1222 if ('specjbb2013' in args): # or 'all' in args //currently not in default set
7565
9a521597686b Add SPECjbb2013
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 7563
diff changeset
1223 benchmarks += [sanitycheck.getSPECjbb2013()]
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1224
9157
a38d748d4130 Add support for the 'optimized' build in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9130
diff changeset
1225 if ('ctw-full' in args):
a38d748d4130 Add support for the 'optimized' build in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9130
diff changeset
1226 benchmarks.append(sanitycheck.getCTW(vm, sanitycheck.CTWMode.Full))
a38d748d4130 Add support for the 'optimized' build in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9130
diff changeset
1227 if ('ctw-noinline' in args):
a38d748d4130 Add support for the 'optimized' build in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9130
diff changeset
1228 benchmarks.append(sanitycheck.getCTW(vm, sanitycheck.CTWMode.NoInline))
a38d748d4130 Add support for the 'optimized' build in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9130
diff changeset
1229 if ('ctw-nocomplex' in args):
a38d748d4130 Add support for the 'optimized' build in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9130
diff changeset
1230 benchmarks.append(sanitycheck.getCTW(vm, sanitycheck.CTWMode.NoComplex))
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1231
4219
47f7d91d34cf Fix javac build issues with classpath
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4216
diff changeset
1232 for test in benchmarks:
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1233 for (groupName, res) in test.bench(vm, extraVmOpts=vmArgs).items():
7563
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1234 group = results.setdefault(groupName, {})
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1235 group.update(res)
4282
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1236 mx.log(json.dumps(results))
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1237 if resultFile:
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1238 with open(resultFile, 'w') as f:
063ea022532c mx commands : improve bench command, fix in the outparser so that no empty 'line' is retruned if there was no match, fix bootstrap's regex
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4276
diff changeset
1239 f.write(json.dumps(results))
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1240
4228
e872562f95f8 add a simple specjvm2008 command, fail a benchmark if one of the failureRE matches
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4227
diff changeset
1241 def specjvm2008(args):
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1242 """run one or more SPECjvm2008 benchmarks"""
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1243
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1244 def launcher(bm, harnessArgs, extraVmOpts):
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1245 return sanitycheck.getSPECjvm2008(harnessArgs + [bm]).bench(_get_vm(), extraVmOpts=extraVmOpts)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1246
11372
76c45fb64191 added support to the specjvm2008 command for specifying a benchmark group
Doug Simon <doug.simon@oracle.com>
parents: 11371
diff changeset
1247 availableBenchmarks = set(sanitycheck.specjvm2008Names)
76c45fb64191 added support to the specjvm2008 command for specifying a benchmark group
Doug Simon <doug.simon@oracle.com>
parents: 11371
diff changeset
1248 for name in sanitycheck.specjvm2008Names:
76c45fb64191 added support to the specjvm2008 command for specifying a benchmark group
Doug Simon <doug.simon@oracle.com>
parents: 11371
diff changeset
1249 parts = name.rsplit('.', 1)
76c45fb64191 added support to the specjvm2008 command for specifying a benchmark group
Doug Simon <doug.simon@oracle.com>
parents: 11371
diff changeset
1250 if len(parts) > 1:
76c45fb64191 added support to the specjvm2008 command for specifying a benchmark group
Doug Simon <doug.simon@oracle.com>
parents: 11371
diff changeset
1251 assert len(parts) == 2
76c45fb64191 added support to the specjvm2008 command for specifying a benchmark group
Doug Simon <doug.simon@oracle.com>
parents: 11371
diff changeset
1252 group = parts[0]
76c45fb64191 added support to the specjvm2008 command for specifying a benchmark group
Doug Simon <doug.simon@oracle.com>
parents: 11371
diff changeset
1253 availableBenchmarks.add(group)
76c45fb64191 added support to the specjvm2008 command for specifying a benchmark group
Doug Simon <doug.simon@oracle.com>
parents: 11371
diff changeset
1254
76c45fb64191 added support to the specjvm2008 command for specifying a benchmark group
Doug Simon <doug.simon@oracle.com>
parents: 11371
diff changeset
1255 _run_benchmark(args, sorted(availableBenchmarks), launcher)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1256
8147
9786ac8fff61 Use different vm args for SPECjbb2013
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8135
diff changeset
1257 def specjbb2013(args):
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1258 """runs the composite SPECjbb2013 benchmark"""
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1259
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1260 def launcher(bm, harnessArgs, extraVmOpts):
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1261 assert bm is None
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1262 return sanitycheck.getSPECjbb2013(harnessArgs).bench(_get_vm(), extraVmOpts=extraVmOpts)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1263
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1264 _run_benchmark(args, None, launcher)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1265
8506
c3657d00e343 -Merge with tip
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8406
diff changeset
1266 def specjbb2005(args):
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1267 """runs the composite SPECjbb2005 benchmark"""
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1268
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1269 def launcher(bm, harnessArgs, extraVmOpts):
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1270 assert bm is None
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1271 return sanitycheck.getSPECjbb2005(harnessArgs).bench(_get_vm(), extraVmOpts=extraVmOpts)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1272
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1273 _run_benchmark(args, None, launcher)
8506
c3657d00e343 -Merge with tip
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8406
diff changeset
1274
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
1275 def hsdis(args, copyToDir=None):
6291
633136426f26 consolidated jtt command into unittest command and removed need for explicit 'testHarness' property in 'projects' file
Doug Simon <doug.simon@oracle.com>
parents: 6278
diff changeset
1276 """download the hsdis library
4482
7903b6c28f9c Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4480
diff changeset
1277
7903b6c28f9c Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4480
diff changeset
1278 This is needed to support HotSpot's assembly dumping features.
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
1279 By default it downloads the Intel syntax version, use the 'att' argument to install AT&T syntax."""
4482
7903b6c28f9c Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4480
diff changeset
1280 flavor = 'intel'
7903b6c28f9c Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4480
diff changeset
1281 if 'att' in args:
7903b6c28f9c Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4480
diff changeset
1282 flavor = 'att'
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1283 lib = mx.add_lib_suffix('hsdis-' + _arch())
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
1284 path = join(_graal_home, 'lib', lib)
5189
6fbf12b8e572 automated download of hsdis lib if PrintAssembly option is used; added support for hsdis on the Mac
Doug Simon <doug.simon@oracle.com>
parents: 5153
diff changeset
1285 if not exists(path):
6fbf12b8e572 automated download of hsdis lib if PrintAssembly option is used; added support for hsdis on the Mac
Doug Simon <doug.simon@oracle.com>
parents: 5153
diff changeset
1286 mx.download(path, ['http://lafo.ssw.uni-linz.ac.at/hsdis/' + flavor + "/" + lib])
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
1287 if copyToDir is not None and exists(copyToDir):
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
1288 shutil.copy(path, copyToDir)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1289
5245
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
1290 def hcfdis(args):
6291
633136426f26 consolidated jtt command into unittest command and removed need for explicit 'testHarness' property in 'projects' file
Doug Simon <doug.simon@oracle.com>
parents: 6278
diff changeset
1291 """disassemble HexCodeFiles embedded in text files
5245
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
1292
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
1293 Run a tool over the input files to convert all embedded HexCodeFiles
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
1294 to a disassembled format."""
6958
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1295
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1296 parser = ArgumentParser(prog='mx hcfdis')
6958
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1297 parser.add_argument('-m', '--map', help='address to symbol map applied to disassembler output')
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1298 parser.add_argument('files', nargs=REMAINDER, metavar='files...')
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1299
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1300 args = parser.parse_args(args)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1301
6278
4f9574b2893e removed dependence on private java.lang.String internals in HexCodeFile
Doug Simon <doug.simon@oracle.com>
parents: 6276
diff changeset
1302 path = join(_graal_home, 'lib', 'hcfdis-1.jar')
5245
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
1303 if not exists(path):
6278
4f9574b2893e removed dependence on private java.lang.String internals in HexCodeFile
Doug Simon <doug.simon@oracle.com>
parents: 6276
diff changeset
1304 mx.download(path, ['http://lafo.ssw.uni-linz.ac.at/hcfdis-1.jar'])
6958
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1305 mx.run_java(['-jar', path] + args.files)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1306
6958
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1307 if args.map is not None:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1308 addressRE = re.compile(r'0[xX]([A-Fa-f0-9]+)')
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1309 with open(args.map) as fp:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1310 lines = fp.read().splitlines()
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1311 symbols = dict()
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1312 for l in lines:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1313 addressAndSymbol = l.split(' ', 1)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1314 if len(addressAndSymbol) == 2:
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1315 address, symbol = addressAndSymbol
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1316 if address.startswith('0x'):
6958
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1317 address = long(address, 16)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1318 symbols[address] = symbol
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1319 for f in args.files:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1320 with open(f) as fp:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1321 lines = fp.read().splitlines()
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1322 updated = False
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1323 for i in range(0, len(lines)):
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1324 l = lines[i]
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1325 for m in addressRE.finditer(l):
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1326 sval = m.group(0)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1327 val = long(sval, 16)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1328 sym = symbols.get(val)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1329 if sym:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1330 l = l.replace(sval, sym)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1331 updated = True
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1332 lines[i] = l
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1333 if updated:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1334 mx.log('updating ' + f)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1335 with open('new_' + f, "w") as fp:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1336 for l in lines:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1337 print >> fp, l
5245
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
1338
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1339 def jacocoreport(args):
6291
633136426f26 consolidated jtt command into unittest command and removed need for explicit 'testHarness' property in 'projects' file
Doug Simon <doug.simon@oracle.com>
parents: 6278
diff changeset
1340 """create a JaCoCo coverage report
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1341
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1342 Creates the report from the 'jacoco.exec' file in the current directory.
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1343 Default output directory is 'coverage', but an alternative can be provided as an argument."""
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1344 jacocoreport = mx.library("JACOCOREPORT", True)
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1345 out = 'coverage'
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1346 if len(args) == 1:
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1347 out = args[0]
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1348 elif len(args) > 1:
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1349 mx.abort('jacocoreport takes only one argument : an output directory')
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1350 mx.run_java(['-jar', jacocoreport.get_path(True), '-in', 'jacoco.exec', '-g', join(_graal_home, 'graal'), out])
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1351
11867
952ecf32788a mx sl command.
Chris Seaton <chris.seaton@oracle.com>
parents: 11797
diff changeset
1352 def sl(args):
12693
c6b833f7935e mx sl: change vm args syntax
Andreas Woess <andreas.woess@jku.at>
parents: 12647
diff changeset
1353 """run an SL program"""
c6b833f7935e mx sl: change vm args syntax
Andreas Woess <andreas.woess@jku.at>
parents: 12647
diff changeset
1354 vmArgs, slArgs = _extract_VM_args(args)
11867
952ecf32788a mx sl command.
Chris Seaton <chris.seaton@oracle.com>
parents: 11797
diff changeset
1355 vm(vmArgs + ['-cp', mx.classpath("com.oracle.truffle.sl"), "com.oracle.truffle.sl.SimpleLanguage"] + slArgs)
952ecf32788a mx sl command.
Chris Seaton <chris.seaton@oracle.com>
parents: 11797
diff changeset
1356
13303
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1357 def trufflejar(args=None):
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1358 """make truffle.jar"""
13347
e3b0608d6ab8 fixed pylint warnings
Doug Simon <doug.simon@oracle.com>
parents: 13332
diff changeset
1359
13320
093353894575 Test the Truffle JAR after building.
Chris Seaton <chris.seaton@oracle.com>
parents: 13319
diff changeset
1360 # Test with the built classes
093353894575 Test the Truffle JAR after building.
Chris Seaton <chris.seaton@oracle.com>
parents: 13319
diff changeset
1361 _unittest(["com.oracle.truffle.api.test", "com.oracle.truffle.api.dsl.test"], ['@Test', '@LongTest', '@Parameters'])
13347
e3b0608d6ab8 fixed pylint warnings
Doug Simon <doug.simon@oracle.com>
parents: 13332
diff changeset
1362
13303
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1363 # We use the DSL processor as the starting point for the classpath - this
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1364 # therefore includes the DSL processor, the DSL and the API.
13319
30e57b49fdb1 Include annotation processor meta-info in Truffle JAR.
Chris Seaton <chris.seaton@oracle.com>
parents: 13303
diff changeset
1365 packagejar(mx.classpath("com.oracle.truffle.dsl.processor").split(os.pathsep), "truffle.jar", None, "com.oracle.truffle.dsl.processor.TruffleProcessor")
13347
e3b0608d6ab8 fixed pylint warnings
Doug Simon <doug.simon@oracle.com>
parents: 13332
diff changeset
1366
13320
093353894575 Test the Truffle JAR after building.
Chris Seaton <chris.seaton@oracle.com>
parents: 13319
diff changeset
1367 # Test with the JAR
093353894575 Test the Truffle JAR after building.
Chris Seaton <chris.seaton@oracle.com>
parents: 13319
diff changeset
1368 _unittest(["com.oracle.truffle.api.test", "com.oracle.truffle.api.dsl.test"], ['@Test', '@LongTest', '@Parameters'], "truffle.jar:")
093353894575 Test the Truffle JAR after building.
Chris Seaton <chris.seaton@oracle.com>
parents: 13319
diff changeset
1369
13303
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1370
9803
8e33b4ebfef1 add isGraalEnabled(vm) function in commands.py
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9667
diff changeset
1371 def isGraalEnabled(vm):
8e33b4ebfef1 add isGraalEnabled(vm) function in commands.py
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9667
diff changeset
1372 return vm != 'original' and not vm.endswith('nograal')
8e33b4ebfef1 add isGraalEnabled(vm) function in commands.py
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9667
diff changeset
1373
5700
12a34d1bcaa2 added site command to generate a javadoc-based website
Doug Simon <doug.simon@oracle.com>
parents: 5688
diff changeset
1374 def site(args):
6291
633136426f26 consolidated jtt command into unittest command and removed need for explicit 'testHarness' property in 'projects' file
Doug Simon <doug.simon@oracle.com>
parents: 6278
diff changeset
1375 """create a website containing javadoc and the project dependency graph"""
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1376
5771
613a3ddb9a71 moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents: 5764
diff changeset
1377 return mx.site(['--name', 'Graal',
5782
488864d5069a added support for passing -tag option to javadoc to suppress warnings about unrecognized tags in javadoc comments
Doug Simon <doug.simon@oracle.com>
parents: 5771
diff changeset
1378 '--jd', '@-tag', '--jd', '@test:X',
488864d5069a added support for passing -tag option to javadoc to suppress warnings about unrecognized tags in javadoc comments
Doug Simon <doug.simon@oracle.com>
parents: 5771
diff changeset
1379 '--jd', '@-tag', '--jd', '@run:X',
488864d5069a added support for passing -tag option to javadoc to suppress warnings about unrecognized tags in javadoc comments
Doug Simon <doug.simon@oracle.com>
parents: 5771
diff changeset
1380 '--jd', '@-tag', '--jd', '@bug:X',
488864d5069a added support for passing -tag option to javadoc to suppress warnings about unrecognized tags in javadoc comments
Doug Simon <doug.simon@oracle.com>
parents: 5771
diff changeset
1381 '--jd', '@-tag', '--jd', '@summary:X',
488864d5069a added support for passing -tag option to javadoc to suppress warnings about unrecognized tags in javadoc comments
Doug Simon <doug.simon@oracle.com>
parents: 5771
diff changeset
1382 '--jd', '@-tag', '--jd', '@vmoption:X',
5771
613a3ddb9a71 moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents: 5764
diff changeset
1383 '--overview', join(_graal_home, 'graal', 'overview.html'),
613a3ddb9a71 moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents: 5764
diff changeset
1384 '--title', 'Graal OpenJDK Project Documentation',
6506
305b9166b455 added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents: 6495
diff changeset
1385 '--dot-output-base', 'projects'] + args)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1386
13507
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1387 def generateZshCompletion(args):
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1388 """generate zsh completion for mx"""
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1389 try:
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1390 from genzshcomp import CompletionGenerator
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1391 except ImportError:
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1392 mx.abort("install genzshcomp (pip install genzshcomp)")
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1393
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1394 # need to fake module for the custom mx arg parser, otherwise a check in genzshcomp fails
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1395 originalModule = mx._argParser.__module__
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1396 mx._argParser.__module__ = "argparse"
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1397 generator = CompletionGenerator("mx", mx._argParser)
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1398 mx._argParser.__module__ = originalModule
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1399
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1400 # strip last line and define local variable "ret"
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1401 complt = "\n".join(generator.get().split('\n')[0:-1]).replace('context state line', 'context state line ret=1')
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1402
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1403 # add array of possible subcommands (as they are not part of the argument parser)
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1404 complt += '\n ": :->command" \\\n'
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1405 complt += ' "*::args:->args" && ret=0\n'
13507
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1406 complt += '\n'
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1407 complt += 'case $state in\n'
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1408 complt += '\t(command)\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1409 complt += '\t\tlocal -a main_commands\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1410 complt += '\t\tmain_commands=(\n'
13507
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1411 for cmd in sorted(mx._commands.iterkeys()):
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1412 c, _ = mx._commands[cmd][:2]
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1413 doc = c.__doc__
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1414 complt += '\t\t\t"{0}'.format(cmd)
13507
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1415 if doc:
13509
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1416 complt += ':{0}'.format(_fixQuotes(doc.split('\n', 1)[0]))
13507
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1417 complt += '"\n'
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1418 complt += '\t\t)\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1419 complt += '\t\t_describe -t main_commands command main_commands && ret=0\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1420 complt += '\t\t;;\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1421
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1422 complt += '\t(args)\n'
13509
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1423 # TODO: improve matcher: if mx args are given, this doesn't work
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1424 complt += '\t\tcase $line[1] in\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1425 complt += '\t\t\t(vm)\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1426 complt += '\t\t\t\tnoglob \\\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1427 complt += '\t\t\t\t\t_arguments -s -S \\\n'
13509
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1428 complt += _appendOptions("graal", r"G\:")
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1429 # TODO: fix -XX:{-,+}Use* flags
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1430 complt += _appendOptions("hotspot", r"XX\:")
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1431 complt += '\t\t\t\t\t"-version" && ret=0 \n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1432 complt += '\t\t\t\t;;\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1433 complt += '\t\tesac\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1434 complt += '\t\t;;\n'
13507
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1435 complt += 'esac\n'
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1436 complt += '\n'
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1437 complt += 'return $ret'
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1438 print complt
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1439
13509
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1440 def _fixQuotes(arg):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1441 return arg.replace('\"', '').replace('\'', '').replace('`', '').replace('{', '\\{').replace('}', '\\}').replace('[', '\\[').replace(']', '\\]')
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1442
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1443 def _appendOptions(optionType, optionPrefix):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1444 def isBoolean(vmap, field):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1445 return vmap[field] == "Boolean" or vmap[field] == "bool"
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1446
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1447 def hasDescription(vmap):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1448 return vmap['optDefault'] or vmap['optDoc']
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1449
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1450 complt = ""
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1451 for vmap in _parseVMOptions(optionType):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1452 complt += '\t\t\t\t\t-"'
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1453 complt += optionPrefix
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1454 if isBoolean(vmap, 'optType'):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1455 complt += '"{-,+}"'
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1456 complt += vmap['optName']
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1457 if not isBoolean(vmap, 'optType'):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1458 complt += '='
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1459 if hasDescription(vmap):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1460 complt += "["
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1461 if vmap['optDefault']:
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1462 complt += r"(default\: " + vmap['optDefault'] + ")"
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1463 if vmap['optDoc']:
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1464 complt += _fixQuotes(vmap['optDoc'])
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1465 if hasDescription(vmap):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1466 complt += "]"
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1467 complt += '" \\\n'
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1468 return complt
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1469
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1470 def _parseVMOptions(optionType):
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1471 parser = OutputParser()
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1472 # TODO: the optDoc part can wrapped accross multiple lines, currently only the first line will be captured
13509
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1473 # TODO: fix matching for float literals
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1474 jvmOptions = re.compile(
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1475 r"^[ \t]*"
13509
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1476 r"(?P<optType>(Boolean|Integer|Float|Double|String|bool|intx|uintx|ccstr|double)) "
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1477 r"(?P<optName>[a-zA-Z0-9]+)"
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1478 r"[ \t]+=[ \t]*"
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1479 r"(?P<optDefault>([\-0-9]+(\.[0-9]+(\.[0-9]+\.[0-9]+))?|false|true|null|Name|sun\.boot\.class\.path))?"
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1480 r"[ \t]*"
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1481 r"(?P<optDoc>.+)?",
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1482 re.MULTILINE)
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1483 parser.addMatcher(ValuesMatcher(jvmOptions, {
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1484 'optType' : '<optType>',
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1485 'optName' : '<optName>',
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1486 'optDefault' : '<optDefault>',
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1487 'optDoc' : '<optDoc>',
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1488 }))
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1489
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1490 # gather graal options
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1491 output = StringIO.StringIO()
13509
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
1492 vm(['-XX:-BootstrapGraal', '-G:+PrintFlags' if optionType == "graal" else '-XX:+PrintFlagsWithComments'],
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1493 vm = "graal",
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1494 vmbuild = "optimized",
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1495 nonZeroIsFatal = False,
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1496 out = output.write,
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1497 err = subprocess.STDOUT)
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1498
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1499 valueMap = parser.parse(output.getvalue())
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1500 return valueMap
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
1501
13507
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1502
11605
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
1503 def mx_init(suite):
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
1504 commands = {
11371
74414b248381 mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents: 11368
diff changeset
1505 'build': [build, ''],
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
1506 'buildvars': [buildvars, ''],
4601
ade18666f2be Added --omit-native-build to gate command so that native cleaning and building can be omitted for changesets that made no changes to the C/C++ code.
Doug Simon <doug.simon@oracle.com>
parents: 4584
diff changeset
1507 'buildvms': [buildvms, '[-options]'],
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
1508 'clean': [clean, ''],
13507
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
1509 'generateZshCompletion' : [generateZshCompletion, ''],
4482
7903b6c28f9c Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4480
diff changeset
1510 'hsdis': [hsdis, '[att]'],
5245
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
1511 'hcfdis': [hcfdis, ''],
5089
206e68bb66c6 Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents: 5064
diff changeset
1512 'igv' : [igv, ''],
11605
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
1513 'jdkhome': [print_jdkhome, ''],
11367
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1514 'dacapo': [dacapo, '[VM options] benchmarks...|"all" [DaCapo options]'],
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1515 'scaladacapo': [scaladacapo, '[VM options] benchmarks...|"all" [Scala DaCapo options]'],
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1516 'specjvm2008': [specjvm2008, '[VM options] benchmarks...|"all" [SPECjvm2008 options]'],
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1517 'specjbb2013': [specjbb2013, '[VM options] [-- [SPECjbb2013 options]]'],
39b86b83ddeb normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents: 11359
diff changeset
1518 'specjbb2005': [specjbb2005, '[VM options] [-- [SPECjbb2005 options]]'],
4601
ade18666f2be Added --omit-native-build to gate command so that native cleaning and building can be omitted for changesets that made no changes to the C/C++ code.
Doug Simon <doug.simon@oracle.com>
parents: 4584
diff changeset
1519 'gate' : [gate, '[-options]'],
4536
8caa4f2df081 Added 'gv' command to mx for launching the GraalVisualizer.
Doug Simon <doug.simon@oracle.com>
parents: 4483
diff changeset
1520 'gv' : [gv, ''],
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4540
diff changeset
1521 'bench' : [bench, '[-resultfile file] [all(default)|dacapo|specjvm2008|bootstrap]'],
11359
51b0b1104114 changed unittest command to remove use of '@' character. The format is now: mx unittest [VM options] [test filters...]
Doug Simon <doug.simon@oracle.com>
parents: 11302
diff changeset
1522 'unittest' : [unittest, '[VM options] [filters...]', _unittestHelpSuffix],
51b0b1104114 changed unittest command to remove use of '@' character. The format is now: mx unittest [VM options] [test filters...]
Doug Simon <doug.simon@oracle.com>
parents: 11302
diff changeset
1523 'longunittest' : [longunittest, '[VM options] [filters...]', _unittestHelpSuffix],
51b0b1104114 changed unittest command to remove use of '@' character. The format is now: mx unittest [VM options] [test filters...]
Doug Simon <doug.simon@oracle.com>
parents: 11302
diff changeset
1524 'shortunittest' : [shortunittest, '[VM options] [filters...]', _unittestHelpSuffix],
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1525 'jacocoreport' : [jacocoreport, '[output directory]'],
5700
12a34d1bcaa2 added site command to generate a javadoc-based website
Doug Simon <doug.simon@oracle.com>
parents: 5688
diff changeset
1526 'site' : [site, '[-options]'],
5257
a549662f6c6f added 'vmg' and 'vmfg' commands to mx as convenient aliases for running the debug and fastdebug builds of the selected VM
Doug Simon <doug.simon@oracle.com>
parents: 5245
diff changeset
1527 'vm': [vm, '[-options] class [args...]'],
a549662f6c6f added 'vmg' and 'vmfg' commands to mx as convenient aliases for running the debug and fastdebug builds of the selected VM
Doug Simon <doug.simon@oracle.com>
parents: 5245
diff changeset
1528 'vmg': [vmg, '[-options] class [args...]'],
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1529 'vmfg': [vmfg, '[-options] class [args...]'],
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1530 'deoptalot' : [deoptalot, '[n]'],
11867
952ecf32788a mx sl command.
Chris Seaton <chris.seaton@oracle.com>
parents: 11797
diff changeset
1531 'longtests' : [longtests, ''],
13303
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1532 'sl' : [sl, '[SL args|@VM options]'],
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1533 'trufflejar' : [trufflejar, ''],
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
1534 }
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1535
5064
8a88c903e381 Updated mx commands.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 5047
diff changeset
1536 mx.add_argument('--jacoco', help='instruments com.oracle.* classes using JaCoCo', default='off', choices=['off', 'on', 'append'])
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1537 mx.add_argument('--vmcwd', dest='vm_cwd', help='current directory will be changed to <path> before the VM is executed', default=None, metavar='<path>')
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1538 mx.add_argument('--installed-jdks', help='the base directory in which the JDKs cloned from $JAVA_HOME exist. ' +
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1539 'The VM selected by --vm and --vmbuild options is under this directory (i.e., ' +
11493
94779c895aad fixed documentation of --installed-jdks mx option
Doug Simon <doug.simon@oracle.com>
parents: 11424
diff changeset
1540 join('<path>', '<jdk-version>', '<vmbuild>', 'jre', 'lib', '<vm>', mx.add_lib_prefix(mx.add_lib_suffix('jvm'))) + ')', default=None, metavar='<path>')
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
1541
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
1542 if (_vmSourcesAvailable):
11371
74414b248381 mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents: 11368
diff changeset
1543 mx.add_argument('--vm', action='store', dest='vm', choices=_vmChoices.keys(), help='the VM type to build/run')
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1544 mx.add_argument('--vmbuild', action='store', dest='vmbuild', choices=_vmbuildChoices, help='the VM build to build/run (default: ' + _vmbuildChoices[0] + ')')
5194
a6eceb5efb0e added --ecl option to mx for saving VM execution(s) as Eclipse launch configurations
Doug Simon <doug.simon@oracle.com>
parents: 5189
diff changeset
1545 mx.add_argument('--ecl', action='store_true', dest='make_eclipse_launch', help='create launch configuration for running VM execution(s) in Eclipse')
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1546 mx.add_argument('--vmprefix', action='store', dest='vm_prefix', help='prefix for running the VM (e.g. "/usr/bin/gdb --args")', metavar='<prefix>')
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1547 mx.add_argument('--gdb', action='store_const', const='/usr/bin/gdb --args', dest='vm_prefix', help='alias for --vmprefix "/usr/bin/gdb --args"')
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1548
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
1549 commands.update({
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
1550 'export': [export, '[-options] [zipfile]'],
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
1551 })
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1552
11605
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
1553 mx.update_commands(suite, commands)
4144
34527a24bcf8 Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents: 3736
diff changeset
1554
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1555 def mx_post_parse_cmd_line(opts): #
7916
9bff64f43299 Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 7788
diff changeset
1556 # TODO _minVersion check could probably be part of a Suite in mx?
9bff64f43299 Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 7788
diff changeset
1557 if (mx.java().version < _minVersion) :
9bff64f43299 Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 7788
diff changeset
1558 mx.abort('Requires Java version ' + str(_minVersion) + ' or greater, got version ' + str(mx.java().version))
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1559
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
1560 if (_vmSourcesAvailable):
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4540
diff changeset
1561 if hasattr(opts, 'vm') and opts.vm is not None:
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4540
diff changeset
1562 global _vm
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4540
diff changeset
1563 _vm = opts.vm
4216
a13d61d3910e fix for when no vm build is explicitely selected
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4215
diff changeset
1564 if hasattr(opts, 'vmbuild') and opts.vmbuild is not None:
4178
d1b26c17910a Add the Dacapo benchmarks to the "lib" folder instead of using the environment variable. Fixed an issue in the downloader.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4177
diff changeset
1565 global _vmbuild
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
1566 _vmbuild = opts.vmbuild
5194
a6eceb5efb0e added --ecl option to mx for saving VM execution(s) as Eclipse launch configurations
Doug Simon <doug.simon@oracle.com>
parents: 5189
diff changeset
1567 global _make_eclipse_launch
a6eceb5efb0e added --ecl option to mx for saving VM execution(s) as Eclipse launch configurations
Doug Simon <doug.simon@oracle.com>
parents: 5189
diff changeset
1568 _make_eclipse_launch = getattr(opts, 'make_eclipse_launch', False)
5024
7ccdae96e98a Allow JaCoCon to append to the execution file
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5016
diff changeset
1569 global _jacoco
7ccdae96e98a Allow JaCoCon to append to the execution file
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5016
diff changeset
1570 _jacoco = opts.jacoco
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1571 global _vm_cwd
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1572 _vm_cwd = opts.vm_cwd
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1573 global _installed_jdks
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1574 _installed_jdks = opts.installed_jdks
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1575 global _vm_prefix
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1576 _vm_prefix = opts.vm_prefix
8134
6e3ebc6fd5a4 graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents: 8132
diff changeset
1577
6e3ebc6fd5a4 graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents: 8132
diff changeset
1578 mx.distribution('GRAAL').add_update_listener(_installGraalJarInJdks)
13303
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1579
13332
ecea358f97be mx trufflejar: do not strip debug attributes
Andreas Woess <andreas.woess@jku.at>
parents: 13320
diff changeset
1580 def packagejar(classpath, outputFile, mainClass=None, annotationProcessor=None, stripDebug=False):
13347
e3b0608d6ab8 fixed pylint warnings
Doug Simon <doug.simon@oracle.com>
parents: 13332
diff changeset
1581 prefix = '' if mx.get_os() != 'windows' else '\\??\\' # long file name hack
13303
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1582 print "creating", outputFile
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1583 filecount, totalsize = 0, 0
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1584 with zipfile.ZipFile(outputFile, 'w', zipfile.ZIP_DEFLATED) as zf:
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1585 manifest = "Manifest-Version: 1.0\n"
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1586 if mainClass != None:
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1587 manifest += "Main-Class: %s\n\n" % (mainClass)
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1588 zf.writestr("META-INF/MANIFEST.MF", manifest)
13319
30e57b49fdb1 Include annotation processor meta-info in Truffle JAR.
Chris Seaton <chris.seaton@oracle.com>
parents: 13303
diff changeset
1589 if annotationProcessor != None:
30e57b49fdb1 Include annotation processor meta-info in Truffle JAR.
Chris Seaton <chris.seaton@oracle.com>
parents: 13303
diff changeset
1590 zf.writestr("META-INF/services/javax.annotation.processing.Processor", annotationProcessor)
13303
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1591 for cp in classpath:
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1592 print "+", cp
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1593 if cp.endswith(".jar"):
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1594 with zipfile.ZipFile(cp, 'r') as jar:
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1595 for arcname in jar.namelist():
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1596 if arcname.endswith('/') or arcname == 'META-INF/MANIFEST.MF' or arcname.endswith('.java') or arcname.lower().startswith("license") or arcname in [".project", ".classpath"]:
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1597 continue
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1598 zf.writestr(arcname, jar.read(arcname))
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1599 else:
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1600 for root, _, files in os.walk(cp):
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1601 for f in files:
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1602 fullname = os.path.join(root, f)
13347
e3b0608d6ab8 fixed pylint warnings
Doug Simon <doug.simon@oracle.com>
parents: 13332
diff changeset
1603 arcname = fullname[len(cp) + 1:].replace('\\', '/')
13303
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1604 if f.endswith(".class"):
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1605 zf.write(prefix + fullname, arcname)
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1606
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1607 for zi in zf.infolist():
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1608 filecount += 1
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1609 totalsize += zi.file_size
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1610 print "%d files (total size: %.2f kB, jar size: %.2f kB)" % (filecount, totalsize / 1e3, os.path.getsize(outputFile) / 1e3)
13332
ecea358f97be mx trufflejar: do not strip debug attributes
Andreas Woess <andreas.woess@jku.at>
parents: 13320
diff changeset
1611 mx.run([mx.exe_suffix(join(mx.java().jdk, 'bin', 'pack200')), '-r'] + (['-G'] if stripDebug else []) + [outputFile])
13303
d8692e751c65 Added trufflejar command, and abstracted packagejar.
Chris Seaton <chris.seaton@oracle.com>
parents: 13267
diff changeset
1612 print "repacked jar size: %.2f kB" % (os.path.getsize(outputFile) / 1e3)