Mercurial > hg > graal-jvmci-8
annotate mx.jvmci/mx_jvmci.py @ 22429:a1b0a76567c7
Select default compiler from jvmci.compiler system property.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Mon, 17 Aug 2015 18:32:44 +0200 |
parents | 9c55f608b79e |
children | 5bf761306682 |
rev | line source |
---|---|
3718 | 1 # |
2 # ---------------------------------------------------------------------------------------------------- | |
3 # | |
18897
9afee75cee46
mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents:
18894
diff
changeset
|
4 # Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved. |
3718 | 5 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
6 # | |
7 # This code is free software; you can redistribute it and/or modify it | |
8 # under the terms of the GNU General Public License version 2 only, as | |
9 # published by the Free Software Foundation. | |
10 # | |
11 # This code is distributed in the hope that it will be useful, but WITHOUT | |
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 # version 2 for more details (a copy is included in the LICENSE file that | |
15 # accompanied this code). | |
16 # | |
17 # You should have received a copy of the GNU General Public License version | |
18 # 2 along with this work; if not, write to the Free Software Foundation, | |
19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
20 # | |
21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
22 # or visit www.oracle.com if you need additional information or have any | |
23 # questions. | |
24 # | |
25 # ---------------------------------------------------------------------------------------------------- | |
26 | |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
27 import os, stat, errno, sys, shutil, zipfile, tarfile, tempfile, re, time, datetime, platform, subprocess, socket |
16419
7520833c6e7f
eliminate JUnitWrapper
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16417
diff
changeset
|
28 from os.path import join, exists, dirname, basename |
22020
36a7ec14279d
moved unit test support from mx_graal.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
22019
diff
changeset
|
29 from argparse import ArgumentParser, REMAINDER |
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
|
30 import xml.dom.minidom |
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
|
31 import json, textwrap |
22031
434fbaaf53d7
moved findbugs support from mx_graal.py to mx_findbugs.py
Doug Simon <doug.simon@oracle.com>
parents:
22024
diff
changeset
|
32 |
434fbaaf53d7
moved findbugs support from mx_graal.py to mx_findbugs.py
Doug Simon <doug.simon@oracle.com>
parents:
22024
diff
changeset
|
33 import mx |
434fbaaf53d7
moved findbugs support from mx_graal.py to mx_findbugs.py
Doug Simon <doug.simon@oracle.com>
parents:
22024
diff
changeset
|
34 import mx_unittest |
22274
ed0b8310ac56
import unittest from mx_unittest.py
Doug Simon <doug.simon@oracle.com>
parents:
22273
diff
changeset
|
35 from mx_unittest import unittest |
22286
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
36 from mx_gate import Task |
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
37 import mx_gate |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
38 import mx_jvmci_makefile |
3718 | 39 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
40 _suite = mx.suite('jvmci') |
4417
648a7873cea2
Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents:
4407
diff
changeset
|
41 |
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
|
42 """ The VMs that can be built and run along with an optional description. Only VMs with a |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
43 description are listed in the dialogue for setting the default VM (see 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
|
44 _vmChoices = { |
22099
10b08d53b060
removed TRUFFLE distribution - only use TRUFFLE library
Doug Simon <doug.simon@oracle.com>
parents:
22096
diff
changeset
|
45 'jvmci' : 'VM triggered compilation is performed with a tiered system (C1 + Graal) and Graal is available for hosted compilation.', |
10b08d53b060
removed TRUFFLE distribution - only use TRUFFLE library
Doug Simon <doug.simon@oracle.com>
parents:
22096
diff
changeset
|
46 'server' : 'Normal compilation is performed with a tiered system (C1 + C2) and Graal is available for hosted compilation.', |
10b08d53b060
removed TRUFFLE distribution - only use TRUFFLE library
Doug Simon <doug.simon@oracle.com>
parents:
22096
diff
changeset
|
47 'client' : None, # VM compilation with client compiler, hosted compilation 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
|
48 '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
|
49 '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
|
50 '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
|
51 '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
|
52 '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
|
53 '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
|
54 } |
9095
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
55 |
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
56 """ The VM that will be run by the 'vm' command and built by default by the 'build' command. |
11296
4e943a311d9c
mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents:
11287
diff
changeset
|
57 This can be set via the global '--vm' option or the DEFAULT_VM environment variable. |
4e943a311d9c
mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents:
11287
diff
changeset
|
58 It can also be temporarily set by using of a VM context manager object in a 'with' statement. """ |
4e943a311d9c
mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents:
11287
diff
changeset
|
59 _vm = None |
4417
648a7873cea2
Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents:
4407
diff
changeset
|
60 |
9095
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
61 """ The VM builds that will be run by the 'vm' command - default is first in list """ |
9157
a38d748d4130
Add support for the 'optimized' build in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
9130
diff
changeset
|
62 _vmbuildChoices = ['product', 'fastdebug', 'debug', 'optimized'] |
9095
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
63 |
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
64 """ The VM build that will be run by the 'vm' command. |
11371
74414b248381
mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents:
11368
diff
changeset
|
65 This can be set via the global '--vmbuild' option. |
11296
4e943a311d9c
mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents:
11287
diff
changeset
|
66 It can also be temporarily set by using of a VM context manager object in a 'with' statement. """ |
9095
d538dce8f403
support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents:
9010
diff
changeset
|
67 _vmbuild = _vmbuildChoices[0] |
3718 | 68 |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
69 """ 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
|
70 _vm_cwd = None |
10454
590b0c26877f
mx: add --workdir argument
Bernhard Urban <bernhard.urban@jku.at>
parents:
10417
diff
changeset
|
71 |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
72 """ 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
|
73 _installed_jdks = None |
10570
2f80624df8a2
Add a --vmdir argument to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
10568
diff
changeset
|
74 |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
75 """ Prefix for running the VM. """ |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
76 _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
|
77 |
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
|
78 _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
|
79 |
15594
62738ce98804
mx: set _minVersion to 1.8
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15593
diff
changeset
|
80 _minVersion = mx.VersionSpec('1.8') |
7916
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7788
diff
changeset
|
81 |
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
|
82 # max version (first _unsupported_ version) |
20805
379471b334cb
Lift 8u40 mx restriction
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20102
diff
changeset
|
83 _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
|
84 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
85 class JDKDeployedDist(object): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
86 def __init__(self, name): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
87 self._name = name |
22143
616739e61fb6
changed JDKDeployedDist.postJdkInstall to be an overridable method
Doug Simon <doug.simon@oracle.com>
parents:
22142
diff
changeset
|
88 |
616739e61fb6
changed JDKDeployedDist.postJdkInstall to be an overridable method
Doug Simon <doug.simon@oracle.com>
parents:
22142
diff
changeset
|
89 def dist(self): |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
90 return mx.distribution(self._name) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
91 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
92 def deploy(self, jdkDir): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
93 mx.nyi('deploy', self) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
94 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
95 class JarJDKDeployedDist(JDKDeployedDist): |
22287
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
96 def __init__(self, name, partOfHotSpot=False): |
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
97 JDKDeployedDist.__init__(self, name) |
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
98 self.partOfHotSpot = partOfHotSpot |
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
99 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
100 def targetDir(self): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
101 mx.nyi('targetDir', self) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
102 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
103 def _copyToJdk(self, jdkDir, target): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
104 targetDir = join(jdkDir, target) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
105 dist = self.dist() |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
106 mx.logv('Deploying {} to {}'.format(dist.name, targetDir)) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
107 copyToJdk(dist.path, targetDir) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
108 if dist.sourcesPath: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
109 copyToJdk(dist.sourcesPath, jdkDir) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
110 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
111 def deploy(self, jdkDir): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
112 self._copyToJdk(jdkDir, self.targetDir()) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
113 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
114 class ExtJDKDeployedDist(JarJDKDeployedDist): |
22287
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
115 def __init__(self, name, partOfHotSpot=False): |
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
116 JarJDKDeployedDist.__init__(self, name, partOfHotSpot) |
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
117 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
118 def targetDir(self): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
119 return join('jre', 'lib', 'ext') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
120 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
121 class LibJDKDeployedDist(JarJDKDeployedDist): |
22287
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
122 def __init__(self, name, partOfHotSpot=False): |
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
123 JarJDKDeployedDist.__init__(self, name, partOfHotSpot) |
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
124 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
125 def targetDir(self): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
126 return join('jre', 'lib') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
127 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
128 class JvmciJDKDeployedDist(JarJDKDeployedDist): |
22429
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
129 def __init__(self, name, partOfHotSpot=False, compilers=False): |
22287
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
130 JarJDKDeployedDist.__init__(self, name, partOfHotSpot) |
22429
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
131 self._compilers = compilers |
22287
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
132 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
133 def targetDir(self): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
134 return join('jre', 'lib', 'jvmci') |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
135 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
136 def deploy(self, jdkDir): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
137 JarJDKDeployedDist.deploy(self, jdkDir) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
138 _updateJVMCIFiles(jdkDir) |
22429
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
139 if self._compilers: |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
140 _updateJVMCIProperties(jdkDir, self._compilers) |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
141 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
142 def _exe(l): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
143 return mx.exe_suffix(l) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
144 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
145 def _lib(l): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
146 return mx.add_lib_suffix(mx.add_lib_prefix(l)) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
147 |
22330
856aeb17e892
Add debug info files in hotspot's results
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22328
diff
changeset
|
148 def _lib_dbg(l): |
856aeb17e892
Add debug info files in hotspot's results
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22328
diff
changeset
|
149 return mx.add_debug_lib_suffix(mx.add_lib_prefix(l)) |
856aeb17e892
Add debug info files in hotspot's results
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22328
diff
changeset
|
150 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
151 class HotSpotVMJDKDeployedDist(JDKDeployedDist): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
152 def dist(self): |
22282
9ab88ee1f79f
spelling fix: instanciate -> instantiate
Doug Simon <doug.simon@oracle.com>
parents:
22281
diff
changeset
|
153 name = mx.instantiatedDistributionName(self._name, dict(vm=get_vm(), vmbuild=_vmbuild), context=self._name) |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
154 return mx.distribution(name) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
155 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
156 def deploy(self, jdkDir): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
157 _hs_deploy_map = { |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
158 'jvmti.h' : 'include', |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
159 'sa-jdi.jar' : 'lib', |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
160 _lib('jvm') : join(relativeVmLibDirInJdk(), get_vm()), |
22330
856aeb17e892
Add debug info files in hotspot's results
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22328
diff
changeset
|
161 _lib_dbg('jvm') : join(relativeVmLibDirInJdk(), get_vm()), |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
162 _lib('saproc') : relativeVmLibDirInJdk(), |
22330
856aeb17e892
Add debug info files in hotspot's results
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22328
diff
changeset
|
163 _lib_dbg('saproc') : relativeVmLibDirInJdk(), |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
164 _lib('jsig') : relativeVmLibDirInJdk(), |
22330
856aeb17e892
Add debug info files in hotspot's results
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22328
diff
changeset
|
165 _lib_dbg('jsig') : relativeVmLibDirInJdk(), |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
166 } |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
167 dist = self.dist() |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
168 with tarfile.open(dist.path, 'r') as tar: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
169 for m in tar.getmembers(): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
170 if m.name in _hs_deploy_map: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
171 targetDir = join(jdkDir, _hs_deploy_map[m.name]) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
172 mx.logv('Deploying {} from {} to {}'.format(m.name, dist.name, targetDir)) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
173 tar.extract(m, targetDir) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
174 updateJvmCfg(jdkDir, get_vm()) |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
175 """ |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
176 List of distributions that are deployed into a JDK by mx. |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
177 """ |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
178 jdkDeployedDists = [ |
22287
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
179 LibJDKDeployedDist('JVMCI_SERVICE', partOfHotSpot=True), |
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
180 JvmciJDKDeployedDist('JVMCI_API', partOfHotSpot=True), |
5cce6c398d70
re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents:
22286
diff
changeset
|
181 JvmciJDKDeployedDist('JVMCI_HOTSPOT', partOfHotSpot=True), |
22323
6128b5118a28
Resolve cyclic dependencies involving annotation processors.
Roland Schatz <roland.schatz@oracle.com>
parents:
22322
diff
changeset
|
182 JvmciJDKDeployedDist('JVMCI_HOTSPOTVMCONFIG', partOfHotSpot=True), |
6128b5118a28
Resolve cyclic dependencies involving annotation processors.
Roland Schatz <roland.schatz@oracle.com>
parents:
22322
diff
changeset
|
183 JvmciJDKDeployedDist('JVMCI_OPTIONS', partOfHotSpot=True), |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
184 HotSpotVMJDKDeployedDist('JVM_<vmbuild>_<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
|
185 ] |
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
|
186 |
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
|
187 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
|
188 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
|
189 JDK_UNIX_PERMISSIONS_EXEC = 0755 |
13919
9d70445ea369
mx: set correct permissions for graal.jar
Bernhard Urban <bernhard.urban@jku.at>
parents:
13846
diff
changeset
|
190 |
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
|
191 def isVMSupported(vm): |
18799
750db34c9fe1
client-nograal is supported on Mac
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18733
diff
changeset
|
192 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
|
193 # 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
|
194 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
|
195 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
|
196 |
22141
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
197 def get_vm_cwd(): |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
198 """ |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
199 Get the current working directory to switch to before running the VM. |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
200 """ |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
201 return _vm_cwd |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
202 |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
203 def get_installed_jdks(): |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
204 """ |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
205 Get the base directory in which the JDKs cloned from $JAVA_HOME exist. |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
206 """ |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
207 return _installed_jdks |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
208 |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
209 def get_vm_prefix(): |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
210 """ |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
211 Get the prefix for running the VM ("/usr/bin/gdb --args"). |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
212 """ |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
213 return _vm_prefix |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
214 |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
215 def get_vm_choices(): |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
216 return _vmChoices |
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
217 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
218 def 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
|
219 """ |
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
|
220 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
|
221 """ |
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
|
222 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
|
223 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
|
224 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
|
225 vm = mx.get_env('DEFAULT_VM') |
22018
11ed27b2abe8
remove hard-coded use of 'mx' to refer to the mxDir for the graal suite
Doug Simon <doug.simon@oracle.com>
parents:
22017
diff
changeset
|
226 envPath = join(_suite.mxDir, 'env') |
21640
11f68b116a07
mx: added support for server-nograal and client-nograal aliases
Doug Simon <doug.simon@oracle.com>
parents:
21639
diff
changeset
|
227 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
|
228 if exists(envPath): |
9bb04af58490
support DEFAULT_VM=graal in mx/env
Doug Simon <doug.simon@oracle.com>
parents:
21580
diff
changeset
|
229 with open(envPath) as fp: |
21642 | 230 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
|
231 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
|
232 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
|
233 if vm is None: |
21169
41ec6d89cb84
mx: fix calls to is_interactive()
Andreas Woess <andreas.woess@oracle.com>
parents:
21166
diff
changeset
|
234 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
|
235 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
|
236 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
|
237 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
|
238 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
|
239 vm = mx.select_items(items, descriptions, allowMultiple=False) |
21976
36e37644f91e
mx: improve first usage experience:
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21975
diff
changeset
|
240 mx.ask_persist_env('DEFAULT_VM', 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
|
241 _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
|
242 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
|
243 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
244 """ |
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
|
245 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
|
246 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
|
247 |
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
|
248 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
|
249 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
|
250 """ |
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
|
251 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
|
252 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
|
253 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
|
254 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
|
255 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
|
256 self.build = build if build else _vmbuild |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
257 |
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
|
258 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
|
259 global _vm, _vmbuild |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
260 self.previousVm = _vm |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
261 self.previousBuild = _vmbuild |
22286
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
262 mx.reInstantiateDistribution('JVM_<vmbuild>_<vm>', dict(vm=self.previousVm, vmbuild=self.previousBuild), dict(vm=self.vm, vmbuild=self.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
|
263 _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
|
264 _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
|
265 |
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
|
266 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
|
267 global _vm, _vmbuild |
22286
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
268 mx.reInstantiateDistribution('JVM_<vmbuild>_<vm>', dict(vm=self.vm, vmbuild=self.build), dict(vm=self.previousVm, vmbuild=self.previousBuild)) |
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
|
269 _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
|
270 _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
|
271 |
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
|
272 def chmodRecursive(dirname, chmodFlagsDir): |
17233
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
273 if mx.get_os() == 'windows': |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
274 return |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
275 |
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
|
276 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
|
277 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
|
278 |
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
|
279 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
|
280 |
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 def export(args): |
15420
5947bb02474f
mx export: change the way of marking a repo as dirty
Bernhard Urban <bernhard.urban@jku.at>
parents:
15405
diff
changeset
|
282 """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
|
283 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
284 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
|
285 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
|
286 |
15405
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
287 # collect data about export |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
288 infos = dict() |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
289 infos['timestamp'] = time.time() |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
290 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
291 hgcfg = mx.HgConfig() |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
292 hgcfg.check() |
15420
5947bb02474f
mx export: change the way of marking a repo as dirty
Bernhard Urban <bernhard.urban@jku.at>
parents:
15405
diff
changeset
|
293 infos['revision'] = hgcfg.tip('.') + ('+' if hgcfg.isDirty('.') else '') |
15405
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
294 # TODO: infos['repository'] |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
295 |
22278
224416477bab
rename mx.java() to mx.get_jdk()
Doug Simon <doug.simon@oracle.com>
parents:
22277
diff
changeset
|
296 infos['jdkversion'] = str(mx.get_jdk().version) |
15405
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
297 |
17012
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16983
diff
changeset
|
298 infos['architecture'] = mx.get_arch() |
15405
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
299 infos['platform'] = mx.get_os() |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
300 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
301 if mx.get_os != 'windows': |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
302 pass |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
303 # infos['ccompiler'] |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
304 # infos['linker'] |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
305 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
306 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
|
307 |
15405
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
308 def _writeJson(suffix, properties): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
309 d = infos.copy() |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
310 for k, v in properties.iteritems(): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
311 assert not d.has_key(k) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
312 d[k] = v |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
313 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
314 jsonFileName = 'export-' + suffix + '.json' |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
315 with open(jsonFileName, 'w') as f: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
316 print >> f, json.dumps(d) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
317 return jsonFileName |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
318 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
319 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
320 def _genFileName(archivtype, middle): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
321 idPrefix = infos['revision'] + '_' |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
322 idSuffix = '.tar.gz' |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
323 return join(_suite.dir, "graalvm_" + archivtype + "_" + idPrefix + middle + idSuffix) |
15405
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
324 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
325 def _genFileArchPlatformName(archivtype, middle): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
326 return _genFileName(archivtype, infos['platform'] + '_' + infos['architecture'] + '_' + middle) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
327 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
328 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
329 # archive different build types of hotspot |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
330 for vmBuild in _vmbuildChoices: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
331 jdkpath = join(_jdksDir(), vmBuild) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
332 if not exists(jdkpath): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
333 mx.logv("skipping " + vmBuild) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
334 continue |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
335 |
15405
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
336 tarName = _genFileArchPlatformName('basejdk', vmBuild) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
337 mx.logv("creating basejdk " + tarName) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
338 vmSet = set() |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
339 with tarfile.open(tarName, 'w:gz') as tar: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
340 for root, _, files in os.walk(jdkpath): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
341 if basename(root) in _vmChoices.keys(): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
342 # TODO: add some assert to check path assumption |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
343 vmSet.add(root) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
344 continue |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
345 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
346 for f in files: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
347 name = join(root, f) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
348 # print name |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
349 tar.add(name, name) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
350 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
351 n = _writeJson("basejdk-" + vmBuild, {'vmbuild' : vmBuild}) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
352 tar.add(n, n) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
353 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
354 # create a separate archive for each VM |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
355 for vm in vmSet: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
356 bVm = basename(vm) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
357 vmTarName = _genFileArchPlatformName('vm', vmBuild + '_' + bVm) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
358 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
|
359 |
15405
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
360 debugFiles = set() |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
361 with tarfile.open(vmTarName, 'w:gz') as tar: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
362 for root, _, files in os.walk(vm): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
363 for f in files: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
364 # TODO: mac, windows, solaris? |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
365 if any(map(f.endswith, [".debuginfo"])): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
366 debugFiles.add(f) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
367 else: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
368 name = join(root, f) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
369 # print name |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
370 tar.add(name, name) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
371 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
372 n = _writeJson("vm-" + vmBuild + "-" + bVm, {'vmbuild' : vmBuild, 'vm' : bVm}) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
373 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
|
374 |
15405
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
375 if len(debugFiles) > 0: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
376 debugTarName = _genFileArchPlatformName('debugfilesvm', vmBuild + '_' + bVm) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
377 mx.logv("creating debugfilesvm " + debugTarName) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
378 with tarfile.open(debugTarName, 'w:gz') as tar: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
379 for f in debugFiles: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
380 name = join(root, f) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
381 # print name |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
382 tar.add(name, name) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
383 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
384 n = _writeJson("debugfilesvm-" + vmBuild + "-" + bVm, {'vmbuild' : vmBuild, 'vm' : bVm}) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
385 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
|
386 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
387 # jvmci directory |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
388 jvmciDirTarName = _genFileName('classfiles', 'javac') |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
389 mx.logv("creating jvmci " + jvmciDirTarName) |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
390 with tarfile.open(jvmciDirTarName, 'w:gz') as tar: |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
391 for root, _, files in os.walk("jvmci"): |
15405
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
392 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:
15404
diff
changeset
|
393 name = join(root, f) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
394 # print name |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
395 tar.add(name, name) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
396 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
397 n = _writeJson("jvmci", {'javacompiler' : 'javac'}) |
15405
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
398 tar.add(n, n) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15404
diff
changeset
|
399 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
400 def relativeVmLibDirInJdk(): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
401 mxos = mx.get_os() |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
402 if mxos == 'darwin': |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
403 return join('jre', 'lib') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
404 if mxos == 'windows' or mxos == 'cygwin': |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
405 return join('jre', 'bin') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
406 return join('jre', 'lib', mx.get_arch()) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
407 |
22141
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
408 def vmLibDirInJdk(jdk): |
4607
ee87cfe2f8f9
Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents:
4602
diff
changeset
|
409 """ |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
410 Gets the directory within a JDK where the server and client |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
411 sub-directories are located. |
4607
ee87cfe2f8f9
Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents:
4602
diff
changeset
|
412 """ |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
413 return join(jdk, relativeVmLibDirInJdk()) |
4607
ee87cfe2f8f9
Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents:
4602
diff
changeset
|
414 |
22141
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
415 def getVmJliLibDirs(jdk): |
17014
6a30738791f7
mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents:
17012
diff
changeset
|
416 """ |
6a30738791f7
mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents:
17012
diff
changeset
|
417 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
|
418 """ |
17233
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
419 mxos = mx.get_os() |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
420 if mxos == 'darwin': |
17014
6a30738791f7
mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents:
17012
diff
changeset
|
421 return [join(jdk, 'jre', 'lib', 'jli')] |
17233
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
422 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
|
423 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
|
424 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
|
425 |
22141
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
426 def getVmCfgInJdk(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
|
427 """ |
87fc13b59258
Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5649
diff
changeset
|
428 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
|
429 """ |
17233
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
430 mxos = mx.get_os() |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
431 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
|
432 return join(jdk, 'jre', 'lib', mx.get_arch(), jvmCfgFile) |
22141
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
433 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
|
434 |
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
|
435 def _jdksDir(): |
22278
224416477bab
rename mx.java() to mx.get_jdk()
Doug Simon <doug.simon@oracle.com>
parents:
22277
diff
changeset
|
436 return os.path.abspath(join(_installed_jdks if _installed_jdks else _suite.dir, 'jdk' + str(mx.get_jdk().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
|
437 |
17055
3e4d3be0b6bf
mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
17052
diff
changeset
|
438 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
|
439 if not vm: |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
440 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
|
441 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
|
442 if mx.is_interactive(): |
11511
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11493
diff
changeset
|
443 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
|
444 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
|
445 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
|
446 return |
11493
94779c895aad
fixed documentation of --installed-jdks mx option
Doug Simon <doug.simon@oracle.com>
parents:
11424
diff
changeset
|
447 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
|
448 |
22277
a48774f9b97a
renamed mx_jvmci.get_jdk() to mx_jvmci.get_jvmci_jdk()
Doug Simon <doug.simon@oracle.com>
parents:
22274
diff
changeset
|
449 def get_jvmci_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
|
450 """ |
22277
a48774f9b97a
renamed mx_jvmci.get_jdk() to mx_jvmci.get_jvmci_jdk()
Doug Simon <doug.simon@oracle.com>
parents:
22274
diff
changeset
|
451 Gets the JDK into which JVMCI is installed, creating it first if necessary. |
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
|
452 """ |
17055
3e4d3be0b6bf
mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
17052
diff
changeset
|
453 if not build: |
22019
07cfd3d7072b
removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents:
22018
diff
changeset
|
454 build = _vmbuild |
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
|
455 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
|
456 if create: |
22279
c232a2ea1fd2
rename mx.JDKConfig.jdk to mx.JDKConfig.home
Doug Simon <doug.simon@oracle.com>
parents:
22278
diff
changeset
|
457 srcJdk = mx.get_jdk().home |
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
|
458 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
|
459 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
|
460 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
|
461 |
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
|
462 # 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
|
463 # reliably used as the bootstrap for a HotSpot build. |
22141
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
464 jvmCfg = getVmCfgInJdk(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
|
465 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
|
466 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
|
467 |
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
|
468 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
|
469 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
|
470 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
|
471 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
|
472 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
|
473 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
|
474 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
|
475 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
|
476 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
|
477 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
|
478 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
|
479 else: |
0aa37fd2f33e
mx: fix detection for sparc. ignore unparsable lines in jvm.cfg
Bernhard Urban <bernhard.urban@jku.at>
parents:
12497
diff
changeset
|
480 # 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
|
481 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
|
482 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
|
483 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
|
484 |
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
|
485 assert defaultVM is not None, 'Could not find default VM in ' + jvmCfg |
17233
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
486 chmodRecursive(jdk, JDK_UNIX_PERMISSIONS_DIR) |
22141
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
487 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
|
488 |
18733
d7ec30ebb0f2
Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18714
diff
changeset
|
489 if mx.get_os() != 'windows': |
d7ec30ebb0f2
Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18714
diff
changeset
|
490 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
|
491 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
|
492 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
|
493 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
|
494 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
495 # patch 'release' file (append jvmci revision) |
13523
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
496 releaseFile = join(jdk, 'release') |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
497 if exists(releaseFile): |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
498 releaseFileLines = [] |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
499 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
|
500 for line in f: |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
501 releaseFileLines.append(line) |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
502 |
18733
d7ec30ebb0f2
Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18714
diff
changeset
|
503 if mx.get_os() != 'windows': |
d7ec30ebb0f2
Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18714
diff
changeset
|
504 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
|
505 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
|
506 for line in releaseFileLines: |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
507 if line.startswith("SOURCE="): |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
508 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
|
509 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
|
510 hgcfg = mx.HgConfig() |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
511 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
|
512 revision = hgcfg.tip('.')[:12] # take first 12 chars |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
513 fp.write(sourceLine + ' jvmci:' + revision + '\"\n') |
13523
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
514 except: |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
515 fp.write(line) |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
516 else: |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
517 fp.write(line) |
137142009b0b
mx: append graal revision to release file of jdk
Bernhard Urban <bernhard.urban@jku.at>
parents:
13522
diff
changeset
|
518 |
5596
e4b1bc5e29e0
hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents:
5517
diff
changeset
|
519 # 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
|
520 try: |
22141
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
521 hsdis([], copyToDir=vmLibDirInJdk(jdk)) |
5596
e4b1bc5e29e0
hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents:
5517
diff
changeset
|
522 except SystemExit: |
e4b1bc5e29e0
hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents:
5517
diff
changeset
|
523 pass |
3718 | 524 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
|
525 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
|
526 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
|
527 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
|
528 _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
|
529 |
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
|
530 if installJars: |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
531 for jdkDist in jdkDeployedDists: |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
532 dist = jdkDist.dist() |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
533 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
|
534 _installDistInJdks(jdkDist) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
535 |
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
|
536 if vmToCheck is not None: |
22141
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
537 jvmCfg = getVmCfgInJdk(jdk) |
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
|
538 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
|
539 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
|
540 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
|
541 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
|
542 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
|
543 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
|
544 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
|
545 _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
|
546 |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
547 return jdk |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
548 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
549 def _updateInstalledJVMCIOptionsFile(jdk): |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
550 jvmciOptions = join(_suite.dir, '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
|
551 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
|
552 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
|
553 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
|
554 else: |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
555 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
|
556 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
|
557 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
|
558 |
22141
f85b80b29176
removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents:
22140
diff
changeset
|
559 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
|
560 name = os.path.basename(src) |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
561 if not exists(dst): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
562 os.makedirs(dst) |
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
|
563 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
|
564 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
|
565 # 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
|
566 # 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
|
567 # 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
|
568 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
|
569 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
|
570 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
|
571 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
|
572 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
|
573 # 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
|
574 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
|
575 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
|
576 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
|
577 shutil.move(tmp, dstLib) |
16863
0d2e3399acfe
mx: add argument for permissions to copyToJdk()
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents:
16862
diff
changeset
|
578 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
|
579 |
22400
b876144b52f3
moved JVMCI option parsing back into Java (missing bits)
Doug Simon <doug.simon@oracle.com>
parents:
22398
diff
changeset
|
580 def _extractJVMCIFiles(jdkJars, jvmciJars, servicesDir, obsoleteCheck): |
22079
59b0fd9e6b27
instead of cleaning jvmci/services and jvmci/options directories in a JDK, look for stale entries and offer to delete them if mx is running interactively
Doug Simon <doug.simon@oracle.com>
parents:
22077
diff
changeset
|
581 |
59b0fd9e6b27
instead of cleaning jvmci/services and jvmci/options directories in a JDK, look for stale entries and offer to delete them if mx is running interactively
Doug Simon <doug.simon@oracle.com>
parents:
22077
diff
changeset
|
582 oldServices = os.listdir(servicesDir) if exists(servicesDir) else os.makedirs(servicesDir) |
59b0fd9e6b27
instead of cleaning jvmci/services and jvmci/options directories in a JDK, look for stale entries and offer to delete them if mx is running interactively
Doug Simon <doug.simon@oracle.com>
parents:
22077
diff
changeset
|
583 |
21937
3a292e8b9e51
replaced Service marker interface with non-standard META-INF directory names to differentiate JVMCI providers from standard service providers
Doug Simon <doug.simon@oracle.com>
parents:
21936
diff
changeset
|
584 jvmciServices = {} |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
585 for jar in jvmciJars: |
21070
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
586 if os.path.isfile(jar): |
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
587 with zipfile.ZipFile(jar) as zf: |
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
588 for member in zf.namelist(): |
22079
59b0fd9e6b27
instead of cleaning jvmci/services and jvmci/options directories in a JDK, look for stale entries and offer to delete them if mx is running interactively
Doug Simon <doug.simon@oracle.com>
parents:
22077
diff
changeset
|
589 if member.startswith('META-INF/jvmci.services/') and member != 'META-INF/jvmci.services/': |
21937
3a292e8b9e51
replaced Service marker interface with non-standard META-INF directory names to differentiate JVMCI providers from standard service providers
Doug Simon <doug.simon@oracle.com>
parents:
21936
diff
changeset
|
590 service = basename(member) |
22079
59b0fd9e6b27
instead of cleaning jvmci/services and jvmci/options directories in a JDK, look for stale entries and offer to delete them if mx is running interactively
Doug Simon <doug.simon@oracle.com>
parents:
22077
diff
changeset
|
591 assert service != "", member |
21518
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
592 with zf.open(member) as serviceFile: |
21937
3a292e8b9e51
replaced Service marker interface with non-standard META-INF directory names to differentiate JVMCI providers from standard service providers
Doug Simon <doug.simon@oracle.com>
parents:
21936
diff
changeset
|
593 providers = jvmciServices.setdefault(service, []) |
21518
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
594 for line in serviceFile.readlines(): |
c2e58b2a2a76
Extract options file to build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21514
diff
changeset
|
595 line = line.strip() |
22173
1a7f71d13b6e
avoid duplicate declarations of JVMCI service providers
Doug Simon <doug.simon@oracle.com>
parents:
22171
diff
changeset
|
596 if line and line not in providers: |
21937
3a292e8b9e51
replaced Service marker interface with non-standard META-INF directory names to differentiate JVMCI providers from standard service providers
Doug Simon <doug.simon@oracle.com>
parents:
21936
diff
changeset
|
597 providers.append(line) |
3a292e8b9e51
replaced Service marker interface with non-standard META-INF directory names to differentiate JVMCI providers from standard service providers
Doug Simon <doug.simon@oracle.com>
parents:
21936
diff
changeset
|
598 for service, providers in jvmciServices.iteritems(): |
22140
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
599 if not obsoleteCheck: |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
600 fd, tmp = tempfile.mkstemp(prefix=service) |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
601 f = os.fdopen(fd, 'w+') |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
602 for provider in providers: |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
603 f.write(provider + os.linesep) |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
604 target = join(servicesDir, service) |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
605 f.close() |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
606 shutil.move(tmp, target) |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
607 if mx.get_os() != 'windows': |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
608 os.chmod(target, JDK_UNIX_PERMISSIONS_FILE) |
22079
59b0fd9e6b27
instead of cleaning jvmci/services and jvmci/options directories in a JDK, look for stale entries and offer to delete them if mx is running interactively
Doug Simon <doug.simon@oracle.com>
parents:
22077
diff
changeset
|
609 if oldServices and service in oldServices: |
59b0fd9e6b27
instead of cleaning jvmci/services and jvmci/options directories in a JDK, look for stale entries and offer to delete them if mx is running interactively
Doug Simon <doug.simon@oracle.com>
parents:
22077
diff
changeset
|
610 oldServices.remove(service) |
21562 | 611 |
22400
b876144b52f3
moved JVMCI option parsing back into Java (missing bits)
Doug Simon <doug.simon@oracle.com>
parents:
22398
diff
changeset
|
612 if obsoleteCheck and mx.is_interactive() and oldServices: |
b876144b52f3
moved JVMCI option parsing back into Java (missing bits)
Doug Simon <doug.simon@oracle.com>
parents:
22398
diff
changeset
|
613 if mx.ask_yes_no('These files in ' + servicesDir + ' look obsolete:\n ' + '\n '.join(oldServices) + '\nDelete them', 'n'): |
b876144b52f3
moved JVMCI option parsing back into Java (missing bits)
Doug Simon <doug.simon@oracle.com>
parents:
22398
diff
changeset
|
614 for f in oldServices: |
b876144b52f3
moved JVMCI option parsing back into Java (missing bits)
Doug Simon <doug.simon@oracle.com>
parents:
22398
diff
changeset
|
615 path = join(servicesDir, f) |
b876144b52f3
moved JVMCI option parsing back into Java (missing bits)
Doug Simon <doug.simon@oracle.com>
parents:
22398
diff
changeset
|
616 os.remove(path) |
b876144b52f3
moved JVMCI option parsing back into Java (missing bits)
Doug Simon <doug.simon@oracle.com>
parents:
22398
diff
changeset
|
617 mx.log('Deleted ' + path) |
22079
59b0fd9e6b27
instead of cleaning jvmci/services and jvmci/options directories in a JDK, look for stale entries and offer to delete them if mx is running interactively
Doug Simon <doug.simon@oracle.com>
parents:
22077
diff
changeset
|
618 |
22140
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
619 def _updateJVMCIFiles(jdkDir, obsoleteCheck=False): |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
620 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
|
621 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
|
622 jreJVMCIServicesDir = join(jreJVMCIDir, 'services') |
22400
b876144b52f3
moved JVMCI option parsing back into Java (missing bits)
Doug Simon <doug.simon@oracle.com>
parents:
22398
diff
changeset
|
623 _extractJVMCIFiles(_getJdkDeployedJars(jdkDir), jvmciJars, jreJVMCIServicesDir, obsoleteCheck) |
21070
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
624 |
22429
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
625 def _updateJVMCIProperties(jdkDir, compilers): |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
626 jvmciProperties = join(jdkDir, 'jre', 'lib', 'jvmci', 'jvmci.properties') |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
627 if not exists(jvmciProperties): |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
628 with open(jvmciProperties, 'w') as fp: |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
629 for compiler in compilers: |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
630 print >> fp, "jvmci.compiler=" + compiler |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
631 else: |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
632 oldCompilers = [] |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
633 with open(jvmciProperties) as fp: |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
634 for line in fp: |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
635 if line.startswith('jvmci.compiler='): |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
636 oldCompilers += [line.strip().split('=')[1]] |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
637 changed = False |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
638 newCompilers = [] |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
639 for c in compilers: |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
640 if not c in oldCompilers: |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
641 changed = True |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
642 newCompilers += [c] |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
643 if changed: |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
644 with open(jvmciProperties, 'w') as fp: |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
645 # prepend new compilers, since the first property wins |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
646 for c in newCompilers: |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
647 print >> fp, "jvmci.compiler=" + c |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
648 for c in oldCompilers: |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
649 print >> fp, "jvmci.compiler=" + c |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22427
diff
changeset
|
650 |
21031
e1c063565b3c
Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20996
diff
changeset
|
651 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
|
652 """ |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
653 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
|
654 """ |
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
|
655 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
|
656 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
|
657 for e in os.listdir(jdks): |
21070
2ee48d02afe3
mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21059
diff
changeset
|
658 jdkDir = join(jdks, e) |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
659 deployableDist.deploy(jdkDir) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
660 |
22140
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
661 def _check_for_obsolete_jvmci_files(): |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
662 jdks = _jdksDir() |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
663 if exists(jdks): |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
664 for e in os.listdir(jdks): |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
665 jdkDir = join(jdks, e) |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
666 _updateJVMCIFiles(jdkDir, obsoleteCheck=True) |
60d9e50d5481
only perform check for obsolete JVMCI files during full build
Doug Simon <doug.simon@oracle.com>
parents:
22139
diff
changeset
|
667 |
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
|
668 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
|
669 """ |
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
|
670 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
|
671 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
|
672 """ |
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
|
673 jars = [] |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
674 for dist in jdkDeployedDists: |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
675 if not isinstance(dist, JarJDKDeployedDist): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
676 continue |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
677 jar = basename(dist.dist().path) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
678 jars.append(join(dist.targetDir(), jar)) |
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
|
679 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
|
680 |
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
|
681 |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
682 # 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
|
683 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
|
684 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
|
685 respondTo = {} |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
686 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
|
687 startToken = 'RUNINDEBUGSHELL_STARTSEQUENCE' |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
688 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
|
689 |
4252
67e88b7624d5
Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents:
4247
diff
changeset
|
690 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
|
691 |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17233
diff
changeset
|
692 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
|
693 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
|
694 |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17233
diff
changeset
|
695 winSDKSetEnv = mx._cygpathW2U(join(winSDK, 'Bin', 'SetEnv.cmd')) |
17233
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
696 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
|
697 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
|
698 |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17233
diff
changeset
|
699 wincmd = 'cmd.exe /E:ON /V:ON /K "' + mx._cygpathU2W(winSDKSetEnv) + '"' |
17233
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
700 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
|
701 stdout = p.stdout |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4257
diff
changeset
|
702 stdin = p.stdin |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
703 if logFile: |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
704 log = open(logFile, 'w') |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
705 ret = False |
17233
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
706 |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
707 def _writeProcess(s): |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
708 stdin.write(s + newLine) |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
709 |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
710 _writeProcess("echo " + startToken) |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
711 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
|
712 # 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
|
713 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
|
714 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
|
715 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
|
716 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
|
717 |
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
|
718 line = stdout.readline().decode(encoding) |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
719 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
|
720 log.write(line.encode('utf-8')) |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
721 line = line.strip() |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
722 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
|
723 if line == startToken: |
17233
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
724 _writeProcess('cd /D ' + workingDir + ' & ' + cmd + ' & echo ' + endToken) |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
725 for regex in respondTo.keys(): |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
726 match = regex.search(line) |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
727 if match: |
17233
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
728 _writeProcess(respondTo[regex]) |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
729 if findInOutput: |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
730 match = findInOutput.search(line) |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
731 if match: |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
732 ret = True |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
733 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
|
734 if not findInOutput: |
17233
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
735 _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
|
736 else: |
87fc13b59258
Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5649
diff
changeset
|
737 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
|
738 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
|
739 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
|
740 ret = True |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
741 break |
17233
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17055
diff
changeset
|
742 _writeProcess("exit") |
4177
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
743 if logFile: |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
744 log.close() |
c843578c269d
Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4163
diff
changeset
|
745 return ret |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
746 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11534
diff
changeset
|
747 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
|
748 """return the JDK directory selected for the 'vm' command""" |
22277
a48774f9b97a
renamed mx_jvmci.get_jdk() to mx_jvmci.get_jvmci_jdk()
Doug Simon <doug.simon@oracle.com>
parents:
22274
diff
changeset
|
749 return get_jvmci_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
|
750 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11534
diff
changeset
|
751 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
|
752 """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
|
753 print jdkhome(vm) |
5103
276e14614531
Added jdkhome command to mx.
Doug Simon <doug.simon@oracle.com>
parents:
5094
diff
changeset
|
754 |
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
|
755 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
|
756 """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
|
757 |
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
|
758 buildVars = { |
22279
c232a2ea1fd2
rename mx.JDKConfig.jdk to mx.JDKConfig.home
Doug Simon <doug.simon@oracle.com>
parents:
22278
diff
changeset
|
759 'ALT_BOOTDIR' : 'The location of the bootstrap JDK installation (default: ' + mx.get_jdk().home + ')', |
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
|
760 '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
|
761 '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
|
762 '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
|
763 '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
|
764 } |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
765 |
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
|
766 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
|
767 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
|
768 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
|
769 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
|
770 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
|
771 |
9120
9f361c0f912b
added note about mx/env to the output of 'mx buildvars'
Doug Simon <doug.simon@oracle.com>
parents:
9119
diff
changeset
|
772 mx.log('') |
22018
11ed27b2abe8
remove hard-coded use of 'mx' to refer to the mxDir for the graal suite
Doug Simon <doug.simon@oracle.com>
parents:
22017
diff
changeset
|
773 mx.log('Note that these variables can be given persistent values in the file ' + join(_suite.mxDir, '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
|
774 |
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
|
775 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
|
776 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
777 def _hotspotReplaceResultsVar(m): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
778 var = m.group(1) |
22283
65eb572cbcb7
extended JVM_<vmbuild>_<vm> template distribution with MacOS support
Doug Simon <doug.simon@oracle.com>
parents:
22282
diff
changeset
|
779 if var == 'os': |
22332
4dfa1275ffa3
Fix alt outputdir for -nojvmci builds
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22331
diff
changeset
|
780 return _hotspotOs(mx.get_os()) |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
781 if var == 'nojvmci': |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
782 if get_vm().endswith('nojvmci'): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
783 return '-nojvmci' |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
784 return '' |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
785 if var == 'buildname': |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
786 return _hotspotGetVariant() |
22284
09acb1bc3a56
make hotspot native project's results parameterized on <vmbuild>
Doug Simon <doug.simon@oracle.com>
parents:
22283
diff
changeset
|
787 if var == 'vmbuild': |
09acb1bc3a56
make hotspot native project's results parameterized on <vmbuild>
Doug Simon <doug.simon@oracle.com>
parents:
22283
diff
changeset
|
788 return _vmbuild |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
789 return mx._replaceResultsVar(m) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
790 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
791 class HotSpotProject(mx.NativeProject): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
792 def __init__(self, suite, name, deps, workingSets, results, output, **args): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
793 mx.NativeProject.__init__(self, suite, name, "", "src", deps, workingSets, results, output, join(suite.dir, "src")) # TODO... |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
794 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
795 def getOutput(self, replaceVar=_hotspotReplaceResultsVar): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
796 return mx.NativeProject.getOutput(self, replaceVar=replaceVar) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
797 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
798 def getResults(self, replaceVar=_hotspotReplaceResultsVar): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
799 return mx.NativeProject.getResults(self, replaceVar=replaceVar) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
800 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
801 def getBuildTask(self, args): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
802 return HotSpotBuildTask(self, args, _vmbuild, get_vm()) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
803 |
22332
4dfa1275ffa3
Fix alt outputdir for -nojvmci builds
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22331
diff
changeset
|
804 def _hotspotOs(mx_os): |
4dfa1275ffa3
Fix alt outputdir for -nojvmci builds
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22331
diff
changeset
|
805 if mx_os == 'darwin': |
4dfa1275ffa3
Fix alt outputdir for -nojvmci builds
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22331
diff
changeset
|
806 return 'bsd' |
4dfa1275ffa3
Fix alt outputdir for -nojvmci builds
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22331
diff
changeset
|
807 return mx_os |
4dfa1275ffa3
Fix alt outputdir for -nojvmci builds
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22331
diff
changeset
|
808 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
809 def _hotspotGetVariant(vm=None): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
810 if not vm: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
811 vm = get_vm() |
22328
3a95164b033c
Fix nojvmci builds.
Roland Schatz <roland.schatz@oracle.com>
parents:
22327
diff
changeset
|
812 variant = {'client': 'compiler1', 'server': 'compiler2', 'client-nojvmci': 'compiler1', 'server-nojvmci': 'compiler2'}.get(vm, vm) |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
813 return variant |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
814 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
815 class HotSpotBuildTask(mx.NativeBuildTask): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
816 def __init__(self, project, args, vmbuild, vm): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
817 mx.NativeBuildTask.__init__(self, args, project) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
818 self.vm = vm |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
819 self.vmbuild = vmbuild |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
820 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
821 def __str__(self): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
822 return 'Building HotSpot[{}, {}]'.format(self.vmbuild, self.vm) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
823 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
824 def build(self): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
825 isWindows = platform.system() == 'Windows' or "CYGWIN" in platform.system() |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
826 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
827 if self.vm.startswith('server'): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
828 buildSuffix = '' |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
829 elif self.vm.startswith('client'): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
830 buildSuffix = '1' |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
831 else: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
832 assert self.vm == 'jvmci', self.vm |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
833 buildSuffix = 'jvmci' |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
834 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
835 if isWindows: |
22335
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
836 t_compilelogfile = mx._cygpathU2W(os.path.join(_suite.dir, "graalCompile.log")) |
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
837 mksHome = mx.get_env('MKS_HOME', 'C:\\cygwin\\bin') |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
838 |
22335
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
839 variant = _hotspotGetVariant(self.vm) |
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
840 project_config = variant + '_' + self.vmbuild |
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
841 jvmciHome = mx._cygpathU2W(_suite.dir) |
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
842 _runInDebugShell('msbuild ' + jvmciHome + r'\build\vs-amd64\jvm.vcproj /p:Configuration=' + project_config + ' /target:clean', jvmciHome) |
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
843 winCompileCmd = r'set HotSpotMksHome=' + mksHome + r'& set JAVA_HOME=' + mx._cygpathU2W(mx.get_jdk().home) + r'& set path=%JAVA_HOME%\bin;%path%;%HotSpotMksHome%& cd /D "' + jvmciHome + r'\make\windows"& call create.bat ' + jvmciHome |
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
844 print winCompileCmd |
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
845 winCompileSuccess = re.compile(r"^Writing \.vcxproj file:") |
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
846 if not _runInDebugShell(winCompileCmd, jvmciHome, t_compilelogfile, winCompileSuccess): |
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
847 mx.abort('Error executing create command') |
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
848 winBuildCmd = 'msbuild ' + jvmciHome + r'\build\vs-amd64\jvm.vcxproj /p:Configuration=' + project_config + ' /p:Platform=x64' |
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
849 if not _runInDebugShell(winBuildCmd, jvmciHome, t_compilelogfile): |
8217ef77a80a
Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22334
diff
changeset
|
850 mx.abort('Error building project') |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
851 else: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
852 def filterXusage(line): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
853 if not 'Xusage.txt' in line: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
854 sys.stderr.write(line + os.linesep) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
855 cpus = self.parallelism |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
856 makeDir = join(_suite.dir, 'make') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
857 runCmd = [mx.gmake_cmd(), '-C', makeDir] |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
858 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
859 env = os.environ.copy() |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
860 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
861 # These must be passed as environment variables |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
862 env.setdefault('LANG', 'C') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
863 #env['JAVA_HOME'] = jdk |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
864 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
865 def setMakeVar(name, default, env=None): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
866 """Sets a make variable on the command line to the value |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
867 of the variable in 'env' with the same name if defined |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
868 and 'env' is not None otherwise to 'default' |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
869 """ |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
870 runCmd.append(name + '=' + (env.get(name, default) if env else default)) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
871 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
872 if self.args.D: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
873 for nv in self.args.D: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
874 name, value = nv.split('=', 1) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
875 setMakeVar(name.strip(), value) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
876 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
877 setMakeVar('ARCH_DATA_MODEL', '64', env=env) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
878 setMakeVar('HOTSPOT_BUILD_JOBS', str(cpus), env=env) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
879 setMakeVar('ALT_BOOTDIR', mx.get_jdk().home, env=env) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
880 # setMakeVar("EXPORT_PATH", jdk) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
881 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
882 setMakeVar('MAKE_VERBOSE', 'y' if mx._opts.verbose else '') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
883 if self.vm.endswith('nojvmci'): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
884 setMakeVar('INCLUDE_JVMCI', 'false') |
22332
4dfa1275ffa3
Fix alt outputdir for -nojvmci builds
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22331
diff
changeset
|
885 setMakeVar('ALT_OUTPUTDIR', join(_suite.dir, 'build-nojvmci', _hotspotOs(mx.get_os())), env=env) |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
886 else: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
887 version = _suite.release_version() |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
888 setMakeVar('USER_RELEASE_SUFFIX', 'jvmci-' + version) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
889 setMakeVar('INCLUDE_JVMCI', 'true') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
890 # setMakeVar('INSTALL', 'y', env=env) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
891 if mx.get_os() == 'darwin' and platform.mac_ver()[0] != '': |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
892 # Force use of clang on MacOS |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
893 setMakeVar('USE_CLANG', 'true') |
22395
63e7eb179710
Set COMPILER_WARNINGS_FATAL=false during HotSpot build on MacOS
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22335
diff
changeset
|
894 setMakeVar('COMPILER_WARNINGS_FATAL', 'false') |
63e7eb179710
Set COMPILER_WARNINGS_FATAL=false during HotSpot build on MacOS
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22335
diff
changeset
|
895 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
896 if mx.get_os() == 'solaris': |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
897 # If using sparcWorks, setup flags to avoid make complaining about CC version |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
898 cCompilerVersion = subprocess.Popen('CC -V', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True).stderr.readlines()[0] |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
899 if cCompilerVersion.startswith('CC: Sun C++'): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
900 compilerRev = cCompilerVersion.split(' ')[3] |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
901 setMakeVar('ENFORCE_COMPILER_REV', compilerRev, env=env) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
902 setMakeVar('ENFORCE_CC_COMPILER_REV', compilerRev, env=env) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
903 if self.vmbuild == 'jvmg': |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
904 # We want ALL the symbols when debugging on Solaris |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
905 setMakeVar('STRIP_POLICY', 'no_strip') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
906 # This removes the need to unzip the *.diz files before debugging in gdb |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
907 setMakeVar('ZIP_DEBUGINFO_FILES', '0', env=env) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
908 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
909 if buildSuffix == "1": |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
910 setMakeVar("BUILD_CLIENT_ONLY", "true") |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
911 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
912 # Clear this variable as having it set can cause very confusing build problems |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
913 env.pop('CLASSPATH', None) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
914 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
915 # Issue an env prefix that can be used to run the make on the command line |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
916 if not mx._opts.verbose: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
917 mx.log('--------------- make command line ----------------------') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
918 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
919 envPrefix = ' '.join([key + '=' + env[key] for key in env.iterkeys() if not os.environ.has_key(key) or env[key] != os.environ[key]]) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
920 if len(envPrefix): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
921 mx.log('env ' + envPrefix + ' \\') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
922 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
923 runCmd.append(self.vmbuild + buildSuffix) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
924 runCmd.append("docs") |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
925 # runCmd.append("export_" + build) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
926 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
927 if not mx._opts.verbose: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
928 mx.log(' '.join(runCmd)) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
929 mx.log('--------------------------------------------------------') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
930 mx.run(runCmd, err=filterXusage, env=env) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
931 self._newestOutput = None |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
932 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
933 def needsBuild(self, newestInput): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
934 newestOutput = self.newestOutput() |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
935 for d in ['src', 'make', join('jvmci', 'jdk.internal.jvmci.hotspot', 'src_gen', 'hotspot')]: # TODO should this be replaced by a dependency to the project? |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
936 for root, dirnames, files in os.walk(join(_suite.dir, d)): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
937 # ignore <graal>/src/share/tools |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
938 if root == join(_suite.dir, 'src', 'share'): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
939 dirnames.remove('tools') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
940 for f in (join(root, name) for name in files): |
22413
454a38908a59
newestInput parameter to HotSpotBuildTask.needsBuild() is a TimeStampFile as of mx 5.3.3
Doug Simon <doug.simon@oracle.com>
parents:
22400
diff
changeset
|
941 ts = mx.TimeStampFile(f) |
454a38908a59
newestInput parameter to HotSpotBuildTask.needsBuild() is a TimeStampFile as of mx 5.3.3
Doug Simon <doug.simon@oracle.com>
parents:
22400
diff
changeset
|
942 if newestOutput: |
454a38908a59
newestInput parameter to HotSpotBuildTask.needsBuild() is a TimeStampFile as of mx 5.3.3
Doug Simon <doug.simon@oracle.com>
parents:
22400
diff
changeset
|
943 if not newestOutput.exists(): |
454a38908a59
newestInput parameter to HotSpotBuildTask.needsBuild() is a TimeStampFile as of mx 5.3.3
Doug Simon <doug.simon@oracle.com>
parents:
22400
diff
changeset
|
944 return (True, '{} does not exist'.format(newestOutput)) |
454a38908a59
newestInput parameter to HotSpotBuildTask.needsBuild() is a TimeStampFile as of mx 5.3.3
Doug Simon <doug.simon@oracle.com>
parents:
22400
diff
changeset
|
945 if ts.isNewerThan(newestOutput): |
454a38908a59
newestInput parameter to HotSpotBuildTask.needsBuild() is a TimeStampFile as of mx 5.3.3
Doug Simon <doug.simon@oracle.com>
parents:
22400
diff
changeset
|
946 return (True, '{} is newer than {}'.format(ts, newestOutput)) |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
947 return (False, None) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
948 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
949 def buildForbidden(self): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
950 if mx.NativeBuildTask.buildForbidden(self): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
951 return True |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
952 if self.vm == 'original': |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
953 if self.vmbuild != 'product': |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
954 mx.log('only product build of original VM exists') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
955 return True |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
956 if not isVMSupported(self.vm): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
957 mx.log('The ' + self.vm + ' VM is not supported on this platform - skipping') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
958 return True |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
959 return False |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
960 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
961 def clean(self, forBuild=False): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
962 if forBuild: # Let make handle incremental builds |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
963 return |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
964 def handleRemoveReadonly(func, path, exc): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
965 excvalue = exc[1] |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
966 if mx.get_os() == 'windows' and func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
967 os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) # 0777 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
968 func(path) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
969 else: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
970 raise |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
971 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
972 def rmIfExists(name): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
973 if os.path.isdir(name): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
974 shutil.rmtree(name, ignore_errors=False, onerror=handleRemoveReadonly) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
975 elif os.path.isfile(name): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
976 os.unlink(name) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
977 |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
978 rmIfExists(join(_suite.dir, 'build')) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
979 rmIfExists(join(_suite.dir, 'build-nojvmci')) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
980 rmIfExists(_jdksDir()) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
981 self._newestOutput = None |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
982 |
4577
bc8b58c11768
Added debug build of HotSpot Client to the gate.
Doug Simon <doug.simon@oracle.com>
parents:
4575
diff
changeset
|
983 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
|
984 """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
|
985 |
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
|
986 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
|
987 |
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
|
988 # 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
|
989 # 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
|
990 # 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
|
991 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
|
992 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
|
993 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
|
994 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
|
995 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
|
996 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
|
997 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
|
998 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
|
999 ' 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
|
1000 return result |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
1001 |
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
1002 # 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
|
1003 parser = AP() |
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
|
1004 parser.add_argument('-D', action='append', help='set a HotSpot build variable (run \'mx buildvars\' to list variables)', metavar='name=value') |
21791
cd36556e1b78
Remove conditional makefile-based compilation of jvmci from mx_graal.py
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
21790
diff
changeset
|
1005 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1006 # initialize jdk |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1007 get_jvmci_jdk(create=True) |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
1008 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1009 mx.build(['--source', '1.7'] + args, parser=parser) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1010 |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
1011 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1012 def updateJvmCfg(jdk, vm): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1013 jvmCfg = getVmCfgInJdk(jdk) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1014 if not exists(jvmCfg): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1015 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
|
1016 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1017 prefix = '-' + vm + ' ' |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1018 vmKnown = prefix + 'KNOWN\n' |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1019 lines = [] |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1020 found = False |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1021 with open(jvmCfg) as f: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1022 for line in f: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1023 if line.strip() == vmKnown.strip(): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1024 found = True |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1025 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
|
1026 |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1027 if not found: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1028 mx.log('Prepending "' + prefix + 'KNOWN" to ' + jvmCfg) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1029 if mx.get_os() != 'windows': |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1030 os.chmod(jvmCfg, JDK_UNIX_PERMISSIONS_FILE) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1031 with open(jvmCfg, 'w') as f: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1032 written = False |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1033 for line in lines: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1034 if line.startswith('#'): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1035 f.write(line) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1036 continue |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1037 if not written: |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1038 f.write(vmKnown) |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1039 if vm == 'jvmci': |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1040 # Legacy support |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1041 f.write('-graal ALIASED_TO -jvmci\n') |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1042 written = True |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1043 if line.startswith(prefix): |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1044 line = vmKnown |
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1045 if written: |
21990
2a98e51646c2
Graal VM should be the default one after building basic-graal. Prepending rather than appending selected DEFAULT_VM to jvm.cfg file.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
21976
diff
changeset
|
1046 continue |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1047 f.write(line) |
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
|
1048 |
22286
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
1049 mx_gate.add_jacoco_includes(['jdk.internal.jvmci.*']) |
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
|
1050 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1051 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
|
1052 """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
|
1053 |
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
|
1054 if vm is None: |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1055 vm = get_vm() |
14162 | 1056 |
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
|
1057 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
|
1058 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
|
1059 |
10454
590b0c26877f
mx: add --workdir argument
Bernhard Urban <bernhard.urban@jku.at>
parents:
10417
diff
changeset
|
1060 if cwd is None: |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
1061 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
|
1062 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
|
1063 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
|
1064 |
22019
07cfd3d7072b
removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents:
22018
diff
changeset
|
1065 build = vmbuild if vmbuild else _vmbuild |
22277
a48774f9b97a
renamed mx_jvmci.get_jdk() to mx_jvmci.get_jvmci_jdk()
Doug Simon <doug.simon@oracle.com>
parents:
22274
diff
changeset
|
1066 jdk = get_jvmci_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
|
1067 _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
|
1068 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
|
1069 if _make_eclipse_launch: |
22171 | 1070 mx.make_eclipse_launch(_suite, args, _suite.name + '-' + build, name=None, deps=mx.dependencies()) |
22286
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
1071 jacocoArgs = mx_gate.get_jacoco_agent_args() |
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
1072 if jacocoArgs: |
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
1073 args = jacocoArgs + args |
5596
e4b1bc5e29e0
hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents:
5517
diff
changeset
|
1074 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
|
1075 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
|
1076 |
22418
e5f1d4e023f3
removed implication that -G options are going away
Doug Simon <doug.simon@oracle.com>
parents:
22413
diff
changeset
|
1077 # Support for -G: options |
22398
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1078 jvmciArgs = [] |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1079 nonJvmciArgs = [] |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1080 existingJvmciOptionsProperty = None |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1081 for a in args: |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1082 if a.startswith('-G:'): |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1083 jvmciArg = a[len('-G:'):] |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1084 assert ' ' not in jvmciArg, 'space not supported in JVMCI arg: ' + a |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1085 jvmciArgs.append(a[len('-G:'):]) |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1086 else: |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1087 if a.startswith('-Djvmci.options=') or a == '-Djvmci.options': |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1088 existingJvmciOptionsProperty = a |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1089 nonJvmciArgs.append(a) |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1090 if jvmciArgs: |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1091 if existingJvmciOptionsProperty: |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1092 mx.abort('defining jvmci.option property is incompatible with defining one or more -G: options: ' + existingJvmciOptionsProperty) |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1093 args = ['-Djvmci.options=' + ' '.join(jvmciArgs)] + nonJvmciArgs |
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1094 |
9667
1ef7b26e9177
mx/commands.py: warn about arguments after '-version' when launching the vm
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
9639
diff
changeset
|
1095 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
|
1096 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
|
1097 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
|
1098 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
|
1099 |
22278
224416477bab
rename mx.java() to mx.get_jdk()
Doug Simon <doug.simon@oracle.com>
parents:
22277
diff
changeset
|
1100 args = mx.get_jdk().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
|
1101 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
|
1102 |
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
|
1103 def vm(args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, vmbuild=None): |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1104 (pfx_, exe_, vm_, args_, cwd) = parseVmArgs(args, vm, cwd, vmbuild) |
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
|
1105 return mx.run(pfx_ + [exe_, '-' + vm_] + args_, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd, timeout=timeout) |
3718 | 1106 |
22182
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1107 def _unittest_config_participant(config): |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1108 vmArgs, mainClass, mainClassArgs = config |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1109 if isJVMCIEnabled(get_vm()): |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1110 # Remove entries from class path that are in JVMCI loaded jars |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1111 cpIndex, cp = mx.find_classpath_arg(vmArgs) |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1112 if cp: |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1113 excluded = set() |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1114 for jdkDist in jdkDeployedDists: |
22281
2333f2f5baed
Fixes for new jdkDeployedDists model in _unittest_config_participant
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22280
diff
changeset
|
1115 dist = jdkDist.dist() |
22182
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1116 excluded.update([d.output_dir() for d in dist.archived_deps() if d.isJavaProject()]) |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1117 cp = os.pathsep.join([e for e in cp.split(os.pathsep) if e not in excluded]) |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1118 vmArgs[cpIndex] = cp |
18351 | 1119 |
22182
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1120 # Run the VM in a mode where application/test classes can |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1121 # access JVMCI loaded classes. |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1122 vmArgs = ['-XX:-UseJVMCIClassLoader'] + vmArgs |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1123 return (vmArgs, mainClass, mainClassArgs) |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1124 return config |
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
|
1125 |
22182
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1126 def _unittest_vm_launcher(vmArgs, mainClass, mainClassArgs): |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1127 vm(vmArgs + [mainClass] + mainClassArgs) |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1128 |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1129 mx_unittest.add_config_participant(_unittest_config_participant) |
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1130 mx_unittest.set_vm_launcher('JVMCI VM launcher', _unittest_vm_launcher) |
8340
d9d883aeb96f
unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents:
8317
diff
changeset
|
1131 |
d9d883aeb96f
unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents:
8317
diff
changeset
|
1132 def shortunittest(args): |
22020
36a7ec14279d
moved unit test support from mx_graal.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
22019
diff
changeset
|
1133 """alias for 'unittest --whitelist test/whitelist_shortunittest.txt'""" |
8340
d9d883aeb96f
unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents:
8317
diff
changeset
|
1134 |
15324
5b5f47104c0d
mx: add whitelist for shortunittest
Bernhard Urban <bernhard.urban@jku.at>
parents:
15323
diff
changeset
|
1135 args = ['--whitelist', 'test/whitelist_shortunittest.txt'] + args |
22182
9bbd878b17af
use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents:
22181
diff
changeset
|
1136 mx_unittest.unittest(args) |
8340
d9d883aeb96f
unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents:
8317
diff
changeset
|
1137 |
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
|
1138 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
|
1139 """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
|
1140 |
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
|
1141 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
|
1142 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
|
1143 |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1144 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
|
1145 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
|
1146 parser.add_argument('--builds', help='a comma separated list of build types (default: ' + vmbuildsDefault + ')', metavar='<args>', default=vmbuildsDefault) |
9096
d4b868ed9cfb
buildvms command now runs "java -version" for each VM built unless -n option is specified
Doug Simon <doug.simon@oracle.com>
parents:
9095
diff
changeset
|
1147 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
|
1148 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
|
1149 |
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
|
1150 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
|
1151 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
|
1152 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
|
1153 |
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
|
1154 allStart = time.time() |
7e5d8d1c74a1
Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents:
4582
diff
changeset
|
1155 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
|
1156 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
|
1157 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
|
1158 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
|
1159 |
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
|
1160 for vmbuild in builds: |
9117
cbfcb1054619
renamed 'boot' VM to 'original' VM
Doug Simon <doug.simon@oracle.com>
parents:
9116
diff
changeset
|
1161 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
|
1162 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
|
1163 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
|
1164 logFile = join(v + '-' + vmbuild + '.log') |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1165 log = open(join(_suite.dir, logFile), 'wb') |
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
|
1166 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
|
1167 mx.log('BEGIN: ' + v + '-' + vmbuild + '\t(see: ' + logFile + ')') |
17317
f434913f9cba
mx: buildvms should inherit verbosity
Bernhard Urban <bernhard.urban@jku.at>
parents:
17307
diff
changeset
|
1168 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
|
1169 # Run as subprocess so that output can be directed to a file |
22290
5425cd72bd3a
Remove unused --check-distributions flag.
Roland Schatz <roland.schatz@oracle.com>
parents:
22287
diff
changeset
|
1170 cmd = [sys.executable, '-u', mx.__file__] + verbose + ['--vm', v, '--vmbuild', vmbuild, 'build'] |
17317
f434913f9cba
mx: buildvms should inherit verbosity
Bernhard Urban <bernhard.urban@jku.at>
parents:
17307
diff
changeset
|
1171 mx.logv("executing command: " + str(cmd)) |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1172 subprocess.check_call(cmd, cwd=_suite.dir, 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
|
1173 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
|
1174 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
|
1175 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
|
1176 with VM(v, vmbuild): |
22292 | 1177 build([]) |
9096
d4b868ed9cfb
buildvms command now runs "java -version" for each VM built unless -n option is specified
Doug Simon <doug.simon@oracle.com>
parents:
9095
diff
changeset
|
1178 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
|
1179 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
|
1180 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
|
1181 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
|
1182 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
|
1183 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
|
1184 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
|
1185 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1186 |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1187 def _jvmci_gate_runner(args, tasks): |
22286
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
1188 with Task('Check jvmci.make in sync with suite.py', tasks) as t: |
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
1189 if t: |
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
1190 jvmciMake = join(_suite.dir, 'make', 'jvmci.make') |
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
1191 if mx_jvmci_makefile.build_makefile(['-o', jvmciMake]) != 0: |
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
1192 t.abort('Rerun "mx makefile -o ' + jvmciMake + ' and check-in the modified ' + jvmciMake) |
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
1193 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1194 # 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
|
1195 with Task('BuildHotSpotJVMCIHosted: product', tasks) as t: |
22326
f150f5e00ccd
Remove unused --check-distributions option.
Roland Schatz <roland.schatz@oracle.com>
parents:
22323
diff
changeset
|
1196 if t: buildvms(['--vms', 'server', '--builds', 'product']) |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11605
diff
changeset
|
1197 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1198 # Run unit tests on server-hosted-jvmci |
19162
32c7a5a88523
Run unit tests even earlier during gate
Doug Simon <doug.simon@oracle.com>
parents:
19160
diff
changeset
|
1199 with VM('server', 'product'): |
22333
fa6dd3cadaaf
Run only jvmci unit tests in gate.
Roland Schatz <roland.schatz@oracle.com>
parents:
22332
diff
changeset
|
1200 with Task('JVMCI UnitTests: hosted-product', tasks) as t: |
fa6dd3cadaaf
Run only jvmci unit tests in gate.
Roland Schatz <roland.schatz@oracle.com>
parents:
22332
diff
changeset
|
1201 if t: unittest(['--suite', 'jvmci', '--enable-timing', '--verbose', '--fail-fast']) |
19160
d4f80cf249d0
Run unittest earlier during gate
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
19044
diff
changeset
|
1202 |
19162
32c7a5a88523
Run unit tests even earlier during gate
Doug Simon <doug.simon@oracle.com>
parents:
19160
diff
changeset
|
1203 # Build the other VM flavors |
22334
aef178739a23
Fix name of gate task.
Roland Schatz <roland.schatz@oracle.com>
parents:
22333
diff
changeset
|
1204 with Task('BuildHotSpotJVMCIOthers: fastdebug,product', tasks) as t: |
22326
f150f5e00ccd
Remove unused --check-distributions option.
Roland Schatz <roland.schatz@oracle.com>
parents:
22323
diff
changeset
|
1205 if t: buildvms(['--vms', 'jvmci,server', '--builds', 'fastdebug,product']) |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1206 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1207 with Task('CleanAndBuildIdealGraphVisualizer', tasks, disableJacoco=True) as t: |
20996
5e78d067ebbe
Do not build IGV in gate when running on SPARC
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
20994
diff
changeset
|
1208 if t and platform.processor() != 'sparc': |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1209 buildxml = mx._cygpathU2W(join(_suite.dir, '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
|
1210 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
|
1211 |
21566 | 1212 # Prevent JVMCI modifications from breaking the standard builds |
1213 if args.buildNonJVMCI: | |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1214 with Task('BuildHotSpotVarieties', tasks, disableJacoco=True) 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:
19796
diff
changeset
|
1215 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:
19796
diff
changeset
|
1216 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:
19796
diff
changeset
|
1217 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
|
1218 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
|
1219 |
22291
ccee68149d93
added --all-suites option to gate
Doug Simon <doug.simon@oracle.com>
parents:
22290
diff
changeset
|
1220 mx_gate.add_gate_runner(_suite, _jvmci_gate_runner) |
22286
2ecfec90e51e
moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents:
22284
diff
changeset
|
1221 mx_gate.add_gate_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:
19796
diff
changeset
|
1222 |
6340
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1223 def deoptalot(args): |
22108
51ceda0cf404
mx: make deoptalot command more flexible in terms of VM management
Doug Simon <doug.simon@oracle.com>
parents:
22099
diff
changeset
|
1224 """bootstrap a 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
|
1225 |
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1226 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
|
1227 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
|
1228 count = 1 |
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1229 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
|
1230 count = int(args[0]) |
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1231 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
|
1232 |
7509 | 1233 for _ in range(count): |
22108
51ceda0cf404
mx: make deoptalot command more flexible in terms of VM management
Doug Simon <doug.simon@oracle.com>
parents:
22099
diff
changeset
|
1234 if not vm(['-XX:-TieredCompilation', '-XX:+DeoptimizeALot', '-XX:+VerifyOops'] + args + ['-version']) == 0: |
6340
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1235 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
|
1236 |
6340
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1237 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
|
1238 |
6340
74560fdffd51
Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
6319
diff
changeset
|
1239 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
|
1240 |
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
|
1241 def _igvJdk(): |
18893
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
|
1242 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
|
1243 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
|
1244 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
|
1245 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
|
1246 return version >= v8 and (version < v8u20 or version >= v8u40) |
22327
2c352e8d76ec
Fix 'mx igv' command.
Roland Schatz <roland.schatz@oracle.com>
parents:
22326
diff
changeset
|
1247 return mx.get_jdk(_igvJdkVersionCheck, versionDescription='>= 1.8 and < 1.8.0u20 or >= 1.8.0u40', purpose="building & running IGV").home |
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
|
1248 |
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
|
1249 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
|
1250 # 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
|
1251 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
|
1252 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
|
1253 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
|
1254 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
|
1255 # 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
|
1256 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
|
1257 # 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
|
1258 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
|
1259 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
|
1260 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
|
1261 |
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
|
1262 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:
17372
diff
changeset
|
1263 return env |
9e5abd0e7916
mx/igv: fallback mechanism to work around a javac bug in jdk8u20
Bernhard Urban <bernhard.urban@jku.at>
parents:
17372
diff
changeset
|
1264 |
5089
206e68bb66c6
Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents:
5064
diff
changeset
|
1265 def igv(args): |
206e68bb66c6
Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents:
5064
diff
changeset
|
1266 """run the Ideal Graph Visualizer""" |
18893
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
|
1267 logFile = '.ideal_graph_visualizer.log' |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1268 with open(join(_suite.dir, 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
|
1269 mx.logv('[Ideal Graph Visualizer log is in ' + fp.name + ']') |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1270 nbplatform = join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'nbplatform') |
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
|
1271 |
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
|
1272 # 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
|
1273 if exists(nbplatform): |
19430
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1274 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
|
1275 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
|
1276 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
|
1277 shutil.rmtree(nbplatform) |
19430
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1278 else: |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1279 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
|
1280 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
|
1281 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
|
1282 if currentVersion < supportedVersion: |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1283 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
|
1284 shutil.rmtree(nbplatform) |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1285 elif supportedVersion < currentVersion: |
9f037830060a
Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
19335
diff
changeset
|
1286 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
|
1287 |
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
|
1288 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
|
1289 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
|
1290 |
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
|
1291 env = _igvBuildEnv() |
18983
43baadc1913a
Automatically install Batik for SVG export in IGV
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18931
diff
changeset
|
1292 # 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
|
1293 env['IGV_BATIK_JAR'] = mx.library('BATIK').get_path(True) |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1294 if mx.run(['ant', '-f', mx._cygpathU2W(join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml')), '-l', mx._cygpathU2W(fp.name), 'run'], env=env, nonZeroIsFatal=False): |
18893
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
|
1295 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
|
1296 |
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
|
1297 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
|
1298 """run the Cl Compiler Visualizer""" |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1299 libpath = join(_suite.dir, 'lib') |
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
|
1300 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
|
1301 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
|
1302 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
|
1303 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
|
1304 |
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
|
1305 # 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
|
1306 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
|
1307 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
|
1308 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
|
1309 |
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
|
1310 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
|
1311 |
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
|
1312 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
|
1313 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
|
1314 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
|
1315 |
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
|
1316 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
|
1317 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
|
1318 |
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
|
1319 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
|
1320 # 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
|
1321 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
|
1322 |
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
|
1323 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
|
1324 |
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
|
1325 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
|
1326 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
|
1327 if not path: |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1328 probe = join(dirname(_suite.dir), 'java-benchmarks') |
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
|
1329 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
|
1330 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
|
1331 |
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
|
1332 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
|
1333 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
|
1334 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
|
1335 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
|
1336 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
|
1337 |
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
|
1338 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
|
1339 """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
|
1340 |
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
|
1341 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
|
1342 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
|
1343 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
|
1344 |
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
|
1345 '[{"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
|
1346 |
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
|
1347 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
|
1348 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
|
1349 |
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
|
1350 <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
|
1351 <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
|
1352 <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
|
1353 <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
|
1354 </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
|
1355 |
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
|
1356 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
|
1357 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
|
1358 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
|
1359 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
|
1360 |
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
|
1361 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
|
1362 path = artifactId + '.jar' |
22169
f9ddf6b6dd6b
minor fixes related to mx2 transition
Doug Simon <doug.simon@oracle.com>
parents:
22167
diff
changeset
|
1363 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
|
1364 if args.permissive: |
22181
ffdee9fe0ded
fixed uses of dist.sorted_deps()
Doug Simon <doug.simon@oracle.com>
parents:
22180
diff
changeset
|
1365 for name, dep in [(d, mx.dependency(d, fatalIfMissing=False)) for d in deps]: |
ffdee9fe0ded
fixed uses of dist.sorted_deps()
Doug Simon <doug.simon@oracle.com>
parents:
22180
diff
changeset
|
1366 if dep is None: |
ffdee9fe0ded
fixed uses of dist.sorted_deps()
Doug Simon <doug.simon@oracle.com>
parents:
22180
diff
changeset
|
1367 mx.log('Skipping dependency ' + groupId + '.' + artifactId + ' as ' + name + ' cannot be resolved') |
ffdee9fe0ded
fixed uses of dist.sorted_deps()
Doug Simon <doug.simon@oracle.com>
parents:
22180
diff
changeset
|
1368 return |
ffdee9fe0ded
fixed uses of dist.sorted_deps()
Doug Simon <doug.simon@oracle.com>
parents:
22180
diff
changeset
|
1369 if dep.isDistribution(): |
ffdee9fe0ded
fixed uses of dist.sorted_deps()
Doug Simon <doug.simon@oracle.com>
parents:
22180
diff
changeset
|
1370 allDeps = allDeps + [d.name for d in dep.archived_deps() if d.isJavaProject()] |
17356
115de469a26b
support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents:
17321
diff
changeset
|
1371 else: |
115de469a26b
support distributions in pom.mxdeps files
Doug Simon <doug.simon@oracle.com>
parents:
17321
diff
changeset
|
1372 allDeps.append(name) |
22181
ffdee9fe0ded
fixed uses of dist.sorted_deps()
Doug Simon <doug.simon@oracle.com>
parents:
22180
diff
changeset
|
1373 d = mx.Distribution(_suite, name=artifactId, subDir=_suite.dir, path=path, sourcesPath=path, deps=allDeps, mainClass=None, excludedLibs=[], 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
|
1374 d.make_archive() |
22170
480635800a1b
buildjmhdeps should use Graal for JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22169
diff
changeset
|
1375 env = os.environ.copy() |
22277
a48774f9b97a
renamed mx_jvmci.get_jdk() to mx_jvmci.get_jvmci_jdk()
Doug Simon <doug.simon@oracle.com>
parents:
22274
diff
changeset
|
1376 env['JAVA_HOME'] = get_jvmci_jdk(vmToCheck='server') |
22170
480635800a1b
buildjmhdeps should use Graal for JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22169
diff
changeset
|
1377 env['MAVEN_OPTS'] = '-server -XX:-UseJVMCIClassLoader' |
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
|
1378 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
|
1379 '-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
|
1380 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
|
1381 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
|
1382 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
|
1383 cmd = cmd + ['-s', args.settings] |
22170
480635800a1b
buildjmhdeps should use Graal for JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22169
diff
changeset
|
1384 mx.run(cmd, env=env) |
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
|
1385 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
|
1386 |
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
|
1387 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
|
1388 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
|
1389 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
|
1390 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
|
1391 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
|
1392 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
|
1393 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
|
1394 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
|
1395 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
|
1396 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
|
1397 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
|
1398 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
|
1399 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
|
1400 |
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
|
1401 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
|
1402 """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
|
1403 |
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
|
1404 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
|
1405 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
|
1406 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
|
1407 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
|
1408 |
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
|
1409 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
|
1410 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
|
1411 |
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
|
1412 # 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
|
1413 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
|
1414 |
22018
11ed27b2abe8
remove hard-coded use of 'mx' to refer to the mxDir for the graal suite
Doug Simon <doug.simon@oracle.com>
parents:
22017
diff
changeset
|
1415 timestamp = mx.TimeStampFile(join(_suite.mxDir, 'jmh', jmhPath.replace(os.sep, '_') + '.timestamp')) |
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
|
1416 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
|
1417 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
|
1418 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
|
1419 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
|
1420 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
|
1421 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
|
1422 # 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
|
1423 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
|
1424 |
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
|
1425 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
|
1426 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
|
1427 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
|
1428 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
|
1429 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
|
1430 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
|
1431 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
|
1432 env = os.environ.copy() |
22277
a48774f9b97a
renamed mx_jvmci.get_jdk() to mx_jvmci.get_jvmci_jdk()
Doug Simon <doug.simon@oracle.com>
parents:
22274
diff
changeset
|
1433 env['JAVA_HOME'] = get_jvmci_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
|
1434 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
|
1435 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
|
1436 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
|
1437 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
|
1438 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
|
1439 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
|
1440 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
|
1441 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
|
1442 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
|
1443 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
|
1444 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
|
1445 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
|
1446 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
|
1447 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
|
1448 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
|
1449 |
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
|
1450 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
|
1451 """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
|
1452 |
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
|
1453 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
|
1454 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
|
1455 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
|
1456 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
|
1457 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
|
1458 |
22020
36a7ec14279d
moved unit test support from mx_graal.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
22019
diff
changeset
|
1459 vmArgs, benchmarksAndJsons = mx.extract_VM_args(args) |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1460 if isJVMCIEnabled(get_vm()) and '-XX:-UseJVMCIClassLoader' not in vmArgs: |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21554
diff
changeset
|
1461 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
|
1462 |
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
|
1463 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
|
1464 jmhArgJsons = [b for b in benchmarksAndJsons if b.startswith('{')] |
22018
11ed27b2abe8
remove hard-coded use of 'mx' to refer to the mxDir for the graal suite
Doug Simon <doug.simon@oracle.com>
parents:
22017
diff
changeset
|
1465 jmhOutDir = join(_suite.mxDir, 'jmh') |
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
|
1466 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
|
1467 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
|
1468 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
|
1469 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
|
1470 |
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
|
1471 # 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
|
1472 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
|
1473 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
|
1474 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
|
1475 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
|
1476 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
|
1477 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
|
1478 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
|
1479 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
|
1480 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
|
1481 |
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
|
1482 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
|
1483 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
|
1484 |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1485 matchedSuites = set() |
13949
f694daada5bf
mx jmh: display the number of benchmarks that will run
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13948
diff
changeset
|
1486 numBench = [0] |
13935
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1487 for micros in os.listdir(jmhPath): |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1488 absoluteMicro = os.path.join(jmhPath, micros) |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1489 if not os.path.isdir(absoluteMicro): |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1490 continue |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1491 if not micros.startswith("micros-"): |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1492 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
|
1493 continue |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1494 |
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
|
1495 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
|
1496 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
|
1497 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
|
1498 continue |
13935
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1499 if benchmarks: |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1500 def _addBenchmark(x): |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1501 if x.startswith("Benchmark:"): |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1502 return |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1503 match = False |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1504 for b in benchmarks: |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1505 match = match or (b in x) |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1506 |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1507 if match: |
13949
f694daada5bf
mx jmh: display the number of benchmarks that will run
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13948
diff
changeset
|
1508 numBench[0] += 1 |
13935
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1509 matchedSuites.add(micros) |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1510 |
13967
4cd7c6629841
mx_graal: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
1511 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
|
1512 else: |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1513 matchedSuites.add(micros) |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1514 |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1515 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
|
1516 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
|
1517 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
|
1518 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
|
1519 |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1520 regex = [] |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1521 if benchmarks: |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1522 regex.append(r".*(" + "|".join(benchmarks) + ").*") |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1523 |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1524 for suite in matchedSuites: |
ca0e1af320f6
mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents:
13928
diff
changeset
|
1525 absoluteMicro = os.path.join(jmhPath, suite) |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1526 (pfx, exe, vm, forkedVmArgs, _) = parseVmArgs(vmArgs) |
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
|
1527 if pfx: |
18306 | 1528 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
|
1529 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
|
1530 '--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
|
1531 '--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
|
1532 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
|
1533 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
|
1534 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
|
1535 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
|
1536 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
|
1537 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1538 def microbench(args): |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1539 """run JMH microbenchmark projects""" |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1540 vmArgs, jmhArgs = mx.extract_VM_args(args, useDoubleDash=True) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1541 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1542 # look for -f in JMH arguments |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1543 containsF = False |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1544 forking = True |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1545 for i in range(len(jmhArgs)): |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1546 arg = jmhArgs[i] |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1547 if arg.startswith('-f'): |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1548 containsF = True |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1549 if arg == '-f' and (i+1) < len(jmhArgs): |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1550 arg += jmhArgs[i+1] |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1551 try: |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1552 if int(arg[2:]) == 0: |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1553 forking = False |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1554 except ValueError: |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1555 pass |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1556 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1557 # default to -f1 if not specified otherwise |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1558 if not containsF: |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1559 jmhArgs += ['-f1'] |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
1560 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1561 # find all projects with a direct JMH dependency |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1562 jmhProjects = [] |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1563 for p in mx.projects(): |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1564 if 'JMH' in p.deps: |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1565 jmhProjects.append(p.name) |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1566 cp = mx.classpath(jmhProjects) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1567 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1568 # execute JMH runner |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1569 args = ['-cp', cp] |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1570 if not forking: |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1571 args += vmArgs |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1572 args += ['org.openjdk.jmh.Main'] |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1573 if forking: |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1574 (_, _, jvm, _, _) = parseVmArgs(vmArgs) |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1575 args += ['--jvmArgsPrepend', ' '.join(['-' + jvm] + vmArgs)] |
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1576 vm(args + jmhArgs) |
8506
c3657d00e343
-Merge with tip
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8406
diff
changeset
|
1577 |
5596
e4b1bc5e29e0
hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents:
5517
diff
changeset
|
1578 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
|
1579 """download the hsdis library |
4482
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4480
diff
changeset
|
1580 |
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4480
diff
changeset
|
1581 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
|
1582 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
|
1583 flavor = 'intel' |
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4480
diff
changeset
|
1584 if 'att' in args: |
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4480
diff
changeset
|
1585 flavor = 'att' |
19691
84b85c43633b
[SPARC] Install hsdis-sparcv9.so into the jvm with mx
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
19430
diff
changeset
|
1586 if mx.get_arch() == "sparcv9": |
84b85c43633b
[SPARC] Install hsdis-sparcv9.so into the jvm with mx
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
19430
diff
changeset
|
1587 flavor = "sparcv9" |
17012
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16983
diff
changeset
|
1588 lib = mx.add_lib_suffix('hsdis-' + mx.get_arch()) |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1589 path = join(_suite.dir, '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
|
1590 |
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
|
1591 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
|
1592 '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
|
1593 '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
|
1594 '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
|
1595 '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
|
1596 '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
|
1597 '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
|
1598 } |
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
|
1599 |
16976
87fc600ec586
mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents:
16918
diff
changeset
|
1600 flavoredLib = flavor + "/" + lib |
87fc600ec586
mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents:
16918
diff
changeset
|
1601 if flavoredLib not in sha1s: |
87fc600ec586
mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents:
16918
diff
changeset
|
1602 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
|
1603 return |
87fc600ec586
mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents:
16918
diff
changeset
|
1604 |
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
|
1605 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
|
1606 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
|
1607 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
|
1608 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
|
1609 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
|
1610 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
|
1611 |
5245 | 1612 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
|
1613 """disassemble HexCodeFiles embedded in text files |
5245 | 1614 |
1615 Run a tool over the input files to convert all embedded HexCodeFiles | |
1616 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
|
1617 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1618 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
|
1619 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
|
1620 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
|
1621 |
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
|
1622 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
|
1623 |
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
|
1624 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
|
1625 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
|
1626 |
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
|
1627 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
|
1628 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
|
1629 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
|
1630 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
|
1631 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
|
1632 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
|
1633 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
|
1634 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
|
1635 address, symbol = addressAndSymbol |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11512
diff
changeset
|
1636 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
|
1637 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
|
1638 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
|
1639 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
|
1640 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
|
1641 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
|
1642 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
|
1643 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
|
1644 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
|
1645 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
|
1646 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
|
1647 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
|
1648 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
|
1649 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
|
1650 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
|
1651 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
|
1652 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
|
1653 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
|
1654 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
|
1655 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
|
1656 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
|
1657 print >> fp, l |
5245 | 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 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
|
1660 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
|
1661 |
16167
1f4955abca9b
mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents:
16117
diff
changeset
|
1662 def jol(args): |
1f4955abca9b
mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents:
16117
diff
changeset
|
1663 """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
|
1664 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
|
1665 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
|
1666 |
8588db09f5e9
mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents:
18163
diff
changeset
|
1667 if len(candidates) > 0: |
18601
676f1800077c
mx: removed unused _read_projects_file function
Doug Simon <doug.simon@oracle.com>
parents:
18414
diff
changeset
|
1668 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
|
1669 else: |
8588db09f5e9
mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents:
18163
diff
changeset
|
1670 # 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
|
1671 candidates = args |
16167
1f4955abca9b
mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents:
16117
diff
changeset
|
1672 |
1f4955abca9b
mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents:
16117
diff
changeset
|
1673 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
|
1674 |
22167
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1675 mx.update_commands(_suite, { |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1676 'build': [build, ''], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1677 'buildjmh': [buildjmh, '[-options]'], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1678 'buildvars': [buildvars, ''], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1679 'buildvms': [buildvms, '[-options]'], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1680 'c1visualizer' : [c1visualizer, ''], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1681 'export': [export, '[-options] [zipfile]'], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1682 'hsdis': [hsdis, '[att]'], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1683 'hcfdis': [hcfdis, ''], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1684 'igv' : [igv, ''], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1685 'jdkhome': [print_jdkhome, ''], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1686 'jmh': [jmh, '[VM options] [filters|JMH-args-as-json...]'], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1687 'makejmhdeps' : [makejmhdeps, ''], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1688 'shortunittest' : [shortunittest, '[unittest options] [--] [VM options] [filters...]', mx_unittest.unittestHelpSuffix], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1689 'vm': [vm, '[-options] class [args...]'], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1690 'deoptalot' : [deoptalot, '[n]'], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1691 'longtests' : [longtests, ''], |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1692 'jol' : [jol, ''], |
22427
9c55f608b79e
Generate jvmci.make with all defined dependencies/bootclasspath regardless availability in the current enviornment
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
22418
diff
changeset
|
1693 'makefile' : [mx_jvmci_makefile.build_makefile, 'build makefiles for JDK build', None, {'keepUnsatisfiedDependencies': True}], |
22167
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1694 }) |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
1695 |
22167
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1696 mx.add_argument('--vmcwd', dest='vm_cwd', help='current directory will be changed to <path> before the VM is executed', default=None, metavar='<path>') |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1697 mx.add_argument('--installed-jdks', help='the base directory in which the JDKs cloned from $JAVA_HOME exist. ' + |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1698 'The VM selected by --vm and --vmbuild options is under this directory (i.e., ' + |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1699 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
|
1700 |
22167
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1701 mx.add_argument('--vm', action='store', dest='vm', choices=_vmChoices.keys(), help='the VM type to build/run') |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1702 mx.add_argument('--vmbuild', action='store', dest='vmbuild', choices=_vmbuildChoices, help='the VM build to build/run (default: ' + _vmbuildChoices[0] + ')') |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1703 mx.add_argument('--ecl', action='store_true', dest='make_eclipse_launch', help='create launch configuration for running VM execution(s) in Eclipse') |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1704 mx.add_argument('--vmprefix', action='store', dest='vm_prefix', help='prefix for running the VM (e.g. "/usr/bin/gdb --args")', metavar='<prefix>') |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1705 mx.add_argument('--gdb', action='store_const', const='/usr/bin/gdb --args', dest='vm_prefix', help='alias for --vmprefix "/usr/bin/gdb --args"') |
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1706 mx.add_argument('--lldb', action='store_const', const='lldb --', dest='vm_prefix', help='alias for --vmprefix "lldb --"') |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3736
diff
changeset
|
1707 |
22041
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1708 class JVMCIArchiveParticipant: |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1709 def __init__(self, dist): |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1710 self.dist = dist |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1711 self.jvmciServices = {} |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1712 |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1713 def __opened__(self, arc, srcArc, services): |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1714 self.services = services |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1715 self.arc = arc |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1716 self.expectedOptionsProviders = set() |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1717 |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1718 def __add__(self, arcname, contents): |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1719 if arcname.startswith('META-INF/jvmci.services/'): |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1720 service = arcname[len('META-INF/jvmci.services/'):] |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1721 self.jvmciServices.setdefault(service, []).extend([provider for provider in contents.split('\n')]) |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1722 return True |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1723 if arcname.startswith('META-INF/jvmci.providers/'): |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1724 provider = arcname[len('META-INF/jvmci.providers/'):] |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1725 for service in contents.split(os.linesep): |
22041
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1726 self.jvmciServices.setdefault(service, []).append(provider) |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1727 return True |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1728 elif arcname.startswith('META-INF/jvmci.options/'): |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1729 # Need to create service files for the providers of the |
22054 | 1730 # jdk.internal.jvmci.options.Options service created by |
1731 # jdk.internal.jvmci.options.processor.OptionProcessor. | |
22041
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1732 optionsOwner = arcname[len('META-INF/jvmci.options/'):] |
22398
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1733 provider = optionsOwner + '_OptionDescriptors' |
22041
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1734 self.expectedOptionsProviders.add(provider.replace('.', '/') + '.class') |
22398
4f6caa445b92
moved JVMCI option parsing back into Java
Doug Simon <doug.simon@oracle.com>
parents:
22395
diff
changeset
|
1735 self.services.setdefault('jdk.internal.jvmci.options.OptionDescriptors', []).append(provider) |
22041
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1736 return False |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1737 |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1738 def __addsrc__(self, arcname, contents): |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1739 return False |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1740 |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1741 def __closing__(self): |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1742 self.expectedOptionsProviders -= set(self.arc.zf.namelist()) |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1743 assert len(self.expectedOptionsProviders) == 0, 'missing generated Options providers:\n ' + '\n '.join(self.expectedOptionsProviders) |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1744 for service, providers in self.jvmciServices.iteritems(): |
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1745 arcname = 'META-INF/jvmci.services/' + service |
22042
db48a62aba36
only (re)make archives from build command if at least one compilation occurred
Doug Simon <doug.simon@oracle.com>
parents:
22041
diff
changeset
|
1746 # Convert providers to a set before printing to remove duplicates |
22142
8704244e4f6a
service provider configuration files must end with a new line
Doug Simon <doug.simon@oracle.com>
parents:
22141
diff
changeset
|
1747 self.arc.zf.writestr(arcname, '\n'.join(frozenset(providers))+ '\n') |
22041
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1748 |
22167
22b37f37be0a
adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents:
22166
diff
changeset
|
1749 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
|
1750 # TODO _minVersion check could probably be part of a Suite in mx? |
21976
36e37644f91e
mx: improve first usage experience:
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21975
diff
changeset
|
1751 def _versionCheck(version): |
36e37644f91e
mx: improve first usage experience:
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21975
diff
changeset
|
1752 return version >= _minVersion and (not _untilVersion or version >= _untilVersion) |
36e37644f91e
mx: improve first usage experience:
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21975
diff
changeset
|
1753 versionDesc = ">=" + str(_minVersion) |
36e37644f91e
mx: improve first usage experience:
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21975
diff
changeset
|
1754 if _untilVersion: |
36e37644f91e
mx: improve first usage experience:
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21975
diff
changeset
|
1755 versionDesc += " and <=" + str(_untilVersion) |
22278
224416477bab
rename mx.java() to mx.get_jdk()
Doug Simon <doug.simon@oracle.com>
parents:
22277
diff
changeset
|
1756 mx.get_jdk(_versionCheck, versionDescription=versionDesc, defaultJdk=True) |
5729
dab877fe7c31
prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents:
5708
diff
changeset
|
1757 |
22019
07cfd3d7072b
removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents:
22018
diff
changeset
|
1758 if hasattr(opts, 'vm') and opts.vm is not None: |
07cfd3d7072b
removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents:
22018
diff
changeset
|
1759 global _vm |
07cfd3d7072b
removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents:
22018
diff
changeset
|
1760 _vm = opts.vm |
07cfd3d7072b
removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents:
22018
diff
changeset
|
1761 _vm = _vm.replace('graal', 'jvmci') |
07cfd3d7072b
removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents:
22018
diff
changeset
|
1762 if hasattr(opts, 'vmbuild') and opts.vmbuild is not None: |
07cfd3d7072b
removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents:
22018
diff
changeset
|
1763 global _vmbuild |
07cfd3d7072b
removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents:
22018
diff
changeset
|
1764 _vmbuild = opts.vmbuild |
07cfd3d7072b
removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents:
22018
diff
changeset
|
1765 global _make_eclipse_launch |
07cfd3d7072b
removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents:
22018
diff
changeset
|
1766 _make_eclipse_launch = getattr(opts, 'make_eclipse_launch', False) |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
1767 global _vm_cwd |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
1768 _vm_cwd = opts.vm_cwd |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
1769 global _installed_jdks |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
1770 _installed_jdks = opts.installed_jdks |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
1771 global _vm_prefix |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11395
diff
changeset
|
1772 _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
|
1773 |
22282
9ab88ee1f79f
spelling fix: instanciate -> instantiate
Doug Simon <doug.simon@oracle.com>
parents:
22281
diff
changeset
|
1774 mx.instantiateDistribution('JVM_<vmbuild>_<vm>', dict(vmbuild=_vmbuild, vm=get_vm())) |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1775 |
22139
ed35cb998428
Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents:
22108
diff
changeset
|
1776 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
|
1777 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
|
1778 def _install(dist): |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1779 _installDistInJdks(jdkDeployable) |
21031
e1c063565b3c
Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
20996
diff
changeset
|
1780 return _install |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1781 dist = jdkDist.dist() |
22041
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1782 dist.add_update_listener(_close(jdkDist)) |
22280
ac5551e3ff9c
Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
22279
diff
changeset
|
1783 if isinstance(jdkDist, JvmciJDKDeployedDist): |
22041
56c50504d60d
mx: removed JVMCI code from Distribution.make_archive
Doug Simon <doug.simon@oracle.com>
parents:
22031
diff
changeset
|
1784 dist.set_archiveparticipant(JVMCIArchiveParticipant(dist)) |