annotate mx/mx_graal.py @ 18891:9afee75cee46

mx: add microbench command to run JMH benchmarks
author Roland Schatz <roland.schatz@oracle.com>
date Wed, 21 Jan 2015 14:49:13 +0100
parents 31960077ea9d
children 926488f5d345
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 #
18891
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
6 # Copyright (c) 2007, 2015, 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
18876
c446d00f2cdf mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents: 18869
diff changeset
29 import os, stat, errno, sys, shutil, zipfile, tarfile, tempfile, re, time, datetime, platform, subprocess, StringIO, socket
16419
7520833c6e7f eliminate JUnitWrapper
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16417
diff changeset
30 from os.path import join, exists, dirname, basename
15113
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
31 from argparse import ArgumentParser, RawDescriptionHelpFormatter, 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
16628
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
33 import hashlib
4144
34527a24bcf8 Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents: 3736
diff changeset
34 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
35 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
36 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
37 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
38 import json, textwrap
15329
3b56c9bbf60c mx: fix imports
Bernhard Urban <bernhard.urban@jku.at>
parents: 15328
diff changeset
39 import fnmatch
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
40
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
41 # 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
42 _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
43
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 """ 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
45 _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
46
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
47 """ 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
48 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
49 _vmChoices = {
15862
283c8d31c560 mx: update vm choice helptext
Bernhard Urban <bernhard.urban@jku.at>
parents: 15844
diff changeset
50 'graal' : 'Normal compilation is performed with a tiered system (C1 + Graal), Truffle compilation is performed with Graal.',
283c8d31c560 mx: update vm choice helptext
Bernhard Urban <bernhard.urban@jku.at>
parents: 15844
diff changeset
51 'server' : 'Normal compilation is performed with a tiered system (C1 + C2), 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
52 '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
53 '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
54 '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
55 '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
56 }
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
57
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
58 """ 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
59 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
60 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
61 _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
62
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
63 """ 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
64 _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
65
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
66 """ 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
67 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
68 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
69 _vmbuild = _vmbuildChoices[0]
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
70
5024
7ccdae96e98a Allow JaCoCon to append to the execution file
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5016
diff changeset
71 _jacoco = 'off'
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
72
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
73 """ 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
74 _vm_cwd = None
10454
590b0c26877f mx: add --workdir argument
Bernhard Urban <bernhard.urban@jku.at>
parents: 10417
diff changeset
75
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
76 """ 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
77 _installed_jdks = None
10570
2f80624df8a2 Add a --vmdir argument to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10568
diff changeset
78
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
79 """ Prefix for running the VM. """
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
80 _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
81
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
82 _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
83
15594
62738ce98804 mx: set _minVersion to 1.8
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 15593
diff changeset
84 _minVersion = mx.VersionSpec('1.8')
7916
9bff64f43299 Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 7788
diff changeset
85
16902
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
86 class JDKDeployedDist:
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
87 def __init__(self, name, isExtension):
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
88 self.name = name
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
89 self.isExtension = isExtension
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
90
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
91 _jdkDeployedDists = [
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
92 JDKDeployedDist('TRUFFLE', isExtension=False),
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
93 JDKDeployedDist('GRAAL_LOADER', isExtension=False),
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
94 JDKDeployedDist('GRAAL', isExtension=False),
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
95 JDKDeployedDist('GRAAL_TRUFFLE', isExtension=False)
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
96 ]
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
97
16627
68deb37eed70 mx: fix permissions of copied bootstrap JDK files (don't make everything executable)
Bernhard Urban <bernhard.urban@jku.at>
parents: 16623
diff changeset
98 JDK_UNIX_PERMISSIONS_DIR = 0755
68deb37eed70 mx: fix permissions of copied bootstrap JDK files (don't make everything executable)
Bernhard Urban <bernhard.urban@jku.at>
parents: 16623
diff changeset
99 JDK_UNIX_PERMISSIONS_FILE = 0644
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
100 JDK_UNIX_PERMISSIONS_EXEC = 0755
13919
9d70445ea369 mx: set correct permissions for graal.jar
Bernhard Urban <bernhard.urban@jku.at>
parents: 13846
diff changeset
101
14602
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
102 def isVMSupported(vm):
18799
750db34c9fe1 client-nograal is supported on Mac
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18733
diff changeset
103 if 'client' == vm and len(platform.mac_ver()[0]) != 0:
14602
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
104 # Client VM not supported: java launcher on Mac OS X translates '-client' to '-server'
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
105 return False
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
106 return True
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
107
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
108 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
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 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
111 """
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 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
113 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
114 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
115 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
116 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
117 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
118 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
119 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
120 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
121 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
122 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
123 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
124 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
125 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
126 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
127 _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
128 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
129
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
130 """
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
131 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
132 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
133
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
134 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
135 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
136 """
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
137 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
138 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
139 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
140 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
141 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
142 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
143 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
144 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
145
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
146 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
147 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
148 _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
149 _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
150
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
151 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
152 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
153 _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
154 _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
155
16627
68deb37eed70 mx: fix permissions of copied bootstrap JDK files (don't make everything executable)
Bernhard Urban <bernhard.urban@jku.at>
parents: 16623
diff changeset
156 def chmodRecursive(dirname, chmodFlagsDir):
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
157 if mx.get_os() == 'windows':
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
158 return
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
159
16627
68deb37eed70 mx: fix permissions of copied bootstrap JDK files (don't make everything executable)
Bernhard Urban <bernhard.urban@jku.at>
parents: 16623
diff changeset
160 def _chmodDir(chmodFlags, dirname, fnames):
68deb37eed70 mx: fix permissions of copied bootstrap JDK files (don't make everything executable)
Bernhard Urban <bernhard.urban@jku.at>
parents: 16623
diff changeset
161 os.chmod(dirname, chmodFlagsDir)
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
162
16627
68deb37eed70 mx: fix permissions of copied bootstrap JDK files (don't make everything executable)
Bernhard Urban <bernhard.urban@jku.at>
parents: 16623
diff changeset
163 os.path.walk(dirname, _chmodDir, chmodFlagsDir)
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
164
4144
34527a24bcf8 Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents: 3736
diff changeset
165 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
166 """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
167 opts = mx.clean(args, parser=ArgumentParser(prog='mx clean'))
15580
ce201bb843b4 mx clean: try to change permission if deletion fails on windows
Bernhard Urban <bernhard.urban@jku.at>
parents: 15577
diff changeset
168
4226
e03ff10d4bfc Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents: 4225
diff changeset
169 if opts.native:
15580
ce201bb843b4 mx clean: try to change permission if deletion fails on windows
Bernhard Urban <bernhard.urban@jku.at>
parents: 15577
diff changeset
170 def handleRemoveReadonly(func, path, exc):
ce201bb843b4 mx clean: try to change permission if deletion fails on windows
Bernhard Urban <bernhard.urban@jku.at>
parents: 15577
diff changeset
171 excvalue = exc[1]
ce201bb843b4 mx clean: try to change permission if deletion fails on windows
Bernhard Urban <bernhard.urban@jku.at>
parents: 15577
diff changeset
172 if mx.get_os() == 'windows' and func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES:
15870
fe608a56e3f7 made HotSpotOptions processing faster by removing use of service loader in VM startup and only doing work for options specified on the command line
Doug Simon <doug.simon@oracle.com>
parents: 15862
diff changeset
173 os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) # 0777
15580
ce201bb843b4 mx clean: try to change permission if deletion fails on windows
Bernhard Urban <bernhard.urban@jku.at>
parents: 15577
diff changeset
174 func(path)
ce201bb843b4 mx clean: try to change permission if deletion fails on windows
Bernhard Urban <bernhard.urban@jku.at>
parents: 15577
diff changeset
175 else:
ce201bb843b4 mx clean: try to change permission if deletion fails on windows
Bernhard Urban <bernhard.urban@jku.at>
parents: 15577
diff changeset
176 raise
ce201bb843b4 mx clean: try to change permission if deletion fails on windows
Bernhard Urban <bernhard.urban@jku.at>
parents: 15577
diff changeset
177
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
178 def rmIfExists(name):
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
179 if os.path.isdir(name):
15580
ce201bb843b4 mx clean: try to change permission if deletion fails on windows
Bernhard Urban <bernhard.urban@jku.at>
parents: 15577
diff changeset
180 shutil.rmtree(name, ignore_errors=False, onerror=handleRemoveReadonly)
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
181 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
182 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
183
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
184 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
185 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
186 rmIfExists(_jdksDir())
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
187
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
188 def export(args):
15420
5947bb02474f mx export: change the way of marking a repo as dirty
Bernhard Urban <bernhard.urban@jku.at>
parents: 15402
diff changeset
189 """create archives of builds split by vmbuild and vm"""
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
190
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
191 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
192 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
193
15402
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
194 # collect data about export
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
195 infos = dict()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
196 infos['timestamp'] = time.time()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
197
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
198 hgcfg = mx.HgConfig()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
199 hgcfg.check()
15420
5947bb02474f mx export: change the way of marking a repo as dirty
Bernhard Urban <bernhard.urban@jku.at>
parents: 15402
diff changeset
200 infos['revision'] = hgcfg.tip('.') + ('+' if hgcfg.isDirty('.') else '')
15402
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
201 # TODO: infos['repository']
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
202
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
203 infos['jdkversion'] = str(mx.java().version)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
204
17012
ad10671d1bbd mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents: 16979
diff changeset
205 infos['architecture'] = mx.get_arch()
15402
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
206 infos['platform'] = mx.get_os()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
207
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
208 if mx.get_os != 'windows':
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
209 pass
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
210 # infos['ccompiler']
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
211 # infos['linker']
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
212
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
213 infos['hostname'] = socket.gethostname()
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
214
15402
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
215 def _writeJson(suffix, properties):
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
216 d = infos.copy()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
217 for k, v in properties.iteritems():
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
218 assert not d.has_key(k)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
219 d[k] = v
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
220
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
221 jsonFileName = 'export-' + suffix + '.json'
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
222 with open(jsonFileName, 'w') as f:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
223 print >> f, json.dumps(d)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
224 return jsonFileName
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
225
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
226
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
227 def _genFileName(archivtype, middle):
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
228 idPrefix = infos['revision'] + '_'
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
229 idSuffix = '.tar.gz'
15870
fe608a56e3f7 made HotSpotOptions processing faster by removing use of service loader in VM startup and only doing work for options specified on the command line
Doug Simon <doug.simon@oracle.com>
parents: 15862
diff changeset
230 return join(_graal_home, "graalvm_" + archivtype + "_" + idPrefix + middle + idSuffix)
15402
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
231
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
232 def _genFileArchPlatformName(archivtype, middle):
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
233 return _genFileName(archivtype, infos['platform'] + '_' + infos['architecture'] + '_' + middle)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
234
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
235
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
236 # archive different build types of hotspot
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
237 for vmBuild in _vmbuildChoices:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
238 jdkpath = join(_jdksDir(), vmBuild)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
239 if not exists(jdkpath):
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
240 mx.logv("skipping " + vmBuild)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
241 continue
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
242
15402
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
243 tarName = _genFileArchPlatformName('basejdk', vmBuild)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
244 mx.logv("creating basejdk " + tarName)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
245 vmSet = set()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
246 with tarfile.open(tarName, 'w:gz') as tar:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
247 for root, _, files in os.walk(jdkpath):
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
248 if basename(root) in _vmChoices.keys():
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
249 # TODO: add some assert to check path assumption
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
250 vmSet.add(root)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
251 continue
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
252
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
253 for f in files:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
254 name = join(root, f)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
255 # print name
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
256 tar.add(name, name)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
257
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
258 n = _writeJson("basejdk-" + vmBuild, {'vmbuild' : vmBuild})
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
259 tar.add(n, n)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
260
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
261 # create a separate archive for each VM
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
262 for vm in vmSet:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
263 bVm = basename(vm)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
264 vmTarName = _genFileArchPlatformName('vm', vmBuild + '_' + bVm)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
265 mx.logv("creating vm " + vmTarName)
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
266
15402
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
267 debugFiles = set()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
268 with tarfile.open(vmTarName, 'w:gz') as tar:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
269 for root, _, files in os.walk(vm):
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
270 for f in files:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
271 # TODO: mac, windows, solaris?
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
272 if any(map(f.endswith, [".debuginfo"])):
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
273 debugFiles.add(f)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
274 else:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
275 name = join(root, f)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
276 # print name
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
277 tar.add(name, name)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
278
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
279 n = _writeJson("vm-" + vmBuild + "-" + bVm, {'vmbuild' : vmBuild, 'vm' : bVm})
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
280 tar.add(n, n)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
281
15402
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
282 if len(debugFiles) > 0:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
283 debugTarName = _genFileArchPlatformName('debugfilesvm', vmBuild + '_' + bVm)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
284 mx.logv("creating debugfilesvm " + debugTarName)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
285 with tarfile.open(debugTarName, 'w:gz') as tar:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
286 for f in debugFiles:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
287 name = join(root, f)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
288 # print name
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
289 tar.add(name, name)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
290
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
291 n = _writeJson("debugfilesvm-" + vmBuild + "-" + bVm, {'vmbuild' : vmBuild, 'vm' : bVm})
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
292 tar.add(n, n)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
293
15402
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
294 # graal directory
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
295 graalDirTarName = _genFileName('classfiles', 'javac')
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
296 mx.logv("creating graal " + graalDirTarName)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
297 with tarfile.open(graalDirTarName, 'w:gz') as tar:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
298 for root, _, files in os.walk("graal"):
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
299 for f in [f for f in files if not f.endswith('.java')]:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
300 name = join(root, f)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
301 # print name
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
302 tar.add(name, name)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
303
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
304 n = _writeJson("graal", {'javacompiler' : 'javac'})
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
305 tar.add(n, n)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15401
diff changeset
306
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
307
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
308 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
309
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
310 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
311
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
312 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
313 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
314 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
315
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
316 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
317 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
318 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
319 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
320
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
321 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
322 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
323 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
324 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
325 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
326 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
327
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
328 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
329 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
330 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
331 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
332
4157
b26279781d95 Simplified 'dacapo' command and made it more suitable for gate usage.
Doug Simon <doug.simon@oracle.com>
parents: 4156
diff changeset
333 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
334 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
335
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
336 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
337 """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
338
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
339 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
340 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
341
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
342 _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
343
4480
7d6490436b57 Add Scala DaCapo benchs
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4438
diff changeset
344 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
345 """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
346
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
347 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
348 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
349
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
350 _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
351
4607
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
352 def _vmLibDirInJdk(jdk):
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
353 """
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
354 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
355 subdirectories are located.
4607
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
356 """
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
357 mxos = mx.get_os()
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
358 if mxos == 'darwin':
4607
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
359 return join(jdk, 'jre', 'lib')
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
360 if mxos == 'windows' or mxos == 'cygwin':
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
361 return join(jdk, 'jre', 'bin')
17012
ad10671d1bbd mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents: 16979
diff changeset
362 return join(jdk, 'jre', 'lib', mx.get_arch())
4607
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
363
17014
6a30738791f7 mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents: 17012
diff changeset
364 def _vmJliLibDirs(jdk):
6a30738791f7 mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents: 17012
diff changeset
365 """
6a30738791f7 mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents: 17012
diff changeset
366 Get the directories within a JDK where the jli library designates to.
6a30738791f7 mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents: 17012
diff changeset
367 """
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
368 mxos = mx.get_os()
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
369 if mxos == 'darwin':
17014
6a30738791f7 mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents: 17012
diff changeset
370 return [join(jdk, 'jre', 'lib', 'jli')]
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
371 if mxos == 'windows' or mxos == 'cygwin':
17014
6a30738791f7 mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents: 17012
diff changeset
372 return [join(jdk, 'jre', 'bin'), join(jdk, 'bin')]
6a30738791f7 mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents: 17012
diff changeset
373 return [join(jdk, 'jre', 'lib', mx.get_arch(), 'jli'), join(jdk, 'lib', mx.get_arch(), 'jli')]
6a30738791f7 mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents: 17012
diff changeset
374
17015
ffddcdca8e74 mx: support different name for jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents: 17014
diff changeset
375 def _vmCfgInJdk(jdk, jvmCfgFile='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
376 """
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
377 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
378 """
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
379 mxos = mx.get_os()
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
380 if mxos == "windows" or mxos == "cygwin":
17015
ffddcdca8e74 mx: support different name for jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents: 17014
diff changeset
381 return join(jdk, 'jre', 'lib', mx.get_arch(), jvmCfgFile)
ffddcdca8e74 mx: support different name for jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents: 17014
diff changeset
382 return join(_vmLibDirInJdk(jdk), jvmCfgFile)
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
383
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
384 def _jdksDir():
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
385 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
386
17055
3e4d3be0b6bf mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 17052
diff changeset
387 def _handle_missing_VM(bld, vm=None):
3e4d3be0b6bf mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 17052
diff changeset
388 if not vm:
3e4d3be0b6bf mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 17052
diff changeset
389 vm = _get_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
390 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
391 if sys.stdout.isatty():
11511
3110bea9a6b0 mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11493
diff changeset
392 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
393 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
394 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
395 return
11493
94779c895aad fixed documentation of --installed-jdks mx option
Doug Simon <doug.simon@oracle.com>
parents: 11424
diff changeset
396 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
397
17055
3e4d3be0b6bf mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 17052
diff changeset
398 def _jdk(build=None, vmToCheck=None, create=False, installJars=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
399 """
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
400 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
401 """
17055
3e4d3be0b6bf mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 17052
diff changeset
402 if not build:
3e4d3be0b6bf mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 17052
diff changeset
403 build = _vmbuild if _vmSourcesAvailable else 'product'
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
404 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
405 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
406 srcJdk = mx.java().jdk
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
407 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
408 mx.log('Creating ' + jdk + ' from ' + srcJdk)
13525
7cbd4f2194aa mx: omit weird logic to copy bootstrap jdk, just do cp -R
Bernhard Urban <bernhard.urban@jku.at>
parents: 13524
diff changeset
409 shutil.copytree(srcJdk, jdk)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
410
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
411 # 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
412 # 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
413 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
414 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
415 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
416
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
417 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
418 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
419 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
420 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
421 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
422 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
423 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
424 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
425 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
426 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
427 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
428 else:
0aa37fd2f33e mx: fix detection for sparc. ignore unparsable lines in jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents: 12497
diff changeset
429 # 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
430 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
431 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
432 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
433
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
434 assert defaultVM is not None, 'Could not find default VM in ' + jvmCfg
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
435 chmodRecursive(jdk, JDK_UNIX_PERMISSIONS_DIR)
9117
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
436 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
437
18733
d7ec30ebb0f2 Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18714
diff changeset
438 if mx.get_os() != 'windows':
d7ec30ebb0f2 Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18714
diff changeset
439 os.chmod(jvmCfg, JDK_UNIX_PERMISSIONS_FILE)
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
440 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
441 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
442 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
443
13523
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
444 # patch 'release' file (append graalvm revision)
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
445 releaseFile = join(jdk, 'release')
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
446 if exists(releaseFile):
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
447 releaseFileLines = []
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
448 with open(releaseFile) as f:
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
449 for line in f:
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
450 releaseFileLines.append(line)
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
451
18733
d7ec30ebb0f2 Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18714
diff changeset
452 if mx.get_os() != 'windows':
d7ec30ebb0f2 Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18714
diff changeset
453 os.chmod(releaseFile, JDK_UNIX_PERMISSIONS_FILE)
13523
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
454 with open(releaseFile, 'w') as fp:
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
455 for line in releaseFileLines:
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
456 if line.startswith("SOURCE="):
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
457 try:
13695
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
458 sourceLine = line[0:-2] # remove last char
13523
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
459 hgcfg = mx.HgConfig()
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
460 hgcfg.check()
13695
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
461 revision = hgcfg.tip('.')[:12] # take first 12 chars
13523
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
462 fp.write(sourceLine + ' graal:' + revision + '\"\n')
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
463 except:
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
464 fp.write(line)
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
465 else:
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
466 fp.write(line)
137142009b0b mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents: 13522
diff changeset
467
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
468 # 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
469 try:
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
470 hsdis([], copyToDir=_vmLibDirInJdk(jdk))
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
471 except SystemExit:
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
472 pass
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
473 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
474 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
475 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
476 mx.log("The selected JDK directory does not (yet) exist: " + jdk)
17055
3e4d3be0b6bf mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 17052
diff changeset
477 _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
478
16623
addc0564e5b5 split com.oracle.graal.truffle.* projects into a separate graal-truffle.jar and added truffle.jar to the boot class path
Doug Simon <doug.simon@oracle.com>
parents: 16622
diff changeset
479 if installJars:
16902
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
480 for jdkDist in _jdkDeployedDists:
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
481 dist = mx.distribution(jdkDist.name)
16875
73d994651fcd fixed regression when building original VM without a Java build beforehand
Doug Simon <doug.simon@oracle.com>
parents: 16863
diff changeset
482 if exists(dist.path):
16902
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
483 _installDistInJdks(dist, jdkDist.isExtension)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
484
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
485 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
486 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
487 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
488 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
489 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
490 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
491 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
492 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
493 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
494 _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
495
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
496 return jdk
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
497
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
498 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
499 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
500 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
501 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
502 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
503 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
504 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
505 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
506 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
507
16605
c55478e640e1 generalized check that VM is up-to-date with all generated sources
Doug Simon <doug.simon@oracle.com>
parents: 16600
diff changeset
508 def _makeHotspotGeneratedSourcesDir():
16628
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
509 """
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
510 Gets the directory containing all the HotSpot sources generated from
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
511 Graal Java sources. This directory will be created if it doesn't yet exist.
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
512 """
16600
6e7311d571ff modify the 'mx vm' command to check that the VM is up-to-date with respect to graalRuntime.inline.hpp
Doug Simon <doug.simon@oracle.com>
parents: 16599
diff changeset
513 hsSrcGenDir = join(mx.project('com.oracle.graal.hotspot').source_gen_dir(), 'hotspot')
6e7311d571ff modify the 'mx vm' command to check that the VM is up-to-date with respect to graalRuntime.inline.hpp
Doug Simon <doug.simon@oracle.com>
parents: 16599
diff changeset
514 if not exists(hsSrcGenDir):
6e7311d571ff modify the 'mx vm' command to check that the VM is up-to-date with respect to graalRuntime.inline.hpp
Doug Simon <doug.simon@oracle.com>
parents: 16599
diff changeset
515 os.makedirs(hsSrcGenDir)
16605
c55478e640e1 generalized check that VM is up-to-date with all generated sources
Doug Simon <doug.simon@oracle.com>
parents: 16600
diff changeset
516 return hsSrcGenDir
c55478e640e1 generalized check that VM is up-to-date with all generated sources
Doug Simon <doug.simon@oracle.com>
parents: 16600
diff changeset
517
16628
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
518 def _update_graalRuntime_inline_hpp(dist):
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
519 """
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
520 (Re)generates graalRuntime.inline.hpp based on a given distribution
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
521 that transitively represents all the input for the generation process.
16605
c55478e640e1 generalized check that VM is up-to-date with all generated sources
Doug Simon <doug.simon@oracle.com>
parents: 16600
diff changeset
522
16628
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
523 A SHA1 digest is computed for all generated content and is written to
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
524 graalRuntime.inline.hpp as well as stored in a generated class
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
525 that is appended to the dist.path jar. At runtime, these two digests
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
526 are checked for consistency.
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
527 """
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
528
15940
d676c4beeab8 renamed project (and package) com.oracle.graal.hotspot.codegen to com.oracle.graal.hotspot.sourcegen
Doug Simon <doug.simon@oracle.com>
parents: 15917
diff changeset
529 p = mx.project('com.oracle.graal.hotspot.sourcegen')
d676c4beeab8 renamed project (and package) com.oracle.graal.hotspot.codegen to com.oracle.graal.hotspot.sourcegen
Doug Simon <doug.simon@oracle.com>
parents: 15917
diff changeset
530 mainClass = 'com.oracle.graal.hotspot.sourcegen.GenGraalRuntimeInlineHpp'
15916
6aa352b260f4 removed use of ServiceLoader in runtime initialization
Doug Simon <doug.simon@oracle.com>
parents: 15896
diff changeset
531 if exists(join(p.output_dir(), mainClass.replace('.', os.sep) + '.class')):
16628
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
532 genSrcDir = _makeHotspotGeneratedSourcesDir()
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
533 graalRuntime_inline_hpp = join(genSrcDir, 'graalRuntime.inline.hpp')
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
534 cp = os.pathsep.join([mx.distribution(d).path for d in dist.distDependencies] + [dist.path, p.output_dir()])
15896
db776f9bea7c mx: prevent spurious "Could not find or load main class com.oracle.graal.hotspot.HotSpotOptionsLoader" error message
Doug Simon <doug.simon@oracle.com>
parents: 15873
diff changeset
535 tmp = StringIO.StringIO()
17262
b641450c19ce mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents: 17224
diff changeset
536 mx.run_java(['-cp', mx._separatedCygpathU2W(cp), mainClass], out=tmp.write)
16628
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
537
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
538 # Compute SHA1 for currently generated graalRuntime.inline.hpp content
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
539 # and all other generated sources in genSrcDir
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
540 d = hashlib.sha1()
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
541 d.update(tmp.getvalue())
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
542 for e in os.listdir(genSrcDir):
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
543 if e != 'graalRuntime.inline.hpp':
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
544 with open(join(genSrcDir, e)) as fp:
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
545 d.update(fp.read())
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
546 sha1 = d.hexdigest()
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
547
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
548 # Add SHA1 to end of graalRuntime.inline.hpp
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
549 print >> tmp, ''
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
550 print >> tmp, 'const char* GraalRuntime::_generated_sources_sha1 = "' + sha1 + '";'
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
551
16600
6e7311d571ff modify the 'mx vm' command to check that the VM is up-to-date with respect to graalRuntime.inline.hpp
Doug Simon <doug.simon@oracle.com>
parents: 16599
diff changeset
552 mx.update_file(graalRuntime_inline_hpp, tmp.getvalue())
6e7311d571ff modify the 'mx vm' command to check that the VM is up-to-date with respect to graalRuntime.inline.hpp
Doug Simon <doug.simon@oracle.com>
parents: 16599
diff changeset
553
16628
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
554 # Store SHA1 in generated Java class and append class to specified jar
18711
88c280297bd2 put GeneratedSourcesSha1 into com.oracle.graal.hotspot.sourcegen package
Doug Simon <doug.simon@oracle.com>
parents: 18709
diff changeset
555 javaPackageName = 'com.oracle.graal.hotspot.sourcegen'
88c280297bd2 put GeneratedSourcesSha1 into com.oracle.graal.hotspot.sourcegen package
Doug Simon <doug.simon@oracle.com>
parents: 18709
diff changeset
556 javaClassName = javaPackageName + '.GeneratedSourcesSha1'
16628
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
557 javaSource = join(_graal_home, 'GeneratedSourcesSha1.java')
18711
88c280297bd2 put GeneratedSourcesSha1 into com.oracle.graal.hotspot.sourcegen package
Doug Simon <doug.simon@oracle.com>
parents: 18709
diff changeset
558 javaClass = join(_graal_home, javaClassName.replace('.', os.path.sep) + '.class')
16629
be59a1d39281 respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents: 16628
diff changeset
559 with open(javaSource, 'w') as fp:
18711
88c280297bd2 put GeneratedSourcesSha1 into com.oracle.graal.hotspot.sourcegen package
Doug Simon <doug.simon@oracle.com>
parents: 18709
diff changeset
560 print >> fp, 'package ' + javaPackageName + ';'
16628
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
561 print >> fp, 'class GeneratedSourcesSha1 { private static final String value = "' + sha1 + '"; }'
17262
b641450c19ce mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents: 17224
diff changeset
562 subprocess.check_call([mx.java().javac, '-d', mx._cygpathU2W(_graal_home), mx._cygpathU2W(javaSource)], stderr=subprocess.PIPE, stdout=subprocess.PIPE)
16628
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
563 zf = zipfile.ZipFile(dist.path, 'a')
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
564 with open(javaClass, 'rb') as fp:
18711
88c280297bd2 put GeneratedSourcesSha1 into com.oracle.graal.hotspot.sourcegen package
Doug Simon <doug.simon@oracle.com>
parents: 18709
diff changeset
565 zf.writestr(javaClassName.replace('.', '/') + '.class', fp.read())
16628
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
566 zf.close()
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
567 os.unlink(javaSource)
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
568 os.unlink(javaClass)
18711
88c280297bd2 put GeneratedSourcesSha1 into com.oracle.graal.hotspot.sourcegen package
Doug Simon <doug.simon@oracle.com>
parents: 18709
diff changeset
569 javaClassParent = os.path.dirname(javaClass)
88c280297bd2 put GeneratedSourcesSha1 into com.oracle.graal.hotspot.sourcegen package
Doug Simon <doug.simon@oracle.com>
parents: 18709
diff changeset
570 while len(os.listdir(javaClassParent)) == 0:
88c280297bd2 put GeneratedSourcesSha1 into com.oracle.graal.hotspot.sourcegen package
Doug Simon <doug.simon@oracle.com>
parents: 18709
diff changeset
571 os.rmdir(javaClassParent)
88c280297bd2 put GeneratedSourcesSha1 into com.oracle.graal.hotspot.sourcegen package
Doug Simon <doug.simon@oracle.com>
parents: 18709
diff changeset
572 javaClassParent = os.path.dirname(javaClassParent)
15870
fe608a56e3f7 made HotSpotOptions processing faster by removing use of service loader in VM startup and only doing work for options specified on the command line
Doug Simon <doug.simon@oracle.com>
parents: 15862
diff changeset
573
16863
0d2e3399acfe mx: add argument for permissions to copyToJdk()
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16862
diff changeset
574 def _copyToJdk(src, dst, permissions=JDK_UNIX_PERMISSIONS_FILE):
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
575 name = os.path.basename(src)
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
576 dstLib = join(dst, name)
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
577 if mx.get_env('SYMLINK_GRAAL_JAR', None) == 'true':
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
578 # Using symlinks is much faster than copying but may
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
579 # cause issues if the lib is being updated while
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
580 # the VM is running.
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
581 if not os.path.islink(dstLib) or not os.path.realpath(dstLib) == src:
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
582 if exists(dstLib):
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
583 os.remove(dstLib)
16858
a8af2abc2039 fixed regression in mx causing problems for the SYMLINK_GRAAL_JAR feature
Doug Simon <doug.simon@oracle.com>
parents: 16782
diff changeset
584 os.symlink(src, dstLib)
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
585 else:
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
586 # do a copy and then a move to get atomic updating (on Unix)
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
587 fd, tmp = tempfile.mkstemp(suffix='', prefix=name, dir=dst)
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
588 shutil.copyfile(src, tmp)
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
589 os.close(fd)
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
590 shutil.move(tmp, dstLib)
16863
0d2e3399acfe mx: add argument for permissions to copyToJdk()
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16862
diff changeset
591 os.chmod(dstLib, permissions)
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
592
16902
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
593 def _installDistInJdksExt(dist):
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
594 _installDistInJdks(dist, True)
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
595
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
596 def _installDistInJdks(dist, ext=False):
16623
addc0564e5b5 split com.oracle.graal.truffle.* projects into a separate graal-truffle.jar and added truffle.jar to the boot class path
Doug Simon <doug.simon@oracle.com>
parents: 16622
diff changeset
597 """
addc0564e5b5 split com.oracle.graal.truffle.* projects into a separate graal-truffle.jar and added truffle.jar to the boot class path
Doug Simon <doug.simon@oracle.com>
parents: 16622
diff changeset
598 Installs the jar(s) for a given Distribution into all existing Graal JDKs
addc0564e5b5 split com.oracle.graal.truffle.* projects into a separate graal-truffle.jar and added truffle.jar to the boot class path
Doug Simon <doug.simon@oracle.com>
parents: 16622
diff changeset
599 """
addc0564e5b5 split com.oracle.graal.truffle.* projects into a separate graal-truffle.jar and added truffle.jar to the boot class path
Doug Simon <doug.simon@oracle.com>
parents: 16622
diff changeset
600
addc0564e5b5 split com.oracle.graal.truffle.* projects into a separate graal-truffle.jar and added truffle.jar to the boot class path
Doug Simon <doug.simon@oracle.com>
parents: 16622
diff changeset
601 if dist.name == 'GRAAL_TRUFFLE':
18709
ae5033a78f1d improved documentation around the mechanism for generating graalRuntime.inline.hpp
Doug Simon <doug.simon@oracle.com>
parents: 18637
diff changeset
602 # The content in graalRuntime.inline.hpp is generated from Graal
ae5033a78f1d improved documentation around the mechanism for generating graalRuntime.inline.hpp
Doug Simon <doug.simon@oracle.com>
parents: 18637
diff changeset
603 # classes that implement com.oracle.graal.api.runtime.Service
ae5033a78f1d improved documentation around the mechanism for generating graalRuntime.inline.hpp
Doug Simon <doug.simon@oracle.com>
parents: 18637
diff changeset
604 # or contain com.oracle.graal.options.Option annotated fields.
ae5033a78f1d improved documentation around the mechanism for generating graalRuntime.inline.hpp
Doug Simon <doug.simon@oracle.com>
parents: 18637
diff changeset
605 # Since GRAAL_TRUFFLE is the leaf most distribution containing
ae5033a78f1d improved documentation around the mechanism for generating graalRuntime.inline.hpp
Doug Simon <doug.simon@oracle.com>
parents: 18637
diff changeset
606 # such classes, the generation is triggered when GRAAL_TRUFFLE
ae5033a78f1d improved documentation around the mechanism for generating graalRuntime.inline.hpp
Doug Simon <doug.simon@oracle.com>
parents: 18637
diff changeset
607 # is (re)built.
16628
d3fec84757ed improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents: 16627
diff changeset
608 _update_graalRuntime_inline_hpp(dist)
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
609 jdks = _jdksDir()
14930
5c7718ae8c86 install graal.jar into local Maven repo if MAVEN_INSTALL_GRAAL_JAR environment variable is "true"
Doug Simon <doug.simon@oracle.com>
parents: 14918
diff changeset
610
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
611 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
612 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
613 jreLibDir = join(jdks, e, 'jre', 'lib')
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
614 if ext:
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
615 jreLibDir = join(jreLibDir, 'ext')
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
616 if exists(jreLibDir):
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
617 _copyToJdk(dist.path, jreLibDir)
16623
addc0564e5b5 split com.oracle.graal.truffle.* projects into a separate graal-truffle.jar and added truffle.jar to the boot class path
Doug Simon <doug.simon@oracle.com>
parents: 16622
diff changeset
618 if dist.sourcesPath:
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
619 _copyToJdk(dist.sourcesPath, join(jdks, e))
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
620
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
621 # 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
622 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
623 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
624 respondTo = {}
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
625 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
626 startToken = 'RUNINDEBUGSHELL_STARTSEQUENCE'
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
627 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
628
4252
67e88b7624d5 Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents: 4247
diff changeset
629 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
630
17262
b641450c19ce mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents: 17224
diff changeset
631 if not exists(mx._cygpathW2U(winSDK)):
6306
2a819543cc45 Warnings for windows build if there is no SDK
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6294
diff changeset
632 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
633
17262
b641450c19ce mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents: 17224
diff changeset
634 winSDKSetEnv = mx._cygpathW2U(join(winSDK, 'Bin', 'SetEnv.cmd'))
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
635 if not exists(winSDKSetEnv):
6306
2a819543cc45 Warnings for windows build if there is no SDK
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6294
diff changeset
636 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
637
17262
b641450c19ce mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents: 17224
diff changeset
638 wincmd = 'cmd.exe /E:ON /V:ON /K "' + mx._cygpathU2W(winSDKSetEnv) + '"'
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
639 p = subprocess.Popen(wincmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
4269
ffd5ce8fc736 Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents: 4257
diff changeset
640 stdout = p.stdout
ffd5ce8fc736 Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents: 4257
diff changeset
641 stdin = p.stdin
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
642 if logFile:
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
643 log = open(logFile, 'w')
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
644 ret = False
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
645
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
646 def _writeProcess(s):
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
647 stdin.write(s + newLine)
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
648
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
649 _writeProcess("echo " + startToken)
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
650 while True:
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
651 # 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
652 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
653 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
654 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
655 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
656
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
657 line = stdout.readline().decode(encoding)
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
658 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
659 log.write(line.encode('utf-8'))
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
660 line = line.strip()
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
661 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
662 if line == startToken:
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
663 _writeProcess('cd /D ' + workingDir + ' & ' + cmd + ' & echo ' + endToken)
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
664 for regex in respondTo.keys():
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
665 match = regex.search(line)
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
666 if match:
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
667 _writeProcess(respondTo[regex])
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
668 if findInOutput:
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
669 match = findInOutput.search(line)
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
670 if match:
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
671 ret = True
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
672 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
673 if not findInOutput:
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
674 _writeProcess('echo ERRXXX%errorlevel%')
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
675 else:
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
676 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
677 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
678 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
679 ret = True
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
680 break
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
681 _writeProcess("exit")
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
682 if logFile:
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
683 log.close()
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
684 return ret
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
685
11605
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
686 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
687 """return the JDK directory selected for the 'vm' command"""
17055
3e4d3be0b6bf mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 17052
diff changeset
688 return _jdk(installJars=False)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
689
11605
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
690 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
691 """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
692 print jdkhome(vm)
5103
276e14614531 Added jdkhome command to mx.
Doug Simon <doug.simon@oracle.com>
parents: 5094
diff changeset
693
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
694 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
695 """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
696
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
697 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
698 '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
699 'ALT_OUTPUTDIR' : 'Build directory',
18876
c446d00f2cdf mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents: 18869
diff changeset
700 'HOTSPOT_BUILD_JOBS' : 'Number of CPUs used by make (default: ' + str(mx.cpu_count()) + ')',
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
701 '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
702 '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
703 }
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
704
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
705 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
706 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
707 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
708 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
709 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
710
9120
9f361c0f912b added note about mx/env to the output of 'mx buildvars'
Doug Simon <doug.simon@oracle.com>
parents: 9119
diff changeset
711 mx.log('')
9f361c0f912b added note about mx/env to the output of 'mx buildvars'
Doug Simon <doug.simon@oracle.com>
parents: 9119
diff changeset
712 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
713
16622
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
714 cached_graal_version = None
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
715
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
716 def graal_version(dev_suffix='dev'):
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
717 global cached_graal_version
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
718
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
719 if not cached_graal_version:
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
720 # extract latest release tag for graal
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
721 try:
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
722 tags = [x.split() for x in subprocess.check_output(['hg', '-R', _graal_home, 'tags']).split('\n') if x.startswith("graal-")]
16862
bf499b4d86e9 mx: fix release tag detection for -dev suffix
Bernhard Urban <bernhard.urban@jku.at>
parents: 16858
diff changeset
723 current_id = subprocess.check_output(['hg', '-R', _graal_home, 'log', '--template', '{rev}\n', '--rev', 'tip']).strip()
16622
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
724 except:
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
725 # not a mercurial repository or hg commands are not available.
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
726 tags = None
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
727
16862
bf499b4d86e9 mx: fix release tag detection for -dev suffix
Bernhard Urban <bernhard.urban@jku.at>
parents: 16858
diff changeset
728 if tags and current_id:
16622
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
729 sorted_tags = sorted(tags, key=lambda e: [int(x) for x in e[0][len("graal-"):].split('.')], reverse=True)
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
730 most_recent_tag_name, most_recent_tag_revision = sorted_tags[0]
16862
bf499b4d86e9 mx: fix release tag detection for -dev suffix
Bernhard Urban <bernhard.urban@jku.at>
parents: 16858
diff changeset
731 most_recent_tag_id = most_recent_tag_revision[:most_recent_tag_revision.index(":")]
16622
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
732 most_recent_tag_version = most_recent_tag_name[len("graal-"):]
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
733
16862
bf499b4d86e9 mx: fix release tag detection for -dev suffix
Bernhard Urban <bernhard.urban@jku.at>
parents: 16858
diff changeset
734 # tagged commit is one-off with commit that tags it
bf499b4d86e9 mx: fix release tag detection for -dev suffix
Bernhard Urban <bernhard.urban@jku.at>
parents: 16858
diff changeset
735 if int(current_id) - int(most_recent_tag_id) <= 1:
16622
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
736 cached_graal_version = most_recent_tag_version
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
737 else:
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
738 major, minor = map(int, most_recent_tag_version.split('.'))
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
739 cached_graal_version = str(major) + '.' + str(minor + 1) + '-' + dev_suffix
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
740 else:
18602
7d8270532cd9 mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents: 18601
diff changeset
741 cached_graal_version = 'unknown-{0}-{1}'.format(platform.node(), time.strftime('%Y-%m-%d_%H-%M-%S_%Z'))
16622
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
742
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
743 return cached_graal_version
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
744
4577
bc8b58c11768 Added debug build of HotSpot Client to the gate.
Doug Simon <doug.simon@oracle.com>
parents: 4575
diff changeset
745 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
746 """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
747
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
748 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
749
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
750 # 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
751 # 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
752 # 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
753 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
754 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
755 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
756 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
757 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
758 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
759 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
760 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
761 ' 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
762 return result
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
763
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
764 # 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
765 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
766 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
767 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
768 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
769 assert len(opts2.remainder) == 0
4145
9aee7df31417 Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents: 4144
diff changeset
770
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
771 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
772 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
773 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
774 else:
18635
a8b46348b79f mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents: 18613
diff changeset
775 assert os.path.isdir(opts2.export_dir), '{0} is not a directory'.format(opts2.export_dir)
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
776
16902
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
777 defsPath = join(_graal_home, 'make', 'defs.make')
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
778 with open(defsPath) as fp:
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
779 defs = fp.read()
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
780 for jdkDist in _jdkDeployedDists:
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
781 dist = mx.distribution(jdkDist.name)
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
782 defLine = 'EXPORT_LIST += $(EXPORT_JRE_LIB_DIR)/' + basename(dist.path)
16918
b03a16cc5245 add support for installing distribution jars into jre/lib/ext directory
Doug Simon <doug.simon@oracle.com>
parents: 16902
diff changeset
783 if jdkDist.isExtension:
b03a16cc5245 add support for installing distribution jars into jre/lib/ext directory
Doug Simon <doug.simon@oracle.com>
parents: 16902
diff changeset
784 defLine = 'EXPORT_LIST += $(EXPORT_JRE_LIB_EXT_DIR)/' + basename(dist.path)
b03a16cc5245 add support for installing distribution jars into jre/lib/ext directory
Doug Simon <doug.simon@oracle.com>
parents: 16902
diff changeset
785 else:
b03a16cc5245 add support for installing distribution jars into jre/lib/ext directory
Doug Simon <doug.simon@oracle.com>
parents: 16902
diff changeset
786 defLine = 'EXPORT_LIST += $(EXPORT_JRE_LIB_DIR)/' + basename(dist.path)
16902
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
787 if defLine not in defs:
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
788 mx.abort('Missing following line in ' + defsPath + '\n' + defLine)
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
789 shutil.copy(dist.path, opts2.export_dir)
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
790 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
791 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
792 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
793
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
794 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
795 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
796
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
797 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
798
18414
df8d52aba789 fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents: 18351
diff changeset
799 if os.environ.get('BUILDING_FROM_IDE', None) == 'true':
df8d52aba789 fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents: 18351
diff changeset
800 build = os.environ.get('IDE_BUILD_TARGET', None)
df8d52aba789 fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents: 18351
diff changeset
801 if build is None or len(build) == 0:
df8d52aba789 fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents: 18351
diff changeset
802 return
df8d52aba789 fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents: 18351
diff changeset
803 if build not in _vmbuildChoices:
df8d52aba789 fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents: 18351
diff changeset
804 mx.abort('VM build "' + build + '" specified by IDE_BUILD_TARGET environment variable is unknown (must be one of ' +
df8d52aba789 fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents: 18351
diff changeset
805 str(_vmbuildChoices) + ')')
df8d52aba789 fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents: 18351
diff changeset
806 builds = [build]
df8d52aba789 fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents: 18351
diff changeset
807
4577
bc8b58c11768 Added debug build of HotSpot Client to the gate.
Doug Simon <doug.simon@oracle.com>
parents: 4575
diff changeset
808 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
809 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
810
9117
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
811 if vm == 'original':
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
812 pass
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
813 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
814 buildSuffix = ''
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
815 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
816 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
817 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
818 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
819 buildSuffix = 'graal'
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
820
11530
be9e54fbb699 Use a better warning message for building with --installed-jdks set
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11526
diff changeset
821 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
822 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
823 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
824
17318
c75bb9cd1994 mx: force installation of distrubtion on windows
Bernhard Urban <bernhard.urban@jku.at>
parents: 17317
diff changeset
825 isWindows = platform.system() == 'Windows' or "CYGWIN" in platform.system()
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
826 for build in builds:
17318
c75bb9cd1994 mx: force installation of distrubtion on windows
Bernhard Urban <bernhard.urban@jku.at>
parents: 17317
diff changeset
827 installJars = vm != 'original' and (isWindows or not opts2.java)
c75bb9cd1994 mx: force installation of distrubtion on windows
Bernhard Urban <bernhard.urban@jku.at>
parents: 17317
diff changeset
828 jdk = _jdk(build, create=True, installJars=installJars)
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
829
9117
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
830 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
831 if build != 'product':
9117
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
832 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
833 continue
14605
5953ac9e0d93 fixed pylint errors
Doug Simon <doug.simon@oracle.com>
parents: 14602
diff changeset
834
14602
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
835 if not isVMSupported(vm):
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
836 mx.log('The ' + vm + ' VM is not supported on this platform - skipping')
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
837 continue
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
838
4607
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
839 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
840 if not exists(vmDir):
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
841 chmodRecursive(jdk, JDK_UNIX_PERMISSIONS_DIR)
14780
aaecb0ca0c7d fixed hard coded reference to JDK7
Doug Simon <doug.simon@oracle.com>
parents: 14777
diff changeset
842 mx.log('Creating VM directory in JDK: ' + vmDir)
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
843 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
844
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
845 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
846 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
847 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
848
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
849 # 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
850 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
851 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
852 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
853 else:
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
854 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
855 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
856 sources = []
15844
d1822a8fe26f minor cleanups
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 15820
diff changeset
857 for d in ['src', 'make', join('graal', 'com.oracle.graal.hotspot', 'src_gen', 'hotspot')]:
5244
55ff4ba8d7b1 ignore src/share/tools directory in native build out-of-date check
Doug Simon <doug.simon@oracle.com>
parents: 5239
diff changeset
858 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
859 # 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
860 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
861 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
862 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
863 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
864 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
865 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
866 break
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
867
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
868 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
869 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
870 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
871
17318
c75bb9cd1994 mx: force installation of distrubtion on windows
Bernhard Urban <bernhard.urban@jku.at>
parents: 17317
diff changeset
872 if isWindows:
17262
b641450c19ce mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents: 17224
diff changeset
873 t_compilelogfile = mx._cygpathU2W(os.path.join(_graal_home, "graalCompile.log"))
4252
67e88b7624d5 Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents: 4247
diff changeset
874 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
875
4572
76841bdd5f3e (Windows) Add Graal build configurations (with GRAAL defined) and fix build command.
Andreas Woess <andreas.woess@jku.at>
parents: 4559
diff changeset
876 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
877 project_config = variant + '_' + build
17262
b641450c19ce mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents: 17224
diff changeset
878 t_graal_home = mx._cygpathU2W(_graal_home)
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
879 _runInDebugShell('msbuild ' + t_graal_home + r'\build\vs-amd64\jvm.vcproj /p:Configuration=' + project_config + ' /target:clean', t_graal_home)
17262
b641450c19ce mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents: 17224
diff changeset
880 winCompileCmd = r'set HotSpotMksHome=' + mksHome + r'& set OUT_DIR=' + mx._cygpathU2W(jdk) + r'& set JAVA_HOME=' + mx._cygpathU2W(jdk) + r'& set path=%JAVA_HOME%\bin;%path%;%HotSpotMksHome%& cd /D "' + t_graal_home + r'\make\windows"& call create.bat ' + t_graal_home
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
881 print winCompileCmd
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
882 winCompileSuccess = re.compile(r"^Writing \.vcxproj file:")
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
883 if not _runInDebugShell(winCompileCmd, t_graal_home, t_compilelogfile, winCompileSuccess):
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
884 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
885 return
17224
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
886 winBuildCmd = 'msbuild ' + t_graal_home + r'\build\vs-amd64\jvm.vcxproj /p:Configuration=' + project_config + ' /p:Platform=x64'
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
887 if not _runInDebugShell(winBuildCmd, t_graal_home, t_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
888 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
889 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
890 else:
18876
c446d00f2cdf mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents: 18869
diff changeset
891 cpus = mx.cpu_count()
16022
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
892 makeDir = join(_graal_home, 'make')
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
893 runCmd = [mx.gmake_cmd(), '-C', makeDir]
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
894
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
895 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
896
16022
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
897 # These must be passed as environment variables
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
898 env.setdefault('LANG', 'C')
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
899 env['JAVA_HOME'] = jdk
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
900
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
901 def setMakeVar(name, default, env=None):
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
902 """Sets a make variable on the command line to the value
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
903 of the variable in 'env' with the same name if defined
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
904 and 'env' is not None otherwise to 'default'
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
905 """
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
906 runCmd.append(name + '=' + (env.get(name, default) if env else default))
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
907
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
908 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
909 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
910 name, value = nv.split('=', 1)
16022
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
911 setMakeVar(name.strip(), value)
13846
1e72cd05b77e hs build: add graal tag to hotspot build version
Bernhard Urban <bernhard.urban@jku.at>
parents: 13761
diff changeset
912
16022
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
913 setMakeVar('ARCH_DATA_MODEL', '64', env=env)
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
914 setMakeVar('HOTSPOT_BUILD_JOBS', str(cpus), env=env)
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
915 setMakeVar('ALT_BOOTDIR', mx.java().jdk, env=env)
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
916
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
917 setMakeVar('MAKE_VERBOSE', 'y' if mx._opts.verbose else '')
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
918 if vm.endswith('nograal'):
16022
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
919 setMakeVar('INCLUDE_GRAAL', 'false')
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
920 setMakeVar('ALT_OUTPUTDIR', join(_graal_home, 'build-nograal', mx.get_os()), env=env)
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
921 else:
16622
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
922 version = graal_version()
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
923 setMakeVar('USER_RELEASE_SUFFIX', 'graal-' + version)
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
924 setMakeVar('GRAAL_VERSION', version)
16022
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
925 setMakeVar('INCLUDE_GRAAL', 'true')
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
926 setMakeVar('INSTALL', 'y', env=env)
17310
f0364a8ec40e force USE_CLANG when building on MacOS
Doug Simon <doug.simon@oracle.com>
parents: 17262
diff changeset
927 if mx.get_os() == 'darwin' and platform.mac_ver()[0] != '':
f0364a8ec40e force USE_CLANG when building on MacOS
Doug Simon <doug.simon@oracle.com>
parents: 17262
diff changeset
928 # Force use of clang on MacOS
f0364a8ec40e force USE_CLANG when building on MacOS
Doug Simon <doug.simon@oracle.com>
parents: 17262
diff changeset
929 setMakeVar('USE_CLANG', 'true')
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
930 if mx.get_os() == 'solaris':
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
931 # 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
932 cCompilerVersion = subprocess.Popen('CC -V', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True).stderr.readlines()[0]
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
933 if cCompilerVersion.startswith('CC: Sun C++'):
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
934 compilerRev = cCompilerVersion.split(' ')[3]
16022
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
935 setMakeVar('ENFORCE_COMPILER_REV', compilerRev, env=env)
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
936 setMakeVar('ENFORCE_CC_COMPILER_REV', compilerRev, env=env)
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
937 if build == 'jvmg':
16022
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
938 # We want ALL the symbols when debugging on Solaris
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
939 setMakeVar('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
940 # This removes the need to unzip the *.diz files before debugging in gdb
16022
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
941 setMakeVar('ZIP_DEBUGINFO_FILES', '0', env=env)
6276
03c4c25ae726 disabled zipping of lib*.debuginfo files to simplify debugging with gdb
Doug Simon <doug.simon@oracle.com>
parents: 5881
diff changeset
942
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
943 # 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
944 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
945 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
946
16031
cd2209d3af46 mx: show the environment variables defined and make command line issued when doing a HotSpot build
Doug Simon <doug.simon@oracle.com>
parents: 16022
diff changeset
947 # Issue an env prefix that can be used to run the make on the command line
cd2209d3af46 mx: show the environment variables defined and make command line issued when doing a HotSpot build
Doug Simon <doug.simon@oracle.com>
parents: 16022
diff changeset
948 if not mx._opts.verbose:
cd2209d3af46 mx: show the environment variables defined and make command line issued when doing a HotSpot build
Doug Simon <doug.simon@oracle.com>
parents: 16022
diff changeset
949 mx.log('--------------- make command line ----------------------')
cd2209d3af46 mx: show the environment variables defined and make command line issued when doing a HotSpot build
Doug Simon <doug.simon@oracle.com>
parents: 16022
diff changeset
950
cd2209d3af46 mx: show the environment variables defined and make command line issued when doing a HotSpot build
Doug Simon <doug.simon@oracle.com>
parents: 16022
diff changeset
951 envPrefix = ' '.join([key + '=' + env[key] for key in env.iterkeys() if not os.environ.has_key(key) or env[key] != os.environ[key]])
cd2209d3af46 mx: show the environment variables defined and make command line issued when doing a HotSpot build
Doug Simon <doug.simon@oracle.com>
parents: 16022
diff changeset
952 if len(envPrefix):
cd2209d3af46 mx: show the environment variables defined and make command line issued when doing a HotSpot build
Doug Simon <doug.simon@oracle.com>
parents: 16022
diff changeset
953 mx.log('env ' + envPrefix + ' \\')
16022
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
954
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
955 runCmd.append(build + buildSuffix)
16031
cd2209d3af46 mx: show the environment variables defined and make command line issued when doing a HotSpot build
Doug Simon <doug.simon@oracle.com>
parents: 16022
diff changeset
956
cd2209d3af46 mx: show the environment variables defined and make command line issued when doing a HotSpot build
Doug Simon <doug.simon@oracle.com>
parents: 16022
diff changeset
957 if not mx._opts.verbose:
cd2209d3af46 mx: show the environment variables defined and make command line issued when doing a HotSpot build
Doug Simon <doug.simon@oracle.com>
parents: 16022
diff changeset
958 mx.log(' '.join(runCmd))
cd2209d3af46 mx: show the environment variables defined and make command line issued when doing a HotSpot build
Doug Simon <doug.simon@oracle.com>
parents: 16022
diff changeset
959 mx.log('--------------------------------------------------------')
16022
3f350b0d93c9 pass make variables on the command line instead of in environment variables to simplify running the make on the command line without mx
Doug Simon <doug.simon@oracle.com>
parents: 16002
diff changeset
960 mx.run(runCmd, 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
961
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
962 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
963 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
964 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
965
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
966 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
967 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
968 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
969 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
970 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
971 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
972 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
973 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
974 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
975
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
976 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
977 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
978 if mx.get_os() != 'windows':
16627
68deb37eed70 mx: fix permissions of copied bootstrap JDK files (don't make everything executable)
Bernhard Urban <bernhard.urban@jku.at>
parents: 16623
diff changeset
979 os.chmod(jvmCfg, JDK_UNIX_PERMISSIONS_FILE)
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
980 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
981 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
982 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
983 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
984 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
985 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
986 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
987 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
988
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
989 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
990 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
991 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
992 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
993
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
994 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
995 """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
996 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
997
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
998 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
999 """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
1000 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
1001
13951
392b6ac8da36 Allow using run_java without the arguments from -J -Ja -Jp. Factor out the argument processing of mx_graal.vm and use it to pass tested-vm args down through the jmh harness
Bernhard Urban <bernhard.urban@jku.at>
parents: 13949
diff changeset
1002 def _parseVmArgs(args, vm=None, cwd=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
1003 """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
1004
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
1005 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
1006 vm = _get_vm()
14164
10e07aaeb54f fixed pylint warning
Doug Simon <doug.simon@oracle.com>
parents: 14161
diff changeset
1007
14602
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
1008 if not isVMSupported(vm):
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
1009 mx.abort('The ' + vm + ' is not supported on this platform')
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1010
10454
590b0c26877f mx: add --workdir argument
Bernhard Urban <bernhard.urban@jku.at>
parents: 10417
diff changeset
1011 if cwd is None:
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1012 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
1013 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
1014 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
1015
17055
3e4d3be0b6bf mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 17052
diff changeset
1016 build = vmbuild if vmbuild else _vmbuild if _vmSourcesAvailable else 'product'
16623
addc0564e5b5 split com.oracle.graal.truffle.* projects into a separate graal-truffle.jar and added truffle.jar to the boot class path
Doug Simon <doug.simon@oracle.com>
parents: 16622
diff changeset
1017 jdk = _jdk(build, vmToCheck=vm, installJars=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
1018 _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
1019 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
1020 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
1021 mx.make_eclipse_launch(args, 'graal-' + build, name=None, deps=mx.project('com.oracle.graal.hotspot').all_deps([], True))
5024
7ccdae96e98a Allow JaCoCon to append to the execution file
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5016
diff changeset
1022 if _jacoco == 'on' or _jacoco == 'append':
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1023 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
1024 # Exclude all compiler tests and snippets
17363
4f9633b83a24 mx: reduce size of exculde command line argument and fold it into package-star expressions
Bernhard Urban <bernhard.urban@jku.at>
parents: 17359
diff changeset
1025
18888
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
1026 includes = ['com.oracle.graal.*']
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
1027 baseExcludes = []
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
1028 for p in mx.projects():
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
1029 projsetting = getattr(p, 'jacoco', '')
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
1030 if projsetting == 'exclude':
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
1031 baseExcludes.append(p.name)
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
1032 if projsetting == 'include':
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
1033 includes.append(p.name + '.*')
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
1034
17363
4f9633b83a24 mx: reduce size of exculde command line argument and fold it into package-star expressions
Bernhard Urban <bernhard.urban@jku.at>
parents: 17359
diff changeset
1035 def _filter(l):
4f9633b83a24 mx: reduce size of exculde command line argument and fold it into package-star expressions
Bernhard Urban <bernhard.urban@jku.at>
parents: 17359
diff changeset
1036 # filter out specific classes which are already covered by a baseExclude package
4f9633b83a24 mx: reduce size of exculde command line argument and fold it into package-star expressions
Bernhard Urban <bernhard.urban@jku.at>
parents: 17359
diff changeset
1037 return [clazz for clazz in l if not any([clazz.startswith(package) for package in baseExcludes])]
4f9633b83a24 mx: reduce size of exculde command line argument and fold it into package-star expressions
Bernhard Urban <bernhard.urban@jku.at>
parents: 17359
diff changeset
1038 excludes = []
5366
67e63e8dcbd2 build JaCoCo exclude list by scanning for snippets
Doug Simon <doug.simon@oracle.com>
parents: 5295
diff changeset
1039 for p in mx.projects():
17363
4f9633b83a24 mx: reduce size of exculde command line argument and fold it into package-star expressions
Bernhard Urban <bernhard.urban@jku.at>
parents: 17359
diff changeset
1040 excludes += _filter(_find_classes_with_annotations(p, None, ['@Snippet', '@ClassSubstitution', '@Test'], includeInnerClasses=True).keys())
4f9633b83a24 mx: reduce size of exculde command line argument and fold it into package-star expressions
Bernhard Urban <bernhard.urban@jku.at>
parents: 17359
diff changeset
1041 excludes += _filter(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
1042
17363
4f9633b83a24 mx: reduce size of exculde command line argument and fold it into package-star expressions
Bernhard Urban <bernhard.urban@jku.at>
parents: 17359
diff changeset
1043 excludes += [package + '.*' for package in baseExcludes]
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1044 agentOptions = {
5024
7ccdae96e98a Allow JaCoCon to append to the execution file
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5016
diff changeset
1045 'append' : 'true' if _jacoco == 'append' else 'false',
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1046 '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
1047 'includes' : ':'.join(includes),
5878
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1048 'excludes' : ':'.join(excludes),
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1049 'destfile' : 'jacoco.exec'
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1050 }
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
1051 args = ['-javaagent:' + jacocoagent.get_path(True) + '=' + ','.join([k + '=' + v for k, v in agentOptions.items()])] + args
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
1052 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
1053 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
1054
9667
1ef7b26e9177 mx/commands.py: warn about arguments after '-version' when launching the vm
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9639
diff changeset
1055 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
1056 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
1057 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
1058 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
1059
16877
6adb14d2320c truffle.jar should always be on the bootclasspath regardless of the 'graal' status of the vm.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 16875
diff changeset
1060 if vm == 'original':
6adb14d2320c truffle.jar should always be on the bootclasspath regardless of the 'graal' status of the vm.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 16875
diff changeset
1061 truffle_jar = mx.archive(['@TRUFFLE'])[0]
6adb14d2320c truffle.jar should always be on the bootclasspath regardless of the 'graal' status of the vm.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 16875
diff changeset
1062 args = ['-Xbootclasspath/p:' + truffle_jar] + args
6adb14d2320c truffle.jar should always be on the bootclasspath regardless of the 'graal' status of the vm.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 16875
diff changeset
1063
13952
b076b5c13c3f mx: factor out JavaConfig.processArgs and use it in mx vm. remove default -J arguments.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 13951
diff changeset
1064 args = mx.java().processArgs(args)
13951
392b6ac8da36 Allow using run_java without the arguments from -J -Ja -Jp. Factor out the argument processing of mx_graal.vm and use it to pass tested-vm args down through the jmh harness
Bernhard Urban <bernhard.urban@jku.at>
parents: 13949
diff changeset
1065 return (pfx, exe, vm, args, cwd)
392b6ac8da36 Allow using run_java without the arguments from -J -Ja -Jp. Factor out the argument processing of mx_graal.vm and use it to pass tested-vm args down through the jmh harness
Bernhard Urban <bernhard.urban@jku.at>
parents: 13949
diff changeset
1066
392b6ac8da36 Allow using run_java without the arguments from -J -Ja -Jp. Factor out the argument processing of mx_graal.vm and use it to pass tested-vm args down through the jmh harness
Bernhard Urban <bernhard.urban@jku.at>
parents: 13949
diff changeset
1067 def vm(args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, vmbuild=None):
392b6ac8da36 Allow using run_java without the arguments from -J -Ja -Jp. Factor out the argument processing of mx_graal.vm and use it to pass tested-vm args down through the jmh harness
Bernhard Urban <bernhard.urban@jku.at>
parents: 13949
diff changeset
1068 (pfx_, exe_, vm_, args_, cwd) = _parseVmArgs(args, vm, cwd, vmbuild)
392b6ac8da36 Allow using run_java without the arguments from -J -Ja -Jp. Factor out the argument processing of mx_graal.vm and use it to pass tested-vm args down through the jmh harness
Bernhard Urban <bernhard.urban@jku.at>
parents: 13949
diff changeset
1069 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
1070
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
1071 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
1072 """
5482
9f4783c0269e folded -G:+CheckcastCounters functionality into checkcast snippets
Doug Simon <doug.simon@oracle.com>
parents: 5438
diff changeset
1073 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
1074 (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
1075 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
1076 """
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1077
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
1078 matches = lambda line: len([a for a in annotations if line == a or line.startswith(a + '(')]) != 0
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
1079 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
1080
14744
bf51a92a1bdd Add new optional method parameter
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14720
diff changeset
1081 def _extract_VM_args(args, allowClasspath=False, useDoubleDash=False, defaultAllVMArgs=True):
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
1082 """
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
1083 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
1084 """
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
1085 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
1086 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
1087 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
1088 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
1089 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
1090 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
1091 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
1092 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
1093 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
1094 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
1095 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
1096 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
1097 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
1098 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
1099 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
1100 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
1101
14744
bf51a92a1bdd Add new optional method parameter
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14720
diff changeset
1102 if defaultAllVMArgs:
bf51a92a1bdd Add new optional method parameter
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14720
diff changeset
1103 return args, []
bf51a92a1bdd Add new optional method parameter
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14720
diff changeset
1104 else:
bf51a92a1bdd Add new optional method parameter
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14720
diff changeset
1105 return [], args
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1106
16979
e9ff3e7055e5 mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents: 16976
diff changeset
1107 def _run_tests(args, harness, annotations, testfile, blacklist, whitelist, regex):
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1108
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1109
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
1110 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
1111 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
1112 if t.startswith('-'):
11403
e45b540b0ef2 clearer error message
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1113 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
1114
13695
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
1115 candidates = {}
11777
f3e5cbd1efae move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents: 11758
diff changeset
1116 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
1117 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
1118 continue
13695
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
1119 for c in _find_classes_with_annotations(p, None, annotations).keys():
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
1120 candidates[c] = p
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1121
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
1122 classes = []
10608
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
1123 if len(tests) == 0:
13695
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
1124 classes = candidates.keys()
16393
380290b81eb0 mx: converted class path variables to camel case for better readability
Doug Simon <doug.simon@oracle.com>
parents: 16388
diff changeset
1125 projectsCp = mx.classpath([pcp.name for pcp in mx.projects_opt_limit_to_suites() if pcp.javaCompliance <= mx.java().javaCompliance])
10608
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
1126 else:
13695
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
1127 projs = set()
18237
6924bb0badc9 mx: set initial value for flag
Bernhard Urban <bernhard.urban@jku.at>
parents: 18224
diff changeset
1128 found = False
16388
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1129 if len(tests) == 1 and '#' in tests[0]:
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1130 words = tests[0].split('#')
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1131 if len(words) != 2:
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1132 mx.abort("Method specification is class#method: " + tests[0])
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1133 t, method = words
18237
6924bb0badc9 mx: set initial value for flag
Bernhard Urban <bernhard.urban@jku.at>
parents: 18224
diff changeset
1134
13695
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
1135 for c, p in candidates.iteritems():
18714
b56e88144e0a prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18711
diff changeset
1136 # prefer exact matches first
b56e88144e0a prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18711
diff changeset
1137 if t == c:
10608
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
1138 found = True
18714
b56e88144e0a prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18711
diff changeset
1139 classes.append(c)
13695
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
1140 projs.add(p.name)
10608
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
1141 if not found:
18714
b56e88144e0a prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18711
diff changeset
1142 for c, p in candidates.iteritems():
b56e88144e0a prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18711
diff changeset
1143 if t in c:
b56e88144e0a prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18711
diff changeset
1144 found = True
b56e88144e0a prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18711
diff changeset
1145 classes.append(c)
b56e88144e0a prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18711
diff changeset
1146 projs.add(p.name)
b56e88144e0a prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18711
diff changeset
1147 if not found:
10608
eeb80dcd60d8 fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents: 10606
diff changeset
1148 mx.log('warning: no tests matched by substring "' + t)
18714
b56e88144e0a prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18711
diff changeset
1149 elif len(classes) != 1:
b56e88144e0a prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18711
diff changeset
1150 mx.abort('More than one test matches substring {0} {1}'.format(t, classes))
b56e88144e0a prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18711
diff changeset
1151
b56e88144e0a prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18711
diff changeset
1152 classes = [c + "#" + method for c in classes]
16388
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1153 else:
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1154 for t in tests:
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1155 if '#' in t:
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1156 mx.abort('Method specifications can only be used in a single test: ' + t)
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1157 for c, p in candidates.iteritems():
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1158 if t in c:
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1159 found = True
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1160 classes.append(c)
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1161 projs.add(p.name)
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1162 if not found:
31e242cad4d1 Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16381
diff changeset
1163 mx.log('warning: no tests matched by substring "' + t)
16393
380290b81eb0 mx: converted class path variables to camel case for better readability
Doug Simon <doug.simon@oracle.com>
parents: 16388
diff changeset
1164 projectsCp = mx.classpath(projs)
8343
a3c30d467f96 unittest: just do a single JVM call
Bernhard Urban <bernhard.urban@jku.at>
parents: 8340
diff changeset
1165
16979
e9ff3e7055e5 mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents: 16976
diff changeset
1166 if blacklist:
e9ff3e7055e5 mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents: 16976
diff changeset
1167 classes = [c for c in classes if not any((glob.match(c) for glob in blacklist))]
e9ff3e7055e5 mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents: 16976
diff changeset
1168
15114
2082889fc8f6 mx: add unittest option --baseline-whitelist.
Josef Eisl <josef.eisl@jku.at>
parents: 15113
diff changeset
1169 if whitelist:
15328
d89ed48ae349 mx: use generators
Bernhard Urban <bernhard.urban@jku.at>
parents: 15327
diff changeset
1170 classes = [c for c in classes if any((glob.match(c) for glob in whitelist))]
15114
2082889fc8f6 mx: add unittest option --baseline-whitelist.
Josef Eisl <josef.eisl@jku.at>
parents: 15113
diff changeset
1171
15555
8c19ffc672fd mx unittest: add support for regular expressions.
Josef Eisl <josef.eisl@jku.at>
parents: 15506
diff changeset
1172 if regex:
8c19ffc672fd mx unittest: add support for regular expressions.
Josef Eisl <josef.eisl@jku.at>
parents: 15506
diff changeset
1173 classes = [c for c in classes if re.search(regex, c)]
8c19ffc672fd mx unittest: add support for regular expressions.
Josef Eisl <josef.eisl@jku.at>
parents: 15506
diff changeset
1174
8343
a3c30d467f96 unittest: just do a single JVM call
Bernhard Urban <bernhard.urban@jku.at>
parents: 8340
diff changeset
1175 if len(classes) != 0:
8406
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
1176 f_testfile = open(testfile, 'w')
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
1177 for c in classes:
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
1178 f_testfile.write(c + '\n')
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
1179 f_testfile.close()
16393
380290b81eb0 mx: converted class path variables to camel case for better readability
Doug Simon <doug.simon@oracle.com>
parents: 16388
diff changeset
1180 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
1181
18326
840257b6cdc5 mx: added --fail-fast option to unittest that stops Junit after first input class causing a test failure
Doug Simon <doug.simon@oracle.com>
parents: 18237
diff changeset
1182 def _unittest(args, annotations, prefixCp="", blacklist=None, whitelist=None, verbose=False, fail_fast=False, enable_timing=False, regex=None, color=False, eager_stacktrace=False, gc_after_test=False):
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
1183 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
1184 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
1185 (_, 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
1186 os.close(_)
18351
1e7b53d7489d fixed pylint issue
Doug Simon <doug.simon@oracle.com>
parents: 18346
diff changeset
1187
18346
ddd7829c45b1 made HotSpotCodeCacheProvider attempt to load and use the hcfdis tool
Doug Simon <doug.simon@oracle.com>
parents: 18327
diff changeset
1188 coreCp = mx.classpath(['com.oracle.graal.test', 'HCFDIS'])
15575
cb2f3c49deb2 mx unittest: compile junitwrapper with right classpath
Bernhard Urban <bernhard.urban@jku.at>
parents: 15555
diff changeset
1189
15503
c62e120e8cd9 Add TimingDecorator.
Josef Eisl <josef.eisl@jku.at>
parents: 15502
diff changeset
1190 coreArgs = []
c62e120e8cd9 Add TimingDecorator.
Josef Eisl <josef.eisl@jku.at>
parents: 15502
diff changeset
1191 if verbose:
c62e120e8cd9 Add TimingDecorator.
Josef Eisl <josef.eisl@jku.at>
parents: 15502
diff changeset
1192 coreArgs.append('-JUnitVerbose')
18326
840257b6cdc5 mx: added --fail-fast option to unittest that stops Junit after first input class causing a test failure
Doug Simon <doug.simon@oracle.com>
parents: 18237
diff changeset
1193 if fail_fast:
840257b6cdc5 mx: added --fail-fast option to unittest that stops Junit after first input class causing a test failure
Doug Simon <doug.simon@oracle.com>
parents: 18237
diff changeset
1194 coreArgs.append('-JUnitFailFast')
15503
c62e120e8cd9 Add TimingDecorator.
Josef Eisl <josef.eisl@jku.at>
parents: 15502
diff changeset
1195 if enable_timing:
c62e120e8cd9 Add TimingDecorator.
Josef Eisl <josef.eisl@jku.at>
parents: 15502
diff changeset
1196 coreArgs.append('-JUnitEnableTiming')
15655
ec29b2d3bdb4 mx unittest: add color support.
Josef Eisl <josef.eisl@jku.at>
parents: 15638
diff changeset
1197 if color:
ec29b2d3bdb4 mx unittest: add color support.
Josef Eisl <josef.eisl@jku.at>
parents: 15638
diff changeset
1198 coreArgs.append('-JUnitColor')
15656
fcf6e5683082 mx unittest: add --eager-stacktrace.
Josef Eisl <josef.eisl@jku.at>
parents: 15655
diff changeset
1199 if eager_stacktrace:
fcf6e5683082 mx unittest: add --eager-stacktrace.
Josef Eisl <josef.eisl@jku.at>
parents: 15655
diff changeset
1200 coreArgs.append('-JUnitEagerStackTrace')
15907
7d1690e145ae mx: option to force a GC after each unit test
Roland Schatz <roland.schatz@oracle.com>
parents: 15896
diff changeset
1201 if gc_after_test:
7d1690e145ae mx: option to force a GC after each unit test
Roland Schatz <roland.schatz@oracle.com>
parents: 15896
diff changeset
1202 coreArgs.append('-JUnitGCAfterTest')
8406
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
1203
15575
cb2f3c49deb2 mx unittest: compile junitwrapper with right classpath
Bernhard Urban <bernhard.urban@jku.at>
parents: 15555
diff changeset
1204
16393
380290b81eb0 mx: converted class path variables to camel case for better readability
Doug Simon <doug.simon@oracle.com>
parents: 16388
diff changeset
1205 def harness(projectsCp, vmArgs):
12647
b038b643a3a4 restricted BootstrapGraal option to GRAALVM builds only
Doug Simon <doug.simon@oracle.com>
parents: 12605
diff changeset
1206 if _get_vm() != 'graal':
8440
2d0160c35f8f Fix unittest on server0.
Roland Schatz <roland.schatz@oracle.com>
parents: 8433
diff changeset
1207 prefixArgs = ['-esa', '-ea']
2d0160c35f8f Fix unittest on server0.
Roland Schatz <roland.schatz@oracle.com>
parents: 8433
diff changeset
1208 else:
2d0160c35f8f Fix unittest on server0.
Roland Schatz <roland.schatz@oracle.com>
parents: 8433
diff changeset
1209 prefixArgs = ['-XX:-BootstrapGraal', '-esa', '-ea']
16002
c60362c5150f mx: Use -XX:-DisableExplicitGC when running unit tests with --gc-after-test.
Roland Schatz <roland.schatz@oracle.com>
parents: 15940
diff changeset
1210 if gc_after_test:
c60362c5150f mx: Use -XX:-DisableExplicitGC when running unit tests with --gc-after-test.
Roland Schatz <roland.schatz@oracle.com>
parents: 15940
diff changeset
1211 prefixArgs.append('-XX:-DisableExplicitGC')
11227
bd0e589a9a65 avoid use of JUnitWrapper when exactly one test is being executed
Doug Simon <doug.simon@oracle.com>
parents: 11179
diff changeset
1212 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
1213 testclasses = [l.rstrip() for l in fp.readlines()]
16395
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16394
diff changeset
1214
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16394
diff changeset
1215 # Remove entries from class path that are in graal.jar and
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16394
diff changeset
1216 # run the VM in a mode where application/test classes can
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16394
diff changeset
1217 # access core Graal classes.
16394
0dd27c6472d7 mx: remove entries from unittest class path that are in graal.jar when running with a Graal enabled VM
Doug Simon <doug.simon@oracle.com>
parents: 16393
diff changeset
1218 cp = prefixCp + coreCp + os.pathsep + projectsCp
0dd27c6472d7 mx: remove entries from unittest class path that are in graal.jar when running with a Graal enabled VM
Doug Simon <doug.simon@oracle.com>
parents: 16393
diff changeset
1219 if isGraalEnabled(_get_vm()):
16902
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
1220 excluded = set()
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
1221 for jdkDist in _jdkDeployedDists:
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
1222 dist = mx.distribution(jdkDist.name)
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
1223 excluded.update([d.output_dir() for d in dist.sorted_deps()])
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
1224 cp = os.pathsep.join([e for e in cp.split(os.pathsep) if e not in excluded])
16610
8cdb9ef96c01 make up-to-date check for generated sources work with --installed-jdks
Doug Simon <doug.simon@oracle.com>
parents: 16605
diff changeset
1225 vmArgs = ['-XX:-UseGraalClassLoader'] + vmArgs
16395
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16394
diff changeset
1226
18224
bfa20550f0a8 Suppress menubar for GraalJUnitCore on Mac
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18218
diff changeset
1227 # suppress menubar and dock when running on Mac
bfa20550f0a8 Suppress menubar for GraalJUnitCore on Mac
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18218
diff changeset
1228 vmArgs = ['-Djava.awt.headless=true'] + vmArgs
bfa20550f0a8 Suppress menubar for GraalJUnitCore on Mac
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18218
diff changeset
1229
11227
bd0e589a9a65 avoid use of JUnitWrapper when exactly one test is being executed
Doug Simon <doug.simon@oracle.com>
parents: 11179
diff changeset
1230 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
1231 # 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
1232 # replaying the VM execution in a native debugger (e.g., gdb).
18116
c4f649042a7b mx/unittest: fix cygwin path issue
Bernhard Urban <bernhard.urban@jku.at>
parents: 18115
diff changeset
1233 vm(prefixArgs + vmArgs + ['-cp', mx._separatedCygpathU2W(cp), 'com.oracle.graal.test.GraalJUnitCore'] + coreArgs + testclasses)
11227
bd0e589a9a65 avoid use of JUnitWrapper when exactly one test is being executed
Doug Simon <doug.simon@oracle.com>
parents: 11179
diff changeset
1234 else:
18116
c4f649042a7b mx/unittest: fix cygwin path issue
Bernhard Urban <bernhard.urban@jku.at>
parents: 18115
diff changeset
1235 vm(prefixArgs + vmArgs + ['-cp', mx._separatedCygpathU2W(cp), 'com.oracle.graal.test.GraalJUnitCore'] + coreArgs + ['@' + mx._cygpathU2W(testfile)])
8406
2bfb9644dcc2 unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents: 8343
diff changeset
1236
8433
87346100d7a5 temporary file is removed when unittests fail
Doug Simon <doug.simon@oracle.com>
parents: 8406
diff changeset
1237 try:
16979
e9ff3e7055e5 mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents: 16976
diff changeset
1238 _run_tests(args, harness, annotations, testfile, blacklist, whitelist, regex)
8433
87346100d7a5 temporary file is removed when unittests fail
Doug Simon <doug.simon@oracle.com>
parents: 8406
diff changeset
1239 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
1240 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
1241 os.remove(testfile)
8340
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
1242
9598
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
1243 _unittestHelpSuffix = """
15113
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1244 Unittest options:
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1245
16979
e9ff3e7055e5 mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents: 16976
diff changeset
1246 --blacklist <file> run all testcases not specified in the blacklist
15555
8c19ffc672fd mx unittest: add support for regular expressions.
Josef Eisl <josef.eisl@jku.at>
parents: 15506
diff changeset
1247 --whitelist <file> run only testcases which are included
15323
6b3bb5a9a889 mx: allow to specify a path for the whitelist in the unittest command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15322
diff changeset
1248 in the given whitelist
15502
a26be2c9b81b Add command line support for JUnit.
Josef Eisl <josef.eisl@jku.at>
parents: 15500
diff changeset
1249 --verbose enable verbose JUnit output
18326
840257b6cdc5 mx: added --fail-fast option to unittest that stops Junit after first input class causing a test failure
Doug Simon <doug.simon@oracle.com>
parents: 18237
diff changeset
1250 --fail-fast stop after first JUnit test class that has a failure
15503
c62e120e8cd9 Add TimingDecorator.
Josef Eisl <josef.eisl@jku.at>
parents: 15502
diff changeset
1251 --enable-timing enable JUnit test timing
15555
8c19ffc672fd mx unittest: add support for regular expressions.
Josef Eisl <josef.eisl@jku.at>
parents: 15506
diff changeset
1252 --regex <regex> run only testcases matching a regular expression
15655
ec29b2d3bdb4 mx unittest: add color support.
Josef Eisl <josef.eisl@jku.at>
parents: 15638
diff changeset
1253 --color enable colors output
15656
fcf6e5683082 mx unittest: add --eager-stacktrace.
Josef Eisl <josef.eisl@jku.at>
parents: 15655
diff changeset
1254 --eager-stacktrace print stacktrace eagerly
15907
7d1690e145ae mx: option to force a GC after each unit test
Roland Schatz <roland.schatz@oracle.com>
parents: 15896
diff changeset
1255 --gc-after-test force a GC after each test
15113
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1256
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1257 To avoid conflicts with VM options '--' can be used as delimiter.
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1258
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
1259 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
1260 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
1261
9598
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
1262 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
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 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
1265
9598
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
1266 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
1267 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
1268
9598
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
1269 -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
1270
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
1271 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
1272 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
1273 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
1274 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
1275 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
1276 (unlike the temporary file otherwise used).
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
1277
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
1278 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
1279 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
1280 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
1281 """
9598
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
1282
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
1283 def unittest(args):
0fc67e300471 better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents: 9343
diff changeset
1284 """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
1285
15113
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1286 parser = ArgumentParser(prog='mx unittest',
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1287 description='run the JUnit tests',
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1288 add_help=False,
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1289 formatter_class=RawDescriptionHelpFormatter,
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1290 epilog=_unittestHelpSuffix,
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1291 )
16979
e9ff3e7055e5 mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents: 16976
diff changeset
1292 parser.add_argument('--blacklist', help='run all testcases not specified in the blacklist', metavar='<path>')
15323
6b3bb5a9a889 mx: allow to specify a path for the whitelist in the unittest command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15322
diff changeset
1293 parser.add_argument('--whitelist', help='run testcases specified in whitelist only', metavar='<path>')
15502
a26be2c9b81b Add command line support for JUnit.
Josef Eisl <josef.eisl@jku.at>
parents: 15500
diff changeset
1294 parser.add_argument('--verbose', help='enable verbose JUnit output', action='store_true')
18326
840257b6cdc5 mx: added --fail-fast option to unittest that stops Junit after first input class causing a test failure
Doug Simon <doug.simon@oracle.com>
parents: 18237
diff changeset
1295 parser.add_argument('--fail-fast', help='stop after first JUnit test class that has a failure', action='store_true')
15503
c62e120e8cd9 Add TimingDecorator.
Josef Eisl <josef.eisl@jku.at>
parents: 15502
diff changeset
1296 parser.add_argument('--enable-timing', help='enable JUnit test timing', action='store_true')
15555
8c19ffc672fd mx unittest: add support for regular expressions.
Josef Eisl <josef.eisl@jku.at>
parents: 15506
diff changeset
1297 parser.add_argument('--regex', help='run only testcases matching a regular expression', metavar='<regex>')
15655
ec29b2d3bdb4 mx unittest: add color support.
Josef Eisl <josef.eisl@jku.at>
parents: 15638
diff changeset
1298 parser.add_argument('--color', help='enable color output', action='store_true')
15656
fcf6e5683082 mx unittest: add --eager-stacktrace.
Josef Eisl <josef.eisl@jku.at>
parents: 15655
diff changeset
1299 parser.add_argument('--eager-stacktrace', help='print stacktrace eagerly', action='store_true')
15907
7d1690e145ae mx: option to force a GC after each unit test
Roland Schatz <roland.schatz@oracle.com>
parents: 15896
diff changeset
1300 parser.add_argument('--gc-after-test', help='force a GC after each test', action='store_true')
15113
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1301
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1302 ut_args = []
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1303 delimiter = False
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1304 # check for delimiter
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1305 while len(args) > 0:
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1306 arg = args.pop(0)
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1307 if arg == '--':
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1308 delimiter = True
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1309 break
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1310 ut_args.append(arg)
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1311
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1312 if delimiter:
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1313 # all arguments before '--' must be recognized
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1314 parsed_args = parser.parse_args(ut_args)
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1315 else:
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1316 # parse all know arguments
15197
06bfcf5f941d mx: improve unittest options parsing.
Josef Eisl <josef.eisl@jku.at>
parents: 15178
diff changeset
1317 parsed_args, args = parser.parse_known_args(ut_args)
15113
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1318
15323
6b3bb5a9a889 mx: allow to specify a path for the whitelist in the unittest command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15322
diff changeset
1319 if parsed_args.whitelist:
15114
2082889fc8f6 mx: add unittest option --baseline-whitelist.
Josef Eisl <josef.eisl@jku.at>
parents: 15113
diff changeset
1320 try:
15323
6b3bb5a9a889 mx: allow to specify a path for the whitelist in the unittest command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15322
diff changeset
1321 with open(join(_graal_home, parsed_args.whitelist)) as fp:
15657
50740bac9679 mx unittest: simplify argument passing.
Josef Eisl <josef.eisl@jku.at>
parents: 15656
diff changeset
1322 parsed_args.whitelist = [re.compile(fnmatch.translate(l.rstrip())) for l in fp.readlines() if not l.startswith('#')]
15114
2082889fc8f6 mx: add unittest option --baseline-whitelist.
Josef Eisl <josef.eisl@jku.at>
parents: 15113
diff changeset
1323 except IOError:
15323
6b3bb5a9a889 mx: allow to specify a path for the whitelist in the unittest command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15322
diff changeset
1324 mx.log('warning: could not read whitelist: ' + parsed_args.whitelist)
16979
e9ff3e7055e5 mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents: 16976
diff changeset
1325 if parsed_args.blacklist:
e9ff3e7055e5 mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents: 16976
diff changeset
1326 try:
e9ff3e7055e5 mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents: 16976
diff changeset
1327 with open(join(_graal_home, parsed_args.blacklist)) as fp:
e9ff3e7055e5 mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents: 16976
diff changeset
1328 parsed_args.blacklist = [re.compile(fnmatch.translate(l.rstrip())) for l in fp.readlines() if not l.startswith('#')]
e9ff3e7055e5 mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents: 16976
diff changeset
1329 except IOError:
e9ff3e7055e5 mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents: 16976
diff changeset
1330 mx.log('warning: could not read blacklist: ' + parsed_args.blacklist)
15114
2082889fc8f6 mx: add unittest option --baseline-whitelist.
Josef Eisl <josef.eisl@jku.at>
parents: 15113
diff changeset
1331
15657
50740bac9679 mx unittest: simplify argument passing.
Josef Eisl <josef.eisl@jku.at>
parents: 15656
diff changeset
1332 _unittest(args, ['@Test', '@Parameters'], **parsed_args.__dict__)
8340
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
1333
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
1334 def shortunittest(args):
15324
5b5f47104c0d mx: add whitelist for shortunittest
Bernhard Urban <bernhard.urban@jku.at>
parents: 15323
diff changeset
1335 """alias for 'unittest --whitelist test/whitelist_shortunittest.txt'{0}"""
8340
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
1336
15324
5b5f47104c0d mx: add whitelist for shortunittest
Bernhard Urban <bernhard.urban@jku.at>
parents: 15323
diff changeset
1337 args = ['--whitelist', 'test/whitelist_shortunittest.txt'] + args
15113
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
1338 unittest(args)
8340
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
1339
18891
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1340 def microbench(args):
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1341 """run JMH microbenchmark projects"""
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1342 vmArgs, jmhArgs = _extract_VM_args(args, useDoubleDash=True)
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1343
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1344 # look for -f in JMH arguments
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1345 containsF = False
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1346 forking = True
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1347 for i in range(len(jmhArgs)):
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1348 arg = jmhArgs[i]
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1349 if arg.startswith('-f'):
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1350 containsF = True
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1351 if arg == '-f' and (i+1) < len(jmhArgs):
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1352 arg += jmhArgs[i+1]
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1353 try:
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1354 if int(arg[2:]) == 0:
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1355 forking = False
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1356 except ValueError:
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1357 pass
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1358
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1359 # default to -f1 if not specified otherwise
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1360 if not containsF:
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1361 jmhArgs += ['-f1']
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1362
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1363 # find all projects with the JMH dependency
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1364 jmhProjects = []
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1365 for p in mx.projects():
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1366 if 'JMH' in p.deps:
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1367 jmhProjects.append(p.name)
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1368 cp = mx.classpath(jmhProjects)
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1369
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1370 # execute JMH runner
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1371 (_, _, jvm, forkedVmArgs, _) = _parseVmArgs(vmArgs)
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1372 args = ['-cp', cp]
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1373 if not forking:
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1374 args += forkedVmArgs
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1375 args += ['org.openjdk.jmh.Main']
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1376 if forking:
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1377 args += ['--jvmArgsPrepend', ' '.join(['-' + jvm] + forkedVmArgs)]
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1378 vm(args + jmhArgs)
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
1379
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
1380 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
1381 """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
1382
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
1383 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
1384 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
1385
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1386 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
1387 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
1388 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
1389 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
1390 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
1391
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
1392 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
1393 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
1394 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
1395
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
1396 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
1397 for v in vms:
14602
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
1398 if not isVMSupported(v):
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
1399 mx.log('The ' + v + ' VM is not supported on this platform - skipping')
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
1400 continue
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
1401
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
1402 for vmbuild in builds:
9117
cbfcb1054619 renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents: 9116
diff changeset
1403 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
1404 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
1405 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
1406 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
1407 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
1408 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
1409 mx.log('BEGIN: ' + v + '-' + vmbuild + '\t(see: ' + logFile + ')')
17317
f434913f9cba mx: buildvms should inherit verbosity
Bernhard Urban <bernhard.urban@jku.at>
parents: 17310
diff changeset
1410 verbose = ['-v'] if mx._opts.verbose else []
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
1411 # Run as subprocess so that output can be directed to a file
17317
f434913f9cba mx: buildvms should inherit verbosity
Bernhard Urban <bernhard.urban@jku.at>
parents: 17310
diff changeset
1412 cmd = [sys.executable, '-u', join('mxtool', 'mx.py')] + verbose + ['--vm', v, '--vmbuild', vmbuild, 'build']
f434913f9cba mx: buildvms should inherit verbosity
Bernhard Urban <bernhard.urban@jku.at>
parents: 17310
diff changeset
1413 mx.logv("executing command: " + str(cmd))
f434913f9cba mx: buildvms should inherit verbosity
Bernhard Urban <bernhard.urban@jku.at>
parents: 17310
diff changeset
1414 subprocess.check_call(cmd, 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
1415 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
1416 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
1417 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
1418 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
1419 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
1420 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
1421 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
1422 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
1423 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
1424 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
1425 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
1426 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
1427
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
1428 class Task:
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1429 def __init__(self, title, tasks=None):
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
1430 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
1431 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
1432 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
1433 self.duration = None
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1434 self.tasks = tasks
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
1435 mx.log(time.strftime('gate: %d %b %Y %H:%M:%S: BEGIN: ') + title)
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1436 def __enter__(self):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1437 assert self.tasks is not None, "using Task with 'with' statement requires to pass the tasks list in the constructor"
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1438 return self
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1439 def __exit__(self, exc_type, exc_value, traceback):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1440 self.tasks.append(self.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
1441 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
1442 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
1443 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
1444 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
1445 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
1446 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
1447 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
1448 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
1449 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
1450 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
1451 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
1452
17052
35fda668ed6e mx: added ctw command to simplify executing CompileTheWorld
Doug Simon <doug.simon@oracle.com>
parents: 17015
diff changeset
1453 def ctw(args):
35fda668ed6e mx: added ctw command to simplify executing CompileTheWorld
Doug Simon <doug.simon@oracle.com>
parents: 17015
diff changeset
1454 """run CompileTheWorld"""
17378
d42e11af980d mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents: 17363
diff changeset
1455
18106
7a771b48e392 mx: improved ctw command usage message and made the default value for --ctwopts be "-Inline"
Doug Simon <doug.simon@oracle.com>
parents: 17438
diff changeset
1456 defaultCtwopts = '-Inline'
7a771b48e392 mx: improved ctw command usage message and made the default value for --ctwopts be "-Inline"
Doug Simon <doug.simon@oracle.com>
parents: 17438
diff changeset
1457
17378
d42e11af980d mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents: 17363
diff changeset
1458 parser = ArgumentParser(prog='mx ctw')
18106
7a771b48e392 mx: improved ctw command usage message and made the default value for --ctwopts be "-Inline"
Doug Simon <doug.simon@oracle.com>
parents: 17438
diff changeset
1459 parser.add_argument('--ctwopts', action='store', help='space separated Graal options used for CTW compilations (default: --ctwopts="' + defaultCtwopts + '")', default=defaultCtwopts, metavar='<options>')
7a771b48e392 mx: improved ctw command usage message and made the default value for --ctwopts be "-Inline"
Doug Simon <doug.simon@oracle.com>
parents: 17438
diff changeset
1460 parser.add_argument('--jar', action='store', help='jar of classes to compiled instead of rt.jar', metavar='<path>')
17378
d42e11af980d mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents: 17363
diff changeset
1461 parser.add_argument('vmargs', nargs=REMAINDER, metavar='VM options...')
d42e11af980d mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents: 17363
diff changeset
1462
d42e11af980d mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents: 17363
diff changeset
1463 args, vmargs = parser.parse_known_args(args)
17052
35fda668ed6e mx: added ctw command to simplify executing CompileTheWorld
Doug Simon <doug.simon@oracle.com>
parents: 17015
diff changeset
1464
17378
d42e11af980d mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents: 17363
diff changeset
1465 if args.ctwopts:
d42e11af980d mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents: 17363
diff changeset
1466 vmargs.append('-G:CompileTheWorldConfig=' + args.ctwopts)
17052
35fda668ed6e mx: added ctw command to simplify executing CompileTheWorld
Doug Simon <doug.simon@oracle.com>
parents: 17015
diff changeset
1467
17378
d42e11af980d mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents: 17363
diff changeset
1468 if args.jar:
17392
9c241dc74cfc mx: specify jar of classes differently depending on whether Graal is hosted or not
Doug Simon <doug.simon@oracle.com>
parents: 17388
diff changeset
1469 jar = os.path.abspath(args.jar)
17378
d42e11af980d mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents: 17363
diff changeset
1470 else:
d42e11af980d mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents: 17363
diff changeset
1471 jar = join(_jdk(installJars=False), 'jre', 'lib', 'rt.jar')
d42e11af980d mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents: 17363
diff changeset
1472
17392
9c241dc74cfc mx: specify jar of classes differently depending on whether Graal is hosted or not
Doug Simon <doug.simon@oracle.com>
parents: 17388
diff changeset
1473 vmargs += ['-XX:+CompileTheWorld']
17411
6d82c240d83e use -G:CompileTheWorldClasspath instead of -Xbootclasspath/p when doing Graal CTW on a Graal enabled VM
Doug Simon <doug.simon@oracle.com>
parents: 17392
diff changeset
1474 vm_ = _get_vm()
6d82c240d83e use -G:CompileTheWorldClasspath instead of -Xbootclasspath/p when doing Graal CTW on a Graal enabled VM
Doug Simon <doug.simon@oracle.com>
parents: 17392
diff changeset
1475 if isGraalEnabled(vm_):
6d82c240d83e use -G:CompileTheWorldClasspath instead of -Xbootclasspath/p when doing Graal CTW on a Graal enabled VM
Doug Simon <doug.simon@oracle.com>
parents: 17392
diff changeset
1476 if vm_ == 'graal':
6d82c240d83e use -G:CompileTheWorldClasspath instead of -Xbootclasspath/p when doing Graal CTW on a Graal enabled VM
Doug Simon <doug.simon@oracle.com>
parents: 17392
diff changeset
1477 vmargs += ['-XX:+BootstrapGraal']
6d82c240d83e use -G:CompileTheWorldClasspath instead of -Xbootclasspath/p when doing Graal CTW on a Graal enabled VM
Doug Simon <doug.simon@oracle.com>
parents: 17392
diff changeset
1478 vmargs += ['-G:CompileTheWorldClasspath=' + jar]
17392
9c241dc74cfc mx: specify jar of classes differently depending on whether Graal is hosted or not
Doug Simon <doug.simon@oracle.com>
parents: 17388
diff changeset
1479 else:
9c241dc74cfc mx: specify jar of classes differently depending on whether Graal is hosted or not
Doug Simon <doug.simon@oracle.com>
parents: 17388
diff changeset
1480 vmargs += ['-Xbootclasspath/p:' + jar]
17378
d42e11af980d mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents: 17363
diff changeset
1481 vm(vmargs)
17052
35fda668ed6e mx: added ctw command to simplify executing CompileTheWorld
Doug Simon <doug.simon@oracle.com>
parents: 17015
diff changeset
1482
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
1483 def _basic_gate_body(args, tasks):
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1484 with Task('BuildHotSpotGraal: fastdebug,product', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1485 buildvms(['--vms', 'graal,server', '--builds', 'fastdebug,product'])
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
1486
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1487 with VM('graal', 'fastdebug'):
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1488 with Task('BootstrapWithSystemAssertions:fastdebug', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1489 vm(['-esa', '-XX:-TieredCompilation', '-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
1490
14123
dc41eab09fe8 gate: add non-tiered bootstrap
Bernhard Urban <bernhard.urban@jku.at>
parents: 14116
diff changeset
1491 with VM('graal', 'fastdebug'):
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1492 with Task('BootstrapWithSystemAssertionsNoCoop:fastdebug', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1493 vm(['-esa', '-XX:-TieredCompilation', '-XX:-UseCompressedOops', '-version'])
14123
dc41eab09fe8 gate: add non-tiered bootstrap
Bernhard Urban <bernhard.urban@jku.at>
parents: 14116
diff changeset
1494
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
1495 with VM('graal', 'product'):
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1496 with Task('BootstrapWithGCVerification:product', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1497 out = mx.DuplicateSuppressingStream(['VerifyAfterGC:', 'VerifyBeforeGC:']).write
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1498 vm(['-XX:-TieredCompilation', '-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
1499
12412
3c11430f62d8 Re-enable G1 verification in gate
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12359
diff changeset
1500 with VM('graal', 'product'):
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1501 with Task('BootstrapWithG1GCVerification:product', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1502 out = mx.DuplicateSuppressingStream(['VerifyAfterGC:', 'VerifyBeforeGC:']).write
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1503 vm(['-XX:-TieredCompilation', '-XX:+UnlockDiagnosticVMOptions', '-XX:-UseSerialGC', '-XX:+UseG1GC', '-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
1504
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1505 with VM('graal', 'product'):
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1506 with Task('BootstrapWithRegisterPressure:product', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1507 vm(['-XX:-TieredCompilation', '-G:RegisterPressure=rbx,r11,r10,r14,xmm3,xmm11,xmm14', '-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
1508
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1509 with VM('graal', 'product'):
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1510 with Task('BootstrapWithImmutableCode:product', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1511 vm(['-XX:-TieredCompilation', '-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
1512
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1513 with VM('server', 'product'): # hosted mode
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1514 with Task('UnitTests:hosted-product', tasks):
18606
3d0422b6f8fa mx gate: execute unittests with --fail-fast option.
Josef Eisl <josef.eisl@jku.at>
parents: 18602
diff changeset
1515 unittest(['--enable-timing', '--verbose', '--fail-fast'])
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
1516
18864
552993e5795a Reenable baseline tests in gate (backed out changeset 209c60cf3ea2)
Josef Eisl <josef.eisl@jku.at>
parents: 18836
diff changeset
1517 with VM('server', 'product'): # hosted mode
552993e5795a Reenable baseline tests in gate (backed out changeset 209c60cf3ea2)
Josef Eisl <josef.eisl@jku.at>
parents: 18836
diff changeset
1518 with Task('UnitTests-BaselineCompiler:hosted-product', tasks):
552993e5795a Reenable baseline tests in gate (backed out changeset 209c60cf3ea2)
Josef Eisl <josef.eisl@jku.at>
parents: 18836
diff changeset
1519 unittest(['--enable-timing', '--verbose', '--whitelist', 'test/whitelist_baseline.txt', '-G:+UseBaselineCompiler'])
15325
25ce2866f105 gate: add baseline compiler unittest
Bernhard Urban <bernhard.urban@jku.at>
parents: 15324
diff changeset
1520
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
1521 for vmbuild in ['fastdebug', 'product']:
14877
fdb912b1eb7b gate: use no tiered to test bootstrap, add scaladacapo-kiama (fastdebug)
Bernhard Urban <bernhard.urban@jku.at>
parents: 14872
diff changeset
1522 for test in sanitycheck.getDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild) + sanitycheck.getScalaDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild):
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1523 with Task(str(test) + ':' + vmbuild, tasks) as t:
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1524 if not test.test('graal'):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1525 t.abort(test.name + ' Failed')
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
1526
16381
d91fecb90fc0 Check -Xbatch still works in the gate
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16327
diff changeset
1527 # ensure -Xbatch still works
d91fecb90fc0 Check -Xbatch still works in the gate
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16327
diff changeset
1528 with VM('graal', 'product'):
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1529 with Task('DaCapo_pmd:BatchMode:product', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1530 dacapo(['-Xbatch', 'pmd'])
16381
d91fecb90fc0 Check -Xbatch still works in the gate
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 16327
diff changeset
1531
16437
680f52926754 added test for -Xcomp to the gate
Doug Simon <doug.simon@oracle.com>
parents: 16419
diff changeset
1532 # ensure -Xcomp still works
680f52926754 added test for -Xcomp to the gate
Doug Simon <doug.simon@oracle.com>
parents: 16419
diff changeset
1533 with VM('graal', 'product'):
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1534 with Task('XCompMode:product', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1535 vm(['-Xcomp', '-version'])
16437
680f52926754 added test for -Xcomp to the gate
Doug Simon <doug.simon@oracle.com>
parents: 16419
diff changeset
1536
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
1537 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
1538 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
1539
11758
4ac92e735a16 pylint fixes (retry)
Mick Jordan <mick.jordan@oracle.com>
parents: 11757
diff changeset
1540 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
1541 _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
1542
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1543 with Task('CleanAndBuildIdealGraphVisualizer', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1544 env = _igvFallbackJDK(os.environ)
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1545 buildxml = mx._cygpathU2W(join(_graal_home, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml'))
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1546 mx.run(['ant', '-f', buildxml, '-q', 'clean', 'build'], env=env)
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
1547
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1548 # 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
1549 if args.buildNonGraal:
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1550 with Task('BuildHotSpotVarieties', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1551 buildvms(['--vms', 'client,server', '--builds', 'fastdebug,product'])
18108
cc1d1fc17338 gate: don't build server-nograal on windows (the build configuration doesn't exist yet)
Bernhard Urban <bernhard.urban@jku.at>
parents: 18107
diff changeset
1552 if mx.get_os() not in ['windows', 'cygwin']:
cc1d1fc17338 gate: don't build server-nograal on windows (the build configuration doesn't exist yet)
Bernhard Urban <bernhard.urban@jku.at>
parents: 18107
diff changeset
1553 buildvms(['--vms', 'server-nograal', '--builds', 'product,optimized'])
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
1554
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1555 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
1556 for theVm in ['client', 'server']:
14606
f50dece27798 fixed regression in gate command
Doug Simon <doug.simon@oracle.com>
parents: 14605
diff changeset
1557 if not isVMSupported(theVm):
f50dece27798 fixed regression in gate command
Doug Simon <doug.simon@oracle.com>
parents: 14605
diff changeset
1558 mx.log('The' + theVm + ' VM is not supported on this platform')
14602
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
1559 continue
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
1560 with VM(theVm, vmbuild):
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1561 with Task('DaCapo_pmd:' + theVm + ':' + vmbuild, tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1562 dacapo(['pmd'])
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
1563
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1564 with Task('UnitTests:' + theVm + ':' + vmbuild, tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1565 unittest(['-XX:CompileCommand=exclude,*::run*', 'graal.api'])
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
1566
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1567
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1568 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
1569 """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
1570
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
1571 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
1572 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
1573
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1574 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
1575 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
1576 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
1577 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
1578 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
1579
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
1580 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
1581
5431
0bd1ba69db2a removed double declaration of _vmbuild global variable in gate command
Doug Simon <doug.simon@oracle.com>
parents: 5430
diff changeset
1582 global _jacoco
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1583
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1584 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
1585 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
1586 try:
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1587 with Task('Pylint', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1588 mx.pylint([])
11526
db297343d44e added pylint to gate
Doug Simon <doug.simon@oracle.com>
parents: 11525
diff changeset
1589
13928
c4e5a685c6a1 gate: compile java with ECJ if available
Bernhard Urban <bernhard.urban@jku.at>
parents: 13919
diff changeset
1590 def _clean(name='Clean'):
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1591 with Task(name, tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1592 cleanArgs = []
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1593 if not args.cleanNative:
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1594 cleanArgs.append('--no-native')
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1595 if not args.cleanJava:
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1596 cleanArgs.append('--no-java')
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1597 clean(cleanArgs)
13928
c4e5a685c6a1 gate: compile java with ECJ if available
Bernhard Urban <bernhard.urban@jku.at>
parents: 13919
diff changeset
1598 _clean()
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1599
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1600 with Task('IDEConfigCheck', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1601 mx.ideclean([])
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1602 mx.ideinit([])
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
1603
13928
c4e5a685c6a1 gate: compile java with ECJ if available
Bernhard Urban <bernhard.urban@jku.at>
parents: 13919
diff changeset
1604 eclipse_exe = mx.get_env('ECLIPSE_EXE')
7533
29b0768b7ba6 added eclipseformat to the gate
Doug Simon <doug.simon@oracle.com>
parents: 7509
diff changeset
1605 if eclipse_exe is not None:
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1606 with Task('CodeFormatCheck', tasks) as t:
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1607 if mx.eclipseformat(['-e', eclipse_exe]) != 0:
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1608 t.abort('Formatter modified files - run "mx eclipseformat", check in changes and repush')
8211
74896b25297a Test canonicalization and checkstyle early in gate process
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8183
diff changeset
1609
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1610 with Task('Canonicalization Check', tasks) as t:
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1611 mx.log(time.strftime('%d %b %Y %H:%M:%S - Ensuring mx/projects files are canonicalized...'))
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1612 if mx.canonicalizeprojects([]) != 0:
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1613 t.abort('Rerun "mx canonicalizeprojects" and check-in the modified mx/projects files.')
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1614
13928
c4e5a685c6a1 gate: compile java with ECJ if available
Bernhard Urban <bernhard.urban@jku.at>
parents: 13919
diff changeset
1615 if mx.get_env('JDT'):
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1616 with Task('BuildJavaWithEcj', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1617 build(['-p', '--no-native', '--jdt-warning-as-error'])
13928
c4e5a685c6a1 gate: compile java with ECJ if available
Bernhard Urban <bernhard.urban@jku.at>
parents: 13919
diff changeset
1618 _clean('CleanAfterEcjBuild')
c4e5a685c6a1 gate: compile java with ECJ if available
Bernhard Urban <bernhard.urban@jku.at>
parents: 13919
diff changeset
1619
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1620 with Task('BuildJavaWithJavac', tasks):
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1621 build(['-p', '--no-native', '--force-javac'])
9172
bc5c5336008b Add gate test to check build-graal.xml is up to date.
Roland Schatz <roland.schatz@oracle.com>
parents: 9169
diff changeset
1622
18163
c88ab4f1f04a re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents: 18116
diff changeset
1623 with Task('Checkstyle', tasks) as t:
c88ab4f1f04a re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents: 18116
diff changeset
1624 if mx.checkstyle([]) != 0:
c88ab4f1f04a re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents: 18116
diff changeset
1625 t.abort('Checkstyle warnings were found')
c88ab4f1f04a re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents: 18116
diff changeset
1626
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1627 with Task('Checkheaders', tasks) as t:
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1628 if checkheaders([]) != 0:
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1629 t.abort('Checkheaders warnings were found')
14773
78343531acc7 added checkheaders to the gate
Doug Simon <doug.simon@oracle.com>
parents: 14772
diff changeset
1630
17438
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1631 with Task('FindBugs', tasks) as t:
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1632 if findbugs([]) != 0:
b8d89559915d mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents: 17437
diff changeset
1633 t.abort('FindBugs warnings were found')
14751
015f84f0b375 added findbugs to the gate
Doug Simon <doug.simon@oracle.com>
parents: 14744
diff changeset
1634
5878
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1635 if exists('jacoco.exec'):
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1636 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
1637
5878
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1638 if args.jacocout is not None:
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1639 _jacoco = 'append'
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1640 else:
191e08da4de4 Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5877
diff changeset
1641 _jacoco = 'off'
11757
ec058ce90a3d pylint fixes
Mick Jordan <mick.jordan@oracle.com>
parents: 11756
diff changeset
1642
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
1643 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
1644
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
1645 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
1646 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
1647
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
1648 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
1649 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
1650 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
1651 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
1652
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
1653 total.stop()
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1654
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
1655 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
1656 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
1657 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
1658 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
1659 mx.log(' ' + str(total.duration))
11757
ec058ce90a3d pylint fixes
Mick Jordan <mick.jordan@oracle.com>
parents: 11756
diff changeset
1660
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1661 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
1662 """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
1663
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1664 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
1665 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
1666 count = 1
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1667 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
1668 count = int(args[0])
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1669 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
1670
7509
442668d41bc2 fixed warnings
Doug Simon <doug.simon@oracle.com>
parents: 7345
diff changeset
1671 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
1672 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
1673 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
1674
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1675 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
1676
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1677 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
1678
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1679 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
1680
17388
9e5abd0e7916 mx/igv: fallback mechanism to work around a javac bug in jdk8u20
Bernhard Urban <bernhard.urban@jku.at>
parents: 17378
diff changeset
1681 def _igvFallbackJDK(env):
18887
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1682 v8u20 = mx.VersionSpec("1.8.0_20")
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1683 v8u40 = mx.VersionSpec("1.8.0_40")
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1684 v8 = mx.VersionSpec("1.8")
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1685 igvHomes = [h for h in mx._java_homes if h.version >= v8 and (h.version < v8u20 or h.version >= v8u40)]
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1686 defaultJava = mx.java()
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1687 if defaultJava not in igvHomes:
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1688 if not igvHomes:
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1689 mx.abort("No JDK available for building IGV. Must have JDK >= 1.8 and < 1.8.0u20 or >= 1.8.0u40 in JAVA_HOME or EXTRA_JAVA_HOMES")
17437
d65ca887868d mx igv: make a copy of env and fix minor cygwin path issue
Bernhard Urban <bernhard.urban@jku.at>
parents: 17411
diff changeset
1690 env = dict(env)
18115
4ccabc85a62a IGV build: blacklist all JDKs from 8u20 included to 8u40 excluded
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 18108
diff changeset
1691 fallbackJDK = igvHomes[0]
17388
9e5abd0e7916 mx/igv: fallback mechanism to work around a javac bug in jdk8u20
Bernhard Urban <bernhard.urban@jku.at>
parents: 17378
diff changeset
1692 mx.logv("1.8.0_20 has a known javac bug (JDK-8043926), thus falling back to " + str(fallbackJDK.version))
9e5abd0e7916 mx/igv: fallback mechanism to work around a javac bug in jdk8u20
Bernhard Urban <bernhard.urban@jku.at>
parents: 17378
diff changeset
1693 env['JAVA_HOME'] = str(fallbackJDK.jdk)
9e5abd0e7916 mx/igv: fallback mechanism to work around a javac bug in jdk8u20
Bernhard Urban <bernhard.urban@jku.at>
parents: 17378
diff changeset
1694 return env
9e5abd0e7916 mx/igv: fallback mechanism to work around a javac bug in jdk8u20
Bernhard Urban <bernhard.urban@jku.at>
parents: 17378
diff changeset
1695
5089
206e68bb66c6 Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents: 5064
diff changeset
1696 def igv(args):
206e68bb66c6 Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents: 5064
diff changeset
1697 """run the Ideal Graph Visualizer"""
18887
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1698 logFile = '.ideal_graph_visualizer.log'
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1699 with open(join(_graal_home, logFile), 'w') as fp:
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1700 # When the http_proxy environment variable is set, convert it to the proxy settings that ant needs
17437
d65ca887868d mx igv: make a copy of env and fix minor cygwin path issue
Bernhard Urban <bernhard.urban@jku.at>
parents: 17411
diff changeset
1701 env = dict(os.environ)
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1702 proxy = os.environ.get('http_proxy')
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1703 if not (proxy is None) and len(proxy) > 0:
14590
e754ac1331ef fix string contains call
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 14164
diff changeset
1704 if '://' in proxy:
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1705 # Remove the http:// prefix (or any other protocol prefix)
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1706 proxy = proxy.split('://', 1)[1]
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1707 # Separate proxy server name and port number
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1708 proxyName, proxyPort = proxy.split(':', 1)
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1709 proxyEnv = '-DproxyHost="' + proxyName + '" -DproxyPort=' + proxyPort
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1710 env['ANT_OPTS'] = proxyEnv
17437
d65ca887868d mx igv: make a copy of env and fix minor cygwin path issue
Bernhard Urban <bernhard.urban@jku.at>
parents: 17411
diff changeset
1711 env = _igvFallbackJDK(env)
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1712
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
1713 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
1714 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
1715
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
1716 # 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
1717 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
1718 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
1719 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
1720 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
1721 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
1722 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
1723 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
1724 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
1725 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
1726
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
1727 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
1728 mx.logv('[This execution may take a while as the NetBeans platform needs to be downloaded]')
18887
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1729 if mx.run(['ant', '-f', mx._cygpathU2W(join(_graal_home, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml')), '-l', mx._cygpathU2W(fp.name), 'run'], env=env, nonZeroIsFatal=False):
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1730 mx.abort("IGV ant build & launch failed. Check '" + logFile + "'. You can also try to delete 'src/share/tools/IdealGraphVisualizer/nbplatform'.")
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1731
16693
b002c864e974 Truffle: rename install to maven-install-truffle and update location of Truffle JARs.
Chris Seaton <chris.seaton@oracle.com>
parents: 16676
diff changeset
1732 def maven_install_truffle(args):
16622
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
1733 """install Truffle into your local Maven repository"""
16729
3d148f5e90b8 mx: refactor maven_install_truffle such that it uses specified paths from the project file
Bernhard Urban <bernhard.urban@jku.at>
parents: 16699
diff changeset
1734 for name in ['TRUFFLE', 'TRUFFLE-DSL-PROCESSOR']:
3d148f5e90b8 mx: refactor maven_install_truffle such that it uses specified paths from the project file
Bernhard Urban <bernhard.urban@jku.at>
parents: 16699
diff changeset
1735 mx.archive(["@" + name])
3d148f5e90b8 mx: refactor maven_install_truffle such that it uses specified paths from the project file
Bernhard Urban <bernhard.urban@jku.at>
parents: 16699
diff changeset
1736 path = mx._dists[name].path
3d148f5e90b8 mx: refactor maven_install_truffle such that it uses specified paths from the project file
Bernhard Urban <bernhard.urban@jku.at>
parents: 16699
diff changeset
1737 mx.run(['mvn', 'install:install-file', '-DgroupId=com.oracle', '-DartifactId=' + name.lower(), '-Dversion=' + graal_version('SNAPSHOT'), '-Dpackaging=jar', '-Dfile=' + path])
16622
faaea970b951 Add an mx install command to install the Truffle jars to the local Maven repository.
Chris Seaton <chris.seaton@oracle.com>
parents: 16621
diff changeset
1738
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1739 def c1visualizer(args):
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1740 """run the Cl Compiler Visualizer"""
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1741 libpath = join(_graal_home, 'lib')
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1742 if mx.get_os() == 'windows':
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1743 executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer.exe')
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1744 else:
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1745 executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer')
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1746
16599
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1747 # Check whether the current C1Visualizer installation is the up-to-date
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1748 if exists(executable) and not exists(mx.library('C1VISUALIZER_DIST').get_path(resolve=False)):
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1749 mx.log('Updating C1Visualizer')
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1750 shutil.rmtree(join(libpath, 'c1visualizer'))
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1751
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1752 archive = mx.library('C1VISUALIZER_DIST').get_path(resolve=True)
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1753
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1754 if not exists(executable):
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1755 zf = zipfile.ZipFile(archive, 'r')
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1756 zf.extractall(libpath)
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1757
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1758 if not exists(executable):
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1759 mx.abort('C1Visualizer binary does not exist: ' + executable)
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1760
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1761 if mx.get_os() != 'windows':
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1762 # Make sure that execution is allowed. The zip file does not always specfiy that correctly
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1763 os.chmod(executable, 0777)
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1764
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1765 mx.run([executable])
5089
206e68bb66c6 Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents: 5064
diff changeset
1766
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
1767 def bench(args):
4324
b0aa4a52b89c Added support for project specs in classpath.
Doug Simon <doug.simon@oracle.com>
parents: 4294
diff changeset
1768 """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
1769
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
1770 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
1771 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
1772 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
1773 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
1774 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
1775 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
1776 del args[index]
d4906ea4255b Handle SIGTERM : killing mx will properly kill subprocesses
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4288
diff changeset
1777 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
1778 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
1779 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
1780 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
1781 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
1782 args = ['all']
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1783
8459
3393f870e6a4 Allow vm arguments in mx bench
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8440
diff changeset
1784 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
1785
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1786 def benchmarks_in_group(group):
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1787 prefix = group + ':'
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1788 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
1789
4219
47f7d91d34cf Fix javac build issues with classpath
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4216
diff changeset
1790 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
1791 benchmarks = []
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1792 # DaCapo
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
1793 if 'dacapo' in args or 'all' in args:
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
1794 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
1795 else:
7563
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1796 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
1797 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
1798 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
1799 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
1800 iterations = sanitycheck.dacapoSanityWarmup[dacapo][sanitycheck.SanityCheckLevel.Benchmark]
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
1801 if iterations > 0:
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
1802 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
1803
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
1804 if 'scaladacapo' in args or 'all' in args:
4480
7d6490436b57 Add Scala DaCapo benchs
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4438
diff changeset
1805 benchmarks += sanitycheck.getScalaDacapos(level=sanitycheck.SanityCheckLevel.Benchmark)
7d6490436b57 Add Scala DaCapo benchs
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4438
diff changeset
1806 else:
7563
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1807 scaladacapos = benchmarks_in_group('scaladacapo')
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1808 for scaladacapo in scaladacapos:
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1809 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
1810 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
1811 iterations = sanitycheck.dacapoScalaSanityWarmup[scaladacapo][sanitycheck.SanityCheckLevel.Benchmark]
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
1812 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
1813 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
1814
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1815 # Bootstrap
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
1816 if 'bootstrap' in args or 'all' in args:
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
1817 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
1818 # SPECjvm2008
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
1819 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
1820 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
1821 else:
7563
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1822 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
1823 for specjvm in specjvms:
11373
6675167d52b6 fixed specjvm2008 regression in bench command
Doug Simon <doug.simon@oracle.com>
parents: 11372
diff changeset
1824 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
1825
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
1826 if 'specjbb2005' in args or 'all' in args:
5877
0e54d9bb922d Add SPECjbb2005 to the benchmarks
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5875
diff changeset
1827 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
1828
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
1829 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
1830 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
1831
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
1832 if 'ctw-full' in args:
9157
a38d748d4130 Add support for the 'optimized' build in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9130
diff changeset
1833 benchmarks.append(sanitycheck.getCTW(vm, sanitycheck.CTWMode.Full))
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
1834 if 'ctw-noinline' in args:
9157
a38d748d4130 Add support for the 'optimized' build in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9130
diff changeset
1835 benchmarks.append(sanitycheck.getCTW(vm, sanitycheck.CTWMode.NoInline))
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1836
4219
47f7d91d34cf Fix javac build issues with classpath
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents: 4216
diff changeset
1837 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
1838 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
1839 group = results.setdefault(groupName, {})
3aab15f42934 moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents: 7552
diff changeset
1840 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
1841 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
1842 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
1843 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
1844 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
1845
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1846 def _get_jmh_path():
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1847 path = mx.get_env('JMH_BENCHMARKS', None)
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1848 if not path:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1849 probe = join(dirname(_graal_home), 'java-benchmarks')
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1850 if exists(probe):
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1851 path = probe
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1852
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1853 if not path:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1854 mx.abort("Please set the JMH_BENCHMARKS environment variable to point to the java-benchmarks workspace")
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1855 if not exists(path):
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1856 mx.abort("The directory denoted by the JMH_BENCHMARKS environment variable does not exist: " + path)
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1857 return path
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1858
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1859 def makejmhdeps(args):
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1860 """creates and installs Maven dependencies required by the JMH benchmarks
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1861
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1862 The dependencies are specified by files named pom.mxdeps in the
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1863 JMH directory tree. Each such file contains a list of dependencies
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1864 defined in JSON format. For example:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1865
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1866 '[{"artifactId" : "compiler.test", "groupId" : "com.oracle.graal", "deps" : ["com.oracle.graal.compiler.test"]}]'
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1867
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1868 will result in a dependency being installed in the local Maven repository
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1869 that can be referenced in a pom.xml file as follows:
15178
0c53453c4d5e mx: improved jmh command to (a) look for JMH benchmarks in ../java-benchmarks, (b) omit building benchmarks if they are up to date and (c) offer better message with 'mx help jmh'
Doug Simon <doug.simon@oracle.com>
parents: 15114
diff changeset
1870
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1871 <dependency>
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1872 <groupId>com.oracle.graal</groupId>
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1873 <artifactId>compiler.test</artifactId>
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1874 <version>1.0-SNAPSHOT</version>
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1875 </dependency>"""
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1876
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1877 parser = ArgumentParser(prog='mx makejmhdeps')
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1878 parser.add_argument('-s', '--settings', help='alternative path for Maven user settings file', metavar='<path>')
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1879 parser.add_argument('-p', '--permissive', action='store_true', help='issue note instead of error if a Maven dependency cannot be built due to missing projects/libraries')
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1880 args = parser.parse_args(args)
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1881
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1882 def makejmhdep(artifactId, groupId, deps):
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1883 graalSuite = mx.suite("graal")
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1884 path = artifactId + '.jar'
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1885 if args.permissive:
17359
115de469a26b support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents: 17321
diff changeset
1886 allDeps = []
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1887 for name in deps:
17359
115de469a26b support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents: 17321
diff changeset
1888 dist = mx.distribution(name, fatalIfMissing=False)
115de469a26b support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents: 17321
diff changeset
1889 if dist:
115de469a26b support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents: 17321
diff changeset
1890 allDeps = allDeps + [d.name for d in dist.sorted_deps(transitive=True)]
115de469a26b support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents: 17321
diff changeset
1891 else:
115de469a26b support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents: 17321
diff changeset
1892 if not mx.project(name, fatalIfMissing=False):
115de469a26b support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents: 17321
diff changeset
1893 if not mx.library(name, fatalIfMissing=False):
115de469a26b support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents: 17321
diff changeset
1894 mx.log('Skipping dependency ' + groupId + '.' + artifactId + ' as ' + name + ' cannot be resolved')
115de469a26b support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents: 17321
diff changeset
1895 return
115de469a26b support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents: 17321
diff changeset
1896 allDeps.append(name)
115de469a26b support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents: 17321
diff changeset
1897 d = mx.Distribution(graalSuite, name=artifactId, path=path, sourcesPath=path, deps=allDeps, mainClass=None, excludedDependencies=[], distDependencies=[], javaCompliance=None)
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1898 d.make_archive()
15253
9ff9f6643986 mx: unconditionally ensure mx injected dependencies are up to date in buildjmh command
Doug Simon <doug.simon@oracle.com>
parents: 15250
diff changeset
1899 cmd = ['mvn', 'install:install-file', '-DgroupId=' + groupId, '-DartifactId=' + artifactId,
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1900 '-Dversion=1.0-SNAPSHOT', '-Dpackaging=jar', '-Dfile=' + d.path]
15253
9ff9f6643986 mx: unconditionally ensure mx injected dependencies are up to date in buildjmh command
Doug Simon <doug.simon@oracle.com>
parents: 15250
diff changeset
1901 if not mx._opts.verbose:
9ff9f6643986 mx: unconditionally ensure mx injected dependencies are up to date in buildjmh command
Doug Simon <doug.simon@oracle.com>
parents: 15250
diff changeset
1902 cmd.append('-q')
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1903 if args.settings:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1904 cmd = cmd + ['-s', args.settings]
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1905 mx.run(cmd)
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1906 os.unlink(d.path)
15178
0c53453c4d5e mx: improved jmh command to (a) look for JMH benchmarks in ../java-benchmarks, (b) omit building benchmarks if they are up to date and (c) offer better message with 'mx help jmh'
Doug Simon <doug.simon@oracle.com>
parents: 15114
diff changeset
1907
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1908 jmhPath = _get_jmh_path()
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1909 for root, _, filenames in os.walk(jmhPath):
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1910 for f in [join(root, n) for n in filenames if n == 'pom.mxdeps']:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1911 mx.logv('[processing ' + f + ']')
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1912 try:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1913 with open(f) as fp:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1914 for d in json.load(fp):
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1915 artifactId = d['artifactId']
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1916 groupId = d['groupId']
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1917 deps = d['deps']
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1918 makejmhdep(artifactId, groupId, deps)
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1919 except ValueError as e:
18635
a8b46348b79f mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents: 18613
diff changeset
1920 mx.abort('Error parsing {0}:\n{1}'.format(f, e))
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1921
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1922 def buildjmh(args):
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1923 """build the JMH benchmarks"""
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1924
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1925 parser = ArgumentParser(prog='mx buildjmh')
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1926 parser.add_argument('-s', '--settings', help='alternative path for Maven user settings file', metavar='<path>')
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1927 parser.add_argument('-c', action='store_true', dest='clean', help='clean before building')
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1928 args = parser.parse_args(args)
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1929
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1930 jmhPath = _get_jmh_path()
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1931 mx.log('JMH benchmarks: ' + jmhPath)
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1932
15253
9ff9f6643986 mx: unconditionally ensure mx injected dependencies are up to date in buildjmh command
Doug Simon <doug.simon@oracle.com>
parents: 15250
diff changeset
1933 # Ensure the mx injected dependencies are up to date
9ff9f6643986 mx: unconditionally ensure mx injected dependencies are up to date in buildjmh command
Doug Simon <doug.simon@oracle.com>
parents: 15250
diff changeset
1934 makejmhdeps(['-p'] + (['-s', args.settings] if args.settings else []))
9ff9f6643986 mx: unconditionally ensure mx injected dependencies are up to date in buildjmh command
Doug Simon <doug.simon@oracle.com>
parents: 15250
diff changeset
1935
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1936 timestamp = mx.TimeStampFile(join(_graal_home, 'mx', 'jmh', jmhPath.replace(os.sep, '_') + '.timestamp'))
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1937 mustBuild = args.clean
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1938 if not mustBuild:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1939 try:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1940 hgfiles = [join(jmhPath, f) for f in subprocess.check_output(['hg', '-R', jmhPath, 'locate']).split('\n')]
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1941 mustBuild = timestamp.isOlderThan(hgfiles)
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1942 except:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1943 # not a Mercurial repository or hg commands are not available.
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1944 mustBuild = True
15178
0c53453c4d5e mx: improved jmh command to (a) look for JMH benchmarks in ../java-benchmarks, (b) omit building benchmarks if they are up to date and (c) offer better message with 'mx help jmh'
Doug Simon <doug.simon@oracle.com>
parents: 15114
diff changeset
1945
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1946 if mustBuild:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1947 buildOutput = []
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1948 def _redirect(x):
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1949 if mx._opts.verbose:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1950 mx.log(x[:-1])
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1951 else:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1952 buildOutput.append(x)
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1953 env = os.environ.copy()
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1954 env['JAVA_HOME'] = _jdk(vmToCheck='server')
17321
95b879bdce67 mx: added -XX:-UseGraalClassLoader to JMH executions
Doug Simon <doug.simon@oracle.com>
parents: 17320
diff changeset
1955 env['MAVEN_OPTS'] = '-server -XX:-UseGraalClassLoader'
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1956 mx.log("Building benchmarks...")
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1957 cmd = ['mvn']
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1958 if args.settings:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1959 cmd = cmd + ['-s', args.settings]
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1960 if args.clean:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1961 cmd.append('clean')
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1962 cmd.append('package')
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1963 retcode = mx.run(cmd, cwd=jmhPath, out=_redirect, env=env, nonZeroIsFatal=False)
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1964 if retcode != 0:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1965 mx.log(''.join(buildOutput))
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1966 mx.abort(retcode)
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1967 timestamp.touch()
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1968 else:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1969 mx.logv('[all Mercurial controlled files in ' + jmhPath + ' are older than ' + timestamp.path + ' - skipping build]')
13935
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
1970
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1971 def jmh(args):
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1972 """run the JMH benchmarks
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1973
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1974 This command respects the standard --vm and --vmbuild options
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1975 for choosing which VM to run the benchmarks with."""
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1976 if '-h' in args:
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1977 mx.help_(['jmh'])
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
1978 mx.abort(1)
15021
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
1979
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
1980 vmArgs, benchmarksAndJsons = _extract_VM_args(args)
18799
750db34c9fe1 client-nograal is supported on Mac
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18733
diff changeset
1981 if isGraalEnabled(_get_vm()) and '-XX:-UseGraalClassLoader' not in vmArgs:
17321
95b879bdce67 mx: added -XX:-UseGraalClassLoader to JMH executions
Doug Simon <doug.simon@oracle.com>
parents: 17320
diff changeset
1982 vmArgs = ['-XX:-UseGraalClassLoader'] + vmArgs
15021
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
1983
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
1984 benchmarks = [b for b in benchmarksAndJsons if not b.startswith('{')]
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
1985 jmhArgJsons = [b for b in benchmarksAndJsons if b.startswith('{')]
15593
e381346a8223 JMH: do not abort on missing jar file. Create necessary output directory if needed
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 15580
diff changeset
1986 jmhOutDir = join(_graal_home, 'mx', 'jmh')
e381346a8223 JMH: do not abort on missing jar file. Create necessary output directory if needed
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 15580
diff changeset
1987 if not exists(jmhOutDir):
e381346a8223 JMH: do not abort on missing jar file. Create necessary output directory if needed
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 15580
diff changeset
1988 os.makedirs(jmhOutDir)
e381346a8223 JMH: do not abort on missing jar file. Create necessary output directory if needed
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 15580
diff changeset
1989 jmhOut = join(jmhOutDir, 'jmh.out')
e381346a8223 JMH: do not abort on missing jar file. Create necessary output directory if needed
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 15580
diff changeset
1990 jmhArgs = {'-rff' : jmhOut, '-v' : 'EXTRA' if mx._opts.verbose else 'NORMAL'}
15021
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
1991
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
1992 # e.g. '{"-wi" : 20}'
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
1993 for j in jmhArgJsons:
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
1994 try:
15051
2df054b37edc add support for removing default JMH args (e.g., '{"-wi" : null, "-i" : null}')
Doug Simon <doug.simon@oracle.com>
parents: 15048
diff changeset
1995 for n, v in json.loads(j).iteritems():
2df054b37edc add support for removing default JMH args (e.g., '{"-wi" : null, "-i" : null}')
Doug Simon <doug.simon@oracle.com>
parents: 15048
diff changeset
1996 if v is None:
2df054b37edc add support for removing default JMH args (e.g., '{"-wi" : null, "-i" : null}')
Doug Simon <doug.simon@oracle.com>
parents: 15048
diff changeset
1997 del jmhArgs[n]
2df054b37edc add support for removing default JMH args (e.g., '{"-wi" : null, "-i" : null}')
Doug Simon <doug.simon@oracle.com>
parents: 15048
diff changeset
1998 else:
2df054b37edc add support for removing default JMH args (e.g., '{"-wi" : null, "-i" : null}')
Doug Simon <doug.simon@oracle.com>
parents: 15048
diff changeset
1999 jmhArgs[n] = v
15021
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
2000 except ValueError as e:
18635
a8b46348b79f mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents: 18613
diff changeset
2001 mx.abort('error parsing JSON input: {0}\n{1}'.format(j, e))
14965
c64cd1dd4bd1 moved Maven installation of Graal dependency from build to jmh command
Doug Simon <doug.simon@oracle.com>
parents: 14938
diff changeset
2002
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
2003 jmhPath = _get_jmh_path()
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
2004 mx.log('Using benchmarks in ' + jmhPath)
13935
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2005
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2006 matchedSuites = set()
13949
f694daada5bf mx jmh: display the number of benchmarks that will run
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 13948
diff changeset
2007 numBench = [0]
13935
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2008 for micros in os.listdir(jmhPath):
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2009 absoluteMicro = os.path.join(jmhPath, micros)
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2010 if not os.path.isdir(absoluteMicro):
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2011 continue
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2012 if not micros.startswith("micros-"):
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2013 mx.logv('JMH: ignored ' + absoluteMicro + " because it doesn't start with 'micros-'")
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2014 continue
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2015
13948
69928d77bc0a mx jmh: avoid mx crash if JMH_BENCHMARKS is not defined at all and skip suites that do not contain the correct jar
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 13935
diff changeset
2016 microJar = os.path.join(absoluteMicro, "target", "microbenchmarks.jar")
69928d77bc0a mx jmh: avoid mx crash if JMH_BENCHMARKS is not defined at all and skip suites that do not contain the correct jar
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 13935
diff changeset
2017 if not exists(microJar):
15593
e381346a8223 JMH: do not abort on missing jar file. Create necessary output directory if needed
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 15580
diff changeset
2018 mx.log('Missing ' + microJar + ' - please run "mx buildjmh"')
e381346a8223 JMH: do not abort on missing jar file. Create necessary output directory if needed
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 15580
diff changeset
2019 continue
13935
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2020 if benchmarks:
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2021 def _addBenchmark(x):
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2022 if x.startswith("Benchmark:"):
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2023 return
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2024 match = False
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2025 for b in benchmarks:
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2026 match = match or (b in x)
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2027
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2028 if match:
13949
f694daada5bf mx jmh: display the number of benchmarks that will run
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 13948
diff changeset
2029 numBench[0] += 1
13935
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2030 matchedSuites.add(micros)
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2031
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
2032 mx.run_java(['-jar', microJar, "-l"], cwd=jmhPath, out=_addBenchmark, addDefaultArgs=False)
13935
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2033 else:
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2034 matchedSuites.add(micros)
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2035
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2036 mx.logv("matchedSuites: " + str(matchedSuites))
13949
f694daada5bf mx jmh: display the number of benchmarks that will run
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 13948
diff changeset
2037 plural = 's' if not benchmarks or numBench[0] > 1 else ''
f694daada5bf mx jmh: display the number of benchmarks that will run
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 13948
diff changeset
2038 number = str(numBench[0]) if benchmarks else "all"
f694daada5bf mx jmh: display the number of benchmarks that will run
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 13948
diff changeset
2039 mx.log("Running " + number + " benchmark" + plural + '...')
13935
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2040
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2041 regex = []
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2042 if benchmarks:
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2043 regex.append(r".*(" + "|".join(benchmarks) + ").*")
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2044
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2045 for suite in matchedSuites:
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2046 absoluteMicro = os.path.join(jmhPath, suite)
13951
392b6ac8da36 Allow using run_java without the arguments from -J -Ja -Jp. Factor out the argument processing of mx_graal.vm and use it to pass tested-vm args down through the jmh harness
Bernhard Urban <bernhard.urban@jku.at>
parents: 13949
diff changeset
2047 (pfx, exe, vm, forkedVmArgs, _) = _parseVmArgs(vmArgs)
392b6ac8da36 Allow using run_java without the arguments from -J -Ja -Jp. Factor out the argument processing of mx_graal.vm and use it to pass tested-vm args down through the jmh harness
Bernhard Urban <bernhard.urban@jku.at>
parents: 13949
diff changeset
2048 if pfx:
18306
229dc0d72f2f fix mx warning
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18237
diff changeset
2049 mx.log("JMH ignores prefix: \"" + ' '.join(pfx) + "\"")
15021
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
2050 javaArgs = ['-jar', os.path.join(absoluteMicro, "target", "microbenchmarks.jar"),
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
2051 '--jvm', exe,
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
2052 '--jvmArgs', ' '.join(["-" + vm] + forkedVmArgs)]
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
2053 for k, v in jmhArgs.iteritems():
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
2054 javaArgs.append(k)
15051
2df054b37edc add support for removing default JMH args (e.g., '{"-wi" : null, "-i" : null}')
Doug Simon <doug.simon@oracle.com>
parents: 15048
diff changeset
2055 if len(str(v)):
2df054b37edc add support for removing default JMH args (e.g., '{"-wi" : null, "-i" : null}')
Doug Simon <doug.simon@oracle.com>
parents: 15048
diff changeset
2056 javaArgs.append(str(v))
15021
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
2057 mx.run_java(javaArgs + regex, addDefaultArgs=False, cwd=jmhPath)
13935
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
2058
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
2059 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
2060 """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
2061
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
2062 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
2063 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
2064
11372
76c45fb64191 added support to the specjvm2008 command for specifying a benchmark group
Doug Simon <doug.simon@oracle.com>
parents: 11371
diff changeset
2065 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
2066 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
2067 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
2068 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
2069 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
2070 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
2071 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
2072
76c45fb64191 added support to the specjvm2008 command for specifying a benchmark group
Doug Simon <doug.simon@oracle.com>
parents: 11371
diff changeset
2073 _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
2074
8147
9786ac8fff61 Use different vm args for SPECjbb2013
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8135
diff changeset
2075 def specjbb2013(args):
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
2076 """run 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
2077
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
2078 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
2079 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
2080 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
2081
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
2082 _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
2083
8506
c3657d00e343 -Merge with tip
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8406
diff changeset
2084 def specjbb2005(args):
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
2085 """run 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
2086
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
2087 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
2088 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
2089 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
2090
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
2091 _run_benchmark(args, None, launcher)
8506
c3657d00e343 -Merge with tip
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 8406
diff changeset
2092
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
2093 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
2094 """download the hsdis library
4482
7903b6c28f9c Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4480
diff changeset
2095
7903b6c28f9c Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4480
diff changeset
2096 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
2097 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
2098 flavor = 'intel'
7903b6c28f9c Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4480
diff changeset
2099 if 'att' in args:
7903b6c28f9c Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4480
diff changeset
2100 flavor = 'att'
17012
ad10671d1bbd mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents: 16979
diff changeset
2101 lib = mx.add_lib_suffix('hsdis-' + mx.get_arch())
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
2102 path = join(_graal_home, 'lib', lib)
16599
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2103
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2104 sha1s = {
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2105 'att/hsdis-amd64.dll' : 'bcbd535a9568b5075ab41e96205e26a2bac64f72',
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2106 'att/hsdis-amd64.so' : '58919ba085d4ef7a513f25bae75e7e54ee73c049',
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2107 'intel/hsdis-amd64.dll' : '6a388372cdd5fe905c1a26ced614334e405d1f30',
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2108 'intel/hsdis-amd64.so' : '844ed9ffed64fe9599638f29a8450c50140e3192',
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2109 'intel/hsdis-amd64.dylib' : 'fdb13ef0d7d23d93dacaae9c98837bea0d4fc5a2',
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2110 }
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2111
16976
87fc600ec586 mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents: 16918
diff changeset
2112 flavoredLib = flavor + "/" + lib
87fc600ec586 mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents: 16918
diff changeset
2113 if flavoredLib not in sha1s:
87fc600ec586 mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents: 16918
diff changeset
2114 mx.logv("hsdis not supported on this plattform or architecture")
87fc600ec586 mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents: 16918
diff changeset
2115 return
87fc600ec586 mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents: 16918
diff changeset
2116
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
2117 if not exists(path):
16599
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2118 sha1 = sha1s[flavoredLib]
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2119 sha1path = path + '.sha1'
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2120 mx.download_file_with_sha1('hsdis', path, ['http://lafo.ssw.uni-linz.ac.at/hsdis/' + flavoredLib], sha1, sha1path, True, True, sources=False)
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
2121 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
2122 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
2123
5245
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
2124 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
2125 """disassemble HexCodeFiles embedded in text files
5245
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
2126
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
2127 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
2128 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
2129
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
2130 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
2131 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
2132 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
2133
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
2134 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
2135
16599
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2136 path = mx.library('HCFDIS').get_path(resolve=True)
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2137 mx.run_java(['-cp', path, 'com.oracle.max.hcfdis.HexCodeFileDis'] + args.files)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
2138
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
2139 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
2140 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
2141 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
2142 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
2143 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
2144 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
2145 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
2146 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
2147 address, symbol = addressAndSymbol
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
2148 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
2149 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
2150 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
2151 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
2152 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
2153 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
2154 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
2155 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
2156 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
2157 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
2158 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
2159 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
2160 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
2161 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
2162 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
2163 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
2164 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
2165 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
2166 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
2167 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
2168 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
2169 print >> fp, l
5245
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
2170
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
2171 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
2172 """create a JaCoCo coverage report
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
2173
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
2174 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
2175 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
2176 jacocoreport = mx.library("JACOCOREPORT", True)
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
2177 out = 'coverage'
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
2178 if len(args) == 1:
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
2179 out = args[0]
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
2180 elif len(args) > 1:
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
2181 mx.abort('jacocoreport takes only one argument : an output directory')
18888
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2182
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2183 includes = ['com.oracle.graal']
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2184 for p in mx.projects():
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2185 projsetting = getattr(p, 'jacoco', '')
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2186 if projsetting == 'include':
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2187 includes.append(p.name)
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2188
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2189 includedirs = set()
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2190 for p in mx.projects():
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2191 for include in includes:
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2192 if include in p.dir:
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2193 includedirs.add(p.dir)
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2194
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2195 for i in includedirs:
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2196 bindir = i + '/bin'
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2197 if not os.path.exists(bindir):
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2198 os.makedirs(bindir)
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2199
31960077ea9d Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents: 18887
diff changeset
2200 mx.run_java(['-jar', jacocoreport.get_path(True), '--in', 'jacoco.exec', '--out', out] + sorted(includedirs))
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
2201
11867
952ecf32788a mx sl command.
Chris Seaton <chris.seaton@oracle.com>
parents: 11797
diff changeset
2202 def sl(args):
12693
c6b833f7935e mx sl: change vm args syntax
Andreas Woess <andreas.woess@jku.at>
parents: 12647
diff changeset
2203 """run an SL program"""
c6b833f7935e mx sl: change vm args syntax
Andreas Woess <andreas.woess@jku.at>
parents: 12647
diff changeset
2204 vmArgs, slArgs = _extract_VM_args(args)
16417
9fe3cb463079 mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents: 16395
diff changeset
2205 vm(vmArgs + ['-cp', mx.classpath(["TRUFFLE", "com.oracle.truffle.sl"]), "com.oracle.truffle.sl.SLMain"] + slArgs)
11867
952ecf32788a mx sl command.
Chris Seaton <chris.seaton@oracle.com>
parents: 11797
diff changeset
2206
9803
8e33b4ebfef1 add isGraalEnabled(vm) function in commands.py
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9667
diff changeset
2207 def isGraalEnabled(vm):
8e33b4ebfef1 add isGraalEnabled(vm) function in commands.py
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9667
diff changeset
2208 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
2209
16167
1f4955abca9b mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents: 16117
diff changeset
2210 def jol(args):
1f4955abca9b mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents: 16117
diff changeset
2211 """Java Object Layout"""
16599
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2212 joljar = mx.library('JOL_INTERNALS').get_path(resolve=True)
16167
1f4955abca9b mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents: 16117
diff changeset
2213 candidates = mx.findclass(args, logToConsole=False, matcher=lambda s, classname: s == classname or classname.endswith('.' + s) or classname.endswith('$' + s))
18218
8588db09f5e9 mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents: 18163
diff changeset
2214
8588db09f5e9 mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents: 18163
diff changeset
2215 if len(candidates) > 0:
18601
676f1800077c mx: removed unused _read_projects_file function
Doug Simon <doug.simon@oracle.com>
parents: 18414
diff changeset
2216 candidates = mx.select_items(sorted(candidates))
18218
8588db09f5e9 mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents: 18163
diff changeset
2217 else:
8588db09f5e9 mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents: 18163
diff changeset
2218 # mx.findclass can be mistaken, don't give up yet
8588db09f5e9 mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents: 18163
diff changeset
2219 candidates = args
16167
1f4955abca9b mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents: 16117
diff changeset
2220
1f4955abca9b mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents: 16117
diff changeset
2221 vm(['-javaagent:' + joljar, '-cp', os.pathsep.join([mx.classpath(), joljar]), "org.openjdk.jol.MainObjectInternals"] + candidates)
1f4955abca9b mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents: 16117
diff changeset
2222
5700
12a34d1bcaa2 added site command to generate a javadoc-based website
Doug Simon <doug.simon@oracle.com>
parents: 5688
diff changeset
2223 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
2224 """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
2225
5771
613a3ddb9a71 moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents: 5764
diff changeset
2226 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
2227 '--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
2228 '--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
2229 '--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
2230 '--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
2231 '--jd', '@-tag', '--jd', '@vmoption:X',
5771
613a3ddb9a71 moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents: 5764
diff changeset
2232 '--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
2233 '--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
2234 '--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
2235
13507
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2236 def generateZshCompletion(args):
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2237 """generate zsh completion for mx"""
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2238 try:
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2239 from genzshcomp import CompletionGenerator
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2240 except ImportError:
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2241 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
2242
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2243 # 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
2244 originalModule = mx._argParser.__module__
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2245 mx._argParser.__module__ = "argparse"
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2246 generator = CompletionGenerator("mx", mx._argParser)
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2247 mx._argParser.__module__ = originalModule
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2248
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2249 # 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
2250 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
2251
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2252 # 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
2253 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
2254 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
2255 complt += '\n'
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2256 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
2257 complt += '\t(command)\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2258 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
2259 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
2260 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
2261 c, _ = mx._commands[cmd][:2]
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2262 doc = c.__doc__
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2263 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
2264 if doc:
13509
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2265 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
2266 complt += '"\n'
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2267 complt += '\t\t)\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2268 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
2269 complt += '\t\t;;\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2270
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2271 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
2272 # 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
2273 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
2274 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
2275 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
2276 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
2277 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
2278 # 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
2279 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
2280 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
2281 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
2282 complt += '\t\tesac\n'
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2283 complt += '\t\t;;\n'
13507
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2284 complt += 'esac\n'
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2285 complt += '\n'
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2286 complt += 'return $ret'
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2287 print complt
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2288
13509
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2289 def _fixQuotes(arg):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2290 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
2291
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2292 def _appendOptions(optionType, optionPrefix):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2293 def isBoolean(vmap, field):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2294 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
2295
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2296 def hasDescription(vmap):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2297 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
2298
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2299 complt = ""
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2300 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
2301 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
2302 complt += optionPrefix
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2303 if isBoolean(vmap, 'optType'):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2304 complt += '"{-,+}"'
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2305 complt += vmap['optName']
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2306 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
2307 complt += '='
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2308 if hasDescription(vmap):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2309 complt += "["
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2310 if vmap['optDefault']:
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2311 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
2312 if vmap['optDoc']:
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2313 complt += _fixQuotes(vmap['optDoc'])
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2314 if hasDescription(vmap):
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2315 complt += "]"
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2316 complt += '" \\\n'
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2317 return complt
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2318
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2319 def _parseVMOptions(optionType):
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2320 parser = OutputParser()
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2321 # 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
2322 # 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
2323 jvmOptions = re.compile(
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2324 r"^[ \t]*"
13509
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2325 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
2326 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
2327 r"[ \t]+=[ \t]*"
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2328 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
2329 r"[ \t]*"
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2330 r"(?P<optDoc>.+)?",
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2331 re.MULTILINE)
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2332 parser.addMatcher(ValuesMatcher(jvmOptions, {
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2333 'optType' : '<optType>',
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2334 'optName' : '<optName>',
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2335 'optDefault' : '<optDefault>',
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2336 'optDoc' : '<optDoc>',
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2337 }))
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2338
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2339 # gather graal options
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2340 output = StringIO.StringIO()
13509
a8831418ff04 mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13508
diff changeset
2341 vm(['-XX:-BootstrapGraal', '-G:+PrintFlags' if optionType == "graal" else '-XX:+PrintFlagsWithComments'],
13695
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
2342 vm="graal",
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
2343 vmbuild="optimized",
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
2344 nonZeroIsFatal=False,
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
2345 out=output.write,
b688e7da4c69 refined class path used by unittest to only include dependencies of the tests that will be run
Doug Simon <doug.simon@oracle.com>
parents: 13526
diff changeset
2346 err=subprocess.STDOUT)
13508
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2347
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2348 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
2349 return valueMap
8a5b39d0bfb5 mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13507
diff changeset
2350
14546
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2351 def findbugs(args):
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2352 '''run FindBugs against non-test Java projects'''
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2353 findBugsHome = mx.get_env('FINDBUGS_HOME', None)
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2354 if findBugsHome:
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2355 findbugsJar = join(findBugsHome, 'lib', 'findbugs.jar')
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2356 else:
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2357 findbugsLib = join(_graal_home, 'lib', 'findbugs-3.0.0')
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2358 if not exists(findbugsLib):
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2359 tmp = tempfile.mkdtemp(prefix='findbugs-download-tmp', dir=_graal_home)
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2360 try:
16599
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
2361 findbugsDist = mx.library('FINDBUGS_DIST').get_path(resolve=True)
14546
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2362 with zipfile.ZipFile(findbugsDist) as zf:
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2363 candidates = [e for e in zf.namelist() if e.endswith('/lib/findbugs.jar')]
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2364 assert len(candidates) == 1, candidates
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2365 libDirInZip = os.path.dirname(candidates[0])
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2366 zf.extractall(tmp)
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2367 shutil.copytree(join(tmp, libDirInZip), findbugsLib)
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2368 finally:
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2369 shutil.rmtree(tmp)
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2370 findbugsJar = join(findbugsLib, 'findbugs.jar')
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2371 assert exists(findbugsJar)
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2372 nonTestProjects = [p for p in mx.projects() if not p.name.endswith('.test') and not p.name.endswith('.jtt')]
17262
b641450c19ce mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents: 17224
diff changeset
2373 outputDirs = map(mx._cygpathU2W, [p.output_dir() for p in nonTestProjects])
18613
8c3a85077f84 mx: run findbugs with the appropriate jdk
Doug Simon <doug.simon@oracle.com>
parents: 18606
diff changeset
2374 javaCompliance = max([p.javaCompliance for p in nonTestProjects])
14546
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2375 findbugsResults = join(_graal_home, 'findbugs.results')
14769
141d570b397c fixed pylint errors
Doug Simon <doug.simon@oracle.com>
parents: 14767
diff changeset
2376
17262
b641450c19ce mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents: 17224
diff changeset
2377 cmd = ['-jar', mx._cygpathU2W(findbugsJar), '-textui', '-low', '-maxRank', '15']
14767
ded08e344e4a findbugs will also use any findbugsExcludeFilter.xml it finds in a suite's root
Doug Simon <doug.simon@oracle.com>
parents: 14762
diff changeset
2378 if sys.stdout.isatty():
ded08e344e4a findbugs will also use any findbugsExcludeFilter.xml it finds in a suite's root
Doug Simon <doug.simon@oracle.com>
parents: 14762
diff changeset
2379 cmd.append('-progress')
18116
c4f649042a7b mx/unittest: fix cygwin path issue
Bernhard Urban <bernhard.urban@jku.at>
parents: 18115
diff changeset
2380 cmd = cmd + ['-auxclasspath', mx._separatedCygpathU2W(mx.classpath([d.name for d in _jdkDeployedDists] + [p.name for p in nonTestProjects])), '-output', mx._cygpathU2W(findbugsResults), '-exitcode'] + args + outputDirs
18613
8c3a85077f84 mx: run findbugs with the appropriate jdk
Doug Simon <doug.simon@oracle.com>
parents: 18606
diff changeset
2381 exitcode = mx.run_java(cmd, nonZeroIsFatal=False, javaConfig=mx.java(javaCompliance))
14546
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2382 if exitcode != 0:
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2383 with open(findbugsResults) as fp:
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2384 mx.log(fp.read())
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2385 os.unlink(findbugsResults)
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2386 return exitcode
13507
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2387
14772
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2388 def checkheaders(args):
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2389 """check Java source headers against any required pattern"""
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2390 failures = {}
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2391 for p in mx.projects():
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2392 if p.native:
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2393 continue
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2394
18163
c88ab4f1f04a re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents: 18116
diff changeset
2395 csConfig = join(mx.project(p.checkstyleProj).dir, '.checkstyle_checks.xml')
14772
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2396 dom = xml.dom.minidom.parse(csConfig)
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2397 for module in dom.getElementsByTagName('module'):
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2398 if module.getAttribute('name') == 'RegexpHeader':
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2399 for prop in module.getElementsByTagName('property'):
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2400 if prop.getAttribute('name') == 'header':
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2401 value = prop.getAttribute('value')
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2402 matcher = re.compile(value, re.MULTILINE)
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2403 for sourceDir in p.source_dirs():
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2404 for root, _, files in os.walk(sourceDir):
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2405 for name in files:
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2406 if name.endswith('.java') and name != 'package-info.java':
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2407 f = join(root, name)
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2408 with open(f) as fp:
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2409 content = fp.read()
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2410 if not matcher.match(content):
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2411 failures[f] = csConfig
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2412 for n, v in failures.iteritems():
18637
d5d1fbe270e9 mx: fixed format string
Doug Simon <doug.simon@oracle.com>
parents: 18635
diff changeset
2413 mx.log('{0}: header does not match RegexpHeader defined in {1}'.format(n, v))
14772
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2414 return len(failures)
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2415
11605
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
2416 def mx_init(suite):
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
2417 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
2418 'build': [build, ''],
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
2419 'buildjmh': [buildjmh, '[-options]'],
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
2420 '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
2421 'buildvms': [buildvms, '[-options]'],
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
2422 'c1visualizer' : [c1visualizer, ''],
14772
c929a4a3b6c5 added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents: 14769
diff changeset
2423 'checkheaders': [checkheaders, ''],
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
2424 'clean': [clean, ''],
17052
35fda668ed6e mx: added ctw command to simplify executing CompileTheWorld
Doug Simon <doug.simon@oracle.com>
parents: 17015
diff changeset
2425 'ctw': [ctw, '[-vmoptions|noinline|nocomplex|full]'],
14546
942c4daa9db9 added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents: 14164
diff changeset
2426 'findbugs': [findbugs, ''],
13507
d3ec6003856d mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents: 13486
diff changeset
2427 'generateZshCompletion' : [generateZshCompletion, ''],
4482
7903b6c28f9c Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4480
diff changeset
2428 'hsdis': [hsdis, '[att]'],
5245
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
2429 'hcfdis': [hcfdis, ''],
5089
206e68bb66c6 Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents: 5064
diff changeset
2430 'igv' : [igv, ''],
16693
b002c864e974 Truffle: rename install to maven-install-truffle and update location of Truffle JARs.
Chris Seaton <chris.seaton@oracle.com>
parents: 16676
diff changeset
2431 'maven-install-truffle' : [maven_install_truffle, ''],
11605
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
2432 'jdkhome': [print_jdkhome, ''],
15021
9dcd5407a603 added support for overriding/complementing JMH arguments in jmh command with a JSON string
Doug Simon <doug.simon@oracle.com>
parents: 15014
diff changeset
2433 'jmh': [jmh, '[VM options] [filters|JMH-args-as-json...]'],
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
2434 '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
2435 '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
2436 '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
2437 '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
2438 '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
2439 'gate' : [gate, '[-options]'],
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
2440 'bench' : [bench, '[-resultfile file] [all(default)|dacapo|specjvm2008|bootstrap]'],
18891
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18888
diff changeset
2441 'microbench' : [microbench, '[VM options] [-- [JMH options]]'],
15113
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
2442 'unittest' : [unittest, '[unittest options] [--] [VM options] [filters...]', _unittestHelpSuffix],
15250
4c68a0eb69ca mx: refactored JMH benchmark building and dependency creation out of 'jmh' into 'buildjmh' and 'makejmhdeps' respectively
Doug Simon <doug.simon@oracle.com>
parents: 15229
diff changeset
2443 'makejmhdeps' : [makejmhdeps, ''],
15113
4da162518b39 mx: add unittest options.
Josef Eisl <josef.eisl@jku.at>
parents: 15057
diff changeset
2444 'shortunittest' : [shortunittest, '[unittest options] [--] [VM options] [filters...]', _unittestHelpSuffix],
4684
e136f2d0d002 Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4660
diff changeset
2445 '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
2446 '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
2447 '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
2448 '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
2449 '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
2450 'deoptalot' : [deoptalot, '[n]'],
11867
952ecf32788a mx sl command.
Chris Seaton <chris.seaton@oracle.com>
parents: 11797
diff changeset
2451 'longtests' : [longtests, ''],
16167
1f4955abca9b mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents: 16117
diff changeset
2452 'sl' : [sl, '[SL args|@VM options]'],
1f4955abca9b mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents: 16117
diff changeset
2453 'jol' : [jol, ''],
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
2454 }
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
2455
5064
8a88c903e381 Updated mx commands.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 5047
diff changeset
2456 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
2457 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
2458 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
2459 '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
2460 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
2461
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
2462 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
2463 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
2464 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
2465 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
2466 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
2467 mx.add_argument('--gdb', action='store_const', const='/usr/bin/gdb --args', dest='vm_prefix', help='alias for --vmprefix "/usr/bin/gdb --args"')
18869
fe4f875e435f Add --lldb option like --gdb
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18864
diff changeset
2468 mx.add_argument('--lldb', action='store_const', const='lldb --', dest='vm_prefix', help='alias for --vmprefix "lldb --"')
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
2469
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
2470 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
2471 '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
2472 })
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
2473
11605
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
2474 mx.update_commands(suite, commands)
4144
34527a24bcf8 Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents: 3736
diff changeset
2475
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
2476 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
2477 # TODO _minVersion check could probably be part of a Suite in mx?
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
2478 if mx.java().version < _minVersion:
7916
9bff64f43299 Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 7788
diff changeset
2479 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
2480
13967
4cd7c6629841 mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents: 13952
diff changeset
2481 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
2482 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
2483 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
2484 _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
2485 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
2486 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
2487 _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
2488 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
2489 _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
2490 global _jacoco
7ccdae96e98a Allow JaCoCon to append to the execution file
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5016
diff changeset
2491 _jacoco = opts.jacoco
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
2492 global _vm_cwd
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
2493 _vm_cwd = opts.vm_cwd
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
2494 global _installed_jdks
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
2495 _installed_jdks = opts.installed_jdks
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
2496 global _vm_prefix
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
2497 _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
2498
16902
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
2499 for jdkDist in _jdkDeployedDists:
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
2500 if jdkDist.isExtension:
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
2501 mx.distribution(jdkDist.name).add_update_listener(_installDistInJdksExt)
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
2502 else:
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
2503 mx.distribution(jdkDist.name).add_update_listener(_installDistInJdks)