author | rfield |
Mon, 10 Oct 2016 18:41:12 -0700 | |
changeset 41514 | a75c2b869d8d |
parent 40046 | 01e973266ee4 |
child 43939 | 39f5b59549de |
permissions | -rw-r--r-- |
34505
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
1 |
# |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
2 |
# ---------------------------------------------------------------------------------------------------- |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
3 |
# |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
4 |
# Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
5 |
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
6 |
# |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
7 |
# This code is free software; you can redistribute it and/or modify it |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
8 |
# under the terms of the GNU General Public License version 2 only, as |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
9 |
# published by the Free Software Foundation. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
10 |
# |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
11 |
# This code is distributed in the hope that it will be useful, but WITHOUT |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
12 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
13 |
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
14 |
# version 2 for more details (a copy is included in the LICENSE file that |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
15 |
# accompanied this code). |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
16 |
# |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
17 |
# You should have received a copy of the GNU General Public License version |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
18 |
# 2 along with this work; if not, write to the Free Software Foundation, |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
19 |
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
20 |
# |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
21 |
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
22 |
# or visit www.oracle.com if you need additional information or have any |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
23 |
# questions. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
24 |
# |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
25 |
# ---------------------------------------------------------------------------------------------------- |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
26 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
27 |
import os, shutil, zipfile, re, time, sys, datetime, platform |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
28 |
from os.path import join, exists, dirname, isdir |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
29 |
from argparse import ArgumentParser, REMAINDER |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
30 |
import StringIO |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
31 |
import xml.dom.minidom |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
32 |
import subprocess |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
33 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
34 |
import mx |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
35 |
import mx_gate |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
36 |
import mx_unittest |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
37 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
38 |
from mx_gate import Task |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
39 |
from mx_unittest import unittest |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
40 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
41 |
_suite = mx.suite('jvmci') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
42 |
|
35598 | 43 |
JVMCI_VERSION = 9 |
44 |
||
34505
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
45 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
46 |
Top level directory of the JDK source workspace. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
47 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
48 |
_jdkSourceRoot = dirname(_suite.dir) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
49 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
50 |
_JVMCI_JDK_TAG = 'jvmci' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
51 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
52 |
_minVersion = mx.VersionSpec('1.9') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
53 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
54 |
# max version (first _unsupported_ version) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
55 |
_untilVersion = None |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
56 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
57 |
_jvmciModes = { |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
58 |
'hosted' : ['-XX:+UnlockExperimentalVMOptions', '-XX:+EnableJVMCI'], |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
59 |
'jit' : ['-XX:+UnlockExperimentalVMOptions', '-XX:+EnableJVMCI', '-XX:+UseJVMCICompiler'], |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
60 |
'disabled' : [] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
61 |
} |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
62 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
63 |
# TODO: can optimized be built without overriding release build? |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
64 |
_jdkDebugLevels = ['release', 'fastdebug', 'slowdebug'] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
65 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
66 |
# TODO: add client once/if it can be built on 64-bit platforms |
40046
01e973266ee4
8159888: [JVMCI] the client VM build is broken when INCLUDE_JVMCI is defined
dnsimon
parents:
39443
diff
changeset
|
67 |
_jdkJvmVariants = ['server', 'client'] |
34505
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
68 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
69 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
70 |
Translation table from mx_jvmci:8 --vmbuild values to mx_jvmci:9 --jdk-debug-level values. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
71 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
72 |
_legacyVmbuilds = { |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
73 |
'product' : 'release', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
74 |
'debug' : 'slowdebug' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
75 |
} |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
76 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
77 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
78 |
Translates a mx_jvmci:8 --vmbuild value to a mx_jvmci:9 --jdk-debug-level value. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
79 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
80 |
def _translateLegacyDebugLevel(debugLevel): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
81 |
return _legacyVmbuilds.get(debugLevel, debugLevel) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
82 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
83 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
84 |
Translation table from mx_jvmci:8 --vm values to mx_jvmci:9 (--jdk-jvm-variant, --jvmci-mode) tuples. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
85 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
86 |
_legacyVms = { |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
87 |
'jvmci' : ('server', 'jit') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
88 |
} |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
89 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
90 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
91 |
A VM configuration composed of a JDK debug level, JVM variant and a JVMCI mode. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
92 |
This is also a context manager that can be used with the 'with' statement to set/change |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
93 |
a VM configuration within a dynamic scope. For example: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
94 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
95 |
with ConfiguredJDK(debugLevel='fastdebug'): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
96 |
dacapo(['pmd']) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
97 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
98 |
class VM: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
99 |
def __init__(self, jvmVariant=None, debugLevel=None, jvmciMode=None): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
100 |
self.update(jvmVariant, debugLevel, jvmciMode) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
101 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
102 |
def update(self, jvmVariant=None, debugLevel=None, jvmciMode=None): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
103 |
if jvmVariant in _legacyVms: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
104 |
# Backwards compatibility for mx_jvmci:8 API |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
105 |
jvmVariant, newJvmciMode = _legacyVms[jvmVariant] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
106 |
if jvmciMode is not None and jvmciMode != newJvmciMode: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
107 |
mx.abort('JVM variant "' + jvmVariant + '" implies JVMCI mode "' + newJvmciMode + |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
108 |
'" which conflicts with explicitly specified JVMCI mode of "' + jvmciMode + '"') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
109 |
jvmciMode = newJvmciMode |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
110 |
debugLevel = _translateLegacyDebugLevel(debugLevel) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
111 |
assert jvmVariant is None or jvmVariant in _jdkJvmVariants, jvmVariant |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
112 |
assert debugLevel is None or debugLevel in _jdkDebugLevels, debugLevel |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
113 |
assert jvmciMode is None or jvmciMode in _jvmciModes, jvmciMode |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
114 |
self.jvmVariant = jvmVariant or _vm.jvmVariant |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
115 |
self.debugLevel = debugLevel or _vm.debugLevel |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
116 |
self.jvmciMode = jvmciMode or _vm.jvmciMode |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
117 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
118 |
def __enter__(self): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
119 |
global _vm |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
120 |
self.previousVm = _vm |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
121 |
_vm = self |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
122 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
123 |
def __exit__(self, exc_type, exc_value, traceback): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
124 |
global _vm |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
125 |
_vm = self.previousVm |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
126 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
127 |
_vm = VM(jvmVariant=_jdkJvmVariants[0], debugLevel=_jdkDebugLevels[0], jvmciMode='hosted') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
128 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
129 |
def get_vm(): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
130 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
131 |
Gets the configured VM. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
132 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
133 |
return _vm |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
134 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
135 |
def relativeVmLibDirInJdk(): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
136 |
mxos = mx.get_os() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
137 |
if mxos == 'darwin': |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
138 |
return join('lib') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
139 |
if mxos == 'windows' or mxos == 'cygwin': |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
140 |
return join('bin') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
141 |
return join('lib', mx.get_arch()) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
142 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
143 |
def isJVMCIEnabled(vm): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
144 |
assert vm in _jdkJvmVariants |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
145 |
return True |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
146 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
147 |
def _makehelp(): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
148 |
return subprocess.check_output([mx.gmake_cmd(), 'help'], cwd=_jdkSourceRoot) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
149 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
150 |
def _runmake(args): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
151 |
"""run the JDK make process |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
152 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
153 |
To build hotspot and import it into the JDK: "mx make hotspot import-hotspot" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
154 |
{0}""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
155 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
156 |
jdkBuildDir = _get_jdk_build_dir() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
157 |
if not exists(jdkBuildDir): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
158 |
# JDK9 must be bootstrapped with a JDK8 |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
159 |
compliance = mx.JavaCompliance('8') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
160 |
jdk8 = mx.get_jdk(compliance.exactMatch, versionDescription=compliance.value) |
38663
03fe0752bb2f
8155023: jdk.vm.ci needs to securely export services
dnsimon
parents:
35598
diff
changeset
|
161 |
cmd = ['sh', 'configure', '--with-debug-level=' + _vm.debugLevel, '--with-native-debug-symbols=external', '--disable-precompiled-headers', |
34505
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
162 |
'--with-jvm-variants=' + _vm.jvmVariant, '--disable-warnings-as-errors', '--with-boot-jdk=' + jdk8.home] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
163 |
mx.run(cmd, cwd=_jdkSourceRoot) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
164 |
cmd = [mx.gmake_cmd(), 'CONF=' + _vm.debugLevel] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
165 |
if mx.get_opts().verbose: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
166 |
cmd.append('LOG=debug') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
167 |
cmd.extend(args) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
168 |
if mx.get_opts().use_jdk_image and 'images' not in args: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
169 |
cmd.append('images') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
170 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
171 |
if not mx.get_opts().verbose: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
172 |
mx.log('--------------- make execution ----------------------') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
173 |
mx.log('Working directory: ' + _jdkSourceRoot) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
174 |
mx.log('Command line: ' + ' '.join(cmd)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
175 |
mx.log('-----------------------------------------------------') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
176 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
177 |
mx.run(cmd, cwd=_jdkSourceRoot) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
178 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
179 |
if 'images' in cmd: |
35598 | 180 |
jdkImageDir = join(jdkBuildDir, 'images', 'jdk') |
181 |
||
182 |
# The OpenJDK build creates an empty cacerts file so copy one from |
|
183 |
# the default JDK (which is assumed to be an OracleJDK) |
|
38695 | 184 |
srcCerts = join(mx.get_jdk(tag='default').home, 'lib', 'security', 'cacerts') |
185 |
if not exists(srcCerts): |
|
186 |
# Might be building with JDK8 which has cacerts under jre/ |
|
187 |
srcCerts = join(mx.get_jdk(tag='default').home, 'jre', 'lib', 'security', 'cacerts') |
|
35598 | 188 |
dstCerts = join(jdkImageDir, 'lib', 'security', 'cacerts') |
39443
ca6dfb34e46c
8159613: [Findbugs] various warnings reported for JVMCI sources
dnsimon
parents:
38695
diff
changeset
|
189 |
if srcCerts != dstCerts: |
ca6dfb34e46c
8159613: [Findbugs] various warnings reported for JVMCI sources
dnsimon
parents:
38695
diff
changeset
|
190 |
shutil.copyfile(srcCerts, dstCerts) |
35598 | 191 |
|
192 |
_create_jdk_bundle(jdkBuildDir, _vm.debugLevel, jdkImageDir) |
|
34505
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
193 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
194 |
def _get_jdk_bundle_arches(): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
195 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
196 |
Gets a list of names that will be the part of a JDK bundle's file name denoting the architecture. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
197 |
The first element in the list is the canonical name. Symlinks should be created for the |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
198 |
remaining names. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
199 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
200 |
cpu = mx.get_arch() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
201 |
if cpu == 'amd64': |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
202 |
return ['x64', 'x86_64', 'amd64'] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
203 |
elif cpu == 'sparcv9': |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
204 |
return ['sparcv9'] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
205 |
mx.abort('Unsupported JDK bundle arch: ' + cpu) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
206 |
|
35598 | 207 |
def _create_jdk_bundle(jdkBuildDir, debugLevel, jdkImageDir): |
34505
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
208 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
209 |
Creates a tar.gz JDK archive, an accompanying tar.gz.sha1 file with its |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
210 |
SHA1 signature plus symlinks to the archive for non-canonical architecture names. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
211 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
212 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
213 |
arches = _get_jdk_bundle_arches() |
35598 | 214 |
jdkTgzPath = join(_suite.get_output_root(), 'jdk-bundles', 'jdk9-{}-{}-{}.tar.gz'.format(debugLevel, _get_openjdk_os(), arches[0])) |
34505
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
215 |
with mx.Archiver(jdkTgzPath, kind='tgz') as arc: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
216 |
mx.log('Creating ' + jdkTgzPath) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
217 |
for root, _, filenames in os.walk(jdkImageDir): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
218 |
for name in filenames: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
219 |
f = join(root, name) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
220 |
arcname = 'jdk1.9.0/' + os.path.relpath(f, jdkImageDir) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
221 |
arc.zf.add(name=f, arcname=arcname, recursive=False) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
222 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
223 |
with open(jdkTgzPath + '.sha1', 'w') as fp: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
224 |
mx.log('Creating ' + jdkTgzPath + '.sha1') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
225 |
fp.write(mx.sha1OfFile(jdkTgzPath)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
226 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
227 |
def _create_link(source, link_name): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
228 |
if exists(link_name): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
229 |
os.remove(link_name) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
230 |
mx.log('Creating ' + link_name + ' -> ' + source) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
231 |
os.symlink(source, link_name) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
232 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
233 |
for arch in arches[1:]: |
35598 | 234 |
link_name = join(_suite.get_output_root(), 'jdk-bundles', 'jdk9-{}-{}-{}.tar.gz'.format(debugLevel, _get_openjdk_os(), arch)) |
34505
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
235 |
jdkTgzName = os.path.basename(jdkTgzPath) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
236 |
_create_link(jdkTgzName, link_name) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
237 |
_create_link(jdkTgzName + '.sha1', link_name + '.sha1') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
238 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
239 |
def _runmultimake(args): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
240 |
"""run the JDK make process for one or more configurations""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
241 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
242 |
jvmVariantsDefault = ','.join(_jdkJvmVariants) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
243 |
debugLevelsDefault = ','.join(_jdkDebugLevels) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
244 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
245 |
parser = ArgumentParser(prog='mx multimake') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
246 |
parser.add_argument('--jdk-jvm-variants', '--vms', help='a comma separated list of VMs to build (default: ' + jvmVariantsDefault + ')', metavar='<args>', default=jvmVariantsDefault) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
247 |
parser.add_argument('--jdk-debug-levels', '--builds', help='a comma separated list of JDK debug levels (default: ' + debugLevelsDefault + ')', metavar='<args>', default=debugLevelsDefault) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
248 |
parser.add_argument('-n', '--no-check', action='store_true', help='omit running "java -version" after each build') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
249 |
select = parser.add_mutually_exclusive_group() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
250 |
select.add_argument('-c', '--console', action='store_true', help='send build output to console instead of log files') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
251 |
select.add_argument('-d', '--output-dir', help='directory for log files instead of current working directory', default=os.getcwd(), metavar='<dir>') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
252 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
253 |
args = parser.parse_args(args) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
254 |
jvmVariants = args.jdk_jvm_variants.split(',') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
255 |
debugLevels = [_translateLegacyDebugLevel(dl) for dl in args.jdk_debug_levels.split(',')] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
256 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
257 |
allStart = time.time() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
258 |
for jvmVariant in jvmVariants: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
259 |
for debugLevel in debugLevels: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
260 |
if not args.console: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
261 |
logFile = join(mx.ensure_dir_exists(args.output_dir), jvmVariant + '-' + debugLevel + '.log') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
262 |
log = open(logFile, 'wb') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
263 |
start = time.time() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
264 |
mx.log('BEGIN: ' + jvmVariant + '-' + debugLevel + '\t(see: ' + logFile + ')') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
265 |
verbose = ['-v'] if mx.get_opts().verbose else [] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
266 |
# Run as subprocess so that output can be directed to a file |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
267 |
cmd = [sys.executable, '-u', mx.__file__] + verbose + ['--jdk-jvm-variant=' + jvmVariant, '--jdk-debug-level=' + debugLevel, 'make'] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
268 |
mx.logv("executing command: " + str(cmd)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
269 |
subprocess.check_call(cmd, cwd=_suite.dir, stdout=log, stderr=subprocess.STDOUT) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
270 |
duration = datetime.timedelta(seconds=time.time() - start) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
271 |
mx.log('END: ' + jvmVariant + '-' + debugLevel + '\t[' + str(duration) + ']') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
272 |
else: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
273 |
with VM(jvmVariant=jvmVariant, debugLevel=debugLevel): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
274 |
_runmake([]) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
275 |
if not args.no_check: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
276 |
with VM(jvmciMode='jit'): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
277 |
run_vm(['-XX:-BootstrapJVMCI', '-version']) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
278 |
allDuration = datetime.timedelta(seconds=time.time() - allStart) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
279 |
mx.log('TOTAL TIME: ' + '[' + str(allDuration) + ']') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
280 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
281 |
class HotSpotProject(mx.NativeProject): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
282 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
283 |
Defines a NativeProject representing the HotSpot binaries built via make. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
284 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
285 |
def __init__(self, suite, name, deps, workingSets, **args): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
286 |
assert name == 'hotspot' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
287 |
mx.NativeProject.__init__(self, suite, name, "", [], deps, workingSets, None, None, join(suite.mxDir, name)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
288 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
289 |
def eclipse_config_up_to_date(self, configZip): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
290 |
# Assume that any change to this module might imply changes to the generated IDE files |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
291 |
if configZip.isOlderThan(__file__): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
292 |
return False |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
293 |
for _, source in self._get_eclipse_settings_sources().iteritems(): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
294 |
if configZip.isOlderThan(source): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
295 |
return False |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
296 |
return True |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
297 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
298 |
def _get_eclipse_settings_sources(self): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
299 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
300 |
Gets a dictionary from the name of an Eclipse settings file to |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
301 |
the file providing its generated content. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
302 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
303 |
if not hasattr(self, '_eclipse_settings'): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
304 |
esdict = {} |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
305 |
templateSettingsDir = join(self.dir, 'templates', 'eclipse', 'settings') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
306 |
if exists(templateSettingsDir): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
307 |
for name in os.listdir(templateSettingsDir): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
308 |
source = join(templateSettingsDir, name) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
309 |
esdict[name] = source |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
310 |
self._eclipse_settings = esdict |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
311 |
return self._eclipse_settings |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
312 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
313 |
def _eclipseinit(self, files=None, libFiles=None): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
314 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
315 |
Generates an Eclipse project for each HotSpot build configuration. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
316 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
317 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
318 |
roots = [ |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
319 |
'ASSEMBLY_EXCEPTION', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
320 |
'LICENSE', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
321 |
'README', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
322 |
'THIRD_PARTY_README', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
323 |
'agent', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
324 |
'make', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
325 |
'src', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
326 |
'test' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
327 |
] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
328 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
329 |
for jvmVariant in _jdkJvmVariants: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
330 |
for debugLevel in _jdkDebugLevels: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
331 |
name = jvmVariant + '-' + debugLevel |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
332 |
eclProjectDir = join(self.dir, 'eclipse', name) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
333 |
mx.ensure_dir_exists(eclProjectDir) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
334 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
335 |
out = mx.XMLDoc() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
336 |
out.open('projectDescription') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
337 |
out.element('name', data='hotspot:' + name) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
338 |
out.element('comment', data='') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
339 |
out.element('projects', data='') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
340 |
out.open('buildSpec') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
341 |
out.open('buildCommand') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
342 |
out.element('name', data='org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
343 |
out.element('triggers', data='full,incremental') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
344 |
out.element('arguments', data='') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
345 |
out.close('buildCommand') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
346 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
347 |
out.close('buildSpec') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
348 |
out.open('natures') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
349 |
out.element('nature', data='org.eclipse.cdt.core.cnature') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
350 |
out.element('nature', data='org.eclipse.cdt.core.ccnature') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
351 |
out.element('nature', data='org.eclipse.cdt.managedbuilder.core.managedBuildNature') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
352 |
out.element('nature', data='org.eclipse.cdt.managedbuilder.core.ScannerConfigNature') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
353 |
out.close('natures') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
354 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
355 |
if roots: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
356 |
out.open('linkedResources') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
357 |
for r in roots: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
358 |
f = join(_suite.dir, r) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
359 |
out.open('link') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
360 |
out.element('name', data=r) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
361 |
out.element('type', data='2' if isdir(f) else '1') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
362 |
out.element('locationURI', data=mx.get_eclipse_project_rel_locationURI(f, eclProjectDir)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
363 |
out.close('link') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
364 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
365 |
out.open('link') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
366 |
out.element('name', data='generated') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
367 |
out.element('type', data='2') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
368 |
generated = join(_get_hotspot_build_dir(jvmVariant, debugLevel), 'generated') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
369 |
out.element('locationURI', data=mx.get_eclipse_project_rel_locationURI(generated, eclProjectDir)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
370 |
out.close('link') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
371 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
372 |
out.close('linkedResources') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
373 |
out.close('projectDescription') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
374 |
projectFile = join(eclProjectDir, '.project') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
375 |
mx.update_file(projectFile, out.xml(indent='\t', newl='\n')) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
376 |
if files: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
377 |
files.append(projectFile) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
378 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
379 |
cprojectTemplate = join(self.dir, 'templates', 'eclipse', 'cproject') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
380 |
cprojectFile = join(eclProjectDir, '.cproject') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
381 |
with open(cprojectTemplate) as f: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
382 |
content = f.read() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
383 |
mx.update_file(cprojectFile, content) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
384 |
if files: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
385 |
files.append(cprojectFile) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
386 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
387 |
settingsDir = join(eclProjectDir, ".settings") |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
388 |
mx.ensure_dir_exists(settingsDir) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
389 |
for name, source in self._get_eclipse_settings_sources().iteritems(): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
390 |
out = StringIO.StringIO() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
391 |
print >> out, '# GENERATED -- DO NOT EDIT' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
392 |
print >> out, '# Source:', source |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
393 |
with open(source) as f: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
394 |
print >> out, f.read() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
395 |
content = out.getvalue() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
396 |
mx.update_file(join(settingsDir, name), content) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
397 |
if files: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
398 |
files.append(join(settingsDir, name)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
399 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
400 |
def getBuildTask(self, args): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
401 |
return JDKBuildTask(self, args, _vm.debugLevel, _vm.jvmVariant) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
402 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
403 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
404 |
class JDKBuildTask(mx.NativeBuildTask): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
405 |
def __init__(self, project, args, debugLevel, jvmVariant): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
406 |
mx.NativeBuildTask.__init__(self, args, project) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
407 |
self.jvmVariant = jvmVariant |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
408 |
self.debugLevel = debugLevel |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
409 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
410 |
def __str__(self): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
411 |
return 'Building JDK[{}, {}]'.format(self.debugLevel, self.jvmVariant) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
412 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
413 |
def build(self): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
414 |
if mx.get_opts().use_jdk_image: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
415 |
_runmake(['images']) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
416 |
else: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
417 |
_runmake([]) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
418 |
self._newestOutput = None |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
419 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
420 |
def clean(self, forBuild=False): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
421 |
if forBuild: # Let make handle incremental builds |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
422 |
return |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
423 |
if exists(_get_jdk_build_dir(self.debugLevel)): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
424 |
_runmake(['clean']) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
425 |
self._newestOutput = None |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
426 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
427 |
# Backwards compatibility for mx_jvmci:8 API |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
428 |
def buildvms(args): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
429 |
_runmultimake(args) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
430 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
431 |
def run_vm(args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, debugLevel=None, vmbuild=None): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
432 |
"""run a Java program by executing the java executable in a JVMCI JDK""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
433 |
jdkTag = mx.get_jdk_option().tag |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
434 |
if jdkTag and jdkTag != _JVMCI_JDK_TAG: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
435 |
mx.abort('The "--jdk" option must have the tag "' + _JVMCI_JDK_TAG + '" when running a command requiring a JVMCI VM') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
436 |
jdk = get_jvmci_jdk(debugLevel=debugLevel or _translateLegacyDebugLevel(vmbuild)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
437 |
return jdk.run_java(args, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd, timeout=timeout) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
438 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
439 |
def _unittest_vm_launcher(vmArgs, mainClass, mainClassArgs): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
440 |
run_vm(vmArgs + [mainClass] + mainClassArgs) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
441 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
442 |
mx_unittest.set_vm_launcher('JVMCI VM launcher', _unittest_vm_launcher) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
443 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
444 |
def _jvmci_gate_runner(args, tasks): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
445 |
# Build release server VM now so we can run the unit tests |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
446 |
with Task('BuildHotSpotJVMCIHosted: release', tasks) as t: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
447 |
if t: _runmultimake(['--jdk-jvm-variants', 'server', '--jdk-debug-levels', 'release']) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
448 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
449 |
# Run unit tests in hosted mode |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
450 |
with VM(jvmVariant='server', debugLevel='release', jvmciMode='hosted'): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
451 |
with Task('JVMCI UnitTests: hosted-release', tasks) as t: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
452 |
if t: unittest(['--suite', 'jvmci', '--enable-timing', '--verbose', '--fail-fast']) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
453 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
454 |
# Build the other VM flavors |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
455 |
with Task('BuildHotSpotJVMCIOthers: fastdebug', tasks) as t: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
456 |
if t: _runmultimake(['--jdk-jvm-variants', 'server', '--jdk-debug-levels', 'fastdebug']) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
457 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
458 |
with Task('CleanAndBuildIdealGraphVisualizer', tasks, disableJacoco=True) as t: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
459 |
if t and platform.processor() != 'sparc': |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
460 |
buildxml = mx._cygpathU2W(join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml')) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
461 |
mx.run(['ant', '-f', buildxml, '-q', 'clean', 'build'], env=_igvBuildEnv()) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
462 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
463 |
mx_gate.add_gate_runner(_suite, _jvmci_gate_runner) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
464 |
mx_gate.add_gate_argument('-g', '--only-build-jvmci', action='store_false', dest='buildNonJVMCI', help='only build the JVMCI VM') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
465 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
466 |
def _igvJdk(): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
467 |
v8u20 = mx.VersionSpec("1.8.0_20") |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
468 |
v8u40 = mx.VersionSpec("1.8.0_40") |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
469 |
v8 = mx.VersionSpec("1.8") |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
470 |
def _igvJdkVersionCheck(version): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
471 |
return version >= v8 and (version < v8u20 or version >= v8u40) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
472 |
return mx.get_jdk(_igvJdkVersionCheck, versionDescription='>= 1.8 and < 1.8.0u20 or >= 1.8.0u40', purpose="building & running IGV").home |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
473 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
474 |
def _igvBuildEnv(): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
475 |
# When the http_proxy environment variable is set, convert it to the proxy settings that ant needs |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
476 |
env = dict(os.environ) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
477 |
proxy = os.environ.get('http_proxy') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
478 |
if not (proxy is None) and len(proxy) > 0: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
479 |
if '://' in proxy: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
480 |
# Remove the http:// prefix (or any other protocol prefix) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
481 |
proxy = proxy.split('://', 1)[1] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
482 |
# Separate proxy server name and port number |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
483 |
proxyName, proxyPort = proxy.split(':', 1) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
484 |
proxyEnv = '-DproxyHost="' + proxyName + '" -DproxyPort=' + proxyPort |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
485 |
env['ANT_OPTS'] = proxyEnv |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
486 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
487 |
env['JAVA_HOME'] = _igvJdk() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
488 |
return env |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
489 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
490 |
def igv(args): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
491 |
"""run the Ideal Graph Visualizer""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
492 |
logFile = '.ideal_graph_visualizer.log' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
493 |
with open(join(_suite.dir, logFile), 'w') as fp: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
494 |
mx.logv('[Ideal Graph Visualizer log is in ' + fp.name + ']') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
495 |
nbplatform = join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'nbplatform') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
496 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
497 |
# Remove NetBeans platform if it is earlier than the current supported version |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
498 |
if exists(nbplatform): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
499 |
updateTrackingFile = join(nbplatform, 'platform', 'update_tracking', 'org-netbeans-core.xml') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
500 |
if not exists(updateTrackingFile): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
501 |
mx.log('Could not find \'' + updateTrackingFile + '\', removing NetBeans platform') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
502 |
shutil.rmtree(nbplatform) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
503 |
else: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
504 |
dom = xml.dom.minidom.parse(updateTrackingFile) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
505 |
currentVersion = mx.VersionSpec(dom.getElementsByTagName('module_version')[0].getAttribute('specification_version')) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
506 |
supportedVersion = mx.VersionSpec('3.43.1') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
507 |
if currentVersion < supportedVersion: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
508 |
mx.log('Replacing NetBeans platform version ' + str(currentVersion) + ' with version ' + str(supportedVersion)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
509 |
shutil.rmtree(nbplatform) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
510 |
elif supportedVersion < currentVersion: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
511 |
mx.log('Supported NetBeans version in igv command should be updated to ' + str(currentVersion)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
512 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
513 |
if not exists(nbplatform): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
514 |
mx.logv('[This execution may take a while as the NetBeans platform needs to be downloaded]') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
515 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
516 |
env = _igvBuildEnv() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
517 |
# make the jar for Batik 1.7 available. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
518 |
env['IGV_BATIK_JAR'] = mx.library('BATIK').get_path(True) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
519 |
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): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
520 |
mx.abort("IGV ant build & launch failed. Check '" + logFile + "'. You can also try to delete 'src/share/tools/IdealGraphVisualizer/nbplatform'.") |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
521 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
522 |
def c1visualizer(args): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
523 |
"""run the Cl Compiler Visualizer""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
524 |
libpath = join(_suite.dir, 'lib') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
525 |
if mx.get_os() == 'windows': |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
526 |
executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer.exe') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
527 |
else: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
528 |
executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
529 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
530 |
# Check whether the current C1Visualizer installation is the up-to-date |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
531 |
if exists(executable) and not exists(mx.library('C1VISUALIZER_DIST').get_path(resolve=False)): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
532 |
mx.log('Updating C1Visualizer') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
533 |
shutil.rmtree(join(libpath, 'c1visualizer')) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
534 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
535 |
archive = mx.library('C1VISUALIZER_DIST').get_path(resolve=True) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
536 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
537 |
if not exists(executable): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
538 |
zf = zipfile.ZipFile(archive, 'r') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
539 |
zf.extractall(libpath) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
540 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
541 |
if not exists(executable): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
542 |
mx.abort('C1Visualizer binary does not exist: ' + executable) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
543 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
544 |
if mx.get_os() != 'windows': |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
545 |
# Make sure that execution is allowed. The zip file does not always specfiy that correctly |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
546 |
os.chmod(executable, 0777) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
547 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
548 |
mx.run([executable]) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
549 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
550 |
def hsdis(args, copyToDir=None): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
551 |
"""download the hsdis library |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
552 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
553 |
This is needed to support HotSpot's assembly dumping features. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
554 |
By default it downloads the Intel syntax version, use the 'att' argument to install AT&T syntax.""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
555 |
flavor = 'intel' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
556 |
if 'att' in args: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
557 |
flavor = 'att' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
558 |
if mx.get_arch() == "sparcv9": |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
559 |
flavor = "sparcv9" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
560 |
lib = mx.add_lib_suffix('hsdis-' + mx.get_arch()) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
561 |
path = join(_suite.dir, 'lib', lib) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
562 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
563 |
sha1s = { |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
564 |
'att/hsdis-amd64.dll' : 'bcbd535a9568b5075ab41e96205e26a2bac64f72', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
565 |
'att/hsdis-amd64.so' : '58919ba085d4ef7a513f25bae75e7e54ee73c049', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
566 |
'intel/hsdis-amd64.dll' : '6a388372cdd5fe905c1a26ced614334e405d1f30', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
567 |
'intel/hsdis-amd64.so' : '844ed9ffed64fe9599638f29a8450c50140e3192', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
568 |
'intel/hsdis-amd64.dylib' : 'fdb13ef0d7d23d93dacaae9c98837bea0d4fc5a2', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
569 |
'sparcv9/hsdis-sparcv9.so': '970640a9af0bd63641f9063c11275b371a59ee60', |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
570 |
} |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
571 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
572 |
flavoredLib = flavor + "/" + lib |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
573 |
if flavoredLib not in sha1s: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
574 |
mx.logv("hsdis not supported on this plattform or architecture") |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
575 |
return |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
576 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
577 |
if not exists(path): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
578 |
sha1 = sha1s[flavoredLib] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
579 |
sha1path = path + '.sha1' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
580 |
mx.download_file_with_sha1('hsdis', path, ['https://lafo.ssw.uni-linz.ac.at/pub/hsdis/' + flavoredLib], sha1, sha1path, True, True, sources=False) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
581 |
if copyToDir is not None and exists(copyToDir): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
582 |
shutil.copy(path, copyToDir) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
583 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
584 |
def hcfdis(args): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
585 |
"""disassemble HexCodeFiles embedded in text files |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
586 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
587 |
Run a tool over the input files to convert all embedded HexCodeFiles |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
588 |
to a disassembled format.""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
589 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
590 |
parser = ArgumentParser(prog='mx hcfdis') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
591 |
parser.add_argument('-m', '--map', help='address to symbol map applied to disassembler output') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
592 |
parser.add_argument('files', nargs=REMAINDER, metavar='files...') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
593 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
594 |
args = parser.parse_args(args) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
595 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
596 |
path = mx.library('HCFDIS').get_path(resolve=True) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
597 |
mx.run_java(['-cp', path, 'com.oracle.max.hcfdis.HexCodeFileDis'] + args.files) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
598 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
599 |
if args.map is not None: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
600 |
addressRE = re.compile(r'0[xX]([A-Fa-f0-9]+)') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
601 |
with open(args.map) as fp: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
602 |
lines = fp.read().splitlines() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
603 |
symbols = dict() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
604 |
for l in lines: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
605 |
addressAndSymbol = l.split(' ', 1) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
606 |
if len(addressAndSymbol) == 2: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
607 |
address, symbol = addressAndSymbol |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
608 |
if address.startswith('0x'): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
609 |
address = long(address, 16) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
610 |
symbols[address] = symbol |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
611 |
for f in args.files: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
612 |
with open(f) as fp: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
613 |
lines = fp.read().splitlines() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
614 |
updated = False |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
615 |
for i in range(0, len(lines)): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
616 |
l = lines[i] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
617 |
for m in addressRE.finditer(l): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
618 |
sval = m.group(0) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
619 |
val = long(sval, 16) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
620 |
sym = symbols.get(val) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
621 |
if sym: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
622 |
l = l.replace(sval, sym) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
623 |
updated = True |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
624 |
lines[i] = l |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
625 |
if updated: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
626 |
mx.log('updating ' + f) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
627 |
with open('new_' + f, "w") as fp: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
628 |
for l in lines: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
629 |
print >> fp, l |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
630 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
631 |
def jol(args): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
632 |
"""Java Object Layout""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
633 |
joljar = mx.library('JOL_INTERNALS').get_path(resolve=True) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
634 |
candidates = mx.findclass(args, logToConsole=False, matcher=lambda s, classname: s == classname or classname.endswith('.' + s) or classname.endswith('$' + s)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
635 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
636 |
if len(candidates) > 0: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
637 |
candidates = mx.select_items(sorted(candidates)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
638 |
else: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
639 |
# mx.findclass can be mistaken, don't give up yet |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
640 |
candidates = args |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
641 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
642 |
run_vm(['-javaagent:' + joljar, '-cp', os.pathsep.join([mx.classpath(), joljar]), "org.openjdk.jol.MainObjectInternals"] + candidates) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
643 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
644 |
def _get_openjdk_os(): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
645 |
# See: common/autoconf/platform.m4 |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
646 |
os = mx.get_os() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
647 |
if 'darwin' in os: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
648 |
os = 'macosx' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
649 |
elif 'linux' in os: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
650 |
os = 'linux' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
651 |
elif 'solaris' in os: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
652 |
os = 'solaris' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
653 |
elif 'cygwin' in os or 'mingw' in os: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
654 |
os = 'windows' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
655 |
return os |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
656 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
657 |
def _get_openjdk_cpu(): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
658 |
cpu = mx.get_arch() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
659 |
if cpu == 'amd64': |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
660 |
cpu = 'x86_64' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
661 |
elif cpu == 'sparcv9': |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
662 |
cpu = 'sparcv9' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
663 |
return cpu |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
664 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
665 |
def _get_openjdk_os_cpu(): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
666 |
return _get_openjdk_os() + '-' + _get_openjdk_cpu() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
667 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
668 |
def _get_jdk_build_dir(debugLevel=None): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
669 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
670 |
Gets the directory into which the JDK is built. This directory contains |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
671 |
the exploded JDK under jdk/ and the JDK image under images/jdk/. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
672 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
673 |
if debugLevel is None: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
674 |
debugLevel = _vm.debugLevel |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
675 |
name = '{}-{}-{}-{}'.format(_get_openjdk_os_cpu(), 'normal', _vm.jvmVariant, debugLevel) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
676 |
return join(dirname(_suite.dir), 'build', name) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
677 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
678 |
_jvmci_bootclasspath_prepends = [] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
679 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
680 |
def _get_hotspot_build_dir(jvmVariant=None, debugLevel=None): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
681 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
682 |
Gets the directory in which a particular HotSpot configuration is built |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
683 |
(e.g., <JDK_REPO_ROOT>/build/macosx-x86_64-normal-server-release/hotspot/bsd_amd64_compiler2) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
684 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
685 |
if jvmVariant is None: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
686 |
jvmVariant = _vm.jvmVariant |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
687 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
688 |
os = mx.get_os() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
689 |
if os == 'darwin': |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
690 |
os = 'bsd' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
691 |
arch = mx.get_arch() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
692 |
buildname = {'client': 'compiler1', 'server': 'compiler2'}.get(jvmVariant, jvmVariant) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
693 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
694 |
name = '{}_{}_{}'.format(os, arch, buildname) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
695 |
return join(_get_jdk_build_dir(debugLevel=debugLevel), 'hotspot', name) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
696 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
697 |
class JVMCI9JDKConfig(mx.JDKConfig): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
698 |
def __init__(self, debugLevel): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
699 |
self.debugLevel = debugLevel |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
700 |
jdkBuildDir = _get_jdk_build_dir(debugLevel) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
701 |
jdkDir = join(jdkBuildDir, 'images', 'jdk') if mx.get_opts().use_jdk_image else join(jdkBuildDir, 'jdk') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
702 |
mx.JDKConfig.__init__(self, jdkDir, tag=_JVMCI_JDK_TAG) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
703 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
704 |
def parseVmArgs(self, args, addDefaultArgs=True): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
705 |
args = mx.expand_project_in_args(args, insitu=False) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
706 |
jacocoArgs = mx_gate.get_jacoco_agent_args() |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
707 |
if jacocoArgs: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
708 |
args = jacocoArgs + args |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
709 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
710 |
args = ['-Xbootclasspath/p:' + dep.classpath_repr() for dep in _jvmci_bootclasspath_prepends] + args |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
711 |
|
35598 | 712 |
# Remove JVMCI jars from class path. They are only necessary when |
713 |
# compiling with a javac from JDK8 or earlier. |
|
714 |
cpIndex, cp = mx.find_classpath_arg(args) |
|
715 |
if cp: |
|
716 |
excluded = frozenset([dist.path for dist in _suite.dists]) |
|
717 |
cp = os.pathsep.join([e for e in cp.split(os.pathsep) if e not in excluded]) |
|
718 |
args[cpIndex] = cp |
|
719 |
||
34505
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
720 |
if '-version' in args: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
721 |
ignoredArgs = args[args.index('-version') + 1:] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
722 |
if len(ignoredArgs) > 0: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
723 |
mx.log("Warning: The following options will be ignored by the vm because they come after the '-version' argument: " + ' '.join(ignoredArgs)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
724 |
return self.processArgs(args, addDefaultArgs=addDefaultArgs) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
725 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
726 |
# Overrides JDKConfig |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
727 |
def run_java(self, args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, env=None, addDefaultArgs=True): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
728 |
if vm is None: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
729 |
vm = 'server' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
730 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
731 |
args = self.parseVmArgs(args, addDefaultArgs=addDefaultArgs) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
732 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
733 |
jvmciModeArgs = _jvmciModes[_vm.jvmciMode] |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
734 |
cmd = [self.java] + ['-' + vm] + jvmciModeArgs + args |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
735 |
return mx.run(cmd, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
736 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
737 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
738 |
The dict of JVMCI JDKs indexed by debug-level names. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
739 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
740 |
_jvmci_jdks = {} |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
741 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
742 |
def get_jvmci_jdk(debugLevel=None): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
743 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
744 |
Gets the JVMCI JDK corresponding to 'debugLevel'. |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
745 |
""" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
746 |
if not debugLevel: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
747 |
debugLevel = _vm.debugLevel |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
748 |
jdk = _jvmci_jdks.get(debugLevel) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
749 |
if jdk is None: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
750 |
try: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
751 |
jdk = JVMCI9JDKConfig(debugLevel) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
752 |
except mx.JDKConfigException as e: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
753 |
jdkBuildDir = _get_jdk_build_dir(debugLevel) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
754 |
msg = 'Error with the JDK built into {}:\n{}\nTry (re)building it with: mx --jdk-debug-level={} make' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
755 |
if mx.get_opts().use_jdk_image: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
756 |
msg += ' images' |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
757 |
mx.abort(msg.format(jdkBuildDir, e.message, debugLevel)) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
758 |
_jvmci_jdks[debugLevel] = jdk |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
759 |
return jdk |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
760 |
|
35598 | 761 |
class JVMCI9JDKFactory(mx.JDKFactory): |
34505
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
762 |
def getJDKConfig(self): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
763 |
jdk = get_jvmci_jdk(_vm.debugLevel) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
764 |
return jdk |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
765 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
766 |
def description(self): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
767 |
return "JVMCI JDK" |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
768 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
769 |
mx.update_commands(_suite, { |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
770 |
'make': [_runmake, '[args...]', _makehelp], |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
771 |
'multimake': [_runmultimake, '[options]'], |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
772 |
'c1visualizer' : [c1visualizer, ''], |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
773 |
'hsdis': [hsdis, '[att]'], |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
774 |
'hcfdis': [hcfdis, ''], |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
775 |
'igv' : [igv, ''], |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
776 |
'jol' : [jol, ''], |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
777 |
'vm': [run_vm, '[-options] class [args...]'], |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
778 |
}) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
779 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
780 |
mx.add_argument('-M', '--jvmci-mode', action='store', choices=sorted(_jvmciModes.viewkeys()), help='the JVM variant type to build/run (default: ' + _vm.jvmciMode + ')') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
781 |
mx.add_argument('--jdk-jvm-variant', '--vm', action='store', choices=_jdkJvmVariants + sorted(_legacyVms.viewkeys()), help='the JVM variant type to build/run (default: ' + _vm.jvmVariant + ')') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
782 |
mx.add_argument('--jdk-debug-level', '--vmbuild', action='store', choices=_jdkDebugLevels + sorted(_legacyVmbuilds.viewkeys()), help='the JDK debug level to build/run (default: ' + _vm.debugLevel + ')') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
783 |
mx.add_argument('-I', '--use-jdk-image', action='store_true', help='build/run JDK image instead of exploded JDK') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
784 |
|
35598 | 785 |
mx.addJDKFactory(_JVMCI_JDK_TAG, mx.JavaCompliance('9'), JVMCI9JDKFactory()) |
786 |
||
34505
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
787 |
def mx_post_parse_cmd_line(opts): |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
788 |
mx.set_java_command_default_jdk_tag(_JVMCI_JDK_TAG) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
789 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
790 |
jdkTag = mx.get_jdk_option().tag |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
791 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
792 |
jvmVariant = None |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
793 |
debugLevel = None |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
794 |
jvmciMode = None |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
795 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
796 |
if opts.jdk_jvm_variant is not None: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
797 |
jvmVariant = opts.jdk_jvm_variant |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
798 |
if jdkTag and jdkTag != _JVMCI_JDK_TAG: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
799 |
mx.warn('Ignoring "--jdk-jvm-variant" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
800 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
801 |
if opts.jdk_debug_level is not None: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
802 |
debugLevel = _translateLegacyDebugLevel(opts.jdk_debug_level) |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
803 |
if jdkTag and jdkTag != _JVMCI_JDK_TAG: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
804 |
mx.warn('Ignoring "--jdk-debug-level" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
805 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
806 |
if opts.jvmci_mode is not None: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
807 |
jvmciMode = opts.jvmci_mode |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
808 |
if jdkTag and jdkTag != _JVMCI_JDK_TAG: |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
809 |
mx.warn('Ignoring "--jvmci-mode" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"') |
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
810 |
|
90f4fd15d739
8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff
changeset
|
811 |
_vm.update(jvmVariant, debugLevel, jvmciMode) |