Mercurial > hg > truffle
annotate mx/mx_graal.py @ 21697:696baf53a985
Merge.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Wed, 03 Jun 2015 14:15:42 +0200 |
parents | dd987b035a0b |
children | 729e6acde6c0 |
rev | line source |
---|---|
3718 | 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 | 3 # |
4 # ---------------------------------------------------------------------------------------------------- | |
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 | 7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
8 # | |
9 # This code is free software; you can redistribute it and/or modify it | |
10 # under the terms of the GNU General Public License version 2 only, as | |
11 # published by the Free Software Foundation. | |
12 # | |
13 # This code is distributed in the hope that it will be useful, but WITHOUT | |
14 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 # version 2 for more details (a copy is included in the LICENSE file that | |
17 # accompanied this code). | |
18 # | |
19 # You should have received a copy of the GNU General Public License version | |
20 # 2 along with this work; if not, write to the Free Software Foundation, | |
21 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
22 # | |
23 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
24 # or visit www.oracle.com if you need additional information or have any | |
25 # questions. | |
26 # | |
27 # ---------------------------------------------------------------------------------------------------- | |
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 | 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 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3736
diff
changeset
|
33 import mx |
13472
72e2ec923b7b
added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
34 import xml.dom.minidom |
4215
a2caa019ba3a
Fix mx : commands' scripts mx_init hook should be called before parsing command line arguments.
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents:
4187
diff
changeset
|
35 import sanitycheck |
11367
39b86b83ddeb
normalized the command line interface for the dacapo, scaladacapo, specjvm2008, specjbb2005 and specjbb2013 commands
Doug Simon <doug.simon@oracle.com>
parents:
11359
diff
changeset
|
36 import itertools |
9116
e2dae636732a
added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents:
9098
diff
changeset
|
37 import json, textwrap |
15329 | 38 import fnmatch |
21488
6420ac0cbe3c
Add Makefile generator for building graal without mx
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
21482
diff
changeset
|
39 import mx_graal_makefile |
3718 | 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 = { |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
50 'jvmci' : 'Normal compilation is performed with a tiered system (C1 + Graal), Truffle compilation is performed with Graal.', |
15862
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 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
53 'server-nojvmci' : None, # all compilation with tiered system (i.e., client + server), JVMCI omitted |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
54 'client-nojvmci' : None, # all compilation with client compiler, JVMCI omitted |
11514
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 |
21584
9bb04af58490
support DEFAULT_VM=graal in mx/env
Doug Simon <doug.simon@oracle.com>
parents:
21580
diff
changeset
|
56 'graal' : None, # alias for jvmci |
21640
11f68b116a07
mx: added support for server-nograal and client-nograal aliases
Doug Simon <doug.simon@oracle.com>
parents:
21639
diff
changeset
|
57 'server-nograal' : None, # alias for server-nojvmci |
11f68b116a07
mx: added support for server-nograal and client-nograal aliases
Doug Simon <doug.simon@oracle.com>
parents:
21639
diff
changeset
|
58 'client-nograal' : None, # alias for client-nojvmci |
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 } |
9095
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
60 |
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
61 """ 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
|
62 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
|
63 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
|
64 _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
|
65 |
9095
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
66 """ 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
|
67 _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
|
68 |
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
69 """ 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
|
70 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
|
71 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
|
72 _vmbuild = _vmbuildChoices[0] |
3718 | 73 |
5024
7ccdae96e98a
Allow JaCoCon to append to the execution file
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5016
diff
changeset
|
74 _jacoco = 'off' |
4684
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
75 |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
76 """ 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
|
77 _vm_cwd = None |
10454
590b0c26877f
mx: add --workdir argument
Bernhard Urban <bernhard.urban@jku.at>
parents:
10417
diff
changeset
|
78 |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
79 """ 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
|
80 _installed_jdks = None |
10570
2f80624df8a2
Add a --vmdir argument to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
10568
diff
changeset
|
81 |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
82 """ Prefix for running the VM. """ |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
83 _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
|
84 |
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
|
85 _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
|
86 |
15594
62738ce98804
mx: set _minVersion to 1.8
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15593
diff
changeset
|
87 _minVersion = mx.VersionSpec('1.8') |
7916
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7788
diff
changeset
|
88 |
20102
6e5df2d60fbd
mx: fix compliance check for EXTRA_JAVA_HOMES, add maximum JAVA_HOME version in mx_graal
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20032
diff
changeset
|
89 # max version (first _unsupported_ version) |
20805
379471b334cb
Lift 8u40 mx restriction
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20102
diff
changeset
|
90 _untilVersion = None |
20102
6e5df2d60fbd
mx: fix compliance check for EXTRA_JAVA_HOMES, add maximum JAVA_HOME version in mx_graal
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20032
diff
changeset
|
91 |
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
|
92 class JDKDeployedDist: |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
93 def __init__(self, name, isExtension=False, usesJVMCIClassLoader=False): |
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
|
94 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
|
95 self.isExtension = isExtension |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
96 self.usesJVMCIClassLoader = usesJVMCIClassLoader |
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
|
97 |
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
|
98 _jdkDeployedDists = [ |
21031
e1c063565b3c
Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20996
diff
changeset
|
99 JDKDeployedDist('TRUFFLE'), |
21607
71b338926f2e
moved JVMCI classes into their own distributions (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21604
diff
changeset
|
100 JDKDeployedDist('JVMCI_SERVICE'), |
71b338926f2e
moved JVMCI classes into their own distributions (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21604
diff
changeset
|
101 JDKDeployedDist('JVMCI_API', usesJVMCIClassLoader=True), |
71b338926f2e
moved JVMCI classes into their own distributions (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21604
diff
changeset
|
102 JDKDeployedDist('JVMCI_HOTSPOT', usesJVMCIClassLoader=True), |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
103 JDKDeployedDist('GRAAL', usesJVMCIClassLoader=True), |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
104 JDKDeployedDist('GRAAL_TRUFFLE', usesJVMCIClassLoader=True) |
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
|
105 ] |
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
|
106 |
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
|
107 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
|
108 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
|
109 JDK_UNIX_PERMISSIONS_EXEC = 0755 |
13919
9d70445ea369
mx: set correct permissions for graal.jar
Bernhard Urban <bernhard.urban@jku.at>
parents:
13846
diff
changeset
|
110 |
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
|
111 def isVMSupported(vm): |
18799
750db34c9fe1
client-nograal is supported on Mac
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18733
diff
changeset
|
112 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
|
113 # 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
|
114 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
|
115 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
|
116 |
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
|
117 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
|
118 """ |
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 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
|
120 """ |
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 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
|
122 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
|
123 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
|
124 vm = mx.get_env('DEFAULT_VM') |
21584
9bb04af58490
support DEFAULT_VM=graal in mx/env
Doug Simon <doug.simon@oracle.com>
parents:
21580
diff
changeset
|
125 envPath = join(_graal_home, 'mx', 'env') |
21640
11f68b116a07
mx: added support for server-nograal and client-nograal aliases
Doug Simon <doug.simon@oracle.com>
parents:
21639
diff
changeset
|
126 if vm and 'graal' in vm: |
21584
9bb04af58490
support DEFAULT_VM=graal in mx/env
Doug Simon <doug.simon@oracle.com>
parents:
21580
diff
changeset
|
127 if exists(envPath): |
9bb04af58490
support DEFAULT_VM=graal in mx/env
Doug Simon <doug.simon@oracle.com>
parents:
21580
diff
changeset
|
128 with open(envPath) as fp: |
21642 | 129 if 'DEFAULT_VM=' + vm in fp.read(): |
21640
11f68b116a07
mx: added support for server-nograal and client-nograal aliases
Doug Simon <doug.simon@oracle.com>
parents:
21639
diff
changeset
|
130 mx.log('Please update the DEFAULT_VM value in ' + envPath + ' to replace "graal" with "jvmci"') |
11f68b116a07
mx: added support for server-nograal and client-nograal aliases
Doug Simon <doug.simon@oracle.com>
parents:
21639
diff
changeset
|
131 vm = vm.replace('graal', 'jvmci') |
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
|
132 if vm is None: |
21169
41ec6d89cb84
mx: fix calls to is_interactive()
Andreas Woess <andreas.woess@oracle.com>
parents:
21166
diff
changeset
|
133 if not mx.is_interactive(): |
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
|
134 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
|
135 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
|
136 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
|
137 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
|
138 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
|
139 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
|
140 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
|
141 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
|
142 _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
|
143 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
|
144 |
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 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
|
147 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
|
148 |
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 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
|
150 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
|
151 """ |
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 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
|
153 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
|
154 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
|
155 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
|
156 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
|
157 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
|
158 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
|
159 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
|
160 |
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
|
161 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
|
162 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
|
163 _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
|
164 _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
|
165 |
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
|
166 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
|
167 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
|
168 _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
|
169 _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
|
170 |
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
|
171 def chmodRecursive(dirname, chmodFlagsDir): |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
172 if mx.get_os() == 'windows': |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
173 return |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
174 |
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
|
175 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
|
176 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
|
177 |
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
|
178 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
|
179 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3736
diff
changeset
|
180 def clean(args): |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
181 """clean the 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
|
182 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
|
183 |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
184 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
|
185 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
|
186 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
|
187 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
|
188 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
|
189 func(path) |
ce201bb843b4
mx clean: try to change permission if deletion fails on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
190 else: |
ce201bb843b4
mx clean: try to change permission if deletion fails on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
191 raise |
ce201bb843b4
mx clean: try to change permission if deletion fails on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
192 |
9095
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
193 def rmIfExists(name): |
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
194 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
|
195 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
|
196 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
|
197 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
|
198 |
9095
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
199 rmIfExists(join(_graal_home, 'build')) |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
200 rmIfExists(join(_graal_home, 'build-nojvmci')) |
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
|
201 rmIfExists(_jdksDir()) |
3718 | 202 |
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
|
203 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
|
204 """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
|
205 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
206 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
|
207 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
|
208 |
15402
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
209 # collect data about export |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
210 infos = dict() |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
211 infos['timestamp'] = time.time() |
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 hgcfg = mx.HgConfig() |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
214 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
|
215 infos['revision'] = hgcfg.tip('.') + ('+' if hgcfg.isDirty('.') else '') |
15402
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
216 # TODO: infos['repository'] |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
217 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
218 infos['jdkversion'] = str(mx.java().version) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
219 |
17012
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16979
diff
changeset
|
220 infos['architecture'] = mx.get_arch() |
15402
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
221 infos['platform'] = mx.get_os() |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
222 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
223 if mx.get_os != 'windows': |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
224 pass |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
225 # infos['ccompiler'] |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
226 # infos['linker'] |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
227 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
228 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
|
229 |
15402
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
230 def _writeJson(suffix, properties): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
231 d = infos.copy() |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
232 for k, v in properties.iteritems(): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
233 assert not d.has_key(k) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
234 d[k] = v |
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 jsonFileName = 'export-' + suffix + '.json' |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
237 with open(jsonFileName, 'w') as f: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
238 print >> f, json.dumps(d) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
239 return jsonFileName |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
240 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
241 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
242 def _genFileName(archivtype, middle): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
243 idPrefix = infos['revision'] + '_' |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
244 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
|
245 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
|
246 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
247 def _genFileArchPlatformName(archivtype, middle): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
248 return _genFileName(archivtype, infos['platform'] + '_' + infos['architecture'] + '_' + middle) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
249 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
250 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
251 # archive different build types of hotspot |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
252 for vmBuild in _vmbuildChoices: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
253 jdkpath = join(_jdksDir(), vmBuild) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
254 if not exists(jdkpath): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
255 mx.logv("skipping " + vmBuild) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
256 continue |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
257 |
15402
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
258 tarName = _genFileArchPlatformName('basejdk', vmBuild) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
259 mx.logv("creating basejdk " + tarName) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
260 vmSet = set() |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
261 with tarfile.open(tarName, 'w:gz') as tar: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
262 for root, _, files in os.walk(jdkpath): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
263 if basename(root) in _vmChoices.keys(): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
264 # TODO: add some assert to check path assumption |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
265 vmSet.add(root) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
266 continue |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
267 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
268 for f in files: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
269 name = join(root, f) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
270 # print name |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
271 tar.add(name, name) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
272 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
273 n = _writeJson("basejdk-" + vmBuild, {'vmbuild' : vmBuild}) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
274 tar.add(n, n) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
275 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
276 # create a separate archive for each VM |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
277 for vm in vmSet: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
278 bVm = basename(vm) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
279 vmTarName = _genFileArchPlatformName('vm', vmBuild + '_' + bVm) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
280 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
|
281 |
15402
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
282 debugFiles = set() |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
283 with tarfile.open(vmTarName, 'w:gz') as tar: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
284 for root, _, files in os.walk(vm): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
285 for f in files: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
286 # TODO: mac, windows, solaris? |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
287 if any(map(f.endswith, [".debuginfo"])): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
288 debugFiles.add(f) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
289 else: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
290 name = join(root, f) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
291 # print name |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
292 tar.add(name, name) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
293 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
294 n = _writeJson("vm-" + vmBuild + "-" + bVm, {'vmbuild' : vmBuild, 'vm' : bVm}) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
295 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
|
296 |
15402
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
297 if len(debugFiles) > 0: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
298 debugTarName = _genFileArchPlatformName('debugfilesvm', vmBuild + '_' + bVm) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
299 mx.logv("creating debugfilesvm " + debugTarName) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
300 with tarfile.open(debugTarName, 'w:gz') as tar: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
301 for f in debugFiles: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
302 name = join(root, f) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
303 # print name |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
304 tar.add(name, name) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
305 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
306 n = _writeJson("debugfilesvm-" + vmBuild + "-" + bVm, {'vmbuild' : vmBuild, 'vm' : bVm}) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
307 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
|
308 |
15402
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
309 # graal directory |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
310 graalDirTarName = _genFileName('classfiles', 'javac') |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
311 mx.logv("creating graal " + graalDirTarName) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
312 with tarfile.open(graalDirTarName, 'w:gz') as tar: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
313 for root, _, files in os.walk("graal"): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
314 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
|
315 name = join(root, f) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
316 # print name |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
317 tar.add(name, name) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
318 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
319 n = _writeJson("graal", {'javacompiler' : 'javac'}) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
320 tar.add(n, n) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15401
diff
changeset
|
321 |
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
|
322 |
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
|
323 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
|
324 |
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 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
|
326 |
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
|
327 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
|
328 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
|
329 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
|
330 |
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
|
331 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
|
332 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
|
333 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
|
334 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
|
335 |
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
|
336 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
|
337 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
|
338 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
|
339 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
|
340 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
|
341 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
|
342 |
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
|
343 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
|
344 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
|
345 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
|
346 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
|
347 |
4157
b26279781d95
Simplified 'dacapo' command and made it more suitable for gate usage.
Doug Simon <doug.simon@oracle.com>
parents:
4156
diff
changeset
|
348 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
|
349 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
|
350 |
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
|
351 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
|
352 """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
|
353 |
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
|
354 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
|
355 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
|
356 |
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
|
357 _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
|
358 |
4480
7d6490436b57
Add Scala DaCapo benchs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4438
diff
changeset
|
359 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
|
360 """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
|
361 |
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
|
362 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
|
363 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
|
364 |
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
|
365 _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
|
366 |
4607
ee87cfe2f8f9
Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents:
4602
diff
changeset
|
367 def _vmLibDirInJdk(jdk): |
ee87cfe2f8f9
Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents:
4602
diff
changeset
|
368 """ |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
369 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
|
370 subdirectories are located. |
4607
ee87cfe2f8f9
Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents:
4602
diff
changeset
|
371 """ |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
372 mxos = mx.get_os() |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
373 if mxos == 'darwin': |
4607
ee87cfe2f8f9
Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents:
4602
diff
changeset
|
374 return join(jdk, 'jre', 'lib') |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
375 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
|
376 return join(jdk, 'jre', 'bin') |
17012
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16979
diff
changeset
|
377 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
|
378 |
17014
6a30738791f7
mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents:
17012
diff
changeset
|
379 def _vmJliLibDirs(jdk): |
6a30738791f7
mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents:
17012
diff
changeset
|
380 """ |
6a30738791f7
mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents:
17012
diff
changeset
|
381 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
|
382 """ |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
383 mxos = mx.get_os() |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
384 if mxos == 'darwin': |
17014
6a30738791f7
mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents:
17012
diff
changeset
|
385 return [join(jdk, 'jre', 'lib', 'jli')] |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
386 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
|
387 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
|
388 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
|
389 |
17015
ffddcdca8e74
mx: support different name for jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents:
17014
diff
changeset
|
390 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
|
391 """ |
87fc13b59258
Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5649
diff
changeset
|
392 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
|
393 """ |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
394 mxos = mx.get_os() |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
395 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
|
396 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
|
397 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
|
398 |
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
|
399 def _jdksDir(): |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
400 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
|
401 |
17055
3e4d3be0b6bf
mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
17052
diff
changeset
|
402 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
|
403 if not vm: |
3e4d3be0b6bf
mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
17052
diff
changeset
|
404 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
|
405 mx.log('The ' + bld + ' ' + vm + ' VM has not been created') |
21169
41ec6d89cb84
mx: fix calls to is_interactive()
Andreas Woess <andreas.woess@oracle.com>
parents:
21166
diff
changeset
|
406 if mx.is_interactive(): |
11511
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11493
diff
changeset
|
407 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
|
408 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
|
409 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
|
410 return |
11493
94779c895aad
fixed documentation of --installed-jdks mx option
Doug Simon <doug.simon@oracle.com>
parents:
11424
diff
changeset
|
411 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
|
412 |
17055
3e4d3be0b6bf
mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
17052
diff
changeset
|
413 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
|
414 """ |
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
|
415 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
|
416 """ |
17055
3e4d3be0b6bf
mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
17052
diff
changeset
|
417 if not build: |
3e4d3be0b6bf
mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
17052
diff
changeset
|
418 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
|
419 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
|
420 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
|
421 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
|
422 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
|
423 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
|
424 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
|
425 |
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
|
426 # 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
|
427 # 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
|
428 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
|
429 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
|
430 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
|
431 |
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
|
432 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
|
433 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
|
434 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
|
435 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
|
436 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
|
437 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
|
438 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
|
439 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
|
440 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
|
441 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
|
442 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
|
443 else: |
0aa37fd2f33e
mx: fix detection for sparc. ignore unparsable lines in jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents:
12497
diff
changeset
|
444 # 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
|
445 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
|
446 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
|
447 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
|
448 |
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
|
449 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
|
450 chmodRecursive(jdk, JDK_UNIX_PERMISSIONS_DIR) |
9117
cbfcb1054619
renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents:
9116
diff
changeset
|
451 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
|
452 |
18733
d7ec30ebb0f2
Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18714
diff
changeset
|
453 if mx.get_os() != 'windows': |
d7ec30ebb0f2
Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18714
diff
changeset
|
454 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
|
455 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
|
456 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
|
457 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
|
458 |
13523
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
459 # 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
|
460 releaseFile = join(jdk, 'release') |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
461 if exists(releaseFile): |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
462 releaseFileLines = [] |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
463 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
|
464 for line in f: |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
465 releaseFileLines.append(line) |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
466 |
18733
d7ec30ebb0f2
Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18714
diff
changeset
|
467 if mx.get_os() != 'windows': |
d7ec30ebb0f2
Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18714
diff
changeset
|
468 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
|
469 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
|
470 for line in releaseFileLines: |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
471 if line.startswith("SOURCE="): |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
472 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
|
473 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
|
474 hgcfg = mx.HgConfig() |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
475 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
|
476 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
|
477 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
|
478 except: |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
479 fp.write(line) |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
480 else: |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
481 fp.write(line) |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
482 |
5596
e4b1bc5e29e0
hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents:
5517
diff
changeset
|
483 # 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
|
484 try: |
e4b1bc5e29e0
hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents:
5517
diff
changeset
|
485 hsdis([], copyToDir=_vmLibDirInJdk(jdk)) |
e4b1bc5e29e0
hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents:
5517
diff
changeset
|
486 except SystemExit: |
e4b1bc5e29e0
hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents:
5517
diff
changeset
|
487 pass |
3718 | 488 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
|
489 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
|
490 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
|
491 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
|
492 _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
|
493 |
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
|
494 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
|
495 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
|
496 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
|
497 if exists(dist.path): |
21031
e1c063565b3c
Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20996
diff
changeset
|
498 _installDistInJdks(jdkDist) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
499 |
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
|
500 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
|
501 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
|
502 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
|
503 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
|
504 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
|
505 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
|
506 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
|
507 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
|
508 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
|
509 _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
|
510 |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
511 return jdk |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
512 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
513 def _updateInstalledJVMCIOptionsFile(jdk): |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
514 jvmciOptions = join(_graal_home, 'jvmci.options') |
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
|
515 jreLibDir = join(jdk, 'jre', 'lib') |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
516 if exists(jvmciOptions): |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
517 shutil.copy(jvmciOptions, join(jreLibDir, 'jvmci.options')) |
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
|
518 else: |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
519 toDelete = join(jreLibDir, 'jvmci.options') |
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
|
520 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
|
521 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
|
522 |
16605
c55478e640e1
generalized check that VM is up-to-date with all generated sources
Doug Simon <doug.simon@oracle.com>
parents:
16600
diff
changeset
|
523 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
|
524 """ |
d3fec84757ed
improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents:
16627
diff
changeset
|
525 Gets the directory containing all the HotSpot sources generated from |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21537
diff
changeset
|
526 JVMCI Java sources. This directory will be created if it doesn't yet exist. |
16628
d3fec84757ed
improved generated sources up-to-date check by using SHA1 digests
Doug Simon <doug.simon@oracle.com>
parents:
16627
diff
changeset
|
527 """ |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21537
diff
changeset
|
528 hsSrcGenDir = join(mx.project('com.oracle.jvmci.hotspot').source_gen_dir(), 'hotspot') |
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
|
529 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
|
530 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
|
531 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
|
532 |
16863
0d2e3399acfe
mx: add argument for permissions to copyToJdk()
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents:
16862
diff
changeset
|
533 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
|
534 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
|
535 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
|
536 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
|
537 # 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
|
538 # 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
|
539 # 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
|
540 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
|
541 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
|
542 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
|
543 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
|
544 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
|
545 # 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
|
546 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
|
547 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
|
548 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
|
549 shutil.move(tmp, dstLib) |
16863
0d2e3399acfe
mx: add argument for permissions to copyToJdk()
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents:
16862
diff
changeset
|
550 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
|
551 |
21613
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
552 def _filterJVMCIServices(serviceImplNames, classpath): |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
553 """ |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
554 Filters and returns the names in 'serviceImplNames' that denote |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
555 types available in 'classpath' implementing or extending |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
556 com.oracle.jvmci.service.Service. |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
557 """ |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
558 _, binDir = mx._compile_mx_class('FilterTypes', os.pathsep.join(classpath), myDir=dirname(__file__)) |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
559 cmd = [mx.java().java, '-cp', mx._cygpathU2W(os.pathsep.join([binDir] + classpath)), 'FilterTypes', 'com.oracle.jvmci.service.Service'] + serviceImplNames |
21635
b311a60991da
more graceful failure in context of stale mx-deployed JDK jars
Doug Simon <doug.simon@oracle.com>
parents:
21632
diff
changeset
|
560 services = subprocess.check_output(cmd) |
21615
838f005f9aec
handle service filtering that returns an empty result
Doug Simon <doug.simon@oracle.com>
parents:
21613
diff
changeset
|
561 if len(services) == 0: |
838f005f9aec
handle service filtering that returns an empty result
Doug Simon <doug.simon@oracle.com>
parents:
21613
diff
changeset
|
562 return [] |
838f005f9aec
handle service filtering that returns an empty result
Doug Simon <doug.simon@oracle.com>
parents:
21613
diff
changeset
|
563 return services.split('|') |
21613
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
564 |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
565 def _extractJVMCIFiles(jdkJars, jvmciJars, servicesDir, optionsDir, cleanDestination=True): |
21099
3f51d02e536f
Make should export graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21098
diff
changeset
|
566 if cleanDestination: |
21518
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
567 if exists(servicesDir): |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
568 shutil.rmtree(servicesDir) |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
569 if exists(optionsDir): |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
570 shutil.rmtree(optionsDir) |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
571 if not exists(servicesDir): |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
572 os.makedirs(servicesDir) |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
573 if not exists(optionsDir): |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
574 os.makedirs(optionsDir) |
21105
db2de6c2bf95
mx create each service file atomically
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21104
diff
changeset
|
575 servicesMap = {} |
21518
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
576 optionsFiles = [] |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
577 for jar in jvmciJars: |
21070
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
578 if os.path.isfile(jar): |
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
579 with zipfile.ZipFile(jar) as zf: |
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
580 for member in zf.namelist(): |
21518
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
581 if member.startswith('META-INF/services'): |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
582 serviceName = basename(member) |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
583 # we don't handle directories |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
584 assert serviceName and member == 'META-INF/services/' + serviceName |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
585 with zf.open(member) as serviceFile: |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
586 serviceImpls = servicesMap.setdefault(serviceName, []) |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
587 for line in serviceFile.readlines(): |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
588 line = line.strip() |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
589 if line: |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
590 serviceImpls.append(line) |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
591 elif member.startswith('META-INF/options'): |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
592 filename = basename(member) |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
593 # we don't handle directories |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
594 assert filename and member == 'META-INF/options/' + filename |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
595 targetpath = join(optionsDir, filename) |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
596 optionsFiles.append(filename) |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
597 with zf.open(member) as optionsFile, \ |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
598 file(targetpath, "wb") as target: |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
599 shutil.copyfileobj(optionsFile, target) |
21613
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
600 jvmciServices = _filterJVMCIServices(servicesMap.keys(), jdkJars) |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
601 for serviceName in jvmciServices: |
21105
db2de6c2bf95
mx create each service file atomically
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21104
diff
changeset
|
602 serviceImpls = servicesMap[serviceName] |
db2de6c2bf95
mx create each service file atomically
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21104
diff
changeset
|
603 fd, tmp = tempfile.mkstemp(prefix=serviceName) |
db2de6c2bf95
mx create each service file atomically
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21104
diff
changeset
|
604 f = os.fdopen(fd, 'w+') |
db2de6c2bf95
mx create each service file atomically
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21104
diff
changeset
|
605 for serviceImpl in serviceImpls: |
21122
7f78f999512a
mx: services: make sure we don't produce empty lines
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21118
diff
changeset
|
606 f.write(serviceImpl + os.linesep) |
21518
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
607 target = join(servicesDir, serviceName) |
21105
db2de6c2bf95
mx create each service file atomically
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21104
diff
changeset
|
608 f.close() |
db2de6c2bf95
mx create each service file atomically
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21104
diff
changeset
|
609 shutil.move(tmp, target) |
db2de6c2bf95
mx create each service file atomically
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21104
diff
changeset
|
610 if mx.get_os() != 'windows': |
db2de6c2bf95
mx create each service file atomically
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21104
diff
changeset
|
611 os.chmod(target, JDK_UNIX_PERMISSIONS_FILE) |
21562 | 612 return (jvmciServices, optionsFiles) |
613 | |
614 def _updateJVMCIFiles(jdkDir): | |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
615 jreJVMCIDir = join(jdkDir, 'jre', 'lib', 'jvmci') |
21607
71b338926f2e
moved JVMCI classes into their own distributions (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21604
diff
changeset
|
616 jvmciJars = [join(jreJVMCIDir, e) for e in os.listdir(jreJVMCIDir) if e.endswith('.jar')] |
21671
8d0c2aabfc2d
missed Graal -> JVMCI renamings
Doug Simon <doug.simon@oracle.com>
parents:
21642
diff
changeset
|
617 jreJVMCIServicesDir = join(jreJVMCIDir, 'services') |
8d0c2aabfc2d
missed Graal -> JVMCI renamings
Doug Simon <doug.simon@oracle.com>
parents:
21642
diff
changeset
|
618 jreJVMCIOptionsDir = join(jreJVMCIDir, 'options') |
8d0c2aabfc2d
missed Graal -> JVMCI renamings
Doug Simon <doug.simon@oracle.com>
parents:
21642
diff
changeset
|
619 _extractJVMCIFiles(_getJdkDeployedJars(jdkDir), jvmciJars, jreJVMCIServicesDir, jreJVMCIOptionsDir) |
21070
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
620 |
21560
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
621 def _patchGraalVersionConstant(dist): |
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
622 """ |
21693
dd987b035a0b
fix bug where computed graal.version value is longer than the placeholder value
Doug Simon <doug.simon@oracle.com>
parents:
21671
diff
changeset
|
623 Patches the constant "@@@@@@@@@@@@@@@@graal.version@@@@@@@@@@@@@@@@" in the constant pool of Graal.class |
21560
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
624 with the computed Graal version string. |
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
625 """ |
21603
4437f0da4b26
handle graal.jar that has already had Graal.class patched
Doug Simon <doug.simon@oracle.com>
parents:
21589
diff
changeset
|
626 zf = zipfile.ZipFile(dist.path, 'r') |
4437f0da4b26
handle graal.jar that has already had Graal.class patched
Doug Simon <doug.simon@oracle.com>
parents:
21589
diff
changeset
|
627 graalClassfilePath = 'com/oracle/graal/api/runtime/Graal.class' |
4437f0da4b26
handle graal.jar that has already had Graal.class patched
Doug Simon <doug.simon@oracle.com>
parents:
21589
diff
changeset
|
628 graalClassfile = zf.read(graalClassfilePath) |
21693
dd987b035a0b
fix bug where computed graal.version value is longer than the placeholder value
Doug Simon <doug.simon@oracle.com>
parents:
21671
diff
changeset
|
629 placeholder = '@@@@@@@@@@@@@@@@graal.version@@@@@@@@@@@@@@@@' |
dd987b035a0b
fix bug where computed graal.version value is longer than the placeholder value
Doug Simon <doug.simon@oracle.com>
parents:
21671
diff
changeset
|
630 placeholderLen = len(placeholder) |
dd987b035a0b
fix bug where computed graal.version value is longer than the placeholder value
Doug Simon <doug.simon@oracle.com>
parents:
21671
diff
changeset
|
631 versionSpec = '{:' + str(placeholderLen) + '}' |
21603
4437f0da4b26
handle graal.jar that has already had Graal.class patched
Doug Simon <doug.simon@oracle.com>
parents:
21589
diff
changeset
|
632 versionStr = versionSpec.format(graal_version()) |
21693
dd987b035a0b
fix bug where computed graal.version value is longer than the placeholder value
Doug Simon <doug.simon@oracle.com>
parents:
21671
diff
changeset
|
633 |
dd987b035a0b
fix bug where computed graal.version value is longer than the placeholder value
Doug Simon <doug.simon@oracle.com>
parents:
21671
diff
changeset
|
634 if len(versionStr) > placeholderLen: |
dd987b035a0b
fix bug where computed graal.version value is longer than the placeholder value
Doug Simon <doug.simon@oracle.com>
parents:
21671
diff
changeset
|
635 # Truncate the version string if necessary |
dd987b035a0b
fix bug where computed graal.version value is longer than the placeholder value
Doug Simon <doug.simon@oracle.com>
parents:
21671
diff
changeset
|
636 assert versionStr.startswith('unknown'), versionStr |
dd987b035a0b
fix bug where computed graal.version value is longer than the placeholder value
Doug Simon <doug.simon@oracle.com>
parents:
21671
diff
changeset
|
637 versionStr = versionStr[:placeholderLen] |
dd987b035a0b
fix bug where computed graal.version value is longer than the placeholder value
Doug Simon <doug.simon@oracle.com>
parents:
21671
diff
changeset
|
638 if placeholder not in graalClassfile: |
dd987b035a0b
fix bug where computed graal.version value is longer than the placeholder value
Doug Simon <doug.simon@oracle.com>
parents:
21671
diff
changeset
|
639 assert versionStr in graalClassfile, 'could not find "' + placeholder + '" or "' + versionStr + '" constant in ' + dist.path + '!' + graalClassfilePath |
21603
4437f0da4b26
handle graal.jar that has already had Graal.class patched
Doug Simon <doug.simon@oracle.com>
parents:
21589
diff
changeset
|
640 zf.close() |
4437f0da4b26
handle graal.jar that has already had Graal.class patched
Doug Simon <doug.simon@oracle.com>
parents:
21589
diff
changeset
|
641 return False |
4437f0da4b26
handle graal.jar that has already had Graal.class patched
Doug Simon <doug.simon@oracle.com>
parents:
21589
diff
changeset
|
642 |
21560
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
643 zfOutFd, zfOutPath = tempfile.mkstemp(suffix='', prefix=basename(dist.path) + '.', dir=dirname(dist.path)) |
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
644 zfOut = zipfile.ZipFile(zfOutPath, 'w') |
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
645 for zi in zf.infolist(): |
21603
4437f0da4b26
handle graal.jar that has already had Graal.class patched
Doug Simon <doug.simon@oracle.com>
parents:
21589
diff
changeset
|
646 if zi.filename == graalClassfilePath: |
21693
dd987b035a0b
fix bug where computed graal.version value is longer than the placeholder value
Doug Simon <doug.simon@oracle.com>
parents:
21671
diff
changeset
|
647 data = graalClassfile.replace(placeholder, versionStr) |
21603
4437f0da4b26
handle graal.jar that has already had Graal.class patched
Doug Simon <doug.simon@oracle.com>
parents:
21589
diff
changeset
|
648 else: |
4437f0da4b26
handle graal.jar that has already had Graal.class patched
Doug Simon <doug.simon@oracle.com>
parents:
21589
diff
changeset
|
649 data = zf.read(zi) |
21560
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
650 zfOut.writestr(zi, data) |
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
651 zfOut.close() |
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
652 os.close(zfOutFd) |
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
653 zf.close() |
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
654 shutil.move(zfOutPath, dist.path) |
21070
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
655 |
21031
e1c063565b3c
Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20996
diff
changeset
|
656 def _installDistInJdks(deployableDist): |
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
|
657 """ |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
658 Installs the jar(s) for a given Distribution into all existing JVMCI JDKs |
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
|
659 """ |
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
|
660 |
21031
e1c063565b3c
Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20996
diff
changeset
|
661 dist = mx.distribution(deployableDist.name) |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
662 if dist.name == 'GRAAL': |
21560
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
663 _patchGraalVersionConstant(dist) |
a9fba0dfb155
added lower runtime overhead mechanism for setting "graal.version" system property
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
664 |
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
|
665 jdks = _jdksDir() |
8134
6e3ebc6fd5a4
graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents:
8132
diff
changeset
|
666 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
|
667 for e in os.listdir(jdks): |
21070
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
668 jdkDir = join(jdks, e) |
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
669 jreLibDir = join(jdkDir, 'jre', 'lib') |
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
|
670 if exists(jreLibDir): |
21040
12e94cba3696
Graal Loader: load all jars matching lib/graal/graal*.jar
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21032
diff
changeset
|
671 if deployableDist.isExtension: |
12e94cba3696
Graal Loader: load all jars matching lib/graal/graal*.jar
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21032
diff
changeset
|
672 targetDir = join(jreLibDir, 'ext') |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
673 elif deployableDist.usesJVMCIClassLoader: |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
674 targetDir = join(jreLibDir, 'jvmci') |
21040
12e94cba3696
Graal Loader: load all jars matching lib/graal/graal*.jar
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21032
diff
changeset
|
675 else: |
12e94cba3696
Graal Loader: load all jars matching lib/graal/graal*.jar
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21032
diff
changeset
|
676 targetDir = jreLibDir |
12e94cba3696
Graal Loader: load all jars matching lib/graal/graal*.jar
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21032
diff
changeset
|
677 if not exists(targetDir): |
12e94cba3696
Graal Loader: load all jars matching lib/graal/graal*.jar
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21032
diff
changeset
|
678 os.makedirs(targetDir) |
12e94cba3696
Graal Loader: load all jars matching lib/graal/graal*.jar
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21032
diff
changeset
|
679 _copyToJdk(dist.path, targetDir) |
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
|
680 if dist.sourcesPath: |
21070
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
681 _copyToJdk(dist.sourcesPath, jdkDir) |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
682 if deployableDist.usesJVMCIClassLoader: |
21070
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
683 # deploy service files |
21562 | 684 _updateJVMCIFiles(jdkDir) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
685 |
21613
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
686 def _getJdkDeployedJars(jdkDir): |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
687 """ |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
688 Gets jar paths for all deployed distributions in the context of |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
689 a given JDK directory. |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
690 """ |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
691 jreLibDir = join(jdkDir, 'jre', 'lib') |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
692 jars = [] |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
693 for dist in _jdkDeployedDists: |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
694 jar = basename(mx.distribution(dist.name).path) |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
695 if dist.isExtension: |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
696 jars.append(join(jreLibDir, 'ext', jar)) |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
697 elif dist.usesJVMCIClassLoader: |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
698 jars.append(join(jreLibDir, 'jvmci', jar)) |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
699 else: |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
700 jars.append(join(jreLibDir, jar)) |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
701 return jars |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
702 |
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
703 |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
704 # 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
|
705 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
|
706 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
|
707 respondTo = {} |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
708 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
|
709 startToken = 'RUNINDEBUGSHELL_STARTSEQUENCE' |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
710 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
|
711 |
4252
67e88b7624d5
Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents:
4247
diff
changeset
|
712 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
|
713 |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17224
diff
changeset
|
714 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
|
715 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
|
716 |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17224
diff
changeset
|
717 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
|
718 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
|
719 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
|
720 |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17224
diff
changeset
|
721 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
|
722 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
|
723 stdout = p.stdout |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4257
diff
changeset
|
724 stdin = p.stdin |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
725 if logFile: |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
726 log = open(logFile, 'w') |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
727 ret = False |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
728 |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
729 def _writeProcess(s): |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
730 stdin.write(s + newLine) |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
731 |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
732 _writeProcess("echo " + startToken) |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
733 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
|
734 # 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
|
735 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
|
736 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
|
737 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
|
738 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
|
739 |
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
|
740 line = stdout.readline().decode(encoding) |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
741 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
|
742 log.write(line.encode('utf-8')) |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
743 line = line.strip() |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
744 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
|
745 if line == startToken: |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
746 _writeProcess('cd /D ' + workingDir + ' & ' + cmd + ' & echo ' + endToken) |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
747 for regex in respondTo.keys(): |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
748 match = regex.search(line) |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
749 if match: |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
750 _writeProcess(respondTo[regex]) |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
751 if findInOutput: |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
752 match = findInOutput.search(line) |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
753 if match: |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
754 ret = True |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
755 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
|
756 if not findInOutput: |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
757 _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
|
758 else: |
87fc13b59258
Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5649
diff
changeset
|
759 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
|
760 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
|
761 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
|
762 ret = True |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
763 break |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
764 _writeProcess("exit") |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
765 if logFile: |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
766 log.close() |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
767 return ret |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
768 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11534
diff
changeset
|
769 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
|
770 """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
|
771 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
|
772 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11534
diff
changeset
|
773 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
|
774 """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
|
775 print jdkhome(vm) |
5103
276e14614531
Added jdkhome command to mx.
Doug Simon <doug.simon@oracle.com>
parents:
5094
diff
changeset
|
776 |
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
|
777 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
|
778 """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
|
779 |
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
|
780 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
|
781 '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
|
782 '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
|
783 '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
|
784 '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
|
785 '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
|
786 } |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
787 |
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
|
788 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
|
789 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
|
790 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
|
791 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
|
792 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
|
793 |
9120
9f361c0f912b
added note about mx/env to the output of 'mx buildvars'
Doug Simon <doug.simon@oracle.com>
parents:
9119
diff
changeset
|
794 mx.log('') |
9f361c0f912b
added note about mx/env to the output of 'mx buildvars'
Doug Simon <doug.simon@oracle.com>
parents:
9119
diff
changeset
|
795 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
|
796 |
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
|
797 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
|
798 |
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
|
799 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
|
800 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
|
801 |
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
|
802 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
|
803 # 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
|
804 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
|
805 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
|
806 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
|
807 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
|
808 # 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
|
809 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
|
810 |
16862
bf499b4d86e9
mx: fix release tag detection for -dev suffix
Bernhard Urban <bernhard.urban@jku.at>
parents:
16858
diff
changeset
|
811 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
|
812 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
|
813 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
|
814 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
|
815 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
|
816 |
16862
bf499b4d86e9
mx: fix release tag detection for -dev suffix
Bernhard Urban <bernhard.urban@jku.at>
parents:
16858
diff
changeset
|
817 # 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
|
818 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
|
819 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
|
820 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
|
821 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
|
822 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
|
823 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
|
824 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
|
825 |
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
|
826 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
|
827 |
4577
bc8b58c11768
Added debug build of HotSpot Client to the gate.
Doug Simon <doug.simon@oracle.com>
parents:
4575
diff
changeset
|
828 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
|
829 """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
|
830 |
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
|
831 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
|
832 |
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
|
833 # 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
|
834 # 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
|
835 # 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
|
836 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
|
837 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
|
838 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
|
839 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
|
840 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
|
841 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
|
842 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
|
843 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
|
844 ' 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
|
845 return result |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
846 |
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
847 # 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
|
848 parser = AP() |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
849 parser.add_argument('--export-dir', help='directory to which JVMCI and Graal jars and jvmci.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
|
850 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
|
851 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
|
852 assert len(opts2.remainder) == 0 |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
853 |
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
|
854 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
|
855 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
|
856 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
|
857 else: |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18613
diff
changeset
|
858 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
|
859 |
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
|
860 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
|
861 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
|
862 defs = fp.read() |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
863 jvmciJars = [] |
21613
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
864 jdkJars = [] |
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
|
865 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
|
866 dist = mx.distribution(jdkDist.name) |
21613
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
867 jdkJars.append(join(_graal_home, 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
|
868 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
|
869 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
|
870 defLine = 'EXPORT_LIST += $(EXPORT_JRE_LIB_EXT_DIR)/' + basename(dist.path) |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
871 elif jdkDist.usesJVMCIClassLoader: |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
872 defLine = 'EXPORT_LIST += $(EXPORT_JRE_LIB_JVMCI_DIR)/' + basename(dist.path) |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
873 jvmciJars.append(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
|
874 else: |
b03a16cc5245
add support for installing distribution jars into jre/lib/ext directory
Doug Simon <doug.simon@oracle.com>
parents:
16902
diff
changeset
|
875 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
|
876 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
|
877 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
|
878 shutil.copy(dist.path, opts2.export_dir) |
21613
60154926b513
replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents:
21607
diff
changeset
|
879 services, optionsFiles = _extractJVMCIFiles(jdkJars, jvmciJars, join(opts2.export_dir, 'services'), join(opts2.export_dir, 'options')) |
21099
3f51d02e536f
Make should export graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21098
diff
changeset
|
880 for service in services: |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
881 defLine = 'EXPORT_LIST += $(EXPORT_JRE_LIB_JVMCI_SERVICES_DIR)/' + service |
21099
3f51d02e536f
Make should export graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21098
diff
changeset
|
882 if defLine not in defs: |
3f51d02e536f
Make should export graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21098
diff
changeset
|
883 mx.abort('Missing following line in ' + defsPath + ' for service from ' + dist.name + '\n' + defLine) |
21518
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
884 for optionsFile in optionsFiles: |
21562 | 885 defLine = 'EXPORT_LIST += $(EXPORT_JRE_LIB_JVMCI_OPTIONS_DIR)/' + optionsFile |
21518
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
886 if defLine not in defs: |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
887 mx.abort('Missing following line in ' + defsPath + ' for options from ' + dist.name + '\n' + defLine) |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
888 jvmciOptions = join(_graal_home, 'jvmci.options') |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
889 if exists(jvmciOptions): |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
890 shutil.copy(jvmciOptions, 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
|
891 |
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
|
892 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
|
893 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
|
894 |
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
|
895 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
|
896 |
18414
df8d52aba789
fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents:
18351
diff
changeset
|
897 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
|
898 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
|
899 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
|
900 return |
df8d52aba789
fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents:
18351
diff
changeset
|
901 if build not in _vmbuildChoices: |
df8d52aba789
fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents:
18351
diff
changeset
|
902 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
|
903 str(_vmbuildChoices) + ')') |
df8d52aba789
fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents:
18351
diff
changeset
|
904 builds = [build] |
df8d52aba789
fixed support for IDE_BUILD_TARGET
Doug Simon <doug.simon@oracle.com>
parents:
18351
diff
changeset
|
905 |
4577
bc8b58c11768
Added debug build of HotSpot Client to the gate.
Doug Simon <doug.simon@oracle.com>
parents:
4575
diff
changeset
|
906 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
|
907 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
|
908 |
9117
cbfcb1054619
renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents:
9116
diff
changeset
|
909 if vm == 'original': |
cbfcb1054619
renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents:
9116
diff
changeset
|
910 pass |
cbfcb1054619
renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents:
9116
diff
changeset
|
911 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
|
912 buildSuffix = '' |
9095
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
913 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
|
914 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
|
915 else: |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
916 assert vm == 'jvmci', vm |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
917 buildSuffix = 'jvmci' |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
918 |
11530
be9e54fbb699
Use a better warning message for building with --installed-jdks set
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11526
diff
changeset
|
919 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
|
920 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
|
921 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
|
922 |
17318
c75bb9cd1994
mx: force installation of distrubtion on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
17317
diff
changeset
|
923 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
|
924 for build in builds: |
17318
c75bb9cd1994
mx: force installation of distrubtion on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
17317
diff
changeset
|
925 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
|
926 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
|
927 |
9117
cbfcb1054619
renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents:
9116
diff
changeset
|
928 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
|
929 if build != 'product': |
9117
cbfcb1054619
renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents:
9116
diff
changeset
|
930 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
|
931 continue |
14605 | 932 |
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
|
933 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
|
934 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
|
935 continue |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
936 |
4607
ee87cfe2f8f9
Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents:
4602
diff
changeset
|
937 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
|
938 if not exists(vmDir): |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
939 chmodRecursive(jdk, JDK_UNIX_PERMISSIONS_DIR) |
14780
aaecb0ca0c7d
fixed hard coded reference to JDK7
Doug Simon <doug.simon@oracle.com>
parents:
14777
diff
changeset
|
940 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
|
941 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
|
942 |
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
|
943 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
|
944 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
|
945 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
|
946 |
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
|
947 # 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
|
948 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
|
949 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
|
950 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
|
951 else: |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
952 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
|
953 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
|
954 sources = [] |
21554
b1530a6cce8c
renamed com.oracle.graal.[debug|options|hotspotvmconfig]* modules to com.oracle.jvmci.[debug|options|hotspotvmconfig]* modules (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
955 for d in ['src', 'make', join('graal', 'com.oracle.jvmci.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
|
956 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
|
957 # 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
|
958 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
|
959 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
|
960 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
|
961 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
|
962 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
|
963 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
|
964 break |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
965 |
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
|
966 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
|
967 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
|
968 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
|
969 |
17318
c75bb9cd1994
mx: force installation of distrubtion on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
17317
diff
changeset
|
970 if isWindows: |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17224
diff
changeset
|
971 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
|
972 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
|
973 |
4572
76841bdd5f3e
(Windows) Add Graal build configurations (with GRAAL defined) and fix build command.
Andreas Woess <andreas.woess@jku.at>
parents:
4559
diff
changeset
|
974 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
|
975 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
|
976 t_graal_home = mx._cygpathU2W(_graal_home) |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
977 _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
|
978 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
|
979 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
|
980 winCompileSuccess = re.compile(r"^Writing \.vcxproj file:") |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
981 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
|
982 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
|
983 return |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
984 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
|
985 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
|
986 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
|
987 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
|
988 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
|
989 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
|
990 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
|
991 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
|
992 |
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
|
993 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
|
994 |
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
|
995 # 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
|
996 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
|
997 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
|
998 |
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
|
999 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
|
1000 """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
|
1001 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
|
1002 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
|
1003 """ |
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
|
1004 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
|
1005 |
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
|
1006 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
|
1007 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
|
1008 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
|
1009 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
|
1010 |
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
|
1011 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
|
1012 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
|
1013 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
|
1014 |
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
|
1015 setMakeVar('MAKE_VERBOSE', 'y' if mx._opts.verbose else '') |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1016 if vm.endswith('nojvmci'): |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1017 setMakeVar('INCLUDE_JVMCI', 'false') |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1018 setMakeVar('ALT_OUTPUTDIR', join(_graal_home, 'build-nojvmci', 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
|
1019 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
|
1020 version = graal_version() |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1021 setMakeVar('USER_RELEASE_SUFFIX', 'jvmci-' + version) |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1022 setMakeVar('INCLUDE_JVMCI', 'true') |
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
|
1023 setMakeVar('INSTALL', 'y', env=env) |
17310
f0364a8ec40e
force USE_CLANG when building on MacOS
Doug Simon <doug.simon@oracle.com>
parents:
17262
diff
changeset
|
1024 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
|
1025 # Force use of clang on MacOS |
f0364a8ec40e
force USE_CLANG when building on MacOS
Doug Simon <doug.simon@oracle.com>
parents:
17262
diff
changeset
|
1026 setMakeVar('USE_CLANG', 'true') |
13967
4cd7c6629841
mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
1027 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
|
1028 # 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
|
1029 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
|
1030 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
|
1031 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
|
1032 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
|
1033 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
|
1034 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
|
1035 # 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
|
1036 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
|
1037 # 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
|
1038 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
|
1039 |
19726
3f7cd3c36734
mx_graal: do not clear LD_LIBRARY_PATH before invoking make
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19684
diff
changeset
|
1040 # Clear this variable as having it set can cause very confusing build problems |
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
|
1041 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
|
1042 |
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
|
1043 # 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
|
1044 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
|
1045 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
|
1046 |
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
|
1047 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
|
1048 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
|
1049 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
|
1050 |
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
|
1051 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
|
1052 |
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
|
1053 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
|
1054 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
|
1055 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
|
1056 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
|
1057 |
5680
87fc13b59258
Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5649
diff
changeset
|
1058 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
|
1059 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
|
1060 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
|
1061 |
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
|
1062 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
|
1063 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
|
1064 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
|
1065 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
|
1066 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
|
1067 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
|
1068 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
|
1069 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
|
1070 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
|
1071 |
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
|
1072 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
|
1073 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
|
1074 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
|
1075 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
|
1076 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
|
1077 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
|
1078 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
|
1079 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
|
1080 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
|
1081 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
|
1082 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
|
1083 f.write(vmKnown) |
21580
a004616f72e5
added support for '--vm graal' to mx as an alias for '--vm jvmci'
Doug Simon <doug.simon@oracle.com>
parents:
21578
diff
changeset
|
1084 if vm == 'jvmci': |
a004616f72e5
added support for '--vm graal' to mx as an alias for '--vm jvmci'
Doug Simon <doug.simon@oracle.com>
parents:
21578
diff
changeset
|
1085 # Legacy support |
a004616f72e5
added support for '--vm graal' to mx as an alias for '--vm jvmci'
Doug Simon <doug.simon@oracle.com>
parents:
21578
diff
changeset
|
1086 f.write('-graal ALIASED_TO -jvmci\n') |
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
|
1087 |
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
|
1088 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
|
1089 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
|
1090 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
|
1091 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
|
1092 |
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
|
1093 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
|
1094 """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
|
1095 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
|
1096 |
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
|
1097 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
|
1098 """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
|
1099 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
|
1100 |
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
|
1101 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
|
1102 """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
|
1103 |
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
|
1104 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
|
1105 vm = _get_vm() |
14164 | 1106 |
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
|
1107 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
|
1108 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
|
1109 |
10454
590b0c26877f
mx: add --workdir argument
Bernhard Urban <bernhard.urban@jku.at>
parents:
10417
diff
changeset
|
1110 if cwd is None: |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
1111 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
|
1112 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
|
1113 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
|
1114 |
17055
3e4d3be0b6bf
mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
17052
diff
changeset
|
1115 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
|
1116 jdk = _jdk(build, vmToCheck=vm, installJars=False) |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1117 _updateInstalledJVMCIOptionsFile(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
|
1118 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
|
1119 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
|
1120 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
|
1121 if _jacoco == 'on' or _jacoco == 'append': |
4684
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
1122 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
|
1123 # 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
|
1124 |
21554
b1530a6cce8c
renamed com.oracle.graal.[debug|options|hotspotvmconfig]* modules to com.oracle.jvmci.[debug|options|hotspotvmconfig]* modules (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
1125 includes = ['com.oracle.graal.*', 'com.oracle.jvmci.*'] |
18888
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
1126 baseExcludes = [] |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
1127 for p in mx.projects(): |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
1128 projsetting = getattr(p, 'jacoco', '') |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
1129 if projsetting == 'exclude': |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
1130 baseExcludes.append(p.name) |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
1131 if projsetting == 'include': |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
1132 includes.append(p.name + '.*') |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
1133 |
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
|
1134 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
|
1135 # 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
|
1136 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
|
1137 excludes = [] |
5366
67e63e8dcbd2
build JaCoCo exclude list by scanning for snippets
Doug Simon <doug.simon@oracle.com>
parents:
5295
diff
changeset
|
1138 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
|
1139 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
|
1140 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
|
1141 |
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
|
1142 excludes += [package + '.*' for package in baseExcludes] |
4684
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
1143 agentOptions = { |
5024
7ccdae96e98a
Allow JaCoCon to append to the execution file
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5016
diff
changeset
|
1144 'append' : 'true' if _jacoco == 'append' else 'false', |
4684
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
1145 '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
|
1146 'includes' : ':'.join(includes), |
5878
191e08da4de4
Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5877
diff
changeset
|
1147 'excludes' : ':'.join(excludes), |
191e08da4de4
Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5877
diff
changeset
|
1148 'destfile' : 'jacoco.exec' |
4684
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
1149 } |
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
1150 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
|
1151 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
|
1152 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
|
1153 |
9667
1ef7b26e9177
mx/commands.py: warn about arguments after '-version' when launching the vm
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
9639
diff
changeset
|
1154 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
|
1155 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
|
1156 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
|
1157 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
|
1158 |
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
|
1159 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
|
1160 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
|
1161 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
|
1162 |
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
|
1163 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
|
1164 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
|
1165 |
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
|
1166 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
|
1167 (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
|
1168 return mx.run(pfx_ + [exe_, '-' + vm_] + args_, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd, timeout=timeout) |
3718 | 1169 |
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
|
1170 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
|
1171 """ |
5482
9f4783c0269e
folded -G:+CheckcastCounters functionality into checkcast snippets
Doug Simon <doug.simon@oracle.com>
parents:
5438
diff
changeset
|
1172 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
|
1173 (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
|
1174 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
|
1175 """ |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1176 |
13967
4cd7c6629841
mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
1177 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
|
1178 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
|
1179 |
14744
bf51a92a1bdd
Add new optional method parameter
Christian Wimmer <christian.wimmer@oracle.com>
parents:
14720
diff
changeset
|
1180 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
|
1181 """ |
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
|
1182 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
|
1183 """ |
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
|
1184 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
|
1185 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
|
1186 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
|
1187 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
|
1188 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
|
1189 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
|
1190 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
|
1191 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
|
1192 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
|
1193 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
|
1194 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
|
1195 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
|
1196 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
|
1197 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
|
1198 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
|
1199 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
|
1200 |
14744
bf51a92a1bdd
Add new optional method parameter
Christian Wimmer <christian.wimmer@oracle.com>
parents:
14720
diff
changeset
|
1201 if defaultAllVMArgs: |
bf51a92a1bdd
Add new optional method parameter
Christian Wimmer <christian.wimmer@oracle.com>
parents:
14720
diff
changeset
|
1202 return args, [] |
bf51a92a1bdd
Add new optional method parameter
Christian Wimmer <christian.wimmer@oracle.com>
parents:
14720
diff
changeset
|
1203 else: |
bf51a92a1bdd
Add new optional method parameter
Christian Wimmer <christian.wimmer@oracle.com>
parents:
14720
diff
changeset
|
1204 return [], args |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1205 |
16979
e9ff3e7055e5
mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents:
16976
diff
changeset
|
1206 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
|
1207 |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1208 |
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
|
1209 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
|
1210 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
|
1211 if t.startswith('-'): |
11403 | 1212 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
|
1213 |
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
|
1214 candidates = {} |
11777
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11758
diff
changeset
|
1215 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
|
1216 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
|
1217 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
|
1218 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
|
1219 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
|
1220 |
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
|
1221 classes = [] |
10608
eeb80dcd60d8
fixed regression in unittest command when no tests are specified
Doug Simon <doug.simon@oracle.com>
parents:
10606
diff
changeset
|
1222 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
|
1223 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
|
1224 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
|
1225 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
|
1226 projs = set() |
18237
6924bb0badc9
mx: set initial value for flag
Bernhard Urban <bernhard.urban@jku.at>
parents:
18224
diff
changeset
|
1227 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
|
1228 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
|
1229 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
|
1230 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
|
1231 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
|
1232 t, method = words |
18237
6924bb0badc9
mx: set initial value for flag
Bernhard Urban <bernhard.urban@jku.at>
parents:
18224
diff
changeset
|
1233 |
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
|
1234 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
|
1235 # 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
|
1236 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
|
1237 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
|
1238 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
|
1239 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
|
1240 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
|
1241 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
|
1242 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
|
1243 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
|
1244 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
|
1245 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
|
1246 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
|
1247 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
|
1248 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
|
1249 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
|
1250 |
b56e88144e0a
prefer exact class matches when searching for unit tests with method name
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18711
diff
changeset
|
1251 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
|
1252 else: |
31e242cad4d1
Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16381
diff
changeset
|
1253 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
|
1254 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
|
1255 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
|
1256 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
|
1257 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
|
1258 found = True |
31e242cad4d1
Allow mx unittest to run single test method from a class
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16381
diff
changeset
|
1259 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
|
1260 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
|
1261 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
|
1262 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
|
1263 projectsCp = mx.classpath(projs) |
8343
a3c30d467f96
unittest: just do a single JVM call
Bernhard Urban <bernhard.urban@jku.at>
parents:
8340
diff
changeset
|
1264 |
16979
e9ff3e7055e5
mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents:
16976
diff
changeset
|
1265 if blacklist: |
e9ff3e7055e5
mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents:
16976
diff
changeset
|
1266 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
|
1267 |
15114
2082889fc8f6
mx: add unittest option --baseline-whitelist.
Josef Eisl <josef.eisl@jku.at>
parents:
15113
diff
changeset
|
1268 if whitelist: |
15328
d89ed48ae349
mx: use generators
Bernhard Urban <bernhard.urban@jku.at>
parents:
15327
diff
changeset
|
1269 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
|
1270 |
15555
8c19ffc672fd
mx unittest: add support for regular expressions.
Josef Eisl <josef.eisl@jku.at>
parents:
15506
diff
changeset
|
1271 if regex: |
8c19ffc672fd
mx unittest: add support for regular expressions.
Josef Eisl <josef.eisl@jku.at>
parents:
15506
diff
changeset
|
1272 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
|
1273 |
8343
a3c30d467f96
unittest: just do a single JVM call
Bernhard Urban <bernhard.urban@jku.at>
parents:
8340
diff
changeset
|
1274 if len(classes) != 0: |
8406
2bfb9644dcc2
unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents:
8343
diff
changeset
|
1275 f_testfile = open(testfile, 'w') |
2bfb9644dcc2
unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents:
8343
diff
changeset
|
1276 for c in classes: |
2bfb9644dcc2
unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents:
8343
diff
changeset
|
1277 f_testfile.write(c + '\n') |
2bfb9644dcc2
unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents:
8343
diff
changeset
|
1278 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
|
1279 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
|
1280 |
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
|
1281 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
|
1282 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
|
1283 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
|
1284 (_, 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
|
1285 os.close(_) |
18351 | 1286 |
18346
ddd7829c45b1
made HotSpotCodeCacheProvider attempt to load and use the hcfdis tool
Doug Simon <doug.simon@oracle.com>
parents:
18327
diff
changeset
|
1287 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
|
1288 |
15503 | 1289 coreArgs = [] |
1290 if verbose: | |
1291 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
|
1292 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
|
1293 coreArgs.append('-JUnitFailFast') |
15503 | 1294 if enable_timing: |
1295 coreArgs.append('-JUnitEnableTiming') | |
15655
ec29b2d3bdb4
mx unittest: add color support.
Josef Eisl <josef.eisl@jku.at>
parents:
15638
diff
changeset
|
1296 if color: |
ec29b2d3bdb4
mx unittest: add color support.
Josef Eisl <josef.eisl@jku.at>
parents:
15638
diff
changeset
|
1297 coreArgs.append('-JUnitColor') |
15656
fcf6e5683082
mx unittest: add --eager-stacktrace.
Josef Eisl <josef.eisl@jku.at>
parents:
15655
diff
changeset
|
1298 if eager_stacktrace: |
fcf6e5683082
mx unittest: add --eager-stacktrace.
Josef Eisl <josef.eisl@jku.at>
parents:
15655
diff
changeset
|
1299 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
|
1300 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
|
1301 coreArgs.append('-JUnitGCAfterTest') |
8406
2bfb9644dcc2
unittest: call wrapper to avoid long command lines
Bernhard Urban <bernhard.urban@jku.at>
parents:
8343
diff
changeset
|
1302 |
15575
cb2f3c49deb2
mx unittest: compile junitwrapper with right classpath
Bernhard Urban <bernhard.urban@jku.at>
parents:
15555
diff
changeset
|
1303 |
16393
380290b81eb0
mx: converted class path variables to camel case for better readability
Doug Simon <doug.simon@oracle.com>
parents:
16388
diff
changeset
|
1304 def harness(projectsCp, vmArgs): |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1305 if _get_vm() != 'jvmci': |
8440
2d0160c35f8f
Fix unittest on server0.
Roland Schatz <roland.schatz@oracle.com>
parents:
8433
diff
changeset
|
1306 prefixArgs = ['-esa', '-ea'] |
2d0160c35f8f
Fix unittest on server0.
Roland Schatz <roland.schatz@oracle.com>
parents:
8433
diff
changeset
|
1307 else: |
21632
abcb811659e0
mx: use BootstrapJVMCI rather than BootstrapGraal
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21615
diff
changeset
|
1308 prefixArgs = ['-XX:-BootstrapJVMCI', '-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
|
1309 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
|
1310 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
|
1311 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
|
1312 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
|
1313 |
ad431bf0de07
added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents:
16394
diff
changeset
|
1314 # 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
|
1315 # 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
|
1316 # 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
|
1317 cp = prefixCp + coreCp + os.pathsep + projectsCp |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1318 if isJVMCIEnabled(_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
|
1319 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
|
1320 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
|
1321 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
|
1322 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
|
1323 cp = os.pathsep.join([e for e in cp.split(os.pathsep) if e not in excluded]) |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1324 vmArgs = ['-XX:-UseJVMCIClassLoader'] + 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
|
1325 |
18224
bfa20550f0a8
Suppress menubar for GraalJUnitCore on Mac
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18218
diff
changeset
|
1326 # 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
|
1327 vmArgs = ['-Djava.awt.headless=true'] + vmArgs |
bfa20550f0a8
Suppress menubar for GraalJUnitCore on Mac
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18218
diff
changeset
|
1328 |
11227
bd0e589a9a65
avoid use of JUnitWrapper when exactly one test is being executed
Doug Simon <doug.simon@oracle.com>
parents:
11179
diff
changeset
|
1329 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
|
1330 # 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
|
1331 # 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
|
1332 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
|
1333 else: |
18116
c4f649042a7b
mx/unittest: fix cygwin path issue
Bernhard Urban <bernhard.urban@jku.at>
parents:
18115
diff
changeset
|
1334 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
|
1335 |
8433
87346100d7a5
temporary file is removed when unittests fail
Doug Simon <doug.simon@oracle.com>
parents:
8406
diff
changeset
|
1336 try: |
16979
e9ff3e7055e5
mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents:
16976
diff
changeset
|
1337 _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
|
1338 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
|
1339 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
|
1340 os.remove(testfile) |
8340
d9d883aeb96f
unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents:
8317
diff
changeset
|
1341 |
9598
0fc67e300471
better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents:
9343
diff
changeset
|
1342 _unittestHelpSuffix = """ |
15113 | 1343 Unittest options: |
1344 | |
16979
e9ff3e7055e5
mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents:
16976
diff
changeset
|
1345 --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
|
1346 --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
|
1347 in the given whitelist |
15502
a26be2c9b81b
Add command line support for JUnit.
Josef Eisl <josef.eisl@jku.at>
parents:
15500
diff
changeset
|
1348 --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
|
1349 --fail-fast stop after first JUnit test class that has a failure |
15503 | 1350 --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
|
1351 --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
|
1352 --color enable colors output |
15656
fcf6e5683082
mx unittest: add --eager-stacktrace.
Josef Eisl <josef.eisl@jku.at>
parents:
15655
diff
changeset
|
1353 --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
|
1354 --gc-after-test force a GC after each test |
15113 | 1355 |
1356 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
|
1357 |
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
|
1358 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
|
1359 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
|
1360 |
9598
0fc67e300471
better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents:
9343
diff
changeset
|
1361 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
|
1362 |
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
|
1363 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
|
1364 |
9598
0fc67e300471
better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents:
9343
diff
changeset
|
1365 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
|
1366 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
|
1367 |
9598
0fc67e300471
better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents:
9343
diff
changeset
|
1368 -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
|
1369 |
0fc67e300471
better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents:
9343
diff
changeset
|
1370 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
|
1371 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
|
1372 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
|
1373 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
|
1374 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
|
1375 (unlike the temporary file otherwise used). |
0fc67e300471
better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents:
9343
diff
changeset
|
1376 |
0fc67e300471
better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents:
9343
diff
changeset
|
1377 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
|
1378 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
|
1379 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
|
1380 """ |
9598
0fc67e300471
better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents:
9343
diff
changeset
|
1381 |
0fc67e300471
better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents:
9343
diff
changeset
|
1382 def unittest(args): |
0fc67e300471
better help message for the unittest commands
Doug Simon <doug.simon@oracle.com>
parents:
9343
diff
changeset
|
1383 """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
|
1384 |
15113 | 1385 parser = ArgumentParser(prog='mx unittest', |
1386 description='run the JUnit tests', | |
1387 add_help=False, | |
1388 formatter_class=RawDescriptionHelpFormatter, | |
1389 epilog=_unittestHelpSuffix, | |
1390 ) | |
16979
e9ff3e7055e5
mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents:
16976
diff
changeset
|
1391 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
|
1392 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
|
1393 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
|
1394 parser.add_argument('--fail-fast', help='stop after first JUnit test class that has a failure', action='store_true') |
15503 | 1395 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
|
1396 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
|
1397 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
|
1398 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
|
1399 parser.add_argument('--gc-after-test', help='force a GC after each test', action='store_true') |
15113 | 1400 |
1401 ut_args = [] | |
1402 delimiter = False | |
1403 # check for delimiter | |
1404 while len(args) > 0: | |
1405 arg = args.pop(0) | |
1406 if arg == '--': | |
1407 delimiter = True | |
1408 break | |
1409 ut_args.append(arg) | |
1410 | |
1411 if delimiter: | |
1412 # all arguments before '--' must be recognized | |
1413 parsed_args = parser.parse_args(ut_args) | |
1414 else: | |
1415 # parse all know arguments | |
15197
06bfcf5f941d
mx: improve unittest options parsing.
Josef Eisl <josef.eisl@jku.at>
parents:
15178
diff
changeset
|
1416 parsed_args, args = parser.parse_known_args(ut_args) |
15113 | 1417 |
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
|
1418 if parsed_args.whitelist: |
15114
2082889fc8f6
mx: add unittest option --baseline-whitelist.
Josef Eisl <josef.eisl@jku.at>
parents:
15113
diff
changeset
|
1419 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
|
1420 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
|
1421 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
|
1422 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
|
1423 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
|
1424 if parsed_args.blacklist: |
e9ff3e7055e5
mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents:
16976
diff
changeset
|
1425 try: |
e9ff3e7055e5
mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents:
16976
diff
changeset
|
1426 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
|
1427 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
|
1428 except IOError: |
e9ff3e7055e5
mx: add unittest --blacklist.
Josef Eisl <josef.eisl@jku.at>
parents:
16976
diff
changeset
|
1429 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
|
1430 |
15657
50740bac9679
mx unittest: simplify argument passing.
Josef Eisl <josef.eisl@jku.at>
parents:
15656
diff
changeset
|
1431 _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
|
1432 |
d9d883aeb96f
unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents:
8317
diff
changeset
|
1433 def shortunittest(args): |
15324
5b5f47104c0d
mx: add whitelist for shortunittest
Bernhard Urban <bernhard.urban@jku.at>
parents:
15323
diff
changeset
|
1434 """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
|
1435 |
15324
5b5f47104c0d
mx: add whitelist for shortunittest
Bernhard Urban <bernhard.urban@jku.at>
parents:
15323
diff
changeset
|
1436 args = ['--whitelist', 'test/whitelist_shortunittest.txt'] + args |
15113 | 1437 unittest(args) |
8340
d9d883aeb96f
unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents:
8317
diff
changeset
|
1438 |
18891
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1439 def microbench(args): |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1440 """run JMH microbenchmark projects""" |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1441 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
|
1442 |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1443 # 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
|
1444 containsF = False |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1445 forking = True |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1446 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
|
1447 arg = jmhArgs[i] |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1448 if arg.startswith('-f'): |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1449 containsF = True |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1450 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
|
1451 arg += jmhArgs[i+1] |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1452 try: |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1453 if int(arg[2:]) == 0: |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1454 forking = False |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1455 except ValueError: |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1456 pass |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1457 |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1458 # 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
|
1459 if not containsF: |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1460 jmhArgs += ['-f1'] |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1461 |
19044 | 1462 # find all projects with a direct JMH dependency |
18891
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1463 jmhProjects = [] |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1464 for p in mx.projects(): |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1465 if 'JMH' in p.deps: |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1466 jmhProjects.append(p.name) |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1467 cp = mx.classpath(jmhProjects) |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1468 |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1469 # execute JMH runner |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1470 args = ['-cp', cp] |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1471 if not forking: |
18931
926488f5d345
mx: fix duplicate arguments for microbench
Roland Schatz <roland.schatz@oracle.com>
parents:
18891
diff
changeset
|
1472 args += vmArgs |
18891
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1473 args += ['org.openjdk.jmh.Main'] |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1474 if forking: |
18931
926488f5d345
mx: fix duplicate arguments for microbench
Roland Schatz <roland.schatz@oracle.com>
parents:
18891
diff
changeset
|
1475 (_, _, jvm, _, _) = _parseVmArgs(vmArgs) |
926488f5d345
mx: fix duplicate arguments for microbench
Roland Schatz <roland.schatz@oracle.com>
parents:
18891
diff
changeset
|
1476 args += ['--jvmArgsPrepend', ' '.join(['-' + jvm] + vmArgs)] |
18891
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1477 vm(args + jmhArgs) |
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18888
diff
changeset
|
1478 |
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
|
1479 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
|
1480 """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
|
1481 |
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
|
1482 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
|
1483 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
|
1484 |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1485 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
|
1486 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
|
1487 parser.add_argument('--builds', help='a comma separated list of build types (default: ' + vmbuildsDefault + ')', metavar='<args>', default=vmbuildsDefault) |
21043
5ea65fe64368
Check distributions overlap in gate
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21040
diff
changeset
|
1488 parser.add_argument('--check-distributions', action='store_true', dest='check_distributions', help='check built distributions for overlap') |
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
|
1489 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
|
1490 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
|
1491 |
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
|
1492 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
|
1493 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
|
1494 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
|
1495 |
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
|
1496 allStart = time.time() |
21043
5ea65fe64368
Check distributions overlap in gate
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21040
diff
changeset
|
1497 check_dists_args = ['--check-distributions'] if args.check_distributions else [] |
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
|
1498 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
|
1499 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
|
1500 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
|
1501 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
|
1502 |
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
|
1503 for vmbuild in builds: |
9117
cbfcb1054619
renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents:
9116
diff
changeset
|
1504 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
|
1505 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
|
1506 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
|
1507 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
|
1508 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
|
1509 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
|
1510 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
|
1511 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
|
1512 # Run as subprocess so that output can be directed to a file |
21043
5ea65fe64368
Check distributions overlap in gate
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21040
diff
changeset
|
1513 cmd = [sys.executable, '-u', join('mxtool', 'mx.py')] + verbose + ['--vm', v, '--vmbuild', vmbuild, 'build'] + check_dists_args |
17317
f434913f9cba
mx: buildvms should inherit verbosity
Bernhard Urban <bernhard.urban@jku.at>
parents:
17310
diff
changeset
|
1514 mx.logv("executing command: " + str(cmd)) |
f434913f9cba
mx: buildvms should inherit verbosity
Bernhard Urban <bernhard.urban@jku.at>
parents:
17310
diff
changeset
|
1515 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
|
1516 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
|
1517 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
|
1518 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
|
1519 with VM(v, vmbuild): |
21043
5ea65fe64368
Check distributions overlap in gate
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21040
diff
changeset
|
1520 build(check_dists_args) |
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
|
1521 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
|
1522 vmargs = ['-version'] |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1523 if v == 'jvmci': |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1524 vmargs.insert(0, '-XX:-BootstrapJVMCI') |
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
|
1525 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
|
1526 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
|
1527 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
|
1528 |
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
|
1529 class Task: |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1530 # None or a list of strings. If not None, only tasks whose title |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1531 # matches at least one of the substrings in this list will return |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1532 # a non-None value from __enter__. The body of a 'with Task(...) as t' |
20002 | 1533 # statement should check 't' and exit immediately if it is None. |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1534 filters = None |
21639
e65bf81961be
added -x option to gate command that makes --task-filter an exclusion filter
Doug Simon <doug.simon@oracle.com>
parents:
21635
diff
changeset
|
1535 filtersExclude = False |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1536 |
17438
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1537 def __init__(self, title, tasks=None): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1538 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
|
1539 self.title = title |
21639
e65bf81961be
added -x option to gate command that makes --task-filter an exclusion filter
Doug Simon <doug.simon@oracle.com>
parents:
21635
diff
changeset
|
1540 if tasks is not None and Task.filters is not None: |
e65bf81961be
added -x option to gate command that makes --task-filter an exclusion filter
Doug Simon <doug.simon@oracle.com>
parents:
21635
diff
changeset
|
1541 if Task.filtersExclude: |
e65bf81961be
added -x option to gate command that makes --task-filter an exclusion filter
Doug Simon <doug.simon@oracle.com>
parents:
21635
diff
changeset
|
1542 self.skipped = any([f in title for f in Task.filters]) |
e65bf81961be
added -x option to gate command that makes --task-filter an exclusion filter
Doug Simon <doug.simon@oracle.com>
parents:
21635
diff
changeset
|
1543 else: |
e65bf81961be
added -x option to gate command that makes --task-filter an exclusion filter
Doug Simon <doug.simon@oracle.com>
parents:
21635
diff
changeset
|
1544 self.skipped = not any([f in title for f in Task.filters]) |
e65bf81961be
added -x option to gate command that makes --task-filter an exclusion filter
Doug Simon <doug.simon@oracle.com>
parents:
21635
diff
changeset
|
1545 else: |
e65bf81961be
added -x option to gate command that makes --task-filter an exclusion filter
Doug Simon <doug.simon@oracle.com>
parents:
21635
diff
changeset
|
1546 self.skipped = False |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1547 if not self.skipped: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1548 self.start = time.time() |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1549 self.end = None |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1550 self.duration = None |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1551 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
|
1552 def __enter__(self): |
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1553 assert self.tasks is not None, "using Task with 'with' statement requires to pass the tasks list in the constructor" |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1554 if self.skipped: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1555 return None |
17438
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1556 return self |
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1557 def __exit__(self, exc_type, exc_value, traceback): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1558 if not self.skipped: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1559 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
|
1560 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
|
1561 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
|
1562 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
|
1563 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
|
1564 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
|
1565 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
|
1566 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
|
1567 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
|
1568 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
|
1569 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
|
1570 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
|
1571 |
17052
35fda668ed6e
mx: added ctw command to simplify executing CompileTheWorld
Doug Simon <doug.simon@oracle.com>
parents:
17015
diff
changeset
|
1572 def ctw(args): |
35fda668ed6e
mx: added ctw command to simplify executing CompileTheWorld
Doug Simon <doug.simon@oracle.com>
parents:
17015
diff
changeset
|
1573 """run CompileTheWorld""" |
17378
d42e11af980d
mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents:
17363
diff
changeset
|
1574 |
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
|
1575 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
|
1576 |
17378
d42e11af980d
mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents:
17363
diff
changeset
|
1577 parser = ArgumentParser(prog='mx ctw') |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1578 parser.add_argument('--ctwopts', action='store', help='space separated JVMCI options used for CTW compilations (default: --ctwopts="' + defaultCtwopts + '")', default=defaultCtwopts, metavar='<options>') |
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
|
1579 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
|
1580 |
d42e11af980d
mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents:
17363
diff
changeset
|
1581 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
|
1582 |
17378
d42e11af980d
mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents:
17363
diff
changeset
|
1583 if args.ctwopts: |
d42e11af980d
mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents:
17363
diff
changeset
|
1584 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
|
1585 |
17378
d42e11af980d
mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents:
17363
diff
changeset
|
1586 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
|
1587 jar = os.path.abspath(args.jar) |
17378
d42e11af980d
mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents:
17363
diff
changeset
|
1588 else: |
d42e11af980d
mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents:
17363
diff
changeset
|
1589 jar = join(_jdk(installJars=False), 'jre', 'lib', 'rt.jar') |
20967
f61ff7f01bc2
Add CompileTheWorldExcludeMethodFilter to CTW and remove sun.awt.X11 classes from default ctw mx target.
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
20922
diff
changeset
|
1590 vmargs.append('-G:CompileTheWorldExcludeMethodFilter=sun.awt.X11.*.*') |
17378
d42e11af980d
mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents:
17363
diff
changeset
|
1591 |
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
|
1592 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
|
1593 vm_ = _get_vm() |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1594 if isJVMCIEnabled(vm_): |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1595 if vm_ == 'jvmci': |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1596 vmargs += ['-XX:+BootstrapJVMCI'] |
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
|
1597 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
|
1598 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
|
1599 vmargs += ['-Xbootclasspath/p:' + jar] |
20020
af1e4c16b00f
suppress menubar and dock when running ctw on Mac
Doug Simon <doug.simon@oracle.com>
parents:
20012
diff
changeset
|
1600 |
20967
f61ff7f01bc2
Add CompileTheWorldExcludeMethodFilter to CTW and remove sun.awt.X11 classes from default ctw mx target.
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
20922
diff
changeset
|
1601 # suppress menubar and dock when running on Mac; exclude x11 classes as they may cause vm crashes (on Solaris) |
20020
af1e4c16b00f
suppress menubar and dock when running ctw on Mac
Doug Simon <doug.simon@oracle.com>
parents:
20012
diff
changeset
|
1602 vmargs = ['-Djava.awt.headless=true'] + vmargs |
af1e4c16b00f
suppress menubar and dock when running ctw on Mac
Doug Simon <doug.simon@oracle.com>
parents:
20012
diff
changeset
|
1603 |
17378
d42e11af980d
mx: simplified ctw command
Doug Simon <doug.simon@oracle.com>
parents:
17363
diff
changeset
|
1604 vm(vmargs) |
17052
35fda668ed6e
mx: added ctw command to simplify executing CompileTheWorld
Doug Simon <doug.simon@oracle.com>
parents:
17015
diff
changeset
|
1605 |
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
|
1606 def _basic_gate_body(args, tasks): |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1607 # Build server-hosted-jvmci now so we can run the unit tests |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1608 with Task('BuildHotSpotJVMCIHosted: product', tasks) as t: |
21043
5ea65fe64368
Check distributions overlap in gate
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21040
diff
changeset
|
1609 if t: buildvms(['--vms', 'server', '--builds', 'product', '--check-distributions']) |
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
|
1610 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1611 # Run unit tests on server-hosted-jvmci |
19168
32c7a5a88523
Run unit tests even earlier during gate
Doug Simon <doug.simon@oracle.com>
parents:
19160
diff
changeset
|
1612 with VM('server', 'product'): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1613 with Task('UnitTests:hosted-product', tasks) as t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1614 if t: unittest(['--enable-timing', '--verbose', '--fail-fast']) |
19160
d4f80cf249d0
Run unittest earlier during gate
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19044
diff
changeset
|
1615 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1616 # Run ctw against rt.jar on server-hosted-jvmci |
20032
4d119424b4ce
Add CTW of rt.jar to gate
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
20020
diff
changeset
|
1617 with VM('server', 'product'): |
4d119424b4ce
Add CTW of rt.jar to gate
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
20020
diff
changeset
|
1618 with Task('CTW:hosted-product', tasks) as t: |
4d119424b4ce
Add CTW of rt.jar to gate
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
20020
diff
changeset
|
1619 if t: ctw(['--ctwopts', '-Inline +ExitVMOnException', '-esa', '-G:+CompileTheWorldMultiThreaded', '-G:-CompileTheWorldVerbose']) |
4d119424b4ce
Add CTW of rt.jar to gate
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
20020
diff
changeset
|
1620 |
19168
32c7a5a88523
Run unit tests even earlier during gate
Doug Simon <doug.simon@oracle.com>
parents:
19160
diff
changeset
|
1621 # Build the other VM flavors |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1622 with Task('BuildHotSpotGraalOthers: fastdebug,product', tasks) as t: |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1623 if t: buildvms(['--vms', 'jvmci,server', '--builds', 'fastdebug,product', '--check-distributions']) |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1624 |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1625 with VM('jvmci', 'fastdebug'): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1626 with Task('BootstrapWithSystemAssertions:fastdebug', tasks) as t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1627 if t: 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
|
1628 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1629 with VM('jvmci', 'fastdebug'): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1630 with Task('BootstrapEconomyWithSystemAssertions:fastdebug', tasks) as t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1631 if t: vm(['-esa', '-XX:-TieredCompilation', '-G:CompilerConfiguration=economy', '-version']) |
19760
287f7c223d58
Add compiler configuration "economy".
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
19726
diff
changeset
|
1632 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1633 with VM('jvmci', 'fastdebug'): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1634 with Task('BootstrapWithSystemAssertionsNoCoop:fastdebug', tasks) as t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1635 if t: vm(['-esa', '-XX:-TieredCompilation', '-XX:-UseCompressedOops', '-version']) |
14123
dc41eab09fe8
gate: add non-tiered bootstrap
Bernhard Urban <bernhard.urban@jku.at>
parents:
14116
diff
changeset
|
1636 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1637 with VM('jvmci', 'fastdebug'): |
21059
59632bb8e4ad
Add bootstrap with invoke exception edges to gate.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
21043
diff
changeset
|
1638 with Task('BootstrapWithExceptionEdges:fastdebug', tasks) as t: |
59632bb8e4ad
Add bootstrap with invoke exception edges to gate.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
21043
diff
changeset
|
1639 if t: vm(['-esa', '-XX:-TieredCompilation', '-G:+StressInvokeWithExceptionNode', '-version']) |
59632bb8e4ad
Add bootstrap with invoke exception edges to gate.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
21043
diff
changeset
|
1640 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1641 with VM('jvmci', 'product'): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1642 with Task('BootstrapWithGCVerification:product', tasks) as t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1643 if t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1644 out = mx.DuplicateSuppressingStream(['VerifyAfterGC:', 'VerifyBeforeGC:']).write |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1645 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
|
1646 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1647 with VM('jvmci', 'product'): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1648 with Task('BootstrapWithG1GCVerification:product', tasks) as t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1649 if t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1650 out = mx.DuplicateSuppressingStream(['VerifyAfterGC:', 'VerifyBeforeGC:']).write |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1651 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
|
1652 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1653 with VM('jvmci', 'product'): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1654 with Task('BootstrapWithRegisterPressure:product', tasks) as t: |
20994 | 1655 if t: |
20992
0a4bbeae6e31
[SPARC] Configure registers right for register pressure in gate run
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
20967
diff
changeset
|
1656 registers = 'o0,o1,o2,o3,f8,f9,d32,d34' if platform.processor() == 'sparc' else 'rbx,r11,r10,r14,xmm3,xmm11,xmm14' |
0a4bbeae6e31
[SPARC] Configure registers right for register pressure in gate run
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
20967
diff
changeset
|
1657 vm(['-XX:-TieredCompilation', '-G:RegisterPressure=' + registers, '-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
|
1658 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1659 with VM('jvmci', 'product'): |
21447
f172a195a8a9
mx gate: bootstrap with -G:+SSA_LIR.
Josef Eisl <josef.eisl@jku.at>
parents:
21281
diff
changeset
|
1660 with Task('BootstrapSSAWithRegisterPressure:product', tasks) as t: |
f172a195a8a9
mx gate: bootstrap with -G:+SSA_LIR.
Josef Eisl <josef.eisl@jku.at>
parents:
21281
diff
changeset
|
1661 if t: |
f172a195a8a9
mx gate: bootstrap with -G:+SSA_LIR.
Josef Eisl <josef.eisl@jku.at>
parents:
21281
diff
changeset
|
1662 registers = 'o0,o1,o2,o3,f8,f9,d32,d34' if platform.processor() == 'sparc' else 'rbx,r11,r10,r14,xmm3,xmm11,xmm14' |
f172a195a8a9
mx gate: bootstrap with -G:+SSA_LIR.
Josef Eisl <josef.eisl@jku.at>
parents:
21281
diff
changeset
|
1663 vm(['-XX:-TieredCompilation', '-G:+SSA_LIR', '-G:RegisterPressure=' + registers, '-esa', '-version']) |
f172a195a8a9
mx gate: bootstrap with -G:+SSA_LIR.
Josef Eisl <josef.eisl@jku.at>
parents:
21281
diff
changeset
|
1664 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1665 with VM('jvmci', 'product'): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1666 with Task('BootstrapWithImmutableCode:product', tasks) as t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1667 if t: 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
|
1668 |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11605
diff
changeset
|
1669 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
|
1670 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
|
1671 with Task(str(test) + ':' + vmbuild, tasks) as t: |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1672 if t and not test.test('jvmci'): |
17438
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1673 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
|
1674 |
16381
d91fecb90fc0
Check -Xbatch still works in the gate
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16327
diff
changeset
|
1675 # ensure -Xbatch still works |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1676 with VM('jvmci', 'product'): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1677 with Task('DaCapo_pmd:BatchMode:product', tasks) as t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1678 if t: dacapo(['-Xbatch', 'pmd']) |
16381
d91fecb90fc0
Check -Xbatch still works in the gate
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16327
diff
changeset
|
1679 |
16437
680f52926754
added test for -Xcomp to the gate
Doug Simon <doug.simon@oracle.com>
parents:
16419
diff
changeset
|
1680 # ensure -Xcomp still works |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1681 with VM('jvmci', 'product'): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1682 with Task('XCompMode:product', tasks) as t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1683 if t: vm(['-Xcomp', '-version']) |
16437
680f52926754
added test for -Xcomp to the gate
Doug Simon <doug.simon@oracle.com>
parents:
16419
diff
changeset
|
1684 |
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
|
1685 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
|
1686 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
|
1687 |
11758
4ac92e735a16
pylint fixes (retry)
Mick Jordan <mick.jordan@oracle.com>
parents:
11757
diff
changeset
|
1688 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
|
1689 _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
|
1690 |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1691 with Task('CleanAndBuildIdealGraphVisualizer', tasks) as t: |
20996
5e78d067ebbe
Do not build IGV in gate when running on SPARC
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
20994
diff
changeset
|
1692 if t and platform.processor() != 'sparc': |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1693 buildxml = mx._cygpathU2W(join(_graal_home, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml')) |
21165
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1694 mx.run(['ant', '-f', buildxml, '-q', 'clean', 'build'], env=_igvBuildEnv()) |
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
|
1695 |
21566 | 1696 # Prevent JVMCI modifications from breaking the standard builds |
1697 if args.buildNonJVMCI: | |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1698 with Task('BuildHotSpotVarieties', tasks) as t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1699 if t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1700 buildvms(['--vms', 'client,server', '--builds', 'fastdebug,product']) |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1701 if mx.get_os() not in ['windows', 'cygwin']: |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1702 buildvms(['--vms', 'server-nojvmci', '--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
|
1703 |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11605
diff
changeset
|
1704 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
|
1705 for theVm in ['client', 'server']: |
14606
f50dece27798
fixed regression in gate command
Doug Simon <doug.simon@oracle.com>
parents:
14605
diff
changeset
|
1706 if not isVMSupported(theVm): |
20922 | 1707 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
|
1708 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
|
1709 with VM(theVm, vmbuild): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1710 with Task('DaCapo_pmd:' + theVm + ':' + vmbuild, tasks) as t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1711 if t: 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
|
1712 |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1713 with Task('UnitTests:' + theVm + ':' + vmbuild, tasks) as t: |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1714 if t: unittest(['-XX:CompileCommand=exclude,*::run*', 'graal.api', 'java.test']) |
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
|
1715 |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11605
diff
changeset
|
1716 |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11605
diff
changeset
|
1717 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
|
1718 """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
|
1719 |
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
|
1720 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
|
1721 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
|
1722 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1723 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
|
1724 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
|
1725 parser.add_argument('-n', '--omit-native-clean', action='store_false', dest='cleanNative', help='omit cleaning and building native code') |
21482
2fe8729dd813
mx gate: add option to skip ideclean
Roland Schatz <roland.schatz@oracle.com>
parents:
21447
diff
changeset
|
1726 parser.add_argument('-i', '--omit-ide-clean', action='store_false', dest='cleanIde', help='omit cleaning the ide project files') |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1727 parser.add_argument('-g', '--only-build-jvmci', action='store_false', dest='buildNonJVMCI', help='only build the JVMCI VM') |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1728 parser.add_argument('-t', '--task-filter', help='comma separated list of substrings to select subset of tasks to be run') |
21639
e65bf81961be
added -x option to gate command that makes --task-filter an exclusion filter
Doug Simon <doug.simon@oracle.com>
parents:
21635
diff
changeset
|
1729 parser.add_argument('-x', action='store_true', help='makes --task-filter an exclusion instead of inclusion filter') |
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
|
1730 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
|
1731 |
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
|
1732 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
|
1733 |
5431
0bd1ba69db2a
removed double declaration of _vmbuild global variable in gate command
Doug Simon <doug.simon@oracle.com>
parents:
5430
diff
changeset
|
1734 global _jacoco |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1735 if args.task_filter: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1736 Task.filters = args.task_filter.split(',') |
21639
e65bf81961be
added -x option to gate command that makes --task-filter an exclusion filter
Doug Simon <doug.simon@oracle.com>
parents:
21635
diff
changeset
|
1737 Task.filtersExclude = args.x |
e65bf81961be
added -x option to gate command that makes --task-filter an exclusion filter
Doug Simon <doug.simon@oracle.com>
parents:
21635
diff
changeset
|
1738 elif args.x: |
e65bf81961be
added -x option to gate command that makes --task-filter an exclusion filter
Doug Simon <doug.simon@oracle.com>
parents:
21635
diff
changeset
|
1739 mx.abort('-x option cannot be used without --task-filter option') |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1740 |
21165
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1741 # Force |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1742 if not mx._opts.strict_compliance: |
21514
b426469fadb7
mx: better description for strict-compliance and fix typo
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21169
diff
changeset
|
1743 mx.log("[gate] forcing strict compliance") |
21165
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1744 mx._opts.strict_compliance = True |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1745 |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
1746 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
|
1747 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
|
1748 try: |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1749 with Task('Pylint', tasks) as t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1750 if t: mx.pylint([]) |
11526 | 1751 |
13928
c4e5a685c6a1
gate: compile java with ECJ if available
Bernhard Urban <bernhard.urban@jku.at>
parents:
13919
diff
changeset
|
1752 def _clean(name='Clean'): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1753 with Task(name, tasks) as t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1754 if t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1755 cleanArgs = [] |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1756 if not args.cleanNative: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1757 cleanArgs.append('--no-native') |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1758 if not args.cleanJava: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1759 cleanArgs.append('--no-java') |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1760 clean(cleanArgs) |
13928
c4e5a685c6a1
gate: compile java with ECJ if available
Bernhard Urban <bernhard.urban@jku.at>
parents:
13919
diff
changeset
|
1761 _clean() |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
1762 |
21482
2fe8729dd813
mx gate: add option to skip ideclean
Roland Schatz <roland.schatz@oracle.com>
parents:
21447
diff
changeset
|
1763 with Task('IDEConfigCheck', tasks) as t: |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1764 if t: |
21482
2fe8729dd813
mx gate: add option to skip ideclean
Roland Schatz <roland.schatz@oracle.com>
parents:
21447
diff
changeset
|
1765 if args.cleanIde: |
2fe8729dd813
mx gate: add option to skip ideclean
Roland Schatz <roland.schatz@oracle.com>
parents:
21447
diff
changeset
|
1766 mx.ideclean([]) |
2fe8729dd813
mx gate: add option to skip ideclean
Roland Schatz <roland.schatz@oracle.com>
parents:
21447
diff
changeset
|
1767 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
|
1768 |
13928
c4e5a685c6a1
gate: compile java with ECJ if available
Bernhard Urban <bernhard.urban@jku.at>
parents:
13919
diff
changeset
|
1769 eclipse_exe = mx.get_env('ECLIPSE_EXE') |
7533
29b0768b7ba6
added eclipseformat to the gate
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
1770 if eclipse_exe is not None: |
17438
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1771 with Task('CodeFormatCheck', tasks) as t: |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1772 if t and mx.eclipseformat(['-e', eclipse_exe]) != 0: |
17438
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1773 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
|
1774 |
17438
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1775 with Task('Canonicalization Check', tasks) as t: |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1776 if t: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1777 mx.log(time.strftime('%d %b %Y %H:%M:%S - Ensuring mx/projects files are canonicalized...')) |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1778 if mx.canonicalizeprojects([]) != 0: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1779 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
|
1780 |
13928
c4e5a685c6a1
gate: compile java with ECJ if available
Bernhard Urban <bernhard.urban@jku.at>
parents:
13919
diff
changeset
|
1781 if mx.get_env('JDT'): |
17438
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1782 with Task('BuildJavaWithEcj', tasks): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1783 if t: 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
|
1784 _clean('CleanAfterEcjBuild') |
c4e5a685c6a1
gate: compile java with ECJ if available
Bernhard Urban <bernhard.urban@jku.at>
parents:
13919
diff
changeset
|
1785 |
17438
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1786 with Task('BuildJavaWithJavac', tasks): |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1787 if t: 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
|
1788 |
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
|
1789 with Task('Checkstyle', tasks) as t: |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1790 if t and mx.checkstyle([]) != 0: |
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
|
1791 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
|
1792 |
17438
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1793 with Task('Checkheaders', tasks) as t: |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1794 if t and checkheaders([]) != 0: |
17438
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1795 t.abort('Checkheaders warnings were found') |
14773
78343531acc7
added checkheaders to the gate
Doug Simon <doug.simon@oracle.com>
parents:
14772
diff
changeset
|
1796 |
17438
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1797 with Task('FindBugs', tasks) as t: |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1798 if t and findbugs([]) != 0: |
17438
b8d89559915d
mx: implement with support for Task()
Bernhard Urban <bernhard.urban@jku.at>
parents:
17437
diff
changeset
|
1799 t.abort('FindBugs warnings were found') |
14751
015f84f0b375
added findbugs to the gate
Doug Simon <doug.simon@oracle.com>
parents:
14744
diff
changeset
|
1800 |
5878
191e08da4de4
Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5877
diff
changeset
|
1801 if exists('jacoco.exec'): |
191e08da4de4
Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5877
diff
changeset
|
1802 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
|
1803 |
5878
191e08da4de4
Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5877
diff
changeset
|
1804 if args.jacocout is not None: |
191e08da4de4
Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5877
diff
changeset
|
1805 _jacoco = 'append' |
191e08da4de4
Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5877
diff
changeset
|
1806 else: |
191e08da4de4
Apply jacoco coverage to all gate tests
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5877
diff
changeset
|
1807 _jacoco = 'off' |
11757 | 1808 |
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
|
1809 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
|
1810 |
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
|
1811 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
|
1812 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
|
1813 |
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
|
1814 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
|
1815 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
|
1816 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
|
1817 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
|
1818 |
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
|
1819 total.stop() |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
1820 |
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
|
1821 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
|
1822 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
|
1823 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
|
1824 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
|
1825 mx.log(' ' + str(total.duration)) |
11757 | 1826 |
20000
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1827 if args.task_filter: |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1828 Task.filters = None |
e8a0a61526b2
added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents:
19799
diff
changeset
|
1829 |
6340
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1830 def deoptalot(args): |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1831 """bootstrap a fastdebug JVMCI 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
|
1832 |
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1833 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
|
1834 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
|
1835 count = 1 |
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1836 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
|
1837 count = int(args[0]) |
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1838 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
|
1839 |
7509 | 1840 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
|
1841 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
|
1842 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
|
1843 |
6340
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1844 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
|
1845 |
6340
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1846 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
|
1847 |
6340
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1848 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
|
1849 |
21165
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1850 def _igvJdk(): |
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
|
1851 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
|
1852 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
|
1853 v8 = mx.VersionSpec("1.8") |
21165
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1854 def _igvJdkVersionCheck(version): |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1855 return version >= v8 and (version < v8u20 or version >= v8u40) |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1856 return mx.java_version(_igvJdkVersionCheck, versionDescription='>= 1.8 and < 1.8.0u20 or >= 1.8.0u40').jdk |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1857 |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1858 def _igvBuildEnv(): |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1859 # When the http_proxy environment variable is set, convert it to the proxy settings that ant needs |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1860 env = dict(os.environ) |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1861 proxy = os.environ.get('http_proxy') |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1862 if not (proxy is None) and len(proxy) > 0: |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1863 if '://' in proxy: |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1864 # Remove the http:// prefix (or any other protocol prefix) |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1865 proxy = proxy.split('://', 1)[1] |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1866 # Separate proxy server name and port number |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1867 proxyName, proxyPort = proxy.split(':', 1) |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1868 proxyEnv = '-DproxyHost="' + proxyName + '" -DproxyPort=' + proxyPort |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1869 env['ANT_OPTS'] = proxyEnv |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1870 |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1871 env['JAVA_HOME'] = _igvJdk() |
17388
9e5abd0e7916
mx/igv: fallback mechanism to work around a javac bug in jdk8u20
Bernhard Urban <bernhard.urban@jku.at>
parents:
17378
diff
changeset
|
1872 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
|
1873 |
5089
206e68bb66c6
Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents:
5064
diff
changeset
|
1874 def igv(args): |
206e68bb66c6
Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents:
5064
diff
changeset
|
1875 """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
|
1876 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
|
1877 with open(join(_graal_home, logFile), 'w') as fp: |
10568
070b4a3c56f3
disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents:
10527
diff
changeset
|
1878 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
|
1879 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
|
1880 |
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
|
1881 # 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
|
1882 if exists(nbplatform): |
19427
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1883 updateTrackingFile = join(nbplatform, 'platform', 'update_tracking', 'org-netbeans-core.xml') |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1884 if not exists(updateTrackingFile): |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1885 mx.log('Could not find \'' + updateTrackingFile + '\', removing NetBeans platform') |
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
|
1886 shutil.rmtree(nbplatform) |
19427
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1887 else: |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1888 dom = xml.dom.minidom.parse(updateTrackingFile) |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1889 currentVersion = mx.VersionSpec(dom.getElementsByTagName('module_version')[0].getAttribute('specification_version')) |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1890 supportedVersion = mx.VersionSpec('3.43.1') |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1891 if currentVersion < supportedVersion: |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1892 mx.log('Replacing NetBeans platform version ' + str(currentVersion) + ' with version ' + str(supportedVersion)) |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1893 shutil.rmtree(nbplatform) |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1894 elif supportedVersion < currentVersion: |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1895 mx.log('Supported NetBeans version in igv command should be updated to ' + str(currentVersion)) |
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
|
1896 |
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
|
1897 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
|
1898 mx.logv('[This execution may take a while as the NetBeans platform needs to be downloaded]') |
21165
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1899 |
bdeaa5a7b83c
Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21122
diff
changeset
|
1900 env = _igvBuildEnv() |
18983
43baadc1913a
Automatically install Batik for SVG export in IGV
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18931
diff
changeset
|
1901 # make the jar for Batik 1.7 available. |
43baadc1913a
Automatically install Batik for SVG export in IGV
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18931
diff
changeset
|
1902 env['IGV_BATIK_JAR'] = mx.library('BATIK').get_path(True) |
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
|
1903 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
|
1904 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
|
1905 |
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
|
1906 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
|
1907 """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
|
1908 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
|
1909 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
|
1910 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
|
1911 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
|
1912 |
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
|
1913 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
|
1914 """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
|
1915 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
|
1916 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
|
1917 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
|
1918 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
|
1919 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
|
1920 |
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
|
1921 # 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
|
1922 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
|
1923 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
|
1924 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
|
1925 |
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
|
1926 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
|
1927 |
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
|
1928 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
|
1929 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
|
1930 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
|
1931 |
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
|
1932 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
|
1933 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
|
1934 |
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
|
1935 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
|
1936 # 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
|
1937 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
|
1938 |
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
|
1939 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
|
1940 |
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
|
1941 def bench(args): |
4324
b0aa4a52b89c
Added support for project specs in classpath.
Doug Simon <doug.simon@oracle.com>
parents:
4294
diff
changeset
|
1942 """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
|
1943 |
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
|
1944 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
|
1945 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
|
1946 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
|
1947 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
|
1948 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
|
1949 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
|
1950 del args[index] |
d4906ea4255b
Handle SIGTERM : killing mx will properly kill subprocesses
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents:
4288
diff
changeset
|
1951 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
|
1952 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
|
1953 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
|
1954 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
|
1955 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
|
1956 args = ['all'] |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1957 |
8459
3393f870e6a4
Allow vm arguments in mx bench
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
8440
diff
changeset
|
1958 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
|
1959 |
3aab15f42934
moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents:
7552
diff
changeset
|
1960 def benchmarks_in_group(group): |
3aab15f42934
moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents:
7552
diff
changeset
|
1961 prefix = group + ':' |
3aab15f42934
moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents:
7552
diff
changeset
|
1962 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
|
1963 |
4219
47f7d91d34cf
Fix javac build issues with classpath
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents:
4216
diff
changeset
|
1964 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
|
1965 benchmarks = [] |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1966 # DaCapo |
13967
4cd7c6629841
mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
1967 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
|
1968 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
|
1969 else: |
7563
3aab15f42934
moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents:
7552
diff
changeset
|
1970 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
|
1971 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
|
1972 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
|
1973 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
|
1974 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
|
1975 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
|
1976 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
|
1977 |
13967
4cd7c6629841
mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
1978 if 'scaladacapo' in args or 'all' in args: |
4480
7d6490436b57
Add Scala DaCapo benchs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4438
diff
changeset
|
1979 benchmarks += sanitycheck.getScalaDacapos(level=sanitycheck.SanityCheckLevel.Benchmark) |
7d6490436b57
Add Scala DaCapo benchs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4438
diff
changeset
|
1980 else: |
7563
3aab15f42934
moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents:
7552
diff
changeset
|
1981 scaladacapos = benchmarks_in_group('scaladacapo') |
3aab15f42934
moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents:
7552
diff
changeset
|
1982 for scaladacapo in scaladacapos: |
3aab15f42934
moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents:
7552
diff
changeset
|
1983 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
|
1984 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
|
1985 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
|
1986 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
|
1987 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
|
1988 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1989 # Bootstrap |
13967
4cd7c6629841
mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
1990 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
|
1991 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
|
1992 # SPECjvm2008 |
13967
4cd7c6629841
mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
1993 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
|
1994 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
|
1995 else: |
7563
3aab15f42934
moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents:
7552
diff
changeset
|
1996 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
|
1997 for specjvm in specjvms: |
11373
6675167d52b6
fixed specjvm2008 regression in bench command
Doug Simon <doug.simon@oracle.com>
parents:
11372
diff
changeset
|
1998 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
|
1999 |
13967
4cd7c6629841
mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
2000 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
|
2001 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
|
2002 |
13967
4cd7c6629841
mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
2003 if 'specjbb2013' in args: # or 'all' in args //currently not in default set |
7565 | 2004 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
|
2005 |
13967
4cd7c6629841
mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
2006 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
|
2007 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
|
2008 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
|
2009 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
|
2010 |
4219
47f7d91d34cf
Fix javac build issues with classpath
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents:
4216
diff
changeset
|
2011 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
|
2012 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
|
2013 group = results.setdefault(groupName, {}) |
3aab15f42934
moved execution of a benchmark out of OutputParser
Doug Simon <doug.simon@oracle.com>
parents:
7552
diff
changeset
|
2014 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
|
2015 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
|
2016 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
|
2017 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
|
2018 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
|
2019 |
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
|
2020 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
|
2021 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
|
2022 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
|
2023 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
|
2024 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
|
2025 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
|
2026 |
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
|
2027 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
|
2028 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
|
2029 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
|
2030 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
|
2031 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
|
2032 |
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
|
2033 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
|
2034 """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
|
2035 |
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
|
2036 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
|
2037 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
|
2038 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
|
2039 |
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
|
2040 '[{"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
|
2041 |
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
|
2042 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
|
2043 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
|
2044 |
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
|
2045 <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
|
2046 <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
|
2047 <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
|
2048 <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
|
2049 </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
|
2050 |
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
|
2051 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
|
2052 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
|
2053 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
|
2054 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
|
2055 |
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
|
2056 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
|
2057 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
|
2058 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
|
2059 if args.permissive: |
17359
115de469a26b
support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents:
17321
diff
changeset
|
2060 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
|
2061 for name in deps: |
17359
115de469a26b
support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents:
17321
diff
changeset
|
2062 dist = mx.distribution(name, fatalIfMissing=False) |
115de469a26b
support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents:
17321
diff
changeset
|
2063 if dist: |
115de469a26b
support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents:
17321
diff
changeset
|
2064 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
|
2065 else: |
115de469a26b
support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents:
17321
diff
changeset
|
2066 if not mx.project(name, fatalIfMissing=False): |
115de469a26b
support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents:
17321
diff
changeset
|
2067 if not mx.library(name, fatalIfMissing=False): |
115de469a26b
support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents:
17321
diff
changeset
|
2068 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
|
2069 return |
115de469a26b
support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents:
17321
diff
changeset
|
2070 allDeps.append(name) |
115de469a26b
support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents:
17321
diff
changeset
|
2071 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
|
2072 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
|
2073 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
|
2074 '-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
|
2075 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
|
2076 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
|
2077 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
|
2078 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
|
2079 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
|
2080 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
|
2081 |
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
|
2082 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
|
2083 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
|
2084 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
|
2085 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
|
2086 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
|
2087 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
|
2088 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
|
2089 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
|
2090 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
|
2091 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
|
2092 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
|
2093 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
|
2094 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
|
2095 |
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
|
2096 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
|
2097 """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
|
2098 |
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
|
2099 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
|
2100 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
|
2101 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
|
2102 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
|
2103 |
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
|
2104 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
|
2105 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
|
2106 |
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
|
2107 # 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
|
2108 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
|
2109 |
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
|
2110 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
|
2111 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
|
2112 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
|
2113 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
|
2114 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
|
2115 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
|
2116 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
|
2117 # 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
|
2118 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
|
2119 |
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
|
2120 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
|
2121 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
|
2122 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
|
2123 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
|
2124 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
|
2125 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
|
2126 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
|
2127 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
|
2128 env['JAVA_HOME'] = _jdk(vmToCheck='server') |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
2129 env['MAVEN_OPTS'] = '-server -XX:-UseJVMCIClassLoader' |
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
|
2130 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
|
2131 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
|
2132 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
|
2133 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
|
2134 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
|
2135 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
|
2136 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
|
2137 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
|
2138 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
|
2139 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
|
2140 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
|
2141 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
|
2142 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
|
2143 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
|
2144 |
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
|
2145 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
|
2146 """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
|
2147 |
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
|
2148 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
|
2149 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
|
2150 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
|
2151 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
|
2152 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
|
2153 |
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
|
2154 vmArgs, benchmarksAndJsons = _extract_VM_args(args) |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
2155 if isJVMCIEnabled(_get_vm()) and '-XX:-UseJVMCIClassLoader' not in vmArgs: |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
2156 vmArgs = ['-XX:-UseJVMCIClassLoader'] + 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
|
2157 |
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
|
2158 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
|
2159 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
|
2160 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
|
2161 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
|
2162 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
|
2163 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
|
2164 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
|
2165 |
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
|
2166 # 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
|
2167 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
|
2168 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
|
2169 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
|
2170 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
|
2171 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
|
2172 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
|
2173 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
|
2174 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
|
2175 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
|
2176 |
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
|
2177 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
|
2178 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
|
2179 |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2180 matchedSuites = set() |
13949
f694daada5bf
mx jmh: display the number of benchmarks that will run
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13948
diff
changeset
|
2181 numBench = [0] |
13935
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2182 for micros in os.listdir(jmhPath): |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2183 absoluteMicro = os.path.join(jmhPath, micros) |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2184 if not os.path.isdir(absoluteMicro): |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2185 continue |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2186 if not micros.startswith("micros-"): |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2187 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
|
2188 continue |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2189 |
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
|
2190 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
|
2191 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
|
2192 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
|
2193 continue |
13935
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2194 if benchmarks: |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2195 def _addBenchmark(x): |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2196 if x.startswith("Benchmark:"): |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2197 return |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2198 match = False |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2199 for b in benchmarks: |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2200 match = match or (b in x) |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2201 |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2202 if match: |
13949
f694daada5bf
mx jmh: display the number of benchmarks that will run
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13948
diff
changeset
|
2203 numBench[0] += 1 |
13935
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2204 matchedSuites.add(micros) |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2205 |
13967
4cd7c6629841
mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
2206 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
|
2207 else: |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2208 matchedSuites.add(micros) |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2209 |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2210 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
|
2211 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
|
2212 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
|
2213 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
|
2214 |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2215 regex = [] |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2216 if benchmarks: |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2217 regex.append(r".*(" + "|".join(benchmarks) + ").*") |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2218 |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2219 for suite in matchedSuites: |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
2220 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
|
2221 (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
|
2222 if pfx: |
18306 | 2223 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
|
2224 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
|
2225 '--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
|
2226 '--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
|
2227 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
|
2228 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
|
2229 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
|
2230 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
|
2231 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
|
2232 |
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
|
2233 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
|
2234 """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
|
2235 |
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
|
2236 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
|
2237 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
|
2238 |
11372
76c45fb64191
added support to the specjvm2008 command for specifying a benchmark group
Doug Simon <doug.simon@oracle.com>
parents:
11371
diff
changeset
|
2239 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
|
2240 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
|
2241 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
|
2242 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
|
2243 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
|
2244 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
|
2245 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
|
2246 |
76c45fb64191
added support to the specjvm2008 command for specifying a benchmark group
Doug Simon <doug.simon@oracle.com>
parents:
11371
diff
changeset
|
2247 _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
|
2248 |
8147
9786ac8fff61
Use different vm args for SPECjbb2013
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
8135
diff
changeset
|
2249 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
|
2250 """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
|
2251 |
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
|
2252 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
|
2253 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
|
2254 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
|
2255 |
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
|
2256 _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
|
2257 |
8506
c3657d00e343
-Merge with tip
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8406
diff
changeset
|
2258 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
|
2259 """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
|
2260 |
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
|
2261 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
|
2262 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
|
2263 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
|
2264 |
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
|
2265 _run_benchmark(args, None, launcher) |
8506
c3657d00e343
-Merge with tip
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8406
diff
changeset
|
2266 |
5596
e4b1bc5e29e0
hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents:
5517
diff
changeset
|
2267 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
|
2268 """download the hsdis library |
4482
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4480
diff
changeset
|
2269 |
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4480
diff
changeset
|
2270 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
|
2271 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
|
2272 flavor = 'intel' |
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4480
diff
changeset
|
2273 if 'att' in args: |
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4480
diff
changeset
|
2274 flavor = 'att' |
19684
84b85c43633b
[SPARC] Install hsdis-sparcv9.so into the jvm with mx
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
19427
diff
changeset
|
2275 if mx.get_arch() == "sparcv9": |
84b85c43633b
[SPARC] Install hsdis-sparcv9.so into the jvm with mx
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
19427
diff
changeset
|
2276 flavor = "sparcv9" |
17012
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16979
diff
changeset
|
2277 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
|
2278 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
|
2279 |
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
|
2280 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
|
2281 '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
|
2282 '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
|
2283 '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
|
2284 '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
|
2285 'intel/hsdis-amd64.dylib' : 'fdb13ef0d7d23d93dacaae9c98837bea0d4fc5a2', |
20989
4213d02d95b5
Update hsdis for SPARC to latest binutils version (VIS3 and OSA2011 architecture included)
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
20967
diff
changeset
|
2286 'sparcv9/hsdis-sparcv9.so': '970640a9af0bd63641f9063c11275b371a59ee60', |
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
|
2287 } |
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
|
2288 |
16976
87fc600ec586
mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents:
16918
diff
changeset
|
2289 flavoredLib = flavor + "/" + lib |
87fc600ec586
mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents:
16918
diff
changeset
|
2290 if flavoredLib not in sha1s: |
87fc600ec586
mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents:
16918
diff
changeset
|
2291 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
|
2292 return |
87fc600ec586
mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents:
16918
diff
changeset
|
2293 |
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
|
2294 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
|
2295 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
|
2296 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
|
2297 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
|
2298 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
|
2299 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
|
2300 |
5245 | 2301 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
|
2302 """disassemble HexCodeFiles embedded in text files |
5245 | 2303 |
2304 Run a tool over the input files to convert all embedded HexCodeFiles | |
2305 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
|
2306 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
2307 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
|
2308 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
|
2309 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
|
2310 |
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
|
2311 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
|
2312 |
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
|
2313 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
|
2314 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
|
2315 |
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
|
2316 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
|
2317 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
|
2318 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
|
2319 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
|
2320 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
|
2321 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
|
2322 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
|
2323 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
|
2324 address, symbol = addressAndSymbol |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
2325 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
|
2326 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
|
2327 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
|
2328 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
|
2329 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
|
2330 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
|
2331 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
|
2332 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
|
2333 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
|
2334 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
|
2335 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
|
2336 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
|
2337 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
|
2338 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
|
2339 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
|
2340 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
|
2341 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
|
2342 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
|
2343 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
|
2344 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
|
2345 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
|
2346 print >> fp, l |
5245 | 2347 |
4684
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
2348 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
|
2349 """create a JaCoCo coverage report |
4684
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
2350 |
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
2351 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
|
2352 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
|
2353 jacocoreport = mx.library("JACOCOREPORT", True) |
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
2354 out = 'coverage' |
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
2355 if len(args) == 1: |
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
2356 out = args[0] |
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
2357 elif len(args) > 1: |
e136f2d0d002
Activate jtt for the gate
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4660
diff
changeset
|
2358 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
|
2359 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
2360 includes = ['com.oracle.graal', 'com.oracle.jvmci'] |
18888
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2361 for p in mx.projects(): |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2362 projsetting = getattr(p, 'jacoco', '') |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2363 if projsetting == 'include': |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2364 includes.append(p.name) |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2365 |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2366 includedirs = set() |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2367 for p in mx.projects(): |
19799
c70ef0d09be9
use the 'jacoco=exclude' project property when deciding which directories to include in JaCoCo coverage reports
Doug Simon <doug.simon@oracle.com>
parents:
19763
diff
changeset
|
2368 projsetting = getattr(p, 'jacoco', '') |
c70ef0d09be9
use the 'jacoco=exclude' project property when deciding which directories to include in JaCoCo coverage reports
Doug Simon <doug.simon@oracle.com>
parents:
19763
diff
changeset
|
2369 if projsetting == 'exclude': |
c70ef0d09be9
use the 'jacoco=exclude' project property when deciding which directories to include in JaCoCo coverage reports
Doug Simon <doug.simon@oracle.com>
parents:
19763
diff
changeset
|
2370 continue |
18888
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2371 for include in includes: |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2372 if include in p.dir: |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2373 includedirs.add(p.dir) |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2374 |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2375 for i in includedirs: |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2376 bindir = i + '/bin' |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2377 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
|
2378 os.makedirs(bindir) |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2379 |
31960077ea9d
Specify jacoco project includes/excludes in suite.py
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18887
diff
changeset
|
2380 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
|
2381 |
11867 | 2382 def sl(args): |
12693
c6b833f7935e
mx sl: change vm args syntax
Andreas Woess <andreas.woess@jku.at>
parents:
12647
diff
changeset
|
2383 """run an SL program""" |
c6b833f7935e
mx sl: change vm args syntax
Andreas Woess <andreas.woess@jku.at>
parents:
12647
diff
changeset
|
2384 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
|
2385 vm(vmArgs + ['-cp', mx.classpath(["TRUFFLE", "com.oracle.truffle.sl"]), "com.oracle.truffle.sl.SLMain"] + slArgs) |
11867 | 2386 |
21568
3b8bbf51d320
Truffle/Debugging: add the Truffle DebugEngine and supporting code, as well as add a crude command-line debugging tool used mainly to test the DebugEngine. Migrate the small tols out of project com.oracle.truffle.api into the new project com.oracle.truffle.tools.
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
21447
diff
changeset
|
2387 def sldebug(args): |
3b8bbf51d320
Truffle/Debugging: add the Truffle DebugEngine and supporting code, as well as add a crude command-line debugging tool used mainly to test the DebugEngine. Migrate the small tols out of project com.oracle.truffle.api into the new project com.oracle.truffle.tools.
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
21447
diff
changeset
|
2388 """run a simple command line debugger for the Simple Language""" |
3b8bbf51d320
Truffle/Debugging: add the Truffle DebugEngine and supporting code, as well as add a crude command-line debugging tool used mainly to test the DebugEngine. Migrate the small tols out of project com.oracle.truffle.api into the new project com.oracle.truffle.tools.
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
21447
diff
changeset
|
2389 vmArgs, slArgs = _extract_VM_args(args, useDoubleDash=True) |
21571
189d7a64b4d9
Truffle/Debugging: fix a python problem with the "sldebug" command
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
21570
diff
changeset
|
2390 vm(vmArgs + ['-cp', mx.classpath("com.oracle.truffle.sl.tools"), "com.oracle.truffle.sl.tools.debug.SLREPLServer"] + slArgs) |
21568
3b8bbf51d320
Truffle/Debugging: add the Truffle DebugEngine and supporting code, as well as add a crude command-line debugging tool used mainly to test the DebugEngine. Migrate the small tols out of project com.oracle.truffle.api into the new project com.oracle.truffle.tools.
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
21447
diff
changeset
|
2391 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
2392 def isJVMCIEnabled(vm): |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
2393 return vm != 'original' and not vm.endswith('nojvmci') |
9803
8e33b4ebfef1
add isGraalEnabled(vm) function in commands.py
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
9667
diff
changeset
|
2394 |
16167
1f4955abca9b
mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents:
16117
diff
changeset
|
2395 def jol(args): |
1f4955abca9b
mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents:
16117
diff
changeset
|
2396 """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
|
2397 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
|
2398 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
|
2399 |
8588db09f5e9
mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents:
18163
diff
changeset
|
2400 if len(candidates) > 0: |
18601
676f1800077c
mx: removed unused _read_projects_file function
Doug Simon <doug.simon@oracle.com>
parents:
18414
diff
changeset
|
2401 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
|
2402 else: |
8588db09f5e9
mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents:
18163
diff
changeset
|
2403 # 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
|
2404 candidates = args |
16167
1f4955abca9b
mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents:
16117
diff
changeset
|
2405 |
1f4955abca9b
mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents:
16117
diff
changeset
|
2406 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
|
2407 |
5700
12a34d1bcaa2
added site command to generate a javadoc-based website
Doug Simon <doug.simon@oracle.com>
parents:
5688
diff
changeset
|
2408 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
|
2409 """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
|
2410 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5764
diff
changeset
|
2411 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
|
2412 '--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
|
2413 '--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
|
2414 '--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
|
2415 '--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
|
2416 '--jd', '@-tag', '--jd', '@vmoption:X', |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5764
diff
changeset
|
2417 '--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
|
2418 '--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
|
2419 '--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
|
2420 |
13507
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2421 def generateZshCompletion(args): |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2422 """generate zsh completion for mx""" |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2423 try: |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2424 from genzshcomp import CompletionGenerator |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2425 except ImportError: |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2426 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
|
2427 |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2428 # 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
|
2429 originalModule = mx._argParser.__module__ |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2430 mx._argParser.__module__ = "argparse" |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2431 generator = CompletionGenerator("mx", mx._argParser) |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2432 mx._argParser.__module__ = originalModule |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2433 |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2434 # 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
|
2435 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
|
2436 |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2437 # 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
|
2438 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
|
2439 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
|
2440 complt += '\n' |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2441 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
|
2442 complt += '\t(command)\n' |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2443 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
|
2444 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
|
2445 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
|
2446 c, _ = mx._commands[cmd][:2] |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2447 doc = c.__doc__ |
13508
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2448 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
|
2449 if doc: |
13509
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2450 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
|
2451 complt += '"\n' |
13508
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2452 complt += '\t\t)\n' |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2453 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
|
2454 complt += '\t\t;;\n' |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2455 |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2456 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
|
2457 # 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
|
2458 complt += '\t\tcase $line[1] in\n' |
19182
8cd798884d60
generateZshCompletions should include diagnostic VM options and supoprt completion for more mx commands
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19168
diff
changeset
|
2459 complt += '\t\t\t(vm | vmg | vmfg | unittest | jmh | dacapo | scaladacapo | specjvm2008 | specjbb2013 | specjbb2005)\n' |
13508
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2460 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
|
2461 complt += '\t\t\t\t\t_arguments -s -S \\\n' |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
2462 complt += _appendOptions("jvmci", r"G\:") |
13509
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2463 # 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
|
2464 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
|
2465 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
|
2466 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
|
2467 complt += '\t\tesac\n' |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2468 complt += '\t\t;;\n' |
13507
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2469 complt += 'esac\n' |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2470 complt += '\n' |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2471 complt += 'return $ret' |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2472 print complt |
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2473 |
13509
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2474 def _fixQuotes(arg): |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2475 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
|
2476 |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2477 def _appendOptions(optionType, optionPrefix): |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2478 def isBoolean(vmap, field): |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2479 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
|
2480 |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2481 def hasDescription(vmap): |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2482 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
|
2483 |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2484 complt = "" |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2485 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
|
2486 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
|
2487 complt += optionPrefix |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2488 if isBoolean(vmap, 'optType'): |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2489 complt += '"{-,+}"' |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2490 complt += vmap['optName'] |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2491 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
|
2492 complt += '=' |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2493 if hasDescription(vmap): |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2494 complt += "[" |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2495 if vmap['optDefault']: |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2496 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
|
2497 if vmap['optDoc']: |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2498 complt += _fixQuotes(vmap['optDoc']) |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2499 if hasDescription(vmap): |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2500 complt += "]" |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2501 complt += '" \\\n' |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2502 return complt |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2503 |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2504 def _parseVMOptions(optionType): |
13508
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2505 parser = OutputParser() |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2506 # 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
|
2507 # 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
|
2508 jvmOptions = re.compile( |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2509 r"^[ \t]*" |
13509
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2510 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
|
2511 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
|
2512 r"[ \t]+=[ \t]*" |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2513 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
|
2514 r"[ \t]*" |
a8831418ff04
mx: add completion support for hotspot options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13508
diff
changeset
|
2515 r"(?P<optDoc>.+)?", |
13508
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2516 re.MULTILINE) |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2517 parser.addMatcher(ValuesMatcher(jvmOptions, { |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2518 'optType' : '<optType>', |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2519 'optName' : '<optName>', |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2520 'optDefault' : '<optDefault>', |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2521 'optDoc' : '<optDoc>', |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2522 })) |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2523 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
2524 # gather JVMCI options |
13508
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2525 output = StringIO.StringIO() |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
2526 vm(['-XX:-BootstrapJVMCI', '-XX:+UnlockDiagnosticVMOptions', '-G:+PrintFlags' if optionType == "jvmci" else '-XX:+PrintFlagsWithComments'], |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
2527 vm="jvmci", |
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
|
2528 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
|
2529 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
|
2530 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
|
2531 err=subprocess.STDOUT) |
13508
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2532 |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2533 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
|
2534 return valueMap |
8a5b39d0bfb5
mx: add completion support for graal options (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13507
diff
changeset
|
2535 |
14546
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2536 def findbugs(args): |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2537 '''run FindBugs against non-test Java projects''' |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2538 findBugsHome = mx.get_env('FINDBUGS_HOME', None) |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2539 if findBugsHome: |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2540 findbugsJar = join(findBugsHome, 'lib', 'findbugs.jar') |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2541 else: |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2542 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
|
2543 if not exists(findbugsLib): |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2544 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
|
2545 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
|
2546 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
|
2547 with zipfile.ZipFile(findbugsDist) as zf: |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2548 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
|
2549 assert len(candidates) == 1, candidates |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2550 libDirInZip = os.path.dirname(candidates[0]) |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2551 zf.extractall(tmp) |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2552 shutil.copytree(join(tmp, libDirInZip), findbugsLib) |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2553 finally: |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2554 shutil.rmtree(tmp) |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2555 findbugsJar = join(findbugsLib, 'findbugs.jar') |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2556 assert exists(findbugsJar) |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2557 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
|
2558 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
|
2559 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
|
2560 findbugsResults = join(_graal_home, 'findbugs.results') |
14769 | 2561 |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17224
diff
changeset
|
2562 cmd = ['-jar', mx._cygpathU2W(findbugsJar), '-textui', '-low', '-maxRank', '15'] |
21166
f383ff4c9af8
mx: fix JDK selection when running outside a tty, capture STRICT_COMPLIANCE from the env file, make sure raw_input promt goes to stdout
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21165
diff
changeset
|
2563 if mx.is_interactive(): |
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
|
2564 cmd.append('-progress') |
18116
c4f649042a7b
mx/unittest: fix cygwin path issue
Bernhard Urban <bernhard.urban@jku.at>
parents:
18115
diff
changeset
|
2565 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
|
2566 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
|
2567 if exitcode != 0: |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2568 with open(findbugsResults) as fp: |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2569 mx.log(fp.read()) |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2570 os.unlink(findbugsResults) |
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2571 return exitcode |
13507
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2572 |
14772
c929a4a3b6c5
added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents:
14769
diff
changeset
|
2573 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
|
2574 """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
|
2575 failures = {} |
c929a4a3b6c5
added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents:
14769
diff
changeset
|
2576 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
|
2577 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
|
2578 continue |
c929a4a3b6c5
added checkheaders command for checking Java source headers without relying on Checkstyle
Doug Simon <doug.simon@oracle.com>
parents:
14769
diff
changeset
|
2579 |
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
|
2580 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
|
2581 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
|
2582 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
|
2583 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
|
2584 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
|
2585 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
|
2586 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
|
2587 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
|
2588 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
|
2589 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
|
2590 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
|
2591 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
|
2592 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
|
2593 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
|
2594 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
|
2595 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
|
2596 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
|
2597 for n, v in failures.iteritems(): |
18637
d5d1fbe270e9
mx: fixed format string
Doug Simon <doug.simon@oracle.com>
parents:
18635
diff
changeset
|
2598 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
|
2599 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
|
2600 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11534
diff
changeset
|
2601 def mx_init(suite): |
3718 | 2602 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
|
2603 '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
|
2604 '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
|
2605 '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
|
2606 '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
|
2607 '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
|
2608 '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
|
2609 'clean': [clean, ''], |
17052
35fda668ed6e
mx: added ctw command to simplify executing CompileTheWorld
Doug Simon <doug.simon@oracle.com>
parents:
17015
diff
changeset
|
2610 'ctw': [ctw, '[-vmoptions|noinline|nocomplex|full]'], |
14546
942c4daa9db9
added findbugs command to mx
Doug Simon <doug.simon@oracle.com>
parents:
14164
diff
changeset
|
2611 'findbugs': [findbugs, ''], |
13507
d3ec6003856d
mx: experimental autocompletion generation for zsh (GRAAL-297)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13486
diff
changeset
|
2612 'generateZshCompletion' : [generateZshCompletion, ''], |
4482
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4480
diff
changeset
|
2613 'hsdis': [hsdis, '[att]'], |
5245 | 2614 'hcfdis': [hcfdis, ''], |
5089
206e68bb66c6
Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents:
5064
diff
changeset
|
2615 '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
|
2616 '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
|
2617 '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
|
2618 '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
|
2619 '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
|
2620 '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
|
2621 '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
|
2622 '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
|
2623 '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
|
2624 '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
|
2625 '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
|
2626 'microbench' : [microbench, '[VM options] [-- [JMH options]]'], |
15113 | 2627 '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
|
2628 'makejmhdeps' : [makejmhdeps, ''], |
15113 | 2629 '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
|
2630 '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
|
2631 '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
|
2632 '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
|
2633 '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
|
2634 '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
|
2635 'deoptalot' : [deoptalot, '[n]'], |
11867 | 2636 'longtests' : [longtests, ''], |
16167
1f4955abca9b
mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents:
16117
diff
changeset
|
2637 'sl' : [sl, '[SL args|@VM options]'], |
21568
3b8bbf51d320
Truffle/Debugging: add the Truffle DebugEngine and supporting code, as well as add a crude command-line debugging tool used mainly to test the DebugEngine. Migrate the small tols out of project com.oracle.truffle.api into the new project com.oracle.truffle.tools.
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
21447
diff
changeset
|
2638 'sldebug' : [sldebug, '[SL args|@VM options]'], |
16167
1f4955abca9b
mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents:
16117
diff
changeset
|
2639 'jol' : [jol, ''], |
21488
6420ac0cbe3c
Add Makefile generator for building graal without mx
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
21482
diff
changeset
|
2640 'makefile' : [mx_graal_makefile.build_makefile, 'build makefiles for JDK build'], |
3718 | 2641 } |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
2642 |
5064
8a88c903e381
Updated mx commands.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5047
diff
changeset
|
2643 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
|
2644 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
|
2645 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
|
2646 '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
|
2647 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
|
2648 |
13967
4cd7c6629841
mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
2649 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
|
2650 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
|
2651 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
|
2652 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
|
2653 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
|
2654 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
|
2655 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
|
2656 |
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
|
2657 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
|
2658 '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
|
2659 }) |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
2660 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11534
diff
changeset
|
2661 mx.update_commands(suite, commands) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3736
diff
changeset
|
2662 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
2663 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
|
2664 # 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
|
2665 if mx.java().version < _minVersion: |
20102
6e5df2d60fbd
mx: fix compliance check for EXTRA_JAVA_HOMES, add maximum JAVA_HOME version in mx_graal
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20032
diff
changeset
|
2666 mx.abort('Requires Java version ' + str(_minVersion) + ' or greater for JAVA_HOME, got version ' + str(mx.java().version)) |
20805
379471b334cb
Lift 8u40 mx restriction
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20102
diff
changeset
|
2667 if _untilVersion and mx.java().version >= _untilVersion: |
20102
6e5df2d60fbd
mx: fix compliance check for EXTRA_JAVA_HOMES, add maximum JAVA_HOME version in mx_graal
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20032
diff
changeset
|
2668 mx.abort('Requires Java version strictly before ' + str(_untilVersion) + ' for JAVA_HOME, 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
|
2669 |
13967
4cd7c6629841
mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
2670 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
|
2671 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
|
2672 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
|
2673 _vm = opts.vm |
21640
11f68b116a07
mx: added support for server-nograal and client-nograal aliases
Doug Simon <doug.simon@oracle.com>
parents:
21639
diff
changeset
|
2674 _vm = _vm.replace('graal', 'jvmci') |
4216
a13d61d3910e
fix for when no vm build is explicitely selected
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents:
4215
diff
changeset
|
2675 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
|
2676 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
|
2677 _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
|
2678 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
|
2679 _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
|
2680 global _jacoco |
7ccdae96e98a
Allow JaCoCon to append to the execution file
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5016
diff
changeset
|
2681 _jacoco = opts.jacoco |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
2682 global _vm_cwd |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
2683 _vm_cwd = opts.vm_cwd |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
2684 global _installed_jdks |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
2685 _installed_jdks = opts.installed_jdks |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
2686 global _vm_prefix |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
2687 _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
|
2688 |
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
|
2689 for jdkDist in _jdkDeployedDists: |
21031
e1c063565b3c
Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20996
diff
changeset
|
2690 def _close(jdkDeployable): |
e1c063565b3c
Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20996
diff
changeset
|
2691 def _install(dist): |
e1c063565b3c
Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20996
diff
changeset
|
2692 assert dist.name == jdkDeployable.name, dist.name + "!=" + jdkDeployable.name |
e1c063565b3c
Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20996
diff
changeset
|
2693 _installDistInJdks(jdkDeployable) |
e1c063565b3c
Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20996
diff
changeset
|
2694 return _install |
e1c063565b3c
Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20996
diff
changeset
|
2695 mx.distribution(jdkDist.name).add_update_listener(_close(jdkDist)) |