annotate mx.jvmci/mx_jvmci.py @ 24135:a8e0d0625b32

removed defunct support for non-INCLUDE_JVMCI builds
author Doug Simon <doug.simon@oracle.com>
date Fri, 19 May 2017 00:18:36 +0200
parents 98eedf7e3648
children 96668c601751
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
1 #
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
2 # ----------------------------------------------------------------------------------------------------
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
3 #
18897
9afee75cee46 mx: add microbench command to run JMH benchmarks
Roland Schatz <roland.schatz@oracle.com>
parents: 18894
diff changeset
4 # Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
5 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
6 #
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
7 # This code is free software; you can redistribute it and/or modify it
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
8 # under the terms of the GNU General Public License version 2 only, as
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
9 # published by the Free Software Foundation.
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
10 #
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
11 # This code is distributed in the hope that it will be useful, but WITHOUT
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
14 # version 2 for more details (a copy is included in the LICENSE file that
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
15 # accompanied this code).
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
16 #
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
17 # You should have received a copy of the GNU General Public License version
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
18 # 2 along with this work; if not, write to the Free Software Foundation,
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
20 #
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
22 # or visit www.oracle.com if you need additional information or have any
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
23 # questions.
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
24 #
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
25 # ----------------------------------------------------------------------------------------------------
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
26
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
27 import os, stat, errno, sys, shutil, zipfile, tarfile, tempfile, re, time, datetime, platform, subprocess, socket
23332
d5690e838afa mx: remove makejmhdeps buildjmh and jmh.
Josef Eisl <josef.eisl@jku.at>
parents: 23331
diff changeset
28 from os.path import join, exists, basename
22020
36a7ec14279d moved unit test support from mx_graal.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents: 22019
diff changeset
29 from argparse import ArgumentParser, REMAINDER
13472
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
30 import xml.dom.minidom
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
31 import json, textwrap
22693
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
32 from collections import OrderedDict
22031
434fbaaf53d7 moved findbugs support from mx_graal.py to mx_findbugs.py
Doug Simon <doug.simon@oracle.com>
parents: 22024
diff changeset
33
434fbaaf53d7 moved findbugs support from mx_graal.py to mx_findbugs.py
Doug Simon <doug.simon@oracle.com>
parents: 22024
diff changeset
34 import mx
434fbaaf53d7 moved findbugs support from mx_graal.py to mx_findbugs.py
Doug Simon <doug.simon@oracle.com>
parents: 22024
diff changeset
35 import mx_unittest
22274
ed0b8310ac56 import unittest from mx_unittest.py
Doug Simon <doug.simon@oracle.com>
parents: 22273
diff changeset
36 from mx_unittest import unittest
22286
2ecfec90e51e moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents: 22284
diff changeset
37 from mx_gate import Task
2ecfec90e51e moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents: 22284
diff changeset
38 import mx_gate
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
39
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
40 _suite = mx.suite('jvmci')
4417
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
41
22777
781e01df3c4c added JVMCI_VERSION constant
Doug Simon <doug.simon@oracle.com>
parents: 22771
diff changeset
42 JVMCI_VERSION = 8
781e01df3c4c added JVMCI_VERSION constant
Doug Simon <doug.simon@oracle.com>
parents: 22771
diff changeset
43
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
44 """ The VMs that can be built and run along with an optional description. Only VMs with a
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
45 description are listed in the dialogue for setting the default VM (see get_vm()). """
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
46 _vmChoices = {
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
47 'server' : 'Normal compilation is performed with a tiered system (C1 + C2 or Graal) and Graal is available for hosted compilation.',
22099
10b08d53b060 removed TRUFFLE distribution - only use TRUFFLE library
Doug Simon <doug.simon@oracle.com>
parents: 22096
diff changeset
48 'client' : None, # VM compilation with client compiler, hosted compilation with Graal
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
49 'original' : None, # default VM copied from bootstrap JDK
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
50 }
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
51
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
52 _jvmciModes = {
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
53 'hosted' : ['-XX:+UnlockExperimentalVMOptions', '-XX:+EnableJVMCI'],
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
54 'jit' : ['-XX:+UnlockExperimentalVMOptions', '-XX:+EnableJVMCI', '-XX:+UseJVMCICompiler'],
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
55 'disabled' : ['-XX:+UnlockExperimentalVMOptions', '-XX:-EnableJVMCI']
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
56 }
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
57
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
58 # Aliases for legacy VM names
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
59 _vmAliases = {
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
60 'jvmci' : 'server',
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
61 'graal' : 'server',
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
62 }
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
63
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
64 _JVMCI_JDK_TAG = 'jvmci'
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
65
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
66 """ The VM that will be run by the 'vm' command and built by default by the 'build' command.
23711
387870951564 Remove old DEFAULT_VM machinery
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23679
diff changeset
67 It can be temporarily set by using a VM context manager object in a 'with' statement. """
387870951564 Remove old DEFAULT_VM machinery
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23679
diff changeset
68 _vm = 'server'
4417
648a7873cea2 Made it possible to build and run the client and server VM with a new '--vm' option to 'mx build' and a global option of the same name.
Doug Simon <doug.simon@oracle.com>
parents: 4407
diff changeset
69
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
70 class JVMCIMode:
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
71 def __init__(self, jvmciMode):
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
72 self.jvmciMode = jvmciMode
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
73 self.vmArgs = _jvmciModes[jvmciMode]
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
74
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
75 def __enter__(self):
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
76 global _jvmciMode
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
77 self.previousMode = _jvmciMode
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
78 _jvmciMode = self
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
79
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
80 def __exit__(self, exc_type, exc_value, traceback):
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
81 global _jvmciMode
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
82 _jvmciMode = self.previousMode
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
83
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
84 """ The JVMCI mode that will be used by the 'vm' command. This can be set with the global '-M' option.
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
85 It can also be temporarily set using the JVMCIMode context manager object in a 'with' statement.
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
86 Defaults to 'hosted'. """
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
87 _jvmciMode = JVMCIMode('hosted')
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
88
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
89 """ The VM builds that will be run by the 'vm' command - default is first in list """
9157
a38d748d4130 Add support for the 'optimized' build in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9130
diff changeset
90 _vmbuildChoices = ['product', 'fastdebug', 'debug', 'optimized']
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
91
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
92 """ The VM build that will be run by the 'vm' command.
11371
74414b248381 mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents: 11368
diff changeset
93 This can be set via the global '--vmbuild' option.
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
94 It can also be temporarily set by using of a VM context manager object in a 'with' statement. """
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
95 _vmbuild = _vmbuildChoices[0]
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
96
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
97 """ The current working directory to switch to before running the VM. """
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
98 _vm_cwd = None
10454
590b0c26877f mx: add --workdir argument
Bernhard Urban <bernhard.urban@jku.at>
parents: 10417
diff changeset
99
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
100 """ The base directory in which the JDKs cloned from $JAVA_HOME exist. """
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
101 _installed_jdks = None
10570
2f80624df8a2 Add a --vmdir argument to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10568
diff changeset
102
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
103 """ Prefix for running the VM. """
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
104 _vm_prefix = None
5875
000fb0550afe Add an option to launch the vm from a debugger in mx's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5871
diff changeset
105
5194
a6eceb5efb0e added --ecl option to mx for saving VM execution(s) as Eclipse launch configurations
Doug Simon <doug.simon@oracle.com>
parents: 5189
diff changeset
106 _make_eclipse_launch = False
a6eceb5efb0e added --ecl option to mx for saving VM execution(s) as Eclipse launch configurations
Doug Simon <doug.simon@oracle.com>
parents: 5189
diff changeset
107
24099
955ebad35cba bump min jdk version to 8u121
Doug Simon <doug.simon@oracle.com>
parents: 23993
diff changeset
108 _minVersion = mx.VersionSpec('1.8.0_121')
7916
9bff64f43299 Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 7788
diff changeset
109
20102
6e5df2d60fbd mx: fix compliance check for EXTRA_JAVA_HOMES, add maximum JAVA_HOME version in mx_graal
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 20032
diff changeset
110 # max version (first _unsupported_ version)
23978
f553add9342f Update and fix JDK version checks
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 23711
diff changeset
111 _untilVersion = mx.VersionSpec('1.9')
20102
6e5df2d60fbd mx: fix compliance check for EXTRA_JAVA_HOMES, add maximum JAVA_HOME version in mx_graal
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 20032
diff changeset
112
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
113 class JDKDeployedDist(object):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
114 def __init__(self, name):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
115 self._name = name
22143
616739e61fb6 changed JDKDeployedDist.postJdkInstall to be an overridable method
Doug Simon <doug.simon@oracle.com>
parents: 22142
diff changeset
116
616739e61fb6 changed JDKDeployedDist.postJdkInstall to be an overridable method
Doug Simon <doug.simon@oracle.com>
parents: 22142
diff changeset
117 def dist(self):
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
118 return mx.distribution(self._name)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
119
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
120 def deploy(self, jdkDir):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
121 mx.nyi('deploy', self)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
122
22761
f2206f5bb62e removed @ServiceProvider mechanism (GRAAL-1380)
Doug Simon <doug.simon@oracle.com>
parents: 22758
diff changeset
123 def post_parse_cmd_line(self):
f2206f5bb62e removed @ServiceProvider mechanism (GRAAL-1380)
Doug Simon <doug.simon@oracle.com>
parents: 22758
diff changeset
124 def _install(d):
f2206f5bb62e removed @ServiceProvider mechanism (GRAAL-1380)
Doug Simon <doug.simon@oracle.com>
parents: 22758
diff changeset
125 _installDistInJdks(self)
f2206f5bb62e removed @ServiceProvider mechanism (GRAAL-1380)
Doug Simon <doug.simon@oracle.com>
parents: 22758
diff changeset
126 self.dist().add_update_listener(_install)
f2206f5bb62e removed @ServiceProvider mechanism (GRAAL-1380)
Doug Simon <doug.simon@oracle.com>
parents: 22758
diff changeset
127
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
128 class JarJDKDeployedDist(JDKDeployedDist):
23408
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
129 def __init__(self, name):
22287
5cce6c398d70 re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents: 22286
diff changeset
130 JDKDeployedDist.__init__(self, name)
5cce6c398d70 re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents: 22286
diff changeset
131
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
132 def targetDir(self):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
133 mx.nyi('targetDir', self)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
134
22616
8a837db73b92 Remove source deployment.
Christian Humer <christian.humer@oracle.com>
parents: 22614
diff changeset
135 def _copyToJdk(self, jdkDir, target):
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
136 targetDir = join(jdkDir, target)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
137 dist = self.dist()
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
138 mx.logv('Deploying {} to {}'.format(dist.name, targetDir))
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
139 copyToJdk(dist.path, targetDir)
23408
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
140 if exists(dist.sourcesPath):
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
141 copyToJdk(dist.sourcesPath, targetDir)
22452
b6fd47c5dc0b Add ability to define a source target folder for distribution deployments.
Christian Humer <christian.humer@oracle.com>
parents: 22438
diff changeset
142
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
143 def deploy(self, jdkDir):
22616
8a837db73b92 Remove source deployment.
Christian Humer <christian.humer@oracle.com>
parents: 22614
diff changeset
144 self._copyToJdk(jdkDir, self.targetDir())
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
145
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
146 class ExtJDKDeployedDist(JarJDKDeployedDist):
23408
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
147 def __init__(self, name):
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
148 JarJDKDeployedDist.__init__(self, name)
22287
5cce6c398d70 re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents: 22286
diff changeset
149
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
150 def targetDir(self):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
151 return join('jre', 'lib', 'ext')
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
152
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
153 class LibJDKDeployedDist(JarJDKDeployedDist):
23408
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
154 def __init__(self, name):
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
155 JarJDKDeployedDist.__init__(self, name)
22287
5cce6c398d70 re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents: 22286
diff changeset
156
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
157 def targetDir(self):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
158 return join('jre', 'lib')
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
159
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
160 class JvmciJDKDeployedDist(JarJDKDeployedDist):
23408
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
161 def __init__(self, name):
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
162 JarJDKDeployedDist.__init__(self, name)
22287
5cce6c398d70 re-introduced partOfHotSpot to JarJDKDeployedDist to fix mx_jvmci_makefile.py
Doug Simon <doug.simon@oracle.com>
parents: 22286
diff changeset
163
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
164 def targetDir(self):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
165 return join('jre', 'lib', 'jvmci')
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
166
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
167 def _exe(l):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
168 return mx.exe_suffix(l)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
169
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
170 def _lib(l):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
171 return mx.add_lib_suffix(mx.add_lib_prefix(l))
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
172
22330
856aeb17e892 Add debug info files in hotspot's results
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22328
diff changeset
173 def _lib_dbg(l):
856aeb17e892 Add debug info files in hotspot's results
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22328
diff changeset
174 return mx.add_debug_lib_suffix(mx.add_lib_prefix(l))
856aeb17e892 Add debug info files in hotspot's results
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22328
diff changeset
175
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
176 class HotSpotVMJDKDeployedDist(JDKDeployedDist):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
177 def dist(self):
22282
9ab88ee1f79f spelling fix: instanciate -> instantiate
Doug Simon <doug.simon@oracle.com>
parents: 22281
diff changeset
178 name = mx.instantiatedDistributionName(self._name, dict(vm=get_vm(), vmbuild=_vmbuild), context=self._name)
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
179 return mx.distribution(name)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
180
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
181 def deploy(self, jdkDir):
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
182 vmbuild = _vmbuildFromJdkDir(jdkDir)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
183 if vmbuild != _vmbuild:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
184 return
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
185 _hs_deploy_map = {
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
186 'jvmti.h' : 'include',
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
187 'sa-jdi.jar' : 'lib',
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
188 _lib('jvm') : join(relativeVmLibDirInJdk(), get_vm()),
22330
856aeb17e892 Add debug info files in hotspot's results
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22328
diff changeset
189 _lib_dbg('jvm') : join(relativeVmLibDirInJdk(), get_vm()),
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
190 _lib('saproc') : relativeVmLibDirInJdk(),
22330
856aeb17e892 Add debug info files in hotspot's results
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22328
diff changeset
191 _lib_dbg('saproc') : relativeVmLibDirInJdk(),
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
192 _lib('jsig') : relativeVmLibDirInJdk(),
22330
856aeb17e892 Add debug info files in hotspot's results
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22328
diff changeset
193 _lib_dbg('jsig') : relativeVmLibDirInJdk(),
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
194 }
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
195 dist = self.dist()
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
196 with tarfile.open(dist.path, 'r') as tar:
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
197 for m in tar.getmembers():
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
198 if m.name in _hs_deploy_map:
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
199 targetDir = join(jdkDir, _hs_deploy_map[m.name])
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
200 mx.logv('Deploying {} from {} to {}'.format(m.name, dist.name, targetDir))
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
201 tar.extract(m, targetDir)
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
202
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
203 """
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
204 List of distributions that are deployed into a JDK by mx.
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
205 """
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
206 jdkDeployedDists = [
23408
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
207 LibJDKDeployedDist('JVMCI_SERVICES'),
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
208 JvmciJDKDeployedDist('JVMCI_API'),
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
209 JvmciJDKDeployedDist('JVMCI_HOTSPOT'),
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
210 HotSpotVMJDKDeployedDist('JVM_<vmbuild>_<vm>'),
16902
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
211 ]
0583d157992a formalized the set of distribution jars that are installed into the JDK to ensure both mx and the HotSpot make system do the necessary deployment
Doug Simon <doug.simon@oracle.com>
parents: 16877
diff changeset
212
16627
68deb37eed70 mx: fix permissions of copied bootstrap JDK files (don't make everything executable)
Bernhard Urban <bernhard.urban@jku.at>
parents: 16623
diff changeset
213 JDK_UNIX_PERMISSIONS_DIR = 0755
68deb37eed70 mx: fix permissions of copied bootstrap JDK files (don't make everything executable)
Bernhard Urban <bernhard.urban@jku.at>
parents: 16623
diff changeset
214 JDK_UNIX_PERMISSIONS_FILE = 0644
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
215 JDK_UNIX_PERMISSIONS_EXEC = 0755
13919
9d70445ea369 mx: set correct permissions for graal.jar
Bernhard Urban <bernhard.urban@jku.at>
parents: 13846
diff changeset
216
14602
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
217 def isVMSupported(vm):
18799
750db34c9fe1 client-nograal is supported on Mac
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18733
diff changeset
218 if 'client' == vm and len(platform.mac_ver()[0]) != 0:
14602
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
219 # Client VM not supported: java launcher on Mac OS X translates '-client' to '-server'
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
220 return False
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
221 return True
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
222
22141
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
223 def get_vm_cwd():
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
224 """
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
225 Get the current working directory to switch to before running the VM.
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
226 """
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
227 return _vm_cwd
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
228
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
229 def get_installed_jdks():
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
230 """
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
231 Get the base directory in which the JDKs cloned from $JAVA_HOME exist.
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
232 """
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
233 return _installed_jdks
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
234
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
235 def get_vm_prefix(asList=True):
22141
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
236 """
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
237 Get the prefix for running the VM ("/usr/bin/gdb --args").
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
238 """
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
239 if asList:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
240 return _vm_prefix.split() if _vm_prefix is not None else []
22141
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
241 return _vm_prefix
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
242
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
243 def get_vm_choices():
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
244 """
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
245 Get the names of available VMs.
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
246 """
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
247 return _vmChoices.viewkeys()
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
248
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
249 def dealiased_vm(vm):
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
250 """
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
251 If 'vm' is an alias, returns the aliased name otherwise returns 'vm'.
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
252 """
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
253 if vm and vm in _vmAliases:
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
254 if vm == 'jvmci' or vm == 'graal':
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
255 mx.log('"--vm ' + vm + '" is deprecated, using "--vm server -Mjit" instead')
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
256 global _jvmciMode
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
257 _jvmciMode = JVMCIMode('jit')
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
258 return _vmAliases[vm]
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
259 return vm
22141
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
260
23405
53d9235e99ba Expose jvmci mode from mx_jvmci module.
Roland Schatz <roland.schatz@oracle.com>
parents: 23404
diff changeset
261 def get_jvmci_mode():
53d9235e99ba Expose jvmci mode from mx_jvmci module.
Roland Schatz <roland.schatz@oracle.com>
parents: 23404
diff changeset
262 return _jvmciMode.jvmciMode
53d9235e99ba Expose jvmci mode from mx_jvmci module.
Roland Schatz <roland.schatz@oracle.com>
parents: 23404
diff changeset
263
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
264 def get_jvmci_mode_args():
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
265 return _jvmciMode.vmArgs
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
266
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
267 def get_vm():
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
268 """
23711
387870951564 Remove old DEFAULT_VM machinery
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23679
diff changeset
269 Gets the configured VM.
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
270 """
23711
387870951564 Remove old DEFAULT_VM machinery
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23679
diff changeset
271 return _vm
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
272
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
273 """
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
274 A context manager that can be used with the 'with' statement to set the VM
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
275 used by all VM executions within the scope of the 'with' statement. For example:
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
276
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
277 with VM('server'):
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
278 dacapo(['pmd'])
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
279 """
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
280 class VM:
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
281 def __init__(self, vm=None, build=None):
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
282 assert build is None or build in _vmbuildChoices
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
283 self.build = build if build else _vmbuild
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
284 if vm == 'jvmci':
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
285 mx.log('WARNING: jvmci VM is deprecated, using server VM with -Mjit instead')
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
286 self.vm = 'server'
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
287 self.jvmciMode = JVMCIMode('jit')
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
288 else:
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
289 assert vm is None or vm in _vmChoices.keys()
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
290 self.vm = vm if vm else _vm
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
291 self.jvmciMode = None
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
292
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
293 def __enter__(self):
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
294 global _vm, _vmbuild
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
295 self.previousVm = _vm
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
296 self.previousBuild = _vmbuild
22286
2ecfec90e51e moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents: 22284
diff changeset
297 mx.reInstantiateDistribution('JVM_<vmbuild>_<vm>', dict(vm=self.previousVm, vmbuild=self.previousBuild), dict(vm=self.vm, vmbuild=self.build))
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
298 _vm = self.vm
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
299 _vmbuild = self.build
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
300 if self.jvmciMode is not None:
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
301 self.jvmciMode.__enter__()
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
302
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
303 def __exit__(self, exc_type, exc_value, traceback):
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
304 global _vm, _vmbuild
22286
2ecfec90e51e moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents: 22284
diff changeset
305 mx.reInstantiateDistribution('JVM_<vmbuild>_<vm>', dict(vm=self.vm, vmbuild=self.build), dict(vm=self.previousVm, vmbuild=self.previousBuild))
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
306 _vm = self.previousVm
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
307 _vmbuild = self.previousBuild
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
308 if self.jvmciMode is not None:
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
309 self.jvmciMode.__exit__(exc_type, exc_value, traceback)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
310
16627
68deb37eed70 mx: fix permissions of copied bootstrap JDK files (don't make everything executable)
Bernhard Urban <bernhard.urban@jku.at>
parents: 16623
diff changeset
311 def chmodRecursive(dirname, chmodFlagsDir):
17233
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
312 if mx.get_os() == 'windows':
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
313 return
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
314
16627
68deb37eed70 mx: fix permissions of copied bootstrap JDK files (don't make everything executable)
Bernhard Urban <bernhard.urban@jku.at>
parents: 16623
diff changeset
315 def _chmodDir(chmodFlags, dirname, fnames):
68deb37eed70 mx: fix permissions of copied bootstrap JDK files (don't make everything executable)
Bernhard Urban <bernhard.urban@jku.at>
parents: 16623
diff changeset
316 os.chmod(dirname, chmodFlagsDir)
6705
0cb1ac637dd0 Added recursive chmod for cases where JAVA_HOME is not owned by graal workspace owner.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6702
diff changeset
317
16627
68deb37eed70 mx: fix permissions of copied bootstrap JDK files (don't make everything executable)
Bernhard Urban <bernhard.urban@jku.at>
parents: 16623
diff changeset
318 os.path.walk(dirname, _chmodDir, chmodFlagsDir)
6705
0cb1ac637dd0 Added recursive chmod for cases where JAVA_HOME is not owned by graal workspace owner.
Laurent Daynes <Laurent.Daynes@oracle.com>
parents: 6702
diff changeset
319
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
320 def export(args):
15420
5947bb02474f mx export: change the way of marking a repo as dirty
Bernhard Urban <bernhard.urban@jku.at>
parents: 15405
diff changeset
321 """create archives of builds split by vmbuild and vm"""
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
322
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
323 parser = ArgumentParser(prog='mx export')
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
324 args = parser.parse_args(args)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
325
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
326 # collect data about export
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
327 infos = dict()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
328 infos['timestamp'] = time.time()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
329
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
330 hgcfg = mx.HgConfig()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
331 hgcfg.check()
15420
5947bb02474f mx export: change the way of marking a repo as dirty
Bernhard Urban <bernhard.urban@jku.at>
parents: 15405
diff changeset
332 infos['revision'] = hgcfg.tip('.') + ('+' if hgcfg.isDirty('.') else '')
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
333 # TODO: infos['repository']
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
334
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
335 infos['jdkversion'] = str(get_jvmci_bootstrap_jdk().version)
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
336
17012
ad10671d1bbd mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents: 16983
diff changeset
337 infos['architecture'] = mx.get_arch()
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
338 infos['platform'] = mx.get_os()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
339
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
340 if mx.get_os != 'windows':
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
341 pass
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
342 # infos['ccompiler']
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
343 # infos['linker']
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
344
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
345 infos['hostname'] = socket.gethostname()
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
346
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
347 def _writeJson(suffix, properties):
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
348 d = infos.copy()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
349 for k, v in properties.iteritems():
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
350 assert not d.has_key(k)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
351 d[k] = v
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
352
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
353 jsonFileName = 'export-' + suffix + '.json'
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
354 with open(jsonFileName, 'w') as f:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
355 print >> f, json.dumps(d)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
356 return jsonFileName
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
357
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
358
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
359 def _genFileName(archivetype, middle):
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
360 idPrefix = infos['revision'] + '_'
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
361 idSuffix = '.tar.gz'
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
362 return join(_suite.dir, "graalvm_" + archivetype + "_" + idPrefix + middle + idSuffix)
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
363
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
364 def _genFileArchPlatformName(archivetype, middle):
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
365 return _genFileName(archivetype, infos['platform'] + '_' + infos['architecture'] + '_' + middle)
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
366
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
367
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
368 # archive different build types of hotspot
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
369 for vmBuild in _vmbuildChoices:
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
370 jdkDir = join(_jdksDir(), vmBuild)
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
371 if not exists(jdkDir):
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
372 mx.logv("skipping " + vmBuild)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
373 continue
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
374
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
375 tarName = _genFileArchPlatformName('basejdk', vmBuild)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
376 mx.logv("creating basejdk " + tarName)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
377 vmSet = set()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
378 with tarfile.open(tarName, 'w:gz') as tar:
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
379 for root, _, files in os.walk(jdkDir):
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
380 if basename(root) in _vmChoices.keys():
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
381 # TODO: add some assert to check path assumption
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
382 vmSet.add(root)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
383 continue
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
384
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
385 for f in files:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
386 name = join(root, f)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
387 # print name
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
388 tar.add(name, name)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
389
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
390 n = _writeJson("basejdk-" + vmBuild, {'vmbuild' : vmBuild})
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
391 tar.add(n, n)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
392
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
393 # create a separate archive for each VM
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
394 for vm in vmSet:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
395 bVm = basename(vm)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
396 vmTarName = _genFileArchPlatformName('vm', vmBuild + '_' + bVm)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
397 mx.logv("creating vm " + vmTarName)
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
398
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
399 debugFiles = set()
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
400 with tarfile.open(vmTarName, 'w:gz') as tar:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
401 for root, _, files in os.walk(vm):
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
402 for f in files:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
403 # TODO: mac, windows, solaris?
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
404 if any(map(f.endswith, [".debuginfo"])):
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
405 debugFiles.add(f)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
406 else:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
407 name = join(root, f)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
408 # print name
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
409 tar.add(name, name)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
410
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
411 n = _writeJson("vm-" + vmBuild + "-" + bVm, {'vmbuild' : vmBuild, 'vm' : bVm})
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
412 tar.add(n, n)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
413
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
414 if len(debugFiles) > 0:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
415 debugTarName = _genFileArchPlatformName('debugfilesvm', vmBuild + '_' + bVm)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
416 mx.logv("creating debugfilesvm " + debugTarName)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
417 with tarfile.open(debugTarName, 'w:gz') as tar:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
418 for f in debugFiles:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
419 name = join(root, f)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
420 # print name
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
421 tar.add(name, name)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
422
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
423 n = _writeJson("debugfilesvm-" + vmBuild + "-" + bVm, {'vmbuild' : vmBuild, 'vm' : bVm})
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
424 tar.add(n, n)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
425
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
426 # jvmci directory
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
427 jvmciDirTarName = _genFileName('classfiles', 'javac')
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
428 mx.logv("creating jvmci " + jvmciDirTarName)
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
429 with tarfile.open(jvmciDirTarName, 'w:gz') as tar:
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
430 for root, _, files in os.walk("jvmci"):
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
431 for f in [f for f in files if not f.endswith('.java')]:
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
432 name = join(root, f)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
433 # print name
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
434 tar.add(name, name)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
435
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
436 n = _writeJson("jvmci", {'javacompiler' : 'javac'})
15405
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
437 tar.add(n, n)
5dcf0ae606f3 mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents: 15404
diff changeset
438
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
439 def relativeVmLibDirInJdk():
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
440 mxos = mx.get_os()
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
441 if mxos == 'darwin':
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
442 return join('jre', 'lib')
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
443 if mxos == 'windows' or mxos == 'cygwin':
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
444 return join('jre', 'bin')
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
445 return join('jre', 'lib', mx.get_arch())
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
446
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
447 def vmLibDirInJdk(jdkDir):
4607
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
448 """
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
449 Gets the directory within a JDK where the server and client
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
450 sub-directories are located.
4607
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
451 """
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
452 return join(jdkDir, relativeVmLibDirInJdk())
4607
ee87cfe2f8f9 Made GraalVM build work on Mac OS X.
Doug Simon <doug.simon@oracle.com>
parents: 4602
diff changeset
453
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
454 def getVmJliLibDirs(jdkDir):
17014
6a30738791f7 mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents: 17012
diff changeset
455 """
6a30738791f7 mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents: 17012
diff changeset
456 Get the directories within a JDK where the jli library designates to.
6a30738791f7 mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents: 17012
diff changeset
457 """
17233
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
458 mxos = mx.get_os()
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
459 if mxos == 'darwin':
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
460 return [join(jdkDir, 'jre', 'lib', 'jli')]
17233
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
461 if mxos == 'windows' or mxos == 'cygwin':
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
462 return [join(jdkDir, 'jre', 'bin'), join(jdkDir, 'bin')]
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
463 return [join(jdkDir, 'jre', 'lib', mx.get_arch(), 'jli'), join(jdkDir, 'lib', mx.get_arch(), 'jli')]
17014
6a30738791f7 mx: add helper for determine jli location
Bernhard Urban <bernhard.urban@jku.at>
parents: 17012
diff changeset
464
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
465 def getVmCfgInJdk(jdkDir, jvmCfgFile='jvm.cfg'):
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
466 """
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
467 Get the jvm.cfg file.
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
468 """
17233
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
469 mxos = mx.get_os()
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
470 if mxos == "windows" or mxos == "cygwin":
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
471 return join(jdkDir, 'jre', 'lib', mx.get_arch(), jvmCfgFile)
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
472 return join(vmLibDirInJdk(jdkDir), jvmCfgFile)
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
473
9119
0c9c4ae236b2 refactoring to ensure the path to the JDKs dir is consistent between the _jdk() and clean() command
Doug Simon <doug.simon@oracle.com>
parents: 9118
diff changeset
474 def _jdksDir():
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
475 return os.path.abspath(join(_installed_jdks if _installed_jdks else _suite.dir, 'jdk' + str(get_jvmci_bootstrap_jdk().version)))
9119
0c9c4ae236b2 refactoring to ensure the path to the JDKs dir is consistent between the _jdk() and clean() command
Doug Simon <doug.simon@oracle.com>
parents: 9118
diff changeset
476
17055
3e4d3be0b6bf mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 17052
diff changeset
477 def _handle_missing_VM(bld, vm=None):
3e4d3be0b6bf mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 17052
diff changeset
478 if not vm:
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
479 vm = get_vm()
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
480 mx.log('The ' + bld + ' ' + vm + ' VM has not been created')
21169
41ec6d89cb84 mx: fix calls to is_interactive()
Andreas Woess <andreas.woess@oracle.com>
parents: 21166
diff changeset
481 if mx.is_interactive():
11511
3110bea9a6b0 mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11493
diff changeset
482 if mx.ask_yes_no('Build it now', 'y'):
11371
74414b248381 mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents: 11368
diff changeset
483 with VM(vm, bld):
74414b248381 mx: added --vmbuild global option, removed --product, --fastdebug, --debug options as well as suffix of build command
Doug Simon <doug.simon@oracle.com>
parents: 11368
diff changeset
484 build([])
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
485 return
23343
c8526451bb6b register DEFAULT_VM as env var to be captured in IDE configs
Doug Simon <doug.simon@oracle.com>
parents: 23332
diff changeset
486 mx.abort('You need to run "mx --vm=' + vm + ' --vmbuild=' + bld + ' build" to build the selected VM')
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
487
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
488 def check_VM_exists(vm, jdkDir, build=None):
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
489 if not build:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
490 build = _vmbuild
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
491 jvmCfg = getVmCfgInJdk(jdkDir)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
492 found = False
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
493 with open(jvmCfg) as f:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
494 for line in f:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
495 if line.strip() == '-' + vm + ' KNOWN':
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
496 found = True
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
497 break
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
498 if not found:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
499 _handle_missing_VM(build, vm)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
500
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
501 def get_jvmci_jdk_dir(build=None, vmToCheck=None, create=False, deployDists=True):
4155
394404b2d9bd Removed strict requirement for GRAAL environment variable. It only needs to be set now if the graal directory is not in the directory hierarchy of GraalVM JDK.
Doug Simon <doug.simon@oracle.com>
parents: 4153
diff changeset
502 """
22491
917b3ad10c32 renamed 'installJars' parameter of get_jvmci_jdk to 'deployDists'
Doug Simon <doug.simon@oracle.com>
parents: 22479
diff changeset
503 Gets the path of the JVMCI JDK corresponding to 'build' (or '_vmbuild'), creating it
917b3ad10c32 renamed 'installJars' parameter of get_jvmci_jdk to 'deployDists'
Doug Simon <doug.simon@oracle.com>
parents: 22479
diff changeset
504 first if it does not exist and 'create' is True. If the JDK was created or
917b3ad10c32 renamed 'installJars' parameter of get_jvmci_jdk to 'deployDists'
Doug Simon <doug.simon@oracle.com>
parents: 22479
diff changeset
505 'deployDists' is True, then the JDK deployable distributions are deployed into
917b3ad10c32 renamed 'installJars' parameter of get_jvmci_jdk to 'deployDists'
Doug Simon <doug.simon@oracle.com>
parents: 22479
diff changeset
506 the JDK.
4155
394404b2d9bd Removed strict requirement for GRAAL environment variable. It only needs to be set now if the graal directory is not in the directory hierarchy of GraalVM JDK.
Doug Simon <doug.simon@oracle.com>
parents: 4153
diff changeset
507 """
17055
3e4d3be0b6bf mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 17052
diff changeset
508 if not build:
22019
07cfd3d7072b removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents: 22018
diff changeset
509 build = _vmbuild
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
510 jdkDir = join(_jdksDir(), build)
4582
b24386206122 Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal).
Doug Simon <doug.simon@oracle.com>
parents: 4577
diff changeset
511 if create:
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
512 srcJdk = get_jvmci_bootstrap_jdk().home
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
513 if not exists(jdkDir):
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
514 mx.log('Creating ' + jdkDir + ' from ' + srcJdk)
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
515 shutil.copytree(srcJdk, jdkDir)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
516
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
517 # Make a copy of the default VM so that this JDK can be
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
518 # reliably used as the bootstrap for a HotSpot build.
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
519 jvmCfg = getVmCfgInJdk(jdkDir)
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
520 if not exists(jvmCfg):
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
521 mx.abort(jvmCfg + ' does not exist')
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
522
8647
5f8299106dd9 A server0 "build" needs to create a jdk copy if it does not exist yet
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8646
diff changeset
523 jvmCfgLines = []
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
524 with open(jvmCfg) as f:
23711
387870951564 Remove old DEFAULT_VM machinery
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23679
diff changeset
525 jvmCfgLines = f.readlines()
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
526
23711
387870951564 Remove old DEFAULT_VM machinery
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23679
diff changeset
527 jvmCfgLines += ['-original KNOWN\n']
387870951564 Remove old DEFAULT_VM machinery
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23679
diff changeset
528
387870951564 Remove old DEFAULT_VM machinery
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23679
diff changeset
529 defaultVM = 'server'
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
530 chmodRecursive(jdkDir, JDK_UNIX_PERMISSIONS_DIR)
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
531 shutil.move(join(vmLibDirInJdk(jdkDir), defaultVM), join(vmLibDirInJdk(jdkDir), 'original'))
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
532
18733
d7ec30ebb0f2 Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18714
diff changeset
533 if mx.get_os() != 'windows':
d7ec30ebb0f2 Properly chmod files modified when creating JDK image
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18714
diff changeset
534 os.chmod(jvmCfg, JDK_UNIX_PERMISSIONS_FILE)
8261
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
535 with open(jvmCfg, 'w') as fp:
8647
5f8299106dd9 A server0 "build" needs to create a jdk copy if it does not exist yet
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8646
diff changeset
536 for line in jvmCfgLines:
5f8299106dd9 A server0 "build" needs to create a jdk copy if it does not exist yet
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 8646
diff changeset
537 fp.write(line)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
538
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
539 # Install a copy of the disassembler library
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
540 try:
23352
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
541 hsdis_args = []
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
542 syntax = mx.get_env('HSDIS_SYNTAX')
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
543 if syntax:
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
544 hsdis_args = [syntax]
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
545 hsdis(hsdis_args, copyToDir=vmLibDirInJdk(jdkDir))
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
546 except SystemExit:
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
547 pass
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
548 else:
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
549 if not exists(jdkDir):
11797
65dbed1fdf46 be verbose when the JDK specified by --installed-jdks is missing
Doug Simon <doug.simon@oracle.com>
parents: 11784
diff changeset
550 if _installed_jdks:
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
551 mx.log("The selected JDK directory does not (yet) exist: " + jdkDir)
17055
3e4d3be0b6bf mx: fix default handling of vm config and build type
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 17052
diff changeset
552 _handle_missing_VM(build, vmToCheck)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
553
22491
917b3ad10c32 renamed 'installJars' parameter of get_jvmci_jdk to 'deployDists'
Doug Simon <doug.simon@oracle.com>
parents: 22479
diff changeset
554 if deployDists:
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
555 for jdkDist in jdkDeployedDists:
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
556 dist = jdkDist.dist()
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
557 if exists(dist.path):
21031
e1c063565b3c Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 20996
diff changeset
558 _installDistInJdks(jdkDist)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
559
22693
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
560 # patch 'release' file (append jvmci revision)
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
561 releaseFile = join(jdkDir, 'release')
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
562 if exists(releaseFile):
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
563 releaseFileLines = []
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
564 with open(releaseFile) as f:
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
565 for line in f:
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
566 releaseFileLines.append(line)
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
567
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
568 if mx.get_os() != 'windows':
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
569 os.chmod(releaseFile, JDK_UNIX_PERMISSIONS_FILE)
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
570 with open(releaseFile, 'w') as fp:
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
571 for line in releaseFileLines:
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
572 timmedLine = line.strip()
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
573 if timmedLine.startswith('SOURCE="') and timmedLine.endswith('"'):
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
574 try:
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
575 versions = OrderedDict()
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
576 for p in timmedLine[len('SOURCE="'):-len('"')].split(' '):
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
577 if p:
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
578 idx = p.index(':')
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
579 versions[p[:idx]] = p[idx+1:]
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
580 if _suite.vc:
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
581 versions['jvmci'] = _suite.vc.parent(_suite.dir)[:12]
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
582 else:
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
583 versions['jvmci'] = "unknown"
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
584 if 'hotspot' in versions:
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
585 del versions['hotspot']
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
586 fp.write('SOURCE=" ' + ' '.join((k + ":" + v for k, v in versions.iteritems())) + '"' + os.linesep)
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
587 mx.logv("Updating " + releaseFile)
23286
dd9cc155639c Merge with jdk8u66-b17
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22777
diff changeset
588 except BaseException as e:
23379
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23352
diff changeset
589 mx.warn("Exception " + str(e) + " while updating release file")
22693
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
590 fp.write(line)
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
591 else:
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
592 fp.write(line)
af01df1b8f0d Fix release file patching
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22680
diff changeset
593
8261
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
594 if vmToCheck is not None:
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
595 jvmCfg = getVmCfgInJdk(jdkDir)
8261
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
596 found = False
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
597 with open(jvmCfg) as f:
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
598 for line in f:
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
599 if line.strip() == '-' + vmToCheck + ' KNOWN':
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
600 found = True
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
601 break
2237260c6fdb the contents of jvm.cfg are reset when copying the JDK so that the non-default VMs must be built before being run
Doug Simon <doug.simon@oracle.com>
parents: 8223
diff changeset
602 if not found:
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
603 _handle_missing_VM(build, vmToCheck)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
604
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
605 return jdkDir
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
606
22141
f85b80b29176 removed '_' prefix from exported methods and fields and provided accessors
Doug Simon <doug.simon@oracle.com>
parents: 22140
diff changeset
607 def copyToJdk(src, dst, permissions=JDK_UNIX_PERMISSIONS_FILE):
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
608 name = os.path.basename(src)
22716
f536aaa5a5d5 Use mx.ensure_dir_exists rather than os.makedirs to avoid races
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22707
diff changeset
609 mx.ensure_dir_exists(dst)
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
610 dstLib = join(dst, name)
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
611 if mx.get_env('SYMLINK_GRAAL_JAR', None) == 'true':
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
612 # Using symlinks is much faster than copying but may
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
613 # cause issues if the lib is being updated while
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
614 # the VM is running.
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
615 if not os.path.islink(dstLib) or not os.path.realpath(dstLib) == src:
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
616 if exists(dstLib):
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
617 os.remove(dstLib)
16858
a8af2abc2039 fixed regression in mx causing problems for the SYMLINK_GRAAL_JAR feature
Doug Simon <doug.simon@oracle.com>
parents: 16782
diff changeset
618 os.symlink(src, dstLib)
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
619 else:
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
620 # do a copy and then a move to get atomic updating (on Unix)
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
621 fd, tmp = tempfile.mkstemp(suffix='', prefix=name, dir=dst)
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
622 shutil.copyfile(src, tmp)
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
623 os.close(fd)
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
624 shutil.move(tmp, dstLib)
16863
0d2e3399acfe mx: add argument for permissions to copyToJdk()
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16862
diff changeset
625 os.chmod(dstLib, permissions)
16782
9f5e33cf8d52 Factored out the '_copyToJdk' function and allow copying files to jre/lib/ext.
Danilo Ansaloni <danilo.ansaloni@oracle.com>
parents: 16729
diff changeset
626
21031
e1c063565b3c Graal Services: use services files in jre/lib/graal/services
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 20996
diff changeset
627 def _installDistInJdks(deployableDist):
16623
addc0564e5b5 split com.oracle.graal.truffle.* projects into a separate graal-truffle.jar and added truffle.jar to the boot class path
Doug Simon <doug.simon@oracle.com>
parents: 16622
diff changeset
628 """
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21554
diff changeset
629 Installs the jar(s) for a given Distribution into all existing JVMCI JDKs
16623
addc0564e5b5 split com.oracle.graal.truffle.* projects into a separate graal-truffle.jar and added truffle.jar to the boot class path
Doug Simon <doug.simon@oracle.com>
parents: 16622
diff changeset
630 """
10574
0cad5096735e commands.py: Make sure _jdk returns an absolute path. Use _jdk and _jdksDir where necessary
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10570
diff changeset
631 jdks = _jdksDir()
8134
6e3ebc6fd5a4 graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents: 8132
diff changeset
632 if exists(jdks):
6e3ebc6fd5a4 graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents: 8132
diff changeset
633 for e in os.listdir(jdks):
21070
2ee48d02afe3 mx: Merge graal service files
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21059
diff changeset
634 jdkDir = join(jdks, e)
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
635 deployableDist.deploy(jdkDir)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
636
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
637 def _vmbuildFromJdkDir(jdkDir):
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
638 """
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
639 Determines the VM build corresponding to 'jdkDir'.
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
640 """
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
641 jdksDir = _jdksDir()
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
642 assert jdkDir.startswith(jdksDir)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
643 vmbuild = os.path.relpath(jdkDir, jdksDir)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
644 assert vmbuild in _vmbuildChoices, 'The vmbuild derived from ' + jdkDir + ' is unknown: ' + vmbuild
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
645 return vmbuild
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
646
21613
60154926b513 replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents: 21607
diff changeset
647 def _getJdkDeployedJars(jdkDir):
60154926b513 replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents: 21607
diff changeset
648 """
60154926b513 replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents: 21607
diff changeset
649 Gets jar paths for all deployed distributions in the context of
60154926b513 replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents: 21607
diff changeset
650 a given JDK directory.
60154926b513 replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents: 21607
diff changeset
651 """
60154926b513 replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents: 21607
diff changeset
652 jars = []
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
653 for dist in jdkDeployedDists:
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
654 if not isinstance(dist, JarJDKDeployedDist):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
655 continue
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
656 jar = basename(dist.dist().path)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
657 jars.append(join(dist.targetDir(), jar))
21613
60154926b513 replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents: 21607
diff changeset
658 return jars
60154926b513 replaced use of javap with a small Java utility for refining service class list to only those implementing com.oracle.jvmci.service.Service
Doug Simon <doug.simon@oracle.com>
parents: 21607
diff changeset
659
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
660 # run a command in the windows SDK Debug Shell
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
661 def _runInDebugShell(cmd, workingDir, logFile=None, findInOutput=None, respondTo=None):
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
662 if respondTo is None:
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
663 respondTo = {}
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
664 newLine = os.linesep
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
665 startToken = 'RUNINDEBUGSHELL_STARTSEQUENCE'
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
666 endToken = 'RUNINDEBUGSHELL_ENDSEQUENCE'
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
667
4252
67e88b7624d5 Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents: 4247
diff changeset
668 winSDK = mx.get_env('WIN_SDK', 'C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\')
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
669
17262
b641450c19ce mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents: 17233
diff changeset
670 if not exists(mx._cygpathW2U(winSDK)):
6306
2a819543cc45 Warnings for windows build if there is no SDK
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6294
diff changeset
671 mx.abort("Could not find Windows SDK : '" + winSDK + "' does not exist")
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
672
17262
b641450c19ce mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents: 17233
diff changeset
673 winSDKSetEnv = mx._cygpathW2U(join(winSDK, 'Bin', 'SetEnv.cmd'))
17233
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
674 if not exists(winSDKSetEnv):
6306
2a819543cc45 Warnings for windows build if there is no SDK
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6294
diff changeset
675 mx.abort("Invalid Windows SDK path (" + winSDK + ") : could not find Bin/SetEnv.cmd (you can use the WIN_SDK environment variable to specify an other path)")
4252
67e88b7624d5 Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents: 4247
diff changeset
676
17262
b641450c19ce mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents: 17233
diff changeset
677 wincmd = 'cmd.exe /E:ON /V:ON /K "' + mx._cygpathU2W(winSDKSetEnv) + '"'
17233
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
678 p = subprocess.Popen(wincmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
4269
ffd5ce8fc736 Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents: 4257
diff changeset
679 stdout = p.stdout
ffd5ce8fc736 Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents: 4257
diff changeset
680 stdin = p.stdin
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
681 if logFile:
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
682 log = open(logFile, 'w')
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
683 ret = False
17233
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
684
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
685 def _writeProcess(s):
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
686 stdin.write(s + newLine)
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
687
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
688 _writeProcess("echo " + startToken)
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
689 while True:
7291
a748e4d44694 Truffle API to specify type-specalized Node classes; annotation processor for automatic code generation of the type-specialized Node classes during the build process
Christian Humer <christian.humer@gmail.com>
parents: 7290
diff changeset
690 # encoding may be None on windows plattforms
a748e4d44694 Truffle API to specify type-specalized Node classes; annotation processor for automatic code generation of the type-specialized Node classes during the build process
Christian Humer <christian.humer@gmail.com>
parents: 7290
diff changeset
691 if sys.stdout.encoding is None:
a748e4d44694 Truffle API to specify type-specalized Node classes; annotation processor for automatic code generation of the type-specialized Node classes during the build process
Christian Humer <christian.humer@gmail.com>
parents: 7290
diff changeset
692 encoding = 'utf-8'
a748e4d44694 Truffle API to specify type-specalized Node classes; annotation processor for automatic code generation of the type-specialized Node classes during the build process
Christian Humer <christian.humer@gmail.com>
parents: 7290
diff changeset
693 else:
a748e4d44694 Truffle API to specify type-specalized Node classes; annotation processor for automatic code generation of the type-specialized Node classes during the build process
Christian Humer <christian.humer@gmail.com>
parents: 7290
diff changeset
694 encoding = sys.stdout.encoding
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
695
7291
a748e4d44694 Truffle API to specify type-specalized Node classes; annotation processor for automatic code generation of the type-specialized Node classes during the build process
Christian Humer <christian.humer@gmail.com>
parents: 7290
diff changeset
696 line = stdout.readline().decode(encoding)
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
697 if logFile:
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
698 log.write(line.encode('utf-8'))
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
699 line = line.strip()
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
700 mx.log(line)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
701 if line == startToken:
17233
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
702 _writeProcess('cd /D ' + workingDir + ' & ' + cmd + ' & echo ' + endToken)
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
703 for regex in respondTo.keys():
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
704 match = regex.search(line)
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
705 if match:
17233
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
706 _writeProcess(respondTo[regex])
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
707 if findInOutput:
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
708 match = findInOutput.search(line)
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
709 if match:
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
710 ret = True
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
711 if line == endToken:
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
712 if not findInOutput:
17233
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
713 _writeProcess('echo ERRXXX%errorlevel%')
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
714 else:
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
715 break
5868
a10e72af4dc5 Make windows build work even if Visual Studio is not installed (only the Windows SDK is required)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5782
diff changeset
716 if line.startswith('ERRXXX'):
a10e72af4dc5 Make windows build work even if Visual Studio is not installed (only the Windows SDK is required)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5782
diff changeset
717 if line == 'ERRXXX0':
5680
87fc13b59258 Split _vmLibDirInJdk into _vmLibDirInJdk and _vmCfgInJdk to account for Windows jdk layout
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5649
diff changeset
718 ret = True
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
719 break
17233
a02c295218aa mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents: 17055
diff changeset
720 _writeProcess("exit")
4177
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
721 if logFile:
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
722 log.close()
c843578c269d Make building work on Windows.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4163
diff changeset
723 return ret
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
724
11605
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
725 def jdkhome(vm=None):
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
726 """return the JDK directory selected for the 'vm' command"""
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
727 return get_jvmci_jdk_dir(deployDists=False)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
728
11605
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
729 def print_jdkhome(args, vm=None):
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
730 """print the JDK directory selected for the 'vm' command"""
3676540f71cf Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents: 11534
diff changeset
731 print jdkhome(vm)
5103
276e14614531 Added jdkhome command to mx.
Doug Simon <doug.simon@oracle.com>
parents: 5094
diff changeset
732
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
733 def buildvars(args):
11377
0fbc1e418c88 fixed capitalization and tense in documentation of some mx commands
Doug Simon <doug.simon@oracle.com>
parents: 11373
diff changeset
734 """describe the variables that can be set by the -D option to the 'mx build' commmand"""
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
735
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
736 buildVars = {
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
737 'ALT_BOOTDIR' : 'The location of the bootstrap JDK installation (default: ' + get_jvmci_bootstrap_jdk().home + ')',
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
738 'ALT_OUTPUTDIR' : 'Build directory',
18876
c446d00f2cdf mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents: 18869
diff changeset
739 'HOTSPOT_BUILD_JOBS' : 'Number of CPUs used by make (default: ' + str(mx.cpu_count()) + ')',
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
740 'INSTALL' : 'Install the built VM into the JDK? (default: y)',
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
741 'ZIP_DEBUGINFO_FILES' : 'Install zipped debug symbols file? (default: 0)',
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
742 }
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
743
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
744 mx.log('HotSpot build variables that can be set by the -D option to "mx build":')
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
745 mx.log('')
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
746 for n in sorted(buildVars.iterkeys()):
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
747 mx.log(n)
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
748 mx.log(textwrap.fill(buildVars[n], initial_indent=' ', subsequent_indent=' ', width=200))
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
749
9120
9f361c0f912b added note about mx/env to the output of 'mx buildvars'
Doug Simon <doug.simon@oracle.com>
parents: 9119
diff changeset
750 mx.log('')
22018
11ed27b2abe8 remove hard-coded use of 'mx' to refer to the mxDir for the graal suite
Doug Simon <doug.simon@oracle.com>
parents: 22017
diff changeset
751 mx.log('Note that these variables can be given persistent values in the file ' + join(_suite.mxDir, 'env') + ' (see \'mx about\').')
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
752
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
753 def _hotspotReplaceResultsVar(m):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
754 var = m.group(1)
22283
65eb572cbcb7 extended JVM_<vmbuild>_<vm> template distribution with MacOS support
Doug Simon <doug.simon@oracle.com>
parents: 22282
diff changeset
755 if var == 'os':
22332
4dfa1275ffa3 Fix alt outputdir for -nojvmci builds
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22331
diff changeset
756 return _hotspotOs(mx.get_os())
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
757 if var == 'buildname':
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
758 return _hotspotGetVariant()
22284
09acb1bc3a56 make hotspot native project's results parameterized on <vmbuild>
Doug Simon <doug.simon@oracle.com>
parents: 22283
diff changeset
759 if var == 'vmbuild':
09acb1bc3a56 make hotspot native project's results parameterized on <vmbuild>
Doug Simon <doug.simon@oracle.com>
parents: 22283
diff changeset
760 return _vmbuild
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
761 return mx._replaceResultsVar(m)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
762
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
763 class HotSpotProject(mx.NativeProject):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
764 def __init__(self, suite, name, deps, workingSets, results, output, **args):
22436
5bf761306682 Don't create empty jvmci/src/{s,r,c} directories in mx.
Roland Schatz <roland.schatz@oracle.com>
parents: 22429
diff changeset
765 mx.NativeProject.__init__(self, suite, name, "", [], deps, workingSets, results, output, join(suite.dir, "src")) # TODO...
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
766
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
767 def getOutput(self, replaceVar=_hotspotReplaceResultsVar):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
768 return mx.NativeProject.getOutput(self, replaceVar=replaceVar)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
769
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
770 def getResults(self, replaceVar=_hotspotReplaceResultsVar):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
771 return mx.NativeProject.getResults(self, replaceVar=replaceVar)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
772
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
773 def getBuildTask(self, args):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
774 return HotSpotBuildTask(self, args, _vmbuild, get_vm())
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
775
22332
4dfa1275ffa3 Fix alt outputdir for -nojvmci builds
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22331
diff changeset
776 def _hotspotOs(mx_os):
4dfa1275ffa3 Fix alt outputdir for -nojvmci builds
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22331
diff changeset
777 if mx_os == 'darwin':
4dfa1275ffa3 Fix alt outputdir for -nojvmci builds
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22331
diff changeset
778 return 'bsd'
4dfa1275ffa3 Fix alt outputdir for -nojvmci builds
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22331
diff changeset
779 return mx_os
4dfa1275ffa3 Fix alt outputdir for -nojvmci builds
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22331
diff changeset
780
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
781 def _hotspotGetVariant(vm=None):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
782 if not vm:
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
783 vm = get_vm()
24135
a8e0d0625b32 removed defunct support for non-INCLUDE_JVMCI builds
Doug Simon <doug.simon@oracle.com>
parents: 24107
diff changeset
784 variant = {'client': 'compiler1', 'server': 'compiler2'}.get(vm, vm)
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
785 return variant
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
786
23311
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
787 """
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
788 Represents a JDK HotSpot version derived from a build tag such as "jdk8u66-b16".
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
789 """
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
790 class JDKHotSpotVersion:
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
791 def __init__(self, javaCompliance, update, build):
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
792 self.javaCompliance = javaCompliance
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
793 self.update = update
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
794 self.build = build
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
795
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
796 @staticmethod
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
797 def parse_tag(tag):
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
798 m = re.match(r'jdk8u(\d+)-b(\d+)', tag)
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
799 assert m, 'unrecognized jdk8 build tag: ' + tag
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
800 return JDKHotSpotVersion(mx.JavaCompliance('8'), m.group(1), m.group(2))
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
801
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
802 def __str__(self):
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
803 return '{}_{}_{}'.format(self.javaCompliance.value, self.update, self.build)
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
804
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
805 def __cmp__(self, other):
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
806 assert isinstance(other, JDKHotSpotVersion), 'cannot compare a JDKHotSpotVersion object with ' + type(other)
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
807 return cmp(str(self), str(other))
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
808
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
809 def get_jvmci_hotspot_version():
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
810 """
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
811 Gets the upstream HotSpot version JVMCI is based on.
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
812 """
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
813 vc = mx.VC.get_vc(_suite.dir, abortOnError=False)
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
814 assert vc, 'expected jvmci-8 to be version controlled'
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
815 assert isinstance(vc, mx.HgConfig), 'expected jvmci-8 VC to be Mercurial, not ' + vc.proper_name
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
816 lines = vc.hg_command(_suite.dir, ['log', '-r', 'keyword("Added tag jdk8u")', '--template', '{desc}\\n'], quiet=True).strip().split('\n')
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
817 assert lines, 'no hg commits found that match "Added tag jdk8u..."'
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
818 versions = [line.split()[2] for line in lines]
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
819 return JDKHotSpotVersion.parse_tag(sorted(versions)[-1])
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
820
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
821 def get_jdk_hotspot_version(tag=mx.DEFAULT_JDK_TAG):
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
822 """
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
823 Gets the HotSpot version in the JDK selected by `tag`.
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
824 """
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
825 jdk = mx.get_jdk(tag=tag)
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
826 output = subprocess.check_output([jdk.java, '-version'], stderr=subprocess.STDOUT)
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
827 m = re.search(r'Java\(TM\) SE Runtime Environment \(build 1.8.0_(\d+)-b(\d+)\)', output)
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
828 return JDKHotSpotVersion(jdk.javaCompliance, m.group(1), m.group(2))
54b4e75c6088 added get_jvmci_hotspot_version and get_jdk_hotspot_version to respectively query the HotSpot version JVMCI is based on and the version in the bootstrap JDK
Doug Simon <doug.simon@oracle.com>
parents: 23308
diff changeset
829
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
830 class HotSpotBuildTask(mx.NativeBuildTask):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
831 def __init__(self, project, args, vmbuild, vm):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
832 mx.NativeBuildTask.__init__(self, args, project)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
833 self.vm = vm
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
834 self.vmbuild = vmbuild
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
835
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
836 def __str__(self):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
837 return 'Building HotSpot[{}, {}]'.format(self.vmbuild, self.vm)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
838
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
839 def build(self):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
840 isWindows = platform.system() == 'Windows' or "CYGWIN" in platform.system()
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
841
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
842 if self.vm.startswith('server'):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
843 buildSuffix = ''
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
844 else:
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
845 assert self.vm.startswith('client'), self.vm
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
846 buildSuffix = '1'
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
847
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
848 if isWindows:
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
849 t_compilelogfile = mx._cygpathU2W(os.path.join(_suite.dir, "jvmciCompile.log"))
22335
8217ef77a80a Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22334
diff changeset
850 mksHome = mx.get_env('MKS_HOME', 'C:\\cygwin\\bin')
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
851
22335
8217ef77a80a Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22334
diff changeset
852 variant = _hotspotGetVariant(self.vm)
8217ef77a80a Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22334
diff changeset
853 project_config = variant + '_' + self.vmbuild
8217ef77a80a Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22334
diff changeset
854 jvmciHome = mx._cygpathU2W(_suite.dir)
8217ef77a80a Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22334
diff changeset
855 _runInDebugShell('msbuild ' + jvmciHome + r'\build\vs-amd64\jvm.vcproj /p:Configuration=' + project_config + ' /target:clean', jvmciHome)
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
856 winCompileCmd = r'set HotSpotMksHome=' + mksHome + r'& set JAVA_HOME=' + mx._cygpathU2W(get_jvmci_bootstrap_jdk().home) + r'& set path=%JAVA_HOME%\bin;%path%;%HotSpotMksHome%& cd /D "' + jvmciHome + r'\make\windows"& call create.bat ' + jvmciHome
22335
8217ef77a80a Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22334
diff changeset
857 print winCompileCmd
8217ef77a80a Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22334
diff changeset
858 winCompileSuccess = re.compile(r"^Writing \.vcxproj file:")
8217ef77a80a Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22334
diff changeset
859 if not _runInDebugShell(winCompileCmd, jvmciHome, t_compilelogfile, winCompileSuccess):
8217ef77a80a Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22334
diff changeset
860 mx.abort('Error executing create command')
8217ef77a80a Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22334
diff changeset
861 winBuildCmd = 'msbuild ' + jvmciHome + r'\build\vs-amd64\jvm.vcxproj /p:Configuration=' + project_config + ' /p:Platform=x64'
8217ef77a80a Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22334
diff changeset
862 if not _runInDebugShell(winBuildCmd, jvmciHome, t_compilelogfile):
8217ef77a80a Work on Windows build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22334
diff changeset
863 mx.abort('Error building project')
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
864 else:
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
865 def filterXusage(line):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
866 if not 'Xusage.txt' in line:
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
867 sys.stderr.write(line + os.linesep)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
868 cpus = self.parallelism
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
869 makeDir = join(_suite.dir, 'make')
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
870 runCmd = [mx.gmake_cmd(), '-C', makeDir]
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
871
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
872 env = os.environ.copy()
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
873
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
874 # These must be passed as environment variables
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
875 env.setdefault('LANG', 'C')
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
876 #env['JAVA_HOME'] = jdk
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
877
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
878 def setMakeVar(name, default, env=None):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
879 """Sets a make variable on the command line to the value
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
880 of the variable in 'env' with the same name if defined
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
881 and 'env' is not None otherwise to 'default'
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
882 """
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
883 runCmd.append(name + '=' + (env.get(name, default) if env else default))
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
884
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
885 if self.args.D:
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
886 for nv in self.args.D:
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
887 name, value = nv.split('=', 1)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
888 setMakeVar(name.strip(), value)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
889
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
890 setMakeVar('ARCH_DATA_MODEL', '64', env=env)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
891 setMakeVar('HOTSPOT_BUILD_JOBS', str(cpus), env=env)
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
892 setMakeVar('ALT_BOOTDIR', get_jvmci_bootstrap_jdk().home, env=env)
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
893 # setMakeVar("EXPORT_PATH", jdk)
22627
e778e9aaed23 Add support for SPARC/Linux
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22616
diff changeset
894 if mx.get_os() == 'linux' and platform.processor() == 'sparc64':
e778e9aaed23 Add support for SPARC/Linux
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22616
diff changeset
895 # SPARC/Linux
23983
78bb8eb7ab76 Fix build for Linux/SPARC
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 23978
diff changeset
896 setMakeVar('INCLUDE_TRACE', 'false', env=env)
78bb8eb7ab76 Fix build for Linux/SPARC
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 23978
diff changeset
897 setMakeVar('DISABLE_COMMERCIAL_FEATURES', 'true', env=env)
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
898
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
899 setMakeVar('MAKE_VERBOSE', 'y' if mx._opts.verbose else '')
24135
a8e0d0625b32 removed defunct support for non-INCLUDE_JVMCI builds
Doug Simon <doug.simon@oracle.com>
parents: 24107
diff changeset
900 version = _suite.release_version()
a8e0d0625b32 removed defunct support for non-INCLUDE_JVMCI builds
Doug Simon <doug.simon@oracle.com>
parents: 24107
diff changeset
901 setMakeVar('USER_RELEASE_SUFFIX', 'jvmci-' + version)
a8e0d0625b32 removed defunct support for non-INCLUDE_JVMCI builds
Doug Simon <doug.simon@oracle.com>
parents: 24107
diff changeset
902 setMakeVar('INCLUDE_JVMCI', 'true')
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
903 # setMakeVar('INSTALL', 'y', env=env)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
904 if mx.get_os() == 'darwin' and platform.mac_ver()[0] != '':
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
905 # Force use of clang on MacOS
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
906 setMakeVar('USE_CLANG', 'true')
22395
63e7eb179710 Set COMPILER_WARNINGS_FATAL=false during HotSpot build on MacOS
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22335
diff changeset
907 setMakeVar('COMPILER_WARNINGS_FATAL', 'false')
63e7eb179710 Set COMPILER_WARNINGS_FATAL=false during HotSpot build on MacOS
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22335
diff changeset
908
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
909 if mx.get_os() == 'solaris':
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
910 # If using sparcWorks, setup flags to avoid make complaining about CC version
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
911 cCompilerVersion = subprocess.Popen('CC -V', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True).stderr.readlines()[0]
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
912 if cCompilerVersion.startswith('CC: Sun C++'):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
913 compilerRev = cCompilerVersion.split(' ')[3]
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
914 setMakeVar('ENFORCE_COMPILER_REV', compilerRev, env=env)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
915 setMakeVar('ENFORCE_CC_COMPILER_REV', compilerRev, env=env)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
916 if self.vmbuild == 'jvmg':
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
917 # We want ALL the symbols when debugging on Solaris
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
918 setMakeVar('STRIP_POLICY', 'no_strip')
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
919 # This removes the need to unzip the *.diz files before debugging in gdb
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
920 setMakeVar('ZIP_DEBUGINFO_FILES', '0', env=env)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
921
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
922 if buildSuffix == "1":
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
923 setMakeVar("BUILD_CLIENT_ONLY", "true")
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
924
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
925 # Clear this variable as having it set can cause very confusing build problems
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
926 env.pop('CLASSPATH', None)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
927
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
928 # Issue an env prefix that can be used to run the make on the command line
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
929 if not mx._opts.verbose:
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
930 mx.log('--------------- make command line ----------------------')
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
931
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
932 envPrefix = ' '.join([key + '=' + env[key] for key in env.iterkeys() if not os.environ.has_key(key) or env[key] != os.environ[key]])
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
933 if len(envPrefix):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
934 mx.log('env ' + envPrefix + ' \\')
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
935
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
936 runCmd.append(self.vmbuild + buildSuffix)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
937 runCmd.append("docs")
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
938 # runCmd.append("export_" + build)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
939
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
940 if not mx._opts.verbose:
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
941 mx.log(' '.join(runCmd))
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
942 mx.log('--------------------------------------------------------')
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
943 mx.run(runCmd, err=filterXusage, env=env)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
944 self._newestOutput = None
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
945
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
946 def needsBuild(self, newestInput):
22727
9860aa60385f Fix hotspot build task: needsBuild should check ProjectBuildTask.needsBuild
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22716
diff changeset
947 # Skip super (NativeBuildTask) because it always returns true
9860aa60385f Fix hotspot build task: needsBuild should check ProjectBuildTask.needsBuild
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22716
diff changeset
948 (superNeeds, superReason) = mx.ProjectBuildTask.needsBuild(self, newestInput)
9860aa60385f Fix hotspot build task: needsBuild should check ProjectBuildTask.needsBuild
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22716
diff changeset
949 if superNeeds:
9860aa60385f Fix hotspot build task: needsBuild should check ProjectBuildTask.needsBuild
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22716
diff changeset
950 return (superNeeds, superReason)
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
951 newestOutput = self.newestOutput()
22672
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22671
diff changeset
952 for d in ['src', 'make', join('jvmci', 'jdk.vm.ci.hotspot', 'src_gen', 'hotspot')]: # TODO should this be replaced by a dependency to the project?
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
953 for root, dirnames, files in os.walk(join(_suite.dir, d)):
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
954 # ignore src/share/tools
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
955 if root == join(_suite.dir, 'src', 'share'):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
956 dirnames.remove('tools')
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
957 for f in (join(root, name) for name in files):
22413
454a38908a59 newestInput parameter to HotSpotBuildTask.needsBuild() is a TimeStampFile as of mx 5.3.3
Doug Simon <doug.simon@oracle.com>
parents: 22400
diff changeset
958 ts = mx.TimeStampFile(f)
454a38908a59 newestInput parameter to HotSpotBuildTask.needsBuild() is a TimeStampFile as of mx 5.3.3
Doug Simon <doug.simon@oracle.com>
parents: 22400
diff changeset
959 if newestOutput:
454a38908a59 newestInput parameter to HotSpotBuildTask.needsBuild() is a TimeStampFile as of mx 5.3.3
Doug Simon <doug.simon@oracle.com>
parents: 22400
diff changeset
960 if not newestOutput.exists():
454a38908a59 newestInput parameter to HotSpotBuildTask.needsBuild() is a TimeStampFile as of mx 5.3.3
Doug Simon <doug.simon@oracle.com>
parents: 22400
diff changeset
961 return (True, '{} does not exist'.format(newestOutput))
454a38908a59 newestInput parameter to HotSpotBuildTask.needsBuild() is a TimeStampFile as of mx 5.3.3
Doug Simon <doug.simon@oracle.com>
parents: 22400
diff changeset
962 if ts.isNewerThan(newestOutput):
454a38908a59 newestInput parameter to HotSpotBuildTask.needsBuild() is a TimeStampFile as of mx 5.3.3
Doug Simon <doug.simon@oracle.com>
parents: 22400
diff changeset
963 return (True, '{} is newer than {}'.format(ts, newestOutput))
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
964 return (False, None)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
965
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
966 def buildForbidden(self):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
967 if mx.NativeBuildTask.buildForbidden(self):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
968 return True
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
969 if self.vm == 'original':
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
970 if self.vmbuild != 'product':
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
971 mx.log('only product build of original VM exists')
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
972 return True
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
973 if not isVMSupported(self.vm):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
974 mx.log('The ' + self.vm + ' VM is not supported on this platform - skipping')
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
975 return True
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
976 return False
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
977
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
978 def clean(self, forBuild=False):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
979 if forBuild: # Let make handle incremental builds
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
980 return
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
981 def handleRemoveReadonly(func, path, exc):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
982 excvalue = exc[1]
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
983 if mx.get_os() == 'windows' and func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES:
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
984 os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) # 0777
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
985 func(path)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
986 else:
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
987 raise
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
988
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
989 def rmIfExists(name):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
990 if os.path.isdir(name):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
991 shutil.rmtree(name, ignore_errors=False, onerror=handleRemoveReadonly)
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
992 elif os.path.isfile(name):
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
993 os.unlink(name)
22646
3af40fab60c2 Use make clean to clean hotspot build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22627
diff changeset
994 makeFiles = join(_suite.dir, 'make')
3af40fab60c2 Use make clean to clean hotspot build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22627
diff changeset
995 if mx._opts.verbose:
3af40fab60c2 Use make clean to clean hotspot build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22627
diff changeset
996 outCapture = None
3af40fab60c2 Use make clean to clean hotspot build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22627
diff changeset
997 else:
3af40fab60c2 Use make clean to clean hotspot build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22627
diff changeset
998 def _consume(s):
3af40fab60c2 Use make clean to clean hotspot build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22627
diff changeset
999 pass
3af40fab60c2 Use make clean to clean hotspot build
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22627
diff changeset
1000 outCapture = _consume
22671
97f30e4d0e95 Pass ARCH_DATA_MODEL to make clean
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22670
diff changeset
1001 mx.run([mx.gmake_cmd(), 'ARCH_DATA_MODEL=64', 'ALT_BOOTDIR=' + get_jvmci_bootstrap_jdk().home, 'clean'], out=outCapture, cwd=makeFiles)
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
1002 rmIfExists(_jdksDir())
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
1003 self._newestOutput = None
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
1004
4577
bc8b58c11768 Added debug build of HotSpot Client to the gate.
Doug Simon <doug.simon@oracle.com>
parents: 4575
diff changeset
1005 def build(args, vm=None):
4575
ccb5369481a2 Clarified mx help text on how to build/run [Graal|Client|Server].
Doug Simon <doug.simon@oracle.com>
parents: 4572
diff changeset
1006 """build the VM binary
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1007
11392
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1008 The global '--vm' and '--vmbuild' options select which VM type and build target to build."""
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1009
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1010 # Override to fail quickly if extra arguments are given
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1011 # at the end of the command line. This allows for a more
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1012 # helpful error message.
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1013 class AP(ArgumentParser):
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1014 def __init__(self):
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1015 ArgumentParser.__init__(self, prog='mx build')
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1016 def parse_args(self, args):
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1017 result = ArgumentParser.parse_args(self, args)
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1018 if len(result.remainder) != 0:
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1019 firstBuildTarget = result.remainder[0]
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1020 mx.abort('To specify the ' + firstBuildTarget + ' VM build target, you need to use the global "--vmbuild" option. For example:\n' +
23343
c8526451bb6b register DEFAULT_VM as env var to be captured in IDE configs
Doug Simon <doug.simon@oracle.com>
parents: 23332
diff changeset
1021 ' mx --vmbuild=' + firstBuildTarget + ' build')
11392
66251d9f62ab fail faster with better error message if deprecated and unsupported mx build command line is given
Doug Simon <doug.simon@oracle.com>
parents: 11377
diff changeset
1022 return result
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1023
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1024 # Call mx.build to compile the Java sources
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1025 parser = AP()
9116
e2dae636732a added 'mx buildvars' command to list (some of) the variables that can be passed to 'mx build' with the -D option
Doug Simon <doug.simon@oracle.com>
parents: 9098
diff changeset
1026 parser.add_argument('-D', action='append', help='set a HotSpot build variable (run \'mx buildvars\' to list variables)', metavar='name=value')
21791
cd36556e1b78 Remove conditional makefile-based compilation of jvmci from mx_graal.py
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 21790
diff changeset
1027
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
1028 # initialize jdk
22492
f22fd96605ee renamed get_jvmci_jdk to get_jvmci_jdk_dir and where relevant, variables named jdk to jdkDir
Doug Simon <doug.simon@oracle.com>
parents: 22491
diff changeset
1029 get_jvmci_jdk_dir(create=True)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1030
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
1031 mx.build(['--source', '1.7'] + args, parser=parser)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1032
22672
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22671
diff changeset
1033 mx_gate.add_jacoco_includes(['jdk.vm.ci.*'])
5257
a549662f6c6f added 'vmg' and 'vmfg' commands to mx as convenient aliases for running the debug and fastdebug builds of the selected VM
Doug Simon <doug.simon@oracle.com>
parents: 5245
diff changeset
1034
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1035 def run_vm(args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, vmbuild=None):
22758
a130b51efb07 removed @Option mechanism from JVMCI (GRAAL-1371)
Doug Simon <doug.simon@oracle.com>
parents: 22732
diff changeset
1036 """run a Java program by executing the java executable in a JVMCI JDK"""
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1037 jdkTag = mx.get_jdk_option().tag
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1038 if jdkTag and jdkTag != _JVMCI_JDK_TAG:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1039 mx.abort('The "--jdk" option must have the tag "' + _JVMCI_JDK_TAG + '" when running a command requiring a JVMCI VM')
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1040 jdk = get_jvmci_jdk(vmbuild=vmbuild)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1041 return jdk.run_java(args, vm=vm, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd, timeout=timeout)
3718
42e655a6a6f3 Added mx configuration.
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
1042
22182
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1043 def _unittest_config_participant(config):
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1044 vmArgs, mainClass, mainClassArgs = config
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1045 if isJVMCIEnabled(get_vm()):
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1046 # Remove entries from class path that are in JVMCI loaded jars
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1047 cpIndex, cp = mx.find_classpath_arg(vmArgs)
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1048 if cp:
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1049 excluded = set()
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1050 for jdkDist in jdkDeployedDists:
22281
2333f2f5baed Fixes for new jdkDeployedDists model in _unittest_config_participant
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22280
diff changeset
1051 dist = jdkDist.dist()
22182
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1052 excluded.update([d.output_dir() for d in dist.archived_deps() if d.isJavaProject()])
22707
829a9e1ccf23 mx: exclude JVMCI jars from unit test class path
Doug Simon <doug.simon@oracle.com>
parents: 22695
diff changeset
1053 excluded.add(dist.path)
22182
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1054 cp = os.pathsep.join([e for e in cp.split(os.pathsep) if e not in excluded])
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1055 vmArgs[cpIndex] = cp
18351
1e7b53d7489d fixed pylint issue
Doug Simon <doug.simon@oracle.com>
parents: 18346
diff changeset
1056
22182
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1057 # Run the VM in a mode where application/test classes can
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1058 # access JVMCI loaded classes.
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1059 vmArgs = ['-XX:-UseJVMCIClassLoader'] + vmArgs
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1060 return (vmArgs, mainClass, mainClassArgs)
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1061 return config
16395
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16394
diff changeset
1062
22182
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1063 def _unittest_vm_launcher(vmArgs, mainClass, mainClassArgs):
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1064 run_vm(vmArgs + [mainClass] + mainClassArgs)
22182
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1065
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1066 mx_unittest.add_config_participant(_unittest_config_participant)
8340
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
1067
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
1068 def shortunittest(args):
22020
36a7ec14279d moved unit test support from mx_graal.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents: 22019
diff changeset
1069 """alias for 'unittest --whitelist test/whitelist_shortunittest.txt'"""
8340
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
1070
15324
5b5f47104c0d mx: add whitelist for shortunittest
Bernhard Urban <bernhard.urban@jku.at>
parents: 15323
diff changeset
1071 args = ['--whitelist', 'test/whitelist_shortunittest.txt'] + args
22182
9bbd878b17af use unittest extensibility
Doug Simon <doug.simon@oracle.com>
parents: 22181
diff changeset
1072 mx_unittest.unittest(args)
8340
d9d883aeb96f unittest: seperate target `longunittest' and `shortunittest'
Bernhard Urban <bernhard.urban@jku.at>
parents: 8317
diff changeset
1073
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
1074 def buildvms(args):
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
1075 """build one or more VMs in various configurations"""
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1076
11296
4e943a311d9c mx presents a command line dialogue to select the default VM if it is not configured (GRAAL-416)
Doug Simon <doug.simon@oracle.com>
parents: 11287
diff changeset
1077 vmsDefault = ','.join(_vmChoices.keys())
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
1078 vmbuildsDefault = ','.join(_vmbuildChoices)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1079
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1080 parser = ArgumentParser(prog='mx buildvms')
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
1081 parser.add_argument('--vms', help='a comma separated list of VMs to build (default: ' + vmsDefault + ')', metavar='<args>', default=vmsDefault)
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
1082 parser.add_argument('--builds', help='a comma separated list of build types (default: ' + vmbuildsDefault + ')', metavar='<args>', default=vmbuildsDefault)
9096
d4b868ed9cfb buildvms command now runs "java -version" for each VM built unless -n option is specified
Doug Simon <doug.simon@oracle.com>
parents: 9095
diff changeset
1083 parser.add_argument('-n', '--no-check', action='store_true', help='omit running "java -version" after each build')
9097
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
1084 parser.add_argument('-c', '--console', action='store_true', help='send build output to console instead of log file')
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
1085
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
1086 args = parser.parse_args(args)
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
1087 vms = args.vms.split(',')
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
1088 builds = args.builds.split(',')
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1089
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
1090 allStart = time.time()
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1091 for vm in vms:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1092 if not isVMSupported(vm):
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1093 mx.log('The ' + vm + ' VM is not supported on this platform - skipping')
14602
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
1094 continue
591f4a575ebf issue warning/error where ever relevant if a non-supported VM (e.g., client VM on Mac) is used in mx
Doug Simon <doug.simon@oracle.com>
parents: 14595
diff changeset
1095
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
1096 for vmbuild in builds:
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1097 if vm == 'original' and vmbuild != 'product':
9095
d538dce8f403 support for non-GRAAL VMs co-existing with GRAAL VMs
Doug Simon <doug.simon@oracle.com>
parents: 9010
diff changeset
1098 continue
9097
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
1099 if not args.console:
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1100 logFile = join(vm + '-' + vmbuild + '.log')
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
1101 log = open(join(_suite.dir, logFile), 'wb')
9097
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
1102 start = time.time()
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1103 mx.log('BEGIN: ' + vm + '-' + vmbuild + '\t(see: ' + logFile + ')')
17317
f434913f9cba mx: buildvms should inherit verbosity
Bernhard Urban <bernhard.urban@jku.at>
parents: 17307
diff changeset
1104 verbose = ['-v'] if mx._opts.verbose else []
9097
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
1105 # Run as subprocess so that output can be directed to a file
23343
c8526451bb6b register DEFAULT_VM as env var to be captured in IDE configs
Doug Simon <doug.simon@oracle.com>
parents: 23332
diff changeset
1106 cmd = [sys.executable, '-u', mx.__file__] + verbose + ['--vm=' + vm, '--vmbuild=' + vmbuild, 'build']
17317
f434913f9cba mx: buildvms should inherit verbosity
Bernhard Urban <bernhard.urban@jku.at>
parents: 17307
diff changeset
1107 mx.logv("executing command: " + str(cmd))
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
1108 subprocess.check_call(cmd, cwd=_suite.dir, stdout=log, stderr=subprocess.STDOUT)
9097
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
1109 duration = datetime.timedelta(seconds=time.time() - start)
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1110 mx.log('END: ' + vm + '-' + vmbuild + '\t[' + str(duration) + ']')
9097
a0ab945fb95f build output during buildvms command is sent to console (instead of log files) if -c option is given
Doug Simon <doug.simon@oracle.com>
parents: 9096
diff changeset
1111 else:
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1112 with VM(vm, vmbuild):
22292
29bcf1fe3954 pylint fix
Mick Jordan <mick.jordan@oracle.com>
parents: 22291
diff changeset
1113 build([])
9096
d4b868ed9cfb buildvms command now runs "java -version" for each VM built unless -n option is specified
Doug Simon <doug.simon@oracle.com>
parents: 9095
diff changeset
1114 if not args.no_check:
d4b868ed9cfb buildvms command now runs "java -version" for each VM built unless -n option is specified
Doug Simon <doug.simon@oracle.com>
parents: 9095
diff changeset
1115 vmargs = ['-version']
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1116 run_vm(vmargs, vm=vm, vmbuild=vmbuild)
4584
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
1117 allDuration = datetime.timedelta(seconds=time.time() - allStart)
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
1118 mx.log('TOTAL TIME: ' + '[' + str(allDuration) + ']')
7e5d8d1c74a1 Modified JDK replication process such that a copy of the default VM is made. This prevents issues with the replicated JDK being used to bootstrap a HotSpot build.
Doug Simon <doug.simon@oracle.com>
parents: 4582
diff changeset
1119
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
1120
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
1121 def _jvmci_gate_runner(args, tasks):
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
1122 # Build server-jvmci now so we can run the unit tests
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
1123 with Task('BuildHotSpotJVMCI: product', tasks) as t:
22326
f150f5e00ccd Remove unused --check-distributions option.
Roland Schatz <roland.schatz@oracle.com>
parents: 22323
diff changeset
1124 if t: buildvms(['--vms', 'server', '--builds', 'product'])
11756
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1125
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21554
diff changeset
1126 # Run unit tests on server-hosted-jvmci
19162
32c7a5a88523 Run unit tests even earlier during gate
Doug Simon <doug.simon@oracle.com>
parents: 19160
diff changeset
1127 with VM('server', 'product'):
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
1128 with JVMCIMode('hosted'):
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
1129 with Task('JVMCI UnitTests: hosted-product', tasks) as t:
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
1130 if t: unittest(['--suite', 'jvmci', '--enable-timing', '--verbose', '--fail-fast'])
19160
d4f80cf249d0 Run unittest earlier during gate
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19044
diff changeset
1131
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
1132 # Build the fastdebug VM
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
1133 with Task('BuildHotSpotJVMCI: fastdebug', tasks) as t:
23993
7b65bd0ebeb7 removed duplicate registration of StubRoutines::_multiplyToLen in vmstructs
Doug Simon <doug.simon@oracle.com>
parents: 23983
diff changeset
1134 if t:
7b65bd0ebeb7 removed duplicate registration of StubRoutines::_multiplyToLen in vmstructs
Doug Simon <doug.simon@oracle.com>
parents: 23983
diff changeset
1135 buildvms(['--vms', 'server', '--builds', 'fastdebug'])
7b65bd0ebeb7 removed duplicate registration of StubRoutines::_multiplyToLen in vmstructs
Doug Simon <doug.simon@oracle.com>
parents: 23983
diff changeset
1136 run_vm(['-XX:+ExecuteInternalVMTests', '-version'], vm='server', vmbuild='fastdebug')
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21554
diff changeset
1137
21566
1de4d7e69f85 fixed missed renaming
Doug Simon <doug.simon@oracle.com>
parents: 21562
diff changeset
1138 # Prevent JVMCI modifications from breaking the standard builds
1de4d7e69f85 fixed missed renaming
Doug Simon <doug.simon@oracle.com>
parents: 21562
diff changeset
1139 if args.buildNonJVMCI:
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
1140 with Task('BuildHotSpotVarieties', tasks, disableJacoco=True) as t:
20000
e8a0a61526b2 added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents: 19796
diff changeset
1141 if t:
e8a0a61526b2 added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents: 19796
diff changeset
1142 buildvms(['--vms', 'client,server', '--builds', 'fastdebug,product'])
11756
78e6109ee411 mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents: 11605
diff changeset
1143
22291
ccee68149d93 added --all-suites option to gate
Doug Simon <doug.simon@oracle.com>
parents: 22290
diff changeset
1144 mx_gate.add_gate_runner(_suite, _jvmci_gate_runner)
22286
2ecfec90e51e moved gate from mx_jvmci.py to mx_gate.py in core mx
Doug Simon <doug.simon@oracle.com>
parents: 22284
diff changeset
1145 mx_gate.add_gate_argument('-g', '--only-build-jvmci', action='store_false', dest='buildNonJVMCI', help='only build the JVMCI VM')
20000
e8a0a61526b2 added support for refining the tasks run by 'mx gate' (e.g., 'mx gate -t Economy' will only run tasks whose title contains the substring 'Economy')
Doug Simon <doug.simon@oracle.com>
parents: 19796
diff changeset
1146
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1147 def deoptalot(args):
22108
51ceda0cf404 mx: make deoptalot command more flexible in terms of VM management
Doug Simon <doug.simon@oracle.com>
parents: 22099
diff changeset
1148 """bootstrap a VM with DeoptimizeALot and VerifyOops on
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1149
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1150 If the first argument is a number, the process will be repeated
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1151 this number of times. All other arguments are passed to the VM."""
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1152 count = 1
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1153 if len(args) > 0 and args[0].isdigit():
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1154 count = int(args[0])
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1155 del args[0]
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1156
7509
442668d41bc2 fixed warnings
Doug Simon <doug.simon@oracle.com>
parents: 7345
diff changeset
1157 for _ in range(count):
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1158 if not run_vm(['-XX:-TieredCompilation', '-XX:+DeoptimizeALot', '-XX:+VerifyOops'] + args + ['-version']) == 0:
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1159 mx.abort("Failed")
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1160
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1161 def longtests(args):
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1162
6340
74560fdffd51 Add a draft longtests command to mc's commands
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6319
diff changeset
1163 deoptalot(['15', '-Xmx48m'])
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1164
21165
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1165 def _igvJdk():
18893
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1166 v8u20 = mx.VersionSpec("1.8.0_20")
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1167 v8u40 = mx.VersionSpec("1.8.0_40")
19d99eec8876 Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 18876
diff changeset
1168 v8 = mx.VersionSpec("1.8")
21165
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1169 def _igvJdkVersionCheck(version):
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1170 return version >= v8 and (version < v8u20 or version >= v8u40)
22327
2c352e8d76ec Fix 'mx igv' command.
Roland Schatz <roland.schatz@oracle.com>
parents: 22326
diff changeset
1171 return mx.get_jdk(_igvJdkVersionCheck, versionDescription='>= 1.8 and < 1.8.0u20 or >= 1.8.0u40', purpose="building & running IGV").home
21165
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1172
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1173 def _igvBuildEnv():
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1174 # When the http_proxy environment variable is set, convert it to the proxy settings that ant needs
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1175 env = dict(os.environ)
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1176 proxy = os.environ.get('http_proxy')
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1177 if not (proxy is None) and len(proxy) > 0:
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1178 if '://' in proxy:
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1179 # Remove the http:// prefix (or any other protocol prefix)
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1180 proxy = proxy.split('://', 1)[1]
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1181 # Separate proxy server name and port number
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1182 proxyName, proxyPort = proxy.split(':', 1)
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1183 proxyEnv = '-DproxyHost="' + proxyName + '" -DproxyPort=' + proxyPort
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1184 env['ANT_OPTS'] = proxyEnv
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1185
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1186 env['JAVA_HOME'] = _igvJdk()
17388
9e5abd0e7916 mx/igv: fallback mechanism to work around a javac bug in jdk8u20
Bernhard Urban <bernhard.urban@jku.at>
parents: 17372
diff changeset
1187 return env
9e5abd0e7916 mx/igv: fallback mechanism to work around a javac bug in jdk8u20
Bernhard Urban <bernhard.urban@jku.at>
parents: 17372
diff changeset
1188
5089
206e68bb66c6 Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents: 5064
diff changeset
1189 def igv(args):
206e68bb66c6 Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents: 5064
diff changeset
1190 """run the Ideal Graph Visualizer"""
23321
fc1036575a76 make paths in IGV error message absolute
Doug Simon <doug.simon@oracle.com>
parents: 23319
diff changeset
1191 logFile = join(_suite.dir, '.ideal_graph_visualizer.log')
fc1036575a76 make paths in IGV error message absolute
Doug Simon <doug.simon@oracle.com>
parents: 23319
diff changeset
1192 with open(logFile, 'w') as fp:
10568
070b4a3c56f3 disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents: 10527
diff changeset
1193 mx.logv('[Ideal Graph Visualizer log is in ' + fp.name + ']')
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
1194 nbplatform = join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'nbplatform')
13472
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1195
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1196 # Remove NetBeans platform if it is earlier than the current supported version
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1197 if exists(nbplatform):
19430
9f037830060a Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19335
diff changeset
1198 updateTrackingFile = join(nbplatform, 'platform', 'update_tracking', 'org-netbeans-core.xml')
9f037830060a Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19335
diff changeset
1199 if not exists(updateTrackingFile):
9f037830060a Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19335
diff changeset
1200 mx.log('Could not find \'' + updateTrackingFile + '\', removing NetBeans platform')
13472
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1201 shutil.rmtree(nbplatform)
19430
9f037830060a Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19335
diff changeset
1202 else:
9f037830060a Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19335
diff changeset
1203 dom = xml.dom.minidom.parse(updateTrackingFile)
9f037830060a Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19335
diff changeset
1204 currentVersion = mx.VersionSpec(dom.getElementsByTagName('module_version')[0].getAttribute('specification_version'))
9f037830060a Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19335
diff changeset
1205 supportedVersion = mx.VersionSpec('3.43.1')
9f037830060a Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19335
diff changeset
1206 if currentVersion < supportedVersion:
9f037830060a Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19335
diff changeset
1207 mx.log('Replacing NetBeans platform version ' + str(currentVersion) + ' with version ' + str(supportedVersion))
9f037830060a Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19335
diff changeset
1208 shutil.rmtree(nbplatform)
9f037830060a Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19335
diff changeset
1209 elif supportedVersion < currentVersion:
9f037830060a Make mx igv more robust against bad nbplatform states
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19335
diff changeset
1210 mx.log('Supported NetBeans version in igv command should be updated to ' + str(currentVersion))
13472
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1211
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1212 if not exists(nbplatform):
72e2ec923b7b added support to replace NetBeans platform used by IGV if it is out of date (GRAAL-420)
Doug Simon <doug.simon@oracle.com>
parents: 13471
diff changeset
1213 mx.logv('[This execution may take a while as the NetBeans platform needs to be downloaded]')
21165
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1214
bdeaa5a7b83c Look for JDKs on demand, add --strict-compliance flag. Allow more precise search for JDK versions (use it for IGV)
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21122
diff changeset
1215 env = _igvBuildEnv()
18983
43baadc1913a Automatically install Batik for SVG export in IGV
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18931
diff changeset
1216 # make the jar for Batik 1.7 available.
43baadc1913a Automatically install Batik for SVG export in IGV
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 18931
diff changeset
1217 env['IGV_BATIK_JAR'] = mx.library('BATIK').get_path(True)
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
1218 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):
23321
fc1036575a76 make paths in IGV error message absolute
Doug Simon <doug.simon@oracle.com>
parents: 23319
diff changeset
1219 mx.abort("IGV ant build & launch failed. Check '" + logFile + "'. You can also try to delete " + join(_suite.dir, 'src/share/tools/IdealGraphVisualizer/nbplatform') + ".")
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1220
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1221 def c1visualizer(args):
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1222 """run the Cl Compiler Visualizer"""
22674
5ef7110c63bd moved unzipped c1visualizer distribution and downloaded hsdis to mxbuild/ directory
Doug Simon <doug.simon@oracle.com>
parents: 22672
diff changeset
1223 extractPath = join(_suite.get_output_root())
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1224 if mx.get_os() == 'windows':
22674
5ef7110c63bd moved unzipped c1visualizer distribution and downloaded hsdis to mxbuild/ directory
Doug Simon <doug.simon@oracle.com>
parents: 22672
diff changeset
1225 executable = join(extractPath, 'c1visualizer', 'bin', 'c1visualizer.exe')
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1226 else:
22674
5ef7110c63bd moved unzipped c1visualizer distribution and downloaded hsdis to mxbuild/ directory
Doug Simon <doug.simon@oracle.com>
parents: 22672
diff changeset
1227 executable = join(extractPath, 'c1visualizer', 'bin', 'c1visualizer')
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1228
22674
5ef7110c63bd moved unzipped c1visualizer distribution and downloaded hsdis to mxbuild/ directory
Doug Simon <doug.simon@oracle.com>
parents: 22672
diff changeset
1229 # Check whether the current C1Visualizer installation is up-to-date
16599
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1230 if exists(executable) and not exists(mx.library('C1VISUALIZER_DIST').get_path(resolve=False)):
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1231 mx.log('Updating C1Visualizer')
22674
5ef7110c63bd moved unzipped c1visualizer distribution and downloaded hsdis to mxbuild/ directory
Doug Simon <doug.simon@oracle.com>
parents: 22672
diff changeset
1232 shutil.rmtree(join(extractPath, 'c1visualizer'))
16599
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1233
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1234 archive = mx.library('C1VISUALIZER_DIST').get_path(resolve=True)
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1235
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1236 if not exists(executable):
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1237 zf = zipfile.ZipFile(archive, 'r')
22674
5ef7110c63bd moved unzipped c1visualizer distribution and downloaded hsdis to mxbuild/ directory
Doug Simon <doug.simon@oracle.com>
parents: 22672
diff changeset
1238 zf.extractall(extractPath)
14116
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1239
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1240 if not exists(executable):
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1241 mx.abort('C1Visualizer binary does not exist: ' + executable)
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1242
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1243 if mx.get_os() != 'windows':
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1244 # Make sure that execution is allowed. The zip file does not always specfiy that correctly
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1245 os.chmod(executable, 0777)
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1246
be7ebdf41bea mx: new command to start c1visualizer; support for IGV download when using a proxy server
Christian Wimmer <christian.wimmer@oracle.com>
parents: 14048
diff changeset
1247 mx.run([executable])
5089
206e68bb66c6 Made the IdealGraphVisualizer runnable from mx with new 'igv' command.
Doug Simon <doug.simon@oracle.com>
parents: 5064
diff changeset
1248
13935
ca0e1af320f6 mx: add support for jmh benchmark suites
Bernhard Urban <bernhard.urban@jku.at>
parents: 13928
diff changeset
1249
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
1250 def hsdis(args, copyToDir=None):
6291
633136426f26 consolidated jtt command into unittest command and removed need for explicit 'testHarness' property in 'projects' file
Doug Simon <doug.simon@oracle.com>
parents: 6278
diff changeset
1251 """download the hsdis library
4482
7903b6c28f9c Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4480
diff changeset
1252
7903b6c28f9c Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4480
diff changeset
1253 This is needed to support HotSpot's assembly dumping features.
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
1254 By default it downloads the Intel syntax version, use the 'att' argument to install AT&T syntax."""
23352
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1255 flavor = None
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1256 if mx.get_arch() == "amd64":
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1257 flavor = 'intel'
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1258 if 'att' in args:
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1259 flavor = 'att'
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1260
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1261 libpattern = mx.add_lib_suffix('hsdis-' + mx.get_arch() + '-' + mx.get_os() + '-%s')
16599
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1262
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1263 sha1s = {
23352
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1264 'att/hsdis-amd64-windows-%s.dll' : 'bcbd535a9568b5075ab41e96205e26a2bac64f72',
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1265 'att/hsdis-amd64-linux-%s.so' : '36a0b8e30fc370727920cc089f104bfb9cd508a0',
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1266 'att/hsdis-amd64-darwin-%s.dylib' : 'c1865e9a58ca773fdc1c5eea0a4dfda213420ffb',
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1267 'intel/hsdis-amd64-windows-%s.dll' : '6a388372cdd5fe905c1a26ced614334e405d1f30',
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1268 'intel/hsdis-amd64-linux-%s.so' : '0d031013db9a80d6c88330c42c983fbfa7053193',
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1269 'intel/hsdis-amd64-darwin-%s.dylib' : '67f6d23cbebd8998450a88b5bef362171f66f11a',
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1270 'hsdis-sparcv9-solaris-%s.so': '970640a9af0bd63641f9063c11275b371a59ee60',
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1271 'hsdis-sparcv9-linux-%s.so': '0c375986d727651dee1819308fbbc0de4927d5d9',
16599
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1272 }
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1273
23352
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1274 if flavor:
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1275 flavoredLib = flavor + "/" + libpattern
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1276 else:
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1277 flavoredLib = libpattern
16976
87fc600ec586 mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents: 16918
diff changeset
1278 if flavoredLib not in sha1s:
23352
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1279 mx.warn("hsdis with flavor '{}' not supported on this plattform or architecture".format(flavor))
16976
87fc600ec586 mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents: 16918
diff changeset
1280 return
87fc600ec586 mx: skip downloading hsdis if not available.
Josef Eisl <josef.eisl@jku.at>
parents: 16918
diff changeset
1281
23352
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1282 sha1 = sha1s[flavoredLib]
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1283 lib = flavoredLib % (sha1)
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1284 path = join(_suite.get_output_root(), lib)
5189
6fbf12b8e572 automated download of hsdis lib if PrintAssembly option is used; added support for hsdis on the Mac
Doug Simon <doug.simon@oracle.com>
parents: 5153
diff changeset
1285 if not exists(path):
16599
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1286 sha1path = path + '.sha1'
23352
3848113e3e6b Update hsdis binaries
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 23343
diff changeset
1287 mx.download_file_with_sha1('hsdis', path, ['https://lafo.ssw.uni-linz.ac.at/pub/hsdis/' + lib], sha1, sha1path, True, True, sources=False)
5596
e4b1bc5e29e0 hsdis library is downloaded into newly created Graal JDK
Doug Simon <doug.simon@oracle.com>
parents: 5517
diff changeset
1288 if copyToDir is not None and exists(copyToDir):
22653
24aa7495fec9 Fix download for hsdis on Linux/SPARC
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22646
diff changeset
1289 destFileName = mx.add_lib_suffix('hsdis-' + mx.get_arch())
24aa7495fec9 Fix download for hsdis on Linux/SPARC
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22646
diff changeset
1290 shutil.copy(path, copyToDir + os.sep + destFileName)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1291
5245
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
1292 def hcfdis(args):
6291
633136426f26 consolidated jtt command into unittest command and removed need for explicit 'testHarness' property in 'projects' file
Doug Simon <doug.simon@oracle.com>
parents: 6278
diff changeset
1293 """disassemble HexCodeFiles embedded in text files
5245
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
1294
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
1295 Run a tool over the input files to convert all embedded HexCodeFiles
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
1296 to a disassembled format."""
6958
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1297
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1298 parser = ArgumentParser(prog='mx hcfdis')
6958
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1299 parser.add_argument('-m', '--map', help='address to symbol map applied to disassembler output')
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1300 parser.add_argument('files', nargs=REMAINDER, metavar='files...')
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1301
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1302 args = parser.parse_args(args)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1303
16599
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1304 path = mx.library('HCFDIS').get_path(resolve=True)
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1305 mx.run_java(['-cp', path, 'com.oracle.max.hcfdis.HexCodeFileDis'] + args.files)
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1306
6958
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1307 if args.map is not None:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1308 addressRE = re.compile(r'0[xX]([A-Fa-f0-9]+)')
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1309 with open(args.map) as fp:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1310 lines = fp.read().splitlines()
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1311 symbols = dict()
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1312 for l in lines:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1313 addressAndSymbol = l.split(' ', 1)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1314 if len(addressAndSymbol) == 2:
11514
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1315 address, symbol = addressAndSymbol
dc3c8df55905 added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents: 11512
diff changeset
1316 if address.startswith('0x'):
6958
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1317 address = long(address, 16)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1318 symbols[address] = symbol
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1319 for f in args.files:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1320 with open(f) as fp:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1321 lines = fp.read().splitlines()
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1322 updated = False
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1323 for i in range(0, len(lines)):
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1324 l = lines[i]
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1325 for m in addressRE.finditer(l):
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1326 sval = m.group(0)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1327 val = long(sval, 16)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1328 sym = symbols.get(val)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1329 if sym:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1330 l = l.replace(sval, sym)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1331 updated = True
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1332 lines[i] = l
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1333 if updated:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1334 mx.log('updating ' + f)
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1335 with open('new_' + f, "w") as fp:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1336 for l in lines:
abbe4faaf0c1 added support for dumping an address to symbol map (with -G:+PrintAddressMap) to translate addresses in disassembled output (via new '-m' option to the hcfdis command)
Doug Simon <doug.simon@oracle.com>
parents: 6718
diff changeset
1337 print >> fp, l
5245
71ac4221b1b0 added hcfdis command
Doug Simon <doug.simon@oracle.com>
parents: 5244
diff changeset
1338
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21554
diff changeset
1339 def isJVMCIEnabled(vm):
24135
a8e0d0625b32 removed defunct support for non-INCLUDE_JVMCI builds
Doug Simon <doug.simon@oracle.com>
parents: 24107
diff changeset
1340 return vm != 'original'
9803
8e33b4ebfef1 add isGraalEnabled(vm) function in commands.py
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 9667
diff changeset
1341
16167
1f4955abca9b mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents: 16117
diff changeset
1342 def jol(args):
1f4955abca9b mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents: 16117
diff changeset
1343 """Java Object Layout"""
16599
89be7c4db12c made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents: 16499
diff changeset
1344 joljar = mx.library('JOL_INTERNALS').get_path(resolve=True)
16167
1f4955abca9b mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents: 16117
diff changeset
1345 candidates = mx.findclass(args, logToConsole=False, matcher=lambda s, classname: s == classname or classname.endswith('.' + s) or classname.endswith('$' + s))
18218
8588db09f5e9 mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents: 18163
diff changeset
1346
8588db09f5e9 mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents: 18163
diff changeset
1347 if len(candidates) > 0:
18601
676f1800077c mx: removed unused _read_projects_file function
Doug Simon <doug.simon@oracle.com>
parents: 18414
diff changeset
1348 candidates = mx.select_items(sorted(candidates))
18218
8588db09f5e9 mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents: 18163
diff changeset
1349 else:
8588db09f5e9 mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents: 18163
diff changeset
1350 # mx.findclass can be mistaken, don't give up yet
8588db09f5e9 mx jol: let user select from found classes, skip duplicates
Andreas Woess <andreas.woess@jku.at>
parents: 18163
diff changeset
1351 candidates = args
16167
1f4955abca9b mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents: 16117
diff changeset
1352
23408
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
1353 run_vm(['-javaagent:' + joljar, '-cp', os.pathsep.join([mx.classpath(jdk=get_jvmci_jdk()), joljar]), "org.openjdk.jol.MainObjectInternals"] + candidates)
16167
1f4955abca9b mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents: 16117
diff changeset
1354
23307
c75c5e73fd65 Deploy all JVM_{product,fastdebug}_{jvmci,server} variants.
Roland Schatz <roland.schatz@oracle.com>
parents: 23301
diff changeset
1355 def deploy_binary(args):
c75c5e73fd65 Deploy all JVM_{product,fastdebug}_{jvmci,server} variants.
Roland Schatz <roland.schatz@oracle.com>
parents: 23301
diff changeset
1356 for vmbuild in ['product', 'fastdebug']:
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
1357 for vm in ['server']:
23308
b9114ca0c174 Fix bug in deploy_binary.
Roland Schatz <roland.schatz@oracle.com>
parents: 23307
diff changeset
1358 if vmbuild != _vmbuild or vm != get_vm():
23307
c75c5e73fd65 Deploy all JVM_{product,fastdebug}_{jvmci,server} variants.
Roland Schatz <roland.schatz@oracle.com>
parents: 23301
diff changeset
1359 mx.instantiateDistribution('JVM_<vmbuild>_<vm>', dict(vmbuild=vmbuild, vm=vm))
c75c5e73fd65 Deploy all JVM_{product,fastdebug}_{jvmci,server} variants.
Roland Schatz <roland.schatz@oracle.com>
parents: 23301
diff changeset
1360 mx.deploy_binary(args)
c75c5e73fd65 Deploy all JVM_{product,fastdebug}_{jvmci,server} variants.
Roland Schatz <roland.schatz@oracle.com>
parents: 23301
diff changeset
1361
22167
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1362 mx.update_commands(_suite, {
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1363 'build': [build, ''],
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1364 'buildvars': [buildvars, ''],
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1365 'buildvms': [buildvms, '[-options]'],
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1366 'c1visualizer' : [c1visualizer, ''],
23307
c75c5e73fd65 Deploy all JVM_{product,fastdebug}_{jvmci,server} variants.
Roland Schatz <roland.schatz@oracle.com>
parents: 23301
diff changeset
1367 'deploy-binary' : [deploy_binary, ''],
22167
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1368 'export': [export, '[-options] [zipfile]'],
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1369 'hsdis': [hsdis, '[att]'],
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1370 'hcfdis': [hcfdis, ''],
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1371 'igv' : [igv, ''],
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1372 'jdkhome': [print_jdkhome, ''],
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1373 'shortunittest' : [shortunittest, '[unittest options] [--] [VM options] [filters...]', mx_unittest.unittestHelpSuffix],
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1374 'vm': [run_vm, '[-options] class [args...]'],
22167
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1375 'deoptalot' : [deoptalot, '[n]'],
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1376 'longtests' : [longtests, ''],
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1377 'jol' : [jol, ''],
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1378 })
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1379
22167
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1380 mx.add_argument('--vmcwd', dest='vm_cwd', help='current directory will be changed to <path> before the VM is executed', default=None, metavar='<path>')
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1381 mx.add_argument('--installed-jdks', help='the base directory in which the JDKs cloned from $JAVA_HOME exist. ' +
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1382 'The VM selected by --vm and --vmbuild options is under this directory (i.e., ' +
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1383 join('<path>', '<jdk-version>', '<vmbuild>', 'jre', 'lib', '<vm>', mx.add_lib_prefix(mx.add_lib_suffix('jvm'))) + ')', default=None, metavar='<path>')
4156
843c8d6720da Added 'export' command for creating a GraalVM zip file distribution without the Mercurial data or VM sources.
Doug Simon <doug.simon@oracle.com>
parents: 4155
diff changeset
1384
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
1385 mx.add_argument('-M', '--jvmci-mode', action='store', dest='jvmci_mode', choices=_jvmciModes.keys(), help='the JVMCI mode to use (default: ' + _jvmciMode.jvmciMode + ')')
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1386 mx.add_argument('--vm', action='store', dest='vm', choices=_vmChoices.keys() + _vmAliases.keys(), help='the VM type to build/run')
22167
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1387 mx.add_argument('--vmbuild', action='store', dest='vmbuild', choices=_vmbuildChoices, help='the VM build to build/run (default: ' + _vmbuildChoices[0] + ')')
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1388 mx.add_argument('--ecl', action='store_true', dest='make_eclipse_launch', help='create launch configuration for running VM execution(s) in Eclipse')
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1389 mx.add_argument('--vmprefix', action='store', dest='vm_prefix', help='prefix for running the VM (e.g. "/usr/bin/gdb --args")', metavar='<prefix>')
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1390 mx.add_argument('--gdb', action='store_const', const='/usr/bin/gdb --args', dest='vm_prefix', help='alias for --vmprefix "/usr/bin/gdb --args"')
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1391 mx.add_argument('--lldb', action='store_const', const='lldb --', dest='vm_prefix', help='alias for --vmprefix "lldb --"')
4144
34527a24bcf8 Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents: 3736
diff changeset
1392
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1393 _jvmci_bootstrap_jdk = None
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1394
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1395 def get_jvmci_bootstrap_jdk():
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1396 """
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1397 Gets the JDK from which a JVMCI JDK is created.
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1398 """
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1399 global _jvmci_bootstrap_jdk
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1400 if not _jvmci_bootstrap_jdk:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1401 def _versionCheck(version):
23978
f553add9342f Update and fix JDK version checks
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 23711
diff changeset
1402 return version >= _minVersion and ((not _untilVersion) or version < _untilVersion)
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1403 versionDesc = ">=" + str(_minVersion)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1404 if _untilVersion:
23978
f553add9342f Update and fix JDK version checks
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 23711
diff changeset
1405 versionDesc += " and <" + str(_untilVersion)
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1406 _jvmci_bootstrap_jdk = mx.get_jdk(_versionCheck, versionDescription=versionDesc, tag='default')
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1407 return _jvmci_bootstrap_jdk
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1408
22561
ba4ef98ae535 Add mx_jvmci API to prepend ClasspathDependencies to the bootclasspath of the jvmci JDK
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22534
diff changeset
1409 _jvmci_bootclasspath_prepends = []
ba4ef98ae535 Add mx_jvmci API to prepend ClasspathDependencies to the bootclasspath of the jvmci JDK
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22534
diff changeset
1410
ba4ef98ae535 Add mx_jvmci API to prepend ClasspathDependencies to the bootclasspath of the jvmci JDK
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22534
diff changeset
1411 def add_bootclasspath_prepend(dep):
ba4ef98ae535 Add mx_jvmci API to prepend ClasspathDependencies to the bootclasspath of the jvmci JDK
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22534
diff changeset
1412 assert isinstance(dep, mx.ClasspathDependency)
ba4ef98ae535 Add mx_jvmci API to prepend ClasspathDependencies to the bootclasspath of the jvmci JDK
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22534
diff changeset
1413 _jvmci_bootclasspath_prepends.append(dep)
ba4ef98ae535 Add mx_jvmci API to prepend ClasspathDependencies to the bootclasspath of the jvmci JDK
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22534
diff changeset
1414
22771
994b87797b9d rename classes to denote jvmci version
Doug Simon <doug.simon@oracle.com>
parents: 22766
diff changeset
1415 class JVMCI8JDKConfig(mx.JDKConfig):
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1416 def __init__(self, vmbuild):
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1417 # Ignore the deployable distributions here - they are only deployed during building.
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1418 # This significantly reduces the latency of the "mx java" command.
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1419 self.vmbuild = vmbuild
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1420 jdkDir = get_jvmci_jdk_dir(build=self.vmbuild, create=True, deployDists=False)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1421 mx.JDKConfig.__init__(self, jdkDir, tag=_JVMCI_JDK_TAG)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1422
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1423 def parseVmArgs(self, args, addDefaultArgs=True):
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1424 args = mx.expand_project_in_args(args, insitu=False)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1425 jacocoArgs = mx_gate.get_jacoco_agent_args()
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1426 if jacocoArgs:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1427 args = jacocoArgs + args
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1428
22561
ba4ef98ae535 Add mx_jvmci API to prepend ClasspathDependencies to the bootclasspath of the jvmci JDK
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22534
diff changeset
1429 args = ['-Xbootclasspath/p:' + dep.classpath_repr() for dep in _jvmci_bootclasspath_prepends] + args
ba4ef98ae535 Add mx_jvmci API to prepend ClasspathDependencies to the bootclasspath of the jvmci JDK
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22534
diff changeset
1430
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1431 if '-version' in args:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1432 ignoredArgs = args[args.index('-version') + 1:]
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1433 if len(ignoredArgs) > 0:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1434 mx.log("Warning: The following options will be ignored by the vm because they come after the '-version' argument: " + ' '.join(ignoredArgs))
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1435 return self.processArgs(args, addDefaultArgs=addDefaultArgs)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1436
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1437 # Overrides JDKConfig
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1438 def run_java(self, args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, env=None, addDefaultArgs=True):
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1439 if vm is None:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1440 vm = get_vm()
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1441
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1442 if not isVMSupported(vm):
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1443 mx.abort('The ' + vm + ' is not supported on this platform')
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1444
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1445 if cwd is None:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1446 cwd = _vm_cwd
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1447 elif _vm_cwd is not None and _vm_cwd != cwd:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1448 mx.abort("conflicting working directories: do not set --vmcwd for this command")
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1449
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1450 args = self.parseVmArgs(args, addDefaultArgs=addDefaultArgs)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1451 if _make_eclipse_launch:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1452 mx.make_eclipse_launch(_suite, args, _suite.name + '-' + build, name=None, deps=mx.dependencies())
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1453
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1454 pfx = _vm_prefix.split() if _vm_prefix is not None else []
24135
a8e0d0625b32 removed defunct support for non-INCLUDE_JVMCI builds
Doug Simon <doug.simon@oracle.com>
parents: 24107
diff changeset
1455 args = get_jvmci_mode_args() + args
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1456 cmd = pfx + [self.java] + ['-' + vm] + args
22732
b2ffe9891356 In 'def run_java()' add missing forwarding of timeout argument
Paul Woegerer <paul.woegerer@oracle.com>
parents: 22729
diff changeset
1457 return mx.run(cmd, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd, timeout=timeout)
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1458
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1459 """
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1460 The dict of JVMCI JDKs indexed by vmbuild names.
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1461 """
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1462 _jvmci_jdks = {}
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1463
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1464 def get_jvmci_jdk(vmbuild=None):
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1465 """
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1466 Gets the JVMCI JDK corresponding to 'vmbuild'.
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1467 """
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1468 if not vmbuild:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1469 vmbuild = _vmbuild
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1470 jdk = _jvmci_jdks.get(vmbuild)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1471 if jdk is None:
22771
994b87797b9d rename classes to denote jvmci version
Doug Simon <doug.simon@oracle.com>
parents: 22766
diff changeset
1472 jdk = JVMCI8JDKConfig(vmbuild)
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1473 _jvmci_jdks[vmbuild] = jdk
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1474 return jdk
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1475
23408
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
1476 mx_unittest.set_vm_launcher('JVMCI VM launcher', _unittest_vm_launcher, get_jvmci_jdk)
f84a5ac3be22 make JVMCI JDK immutable and sharable among different JVMCI clients
Doug Simon <doug.simon@oracle.com>
parents: 23405
diff changeset
1477
22771
994b87797b9d rename classes to denote jvmci version
Doug Simon <doug.simon@oracle.com>
parents: 22766
diff changeset
1478 class JVMCI8JDKFactory(mx.JDKFactory):
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1479 def getJDKConfig(self):
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1480 jdk = get_jvmci_jdk(_vmbuild)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1481 check_VM_exists(get_vm(), jdk.home)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1482 return jdk
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1483
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1484 def description(self):
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1485 return "JVMCI JDK"
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1486
22771
994b87797b9d rename classes to denote jvmci version
Doug Simon <doug.simon@oracle.com>
parents: 22766
diff changeset
1487 mx.addJDKFactory(_JVMCI_JDK_TAG, mx.JavaCompliance('8'), JVMCI8JDKFactory())
22766
7d02b4097309 register JVMCIJDKFactory at module load time
Doug Simon <doug.simon@oracle.com>
parents: 22761
diff changeset
1488
22167
22b37f37be0a adapted to removal of mx_init() mechanism from mx2
Doug Simon <doug.simon@oracle.com>
parents: 22166
diff changeset
1489 def mx_post_parse_cmd_line(opts):
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1490 mx.set_java_command_default_jdk_tag(_JVMCI_JDK_TAG)
5729
dab877fe7c31 prevented error during mx site from corrupting an existing site
Doug Simon <doug.simon@oracle.com>
parents: 5708
diff changeset
1491
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1492 # Execute for the side-effect of checking that the
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1493 # boot strap JDK has a compatible version
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1494 get_jvmci_bootstrap_jdk()
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1495
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1496 jdkTag = mx.get_jdk_option().tag
22019
07cfd3d7072b removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents: 22018
diff changeset
1497 if hasattr(opts, 'vm') and opts.vm is not None:
07cfd3d7072b removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents: 22018
diff changeset
1498 global _vm
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1499 _vm = dealiased_vm(opts.vm)
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1500 if jdkTag and jdkTag != _JVMCI_JDK_TAG:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1501 mx.warn('Ignoring "--vm" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"')
23404
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
1502 if opts.jvmci_mode is not None:
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
1503 global _jvmciMode
3ef45d0a6d77 Remove jvmci VM configuration, and backport UseJVMCICompiler flag.
Roland Schatz <roland.schatz@oracle.com>
parents: 23379
diff changeset
1504 _jvmciMode = JVMCIMode(opts.jvmci_mode)
22019
07cfd3d7072b removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents: 22018
diff changeset
1505 if hasattr(opts, 'vmbuild') and opts.vmbuild is not None:
07cfd3d7072b removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents: 22018
diff changeset
1506 global _vmbuild
07cfd3d7072b removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents: 22018
diff changeset
1507 _vmbuild = opts.vmbuild
22493
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1508 if jdkTag and jdkTag != _JVMCI_JDK_TAG:
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1509 mx.warn('Ignoring "--vmbuild" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"')
63b12d69147d added JVMCI JDK factory; clarified distinction between VM aliases and real VMs; removed left-over "graal" references; rename 'vm' function to 'run_vm'
Doug Simon <doug.simon@oracle.com>
parents: 22492
diff changeset
1510
22019
07cfd3d7072b removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents: 22018
diff changeset
1511 global _make_eclipse_launch
07cfd3d7072b removed _vmSourcesAvailable
Doug Simon <doug.simon@oracle.com>
parents: 22018
diff changeset
1512 _make_eclipse_launch = getattr(opts, 'make_eclipse_launch', False)
11401
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1513 global _vm_cwd
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1514 _vm_cwd = opts.vm_cwd
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1515 global _installed_jdks
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1516 _installed_jdks = opts.installed_jdks
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1517 global _vm_prefix
2d228d304247 minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents: 11395
diff changeset
1518 _vm_prefix = opts.vm_prefix
8134
6e3ebc6fd5a4 graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents: 8132
diff changeset
1519
22282
9ab88ee1f79f spelling fix: instanciate -> instantiate
Doug Simon <doug.simon@oracle.com>
parents: 22281
diff changeset
1520 mx.instantiateDistribution('JVM_<vmbuild>_<vm>', dict(vmbuild=_vmbuild, vm=get_vm()))
22280
ac5551e3ff9c Make the JVM a distribution
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 22279
diff changeset
1521
22139
ed35cb998428 Initial split off from monolithic basic-graal repo
Doug Simon <doug.simon@oracle.com>
parents: 22108
diff changeset
1522 for jdkDist in jdkDeployedDists:
22761
f2206f5bb62e removed @ServiceProvider mechanism (GRAAL-1380)
Doug Simon <doug.simon@oracle.com>
parents: 22758
diff changeset
1523 jdkDist.post_parse_cmd_line()