Mercurial > hg > truffle
annotate mxtool/mx.py @ 17215:7a99826863d9
Eliminate valid bit in LabelHint as the validity can be encoded into the capturedTarget
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Thu, 25 Sep 2014 09:41:55 -0700 |
parents | ca13853abf0d |
children | a02c295218aa |
rev | line source |
---|---|
13470
eb7bc1fd38de
made mx.py (first line) more portable
Doug Simon <doug.simon@oracle.com>
parents:
13358
diff
changeset
|
1 #!/usr/bin/env python2.7 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2 # |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3 # ---------------------------------------------------------------------------------------------------- |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
4 # |
4186
71a2cd79c375
Made stdout for mx unbuffered.
Doug Simon <doug.simon@oracle.com>
parents:
4180
diff
changeset
|
5 # Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
6 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
7 # |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
8 # This code is free software; you can redistribute it and/or modify it |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
9 # under the terms of the GNU General Public License version 2 only, as |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
10 # published by the Free Software Foundation. |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
11 # |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
12 # This code is distributed in the hope that it will be useful, but WITHOUT |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
13 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
14 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
15 # version 2 for more details (a copy is included in the LICENSE file that |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
16 # accompanied this code). |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
17 # |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
18 # You should have received a copy of the GNU General Public License version |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
19 # 2 along with this work; if not, write to the Free Software Foundation, |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
20 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
21 # |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
22 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
23 # or visit www.oracle.com if you need additional information or have any |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
24 # questions. |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
25 # |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
26 # ---------------------------------------------------------------------------------------------------- |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
27 # |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
28 r""" |
12553
9af82ca3f225
mxtool: change about text to refer to Wiki doc, add mx.find script
Mick Jordan <mick.jordan@oracle.com>
parents:
12524
diff
changeset
|
29 mx is a command line tool for managing the development of Java code organized as suites of projects. |
9af82ca3f225
mxtool: change about text to refer to Wiki doc, add mx.find script
Mick Jordan <mick.jordan@oracle.com>
parents:
12524
diff
changeset
|
30 |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
31 Version 1.x supports a single suite of projects. |
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
32 |
12553
9af82ca3f225
mxtool: change about text to refer to Wiki doc, add mx.find script
Mick Jordan <mick.jordan@oracle.com>
parents:
12524
diff
changeset
|
33 Full documentation can be found at https://wiki.openjdk.java.net/display/Graal/The+mx+Tool |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
34 """ |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
35 |
17012
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
36 import sys, os, errno, time, subprocess, shlex, types, StringIO, zipfile, signal, xml.sax.saxutils, tempfile, fnmatch, platform |
15823
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
37 import multiprocessing |
11295
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
38 import textwrap |
12620
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
39 import socket |
15087
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
40 import tarfile |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
41 import hashlib |
9826
cff647969dfa
fixed detection of Checkstyle errors in checkstyle command (GRAAL-293)
Doug Simon <doug.simon@oracle.com>
parents:
9262
diff
changeset
|
42 import xml.parsers.expat |
8447
b6b9ab1fde62
removed support for using the Eclipse batch compiler bundled with Eclipse - depending on the version, it has bugs with respect to annotation processing
Doug Simon <doug.simon@oracle.com>
parents:
8439
diff
changeset
|
43 import shutil, re, xml.dom.minidom |
13950
35783e78eaef
mx.run: shell-escape arguments when printing them in verbose mode
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13927
diff
changeset
|
44 import pipes |
14626
4f8268dee8aa
mx: eclipseformat now prints all the changes that were found to the console.
Christian Humer <christian.humer@gmail.com>
parents:
14553
diff
changeset
|
45 import difflib |
17159
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
46 from collections import Callable, OrderedDict |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
47 from threading import Thread |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
48 from argparse import ArgumentParser, REMAINDER |
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
|
49 from os.path import join, basename, dirname, exists, getmtime, isabs, expandvars, isdir, isfile |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
50 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
51 _projects = dict() |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
52 _libs = dict() |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
53 _jreLibs = dict() |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
54 _dists = dict() |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
55 _suites = dict() |
9857
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
56 _annotationProcessors = None |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
57 _primary_suite_path = None |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
58 _primary_suite = None |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
59 _opts = None |
14763 | 60 _java_homes = None |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
61 _warn = False |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
62 |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
63 """ |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
64 A distribution is a jar or zip file containing the output from one or more Java projects. |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
65 """ |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
66 class Distribution: |
17059
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
67 def __init__(self, suite, name, path, sourcesPath, deps, mainClass, excludedDependencies, distDependencies, javaCompliance): |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
68 self.suite = suite |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
69 self.name = name |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
70 self.path = path.replace('/', os.sep) |
14964
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
71 self.path = _make_absolute(self.path, suite.dir) |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
72 self.sourcesPath = _make_absolute(sourcesPath.replace('/', os.sep), suite.dir) if sourcesPath else None |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
73 self.deps = deps |
8134
6e3ebc6fd5a4
graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents:
8131
diff
changeset
|
74 self.update_listeners = set() |
15819
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
75 self.mainClass = mainClass |
15577
406a94c03ffa
truffle distrubtion: move dsl processor in a separated jar, such that it can be a build-time only dependency
Bernhard Urban <bernhard.urban@jku.at>
parents:
15497
diff
changeset
|
76 self.excludedDependencies = excludedDependencies |
15638
83c69954bbaa
mxtool: distribution dependency should be a list
Bernhard Urban <bernhard.urban@jku.at>
parents:
15601
diff
changeset
|
77 self.distDependencies = distDependencies |
17059
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
78 self.javaCompliance = JavaCompliance(javaCompliance) if javaCompliance else None |
14775
40aa1eb176db
mx: added support for excluding dependencies from distributions
Doug Simon <doug.simon@oracle.com>
parents:
14764
diff
changeset
|
79 |
16667
1d4313c3ab38
mx: distribution should (also) be rebuilt when a transitive project dependency is updated
Doug Simon <doug.simon@oracle.com>
parents:
16629
diff
changeset
|
80 def sorted_deps(self, includeLibs=False, transitive=False): |
1d4313c3ab38
mx: distribution should (also) be rebuilt when a transitive project dependency is updated
Doug Simon <doug.simon@oracle.com>
parents:
16629
diff
changeset
|
81 deps = [] |
1d4313c3ab38
mx: distribution should (also) be rebuilt when a transitive project dependency is updated
Doug Simon <doug.simon@oracle.com>
parents:
16629
diff
changeset
|
82 if transitive: |
1d4313c3ab38
mx: distribution should (also) be rebuilt when a transitive project dependency is updated
Doug Simon <doug.simon@oracle.com>
parents:
16629
diff
changeset
|
83 for depDist in [distribution(name) for name in self.distDependencies]: |
1d4313c3ab38
mx: distribution should (also) be rebuilt when a transitive project dependency is updated
Doug Simon <doug.simon@oracle.com>
parents:
16629
diff
changeset
|
84 for d in depDist.sorted_deps(includeLibs=includeLibs, transitive=True): |
1d4313c3ab38
mx: distribution should (also) be rebuilt when a transitive project dependency is updated
Doug Simon <doug.simon@oracle.com>
parents:
16629
diff
changeset
|
85 if d not in deps: |
1d4313c3ab38
mx: distribution should (also) be rebuilt when a transitive project dependency is updated
Doug Simon <doug.simon@oracle.com>
parents:
16629
diff
changeset
|
86 deps.append(d) |
14781
d2038d372cd2
changed distribution dependency exclusion mechanism to be only for library dependencies
Doug Simon <doug.simon@oracle.com>
parents:
14775
diff
changeset
|
87 try: |
15577
406a94c03ffa
truffle distrubtion: move dsl processor in a separated jar, such that it can be a build-time only dependency
Bernhard Urban <bernhard.urban@jku.at>
parents:
15497
diff
changeset
|
88 excl = [dependency(d) for d in self.excludedDependencies] |
14781
d2038d372cd2
changed distribution dependency exclusion mechanism to be only for library dependencies
Doug Simon <doug.simon@oracle.com>
parents:
14775
diff
changeset
|
89 except SystemExit as e: |
15577
406a94c03ffa
truffle distrubtion: move dsl processor in a separated jar, such that it can be a build-time only dependency
Bernhard Urban <bernhard.urban@jku.at>
parents:
15497
diff
changeset
|
90 abort('invalid excluded dependency for {} distribution: {}'.format(self.name, e)) |
16667
1d4313c3ab38
mx: distribution should (also) be rebuilt when a transitive project dependency is updated
Doug Simon <doug.simon@oracle.com>
parents:
16629
diff
changeset
|
91 return deps + [d for d in sorted_deps(self.deps, includeLibs=includeLibs) if d not in excl] |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
92 |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
93 def __str__(self): |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
94 return self.name |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
95 |
8134
6e3ebc6fd5a4
graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents:
8131
diff
changeset
|
96 def add_update_listener(self, listener): |
6e3ebc6fd5a4
graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents:
8131
diff
changeset
|
97 self.update_listeners.add(listener) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
98 |
16845
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
99 """ |
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
100 Gets the directory in which the IDE project configuration |
16849
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
101 for this distribution is generated. If this is a distribution |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
102 derived from a project defining an annotation processor, then |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
103 None is return to indicate no IDE configuration should be |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
104 created for this distribution. |
16845
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
105 """ |
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
106 def get_ide_project_dir(self): |
16849
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
107 if hasattr(self, 'definingProject') and self.definingProject.definedAnnotationProcessorsDist == self: |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
108 return None |
16845
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
109 if hasattr(self, 'subDir'): |
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
110 return join(self.suite.dir, self.subDir, self.name + '.dist') |
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
111 else: |
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
112 return join(self.suite.dir, self.name + '.dist') |
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
113 |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
114 def make_archive(self): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
115 # are sources combined into main archive? |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
116 unified = self.path == self.sourcesPath |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
117 |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
118 with Archiver(self.path) as arc, Archiver(None if unified else self.sourcesPath) as srcArcRaw: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
119 srcArc = arc if unified else srcArcRaw |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
120 services = {} |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
121 def overwriteCheck(zf, arcname, source): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
122 if not hasattr(zf, '_provenance'): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
123 zf._provenance = {} |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
124 existingSource = zf._provenance.get(arcname, None) |
15819
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
125 isOverwrite = False |
15821
de8296c27680
mx archive: avoid multiple directory entries too
Bernhard Urban <bernhard.urban@jku.at>
parents:
15819
diff
changeset
|
126 if existingSource and existingSource != source: |
16086
6eef506c173d
mx archive: only print overwrite warning on files
Bernhard Urban <bernhard.urban@jku.at>
parents:
16062
diff
changeset
|
127 if arcname[-1] != os.path.sep: |
16262
55f369530122
mx archive: print warning only in verbose mode
Bernhard Urban <bernhard.urban@jku.at>
parents:
16167
diff
changeset
|
128 logv('warning: ' + self.path + ': avoid overwrite of ' + arcname + '\n new: ' + source + '\n old: ' + existingSource) |
15819
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
129 isOverwrite = True |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
130 zf._provenance[arcname] = source |
15819
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
131 return isOverwrite |
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
132 |
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
133 if self.mainClass: |
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
134 manifest = "Manifest-Version: 1.0\nMain-Class: %s\n\n" % (self.mainClass) |
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
135 if not overwriteCheck(arc.zf, "META-INF/MANIFEST.MF", "project files"): |
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
136 arc.zf.writestr("META-INF/MANIFEST.MF", manifest) |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
137 |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
138 for dep in self.sorted_deps(includeLibs=True): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
139 if dep.isLibrary(): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
140 l = dep |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
141 # merge library jar into distribution jar |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
142 logv('[' + self.path + ': adding library ' + l.name + ']') |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
143 lpath = l.get_path(resolve=True) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
144 libSourcePath = l.get_source_path(resolve=True) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
145 if lpath: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
146 with zipfile.ZipFile(lpath, 'r') as lp: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
147 for arcname in lp.namelist(): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
148 if arcname.startswith('META-INF/services/') and not arcname == 'META-INF/services/': |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
149 service = arcname[len('META-INF/services/'):] |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
150 assert '/' not in service |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
151 services.setdefault(service, []).extend(lp.read(arcname).splitlines()) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
152 else: |
15819
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
153 if not overwriteCheck(arc.zf, arcname, lpath + '!' + arcname): |
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
154 arc.zf.writestr(arcname, lp.read(arcname)) |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
155 if srcArc.zf and libSourcePath: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
156 with zipfile.ZipFile(libSourcePath, 'r') as lp: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
157 for arcname in lp.namelist(): |
15819
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
158 if not overwriteCheck(srcArc.zf, arcname, lpath + '!' + arcname): |
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
159 srcArc.zf.writestr(arcname, lp.read(arcname)) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
160 elif dep.isProject(): |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
161 p = dep |
15601
4aeb0b80324f
mx distributions: allow to specify dependencies between distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15579
diff
changeset
|
162 |
15638
83c69954bbaa
mxtool: distribution dependency should be a list
Bernhard Urban <bernhard.urban@jku.at>
parents:
15601
diff
changeset
|
163 isCoveredByDependecy = False |
83c69954bbaa
mxtool: distribution dependency should be a list
Bernhard Urban <bernhard.urban@jku.at>
parents:
15601
diff
changeset
|
164 for d in self.distDependencies: |
83c69954bbaa
mxtool: distribution dependency should be a list
Bernhard Urban <bernhard.urban@jku.at>
parents:
15601
diff
changeset
|
165 if p in _dists[d].sorted_deps(): |
83c69954bbaa
mxtool: distribution dependency should be a list
Bernhard Urban <bernhard.urban@jku.at>
parents:
15601
diff
changeset
|
166 logv("Excluding {0} from {1} because it's provided by the dependency {2}".format(p.name, self.path, d)) |
83c69954bbaa
mxtool: distribution dependency should be a list
Bernhard Urban <bernhard.urban@jku.at>
parents:
15601
diff
changeset
|
167 isCoveredByDependecy = True |
83c69954bbaa
mxtool: distribution dependency should be a list
Bernhard Urban <bernhard.urban@jku.at>
parents:
15601
diff
changeset
|
168 break |
83c69954bbaa
mxtool: distribution dependency should be a list
Bernhard Urban <bernhard.urban@jku.at>
parents:
15601
diff
changeset
|
169 |
83c69954bbaa
mxtool: distribution dependency should be a list
Bernhard Urban <bernhard.urban@jku.at>
parents:
15601
diff
changeset
|
170 if isCoveredByDependecy: |
15601
4aeb0b80324f
mx distributions: allow to specify dependencies between distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15579
diff
changeset
|
171 continue |
4aeb0b80324f
mx distributions: allow to specify dependencies between distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15579
diff
changeset
|
172 |
17059
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
173 if self.javaCompliance: |
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
174 if p.javaCompliance > self.javaCompliance: |
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
175 abort("Compliance level doesn't match: Distribution {0} requires {1}, but {2} is {3}.".format(self.name, self.javaCompliance, p.name, p.javaCompliance)) |
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
176 |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
177 # skip a Java project if its Java compliance level is "higher" than the configured JDK |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
178 jdk = java(p.javaCompliance) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
179 assert jdk |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
180 |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
181 logv('[' + self.path + ': adding project ' + p.name + ']') |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
182 outputDir = p.output_dir() |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
183 for root, _, files in os.walk(outputDir): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
184 relpath = root[len(outputDir) + 1:] |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
185 if relpath == join('META-INF', 'services'): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
186 for service in files: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
187 with open(join(root, service), 'r') as fp: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
188 services.setdefault(service, []).extend([provider.strip() for provider in fp.readlines()]) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
189 elif relpath == join('META-INF', 'providers'): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
190 for provider in files: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
191 with open(join(root, provider), 'r') as fp: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
192 for service in fp: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
193 services.setdefault(service.strip(), []).append(provider) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
194 else: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
195 for f in files: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
196 arcname = join(relpath, f).replace(os.sep, '/') |
15819
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
197 if not overwriteCheck(arc.zf, arcname, join(root, f)): |
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
198 arc.zf.write(join(root, f), arcname) |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
199 if srcArc.zf: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
200 sourceDirs = p.source_dirs() |
15227
7be43cbf3568
mx: include generated sources in archived distribution sources
Doug Simon <doug.simon@oracle.com>
parents:
15226
diff
changeset
|
201 if p.source_gen_dir(): |
7be43cbf3568
mx: include generated sources in archived distribution sources
Doug Simon <doug.simon@oracle.com>
parents:
15226
diff
changeset
|
202 sourceDirs.append(p.source_gen_dir()) |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
203 for srcDir in sourceDirs: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
204 for root, _, files in os.walk(srcDir): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
205 relpath = root[len(srcDir) + 1:] |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
206 for f in files: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
207 if f.endswith('.java'): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
208 arcname = join(relpath, f).replace(os.sep, '/') |
15819
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
209 if not overwriteCheck(srcArc.zf, arcname, join(root, f)): |
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
210 srcArc.zf.write(join(root, f), arcname) |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
211 |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
212 for service, providers in services.iteritems(): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
213 arcname = 'META-INF/services/' + service |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
214 arc.zf.writestr(arcname, '\n'.join(providers)) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
215 |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
216 self.notify_updated() |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
217 |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
218 |
8134
6e3ebc6fd5a4
graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents:
8131
diff
changeset
|
219 def notify_updated(self): |
6e3ebc6fd5a4
graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents:
8131
diff
changeset
|
220 for l in self.update_listeners: |
6e3ebc6fd5a4
graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents:
8131
diff
changeset
|
221 l(self) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
222 |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
223 """ |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
224 A dependency is a library or project specified in a suite. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
225 """ |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
226 class Dependency: |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
227 def __init__(self, suite, name): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
228 self.name = name |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
229 self.suite = suite |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
230 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
231 def __str__(self): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
232 return self.name |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
233 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
234 def __eq__(self, other): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
235 return self.name == other.name |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
236 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
237 def __ne__(self, other): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
238 return self.name != other.name |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
239 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
240 def __hash__(self): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
241 return hash(self.name) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
242 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
243 def isLibrary(self): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
244 return isinstance(self, Library) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
245 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
246 def isJreLibrary(self): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
247 return isinstance(self, JreLibrary) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
248 |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
249 def isProject(self): |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
250 return isinstance(self, Project) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
251 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
252 class Project(Dependency): |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
253 def __init__(self, suite, name, srcDirs, deps, javaCompliance, workingSets, d): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
254 Dependency.__init__(self, suite, name) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
255 self.srcDirs = srcDirs |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
256 self.deps = deps |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
257 self.checkstyleProj = name |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
258 self.javaCompliance = JavaCompliance(javaCompliance) if javaCompliance is not None else None |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
259 self.native = False |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
260 self.workingSets = workingSets |
7509 | 261 self.dir = d |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
262 |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
263 # The annotation processors defined by this project |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
264 self.definedAnnotationProcessors = None |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
265 self.definedAnnotationProcessorsDist = None |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
266 |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
267 |
14763 | 268 # Verify that a JDK exists for this project if its compliance level is |
269 # less than the compliance level of the default JDK | |
270 jdk = java(self.javaCompliance) | |
271 if jdk is None and self.javaCompliance < java().javaCompliance: | |
272 abort('Cannot find ' + str(self.javaCompliance) + ' JDK required by ' + name + '. ' + | |
14764 | 273 'Specify it with --extra-java-homes option or EXTRA_JAVA_HOMES environment variable.') |
14763 | 274 |
5581
9911227e6dd3
create directories for not yet existing projects
Doug Simon <doug.simon@oracle.com>
parents:
5455
diff
changeset
|
275 # Create directories for projects that don't yet exist |
7509 | 276 if not exists(d): |
277 os.mkdir(d) | |
5581
9911227e6dd3
create directories for not yet existing projects
Doug Simon <doug.simon@oracle.com>
parents:
5455
diff
changeset
|
278 for s in self.source_dirs(): |
9911227e6dd3
create directories for not yet existing projects
Doug Simon <doug.simon@oracle.com>
parents:
5455
diff
changeset
|
279 if not exists(s): |
9911227e6dd3
create directories for not yet existing projects
Doug Simon <doug.simon@oracle.com>
parents:
5455
diff
changeset
|
280 os.mkdir(s) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
281 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
282 def all_deps(self, deps, includeLibs, includeSelf=True, includeJreLibs=False, includeAnnotationProcessors=False): |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
283 """ |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
284 Add the transitive set of dependencies for this project, including |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
285 libraries if 'includeLibs' is true, to the 'deps' list. |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
286 """ |
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:
6535
diff
changeset
|
287 childDeps = list(self.deps) |
9854
394f38496856
made projects inherit annotation processors from dependencies
Doug Simon <doug.simon@oracle.com>
parents:
9847
diff
changeset
|
288 if includeAnnotationProcessors and len(self.annotation_processors()) > 0: |
394f38496856
made projects inherit annotation processors from dependencies
Doug Simon <doug.simon@oracle.com>
parents:
9847
diff
changeset
|
289 childDeps = self.annotation_processors() + childDeps |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
290 if self in deps: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
291 return deps |
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:
6535
diff
changeset
|
292 for name in childDeps: |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
293 assert name != self.name |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
294 dep = dependency(name) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
295 if not dep in deps and (dep.isProject or (dep.isLibrary() and includeLibs) or (dep.isJreLibrary() and includeJreLibs)): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
296 dep.all_deps(deps, includeLibs=includeLibs, includeJreLibs=includeJreLibs, includeAnnotationProcessors=includeAnnotationProcessors) |
4219
47f7d91d34cf
Fix javac build issues with classpath
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents:
4215
diff
changeset
|
297 if not self in deps and includeSelf: |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
298 deps.append(self) |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
299 return deps |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
300 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
301 def _compute_max_dep_distances(self, name, distances, dist): |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
302 currentDist = distances.get(name) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
303 if currentDist is None or currentDist < dist: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
304 distances[name] = dist |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
305 p = project(name, False) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
306 if p is not None: |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
307 for dep in p.deps: |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
308 self._compute_max_dep_distances(dep, distances, dist + 1) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
309 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
310 def canonical_deps(self): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
311 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
312 Get the dependencies of this project that are not recursive (i.e. cannot be reached |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
313 via other dependencies). |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
314 """ |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
315 distances = dict() |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
316 result = set() |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
317 self._compute_max_dep_distances(self.name, distances, 0) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
318 for n, d in distances.iteritems(): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
319 assert d > 0 or n == self.name |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
320 if d == 1: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
321 result.add(n) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
322 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
323 if len(result) == len(self.deps) and frozenset(self.deps) == result: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
324 return self.deps |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
325 return result |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
326 |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
327 def max_depth(self): |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
328 """ |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
329 Get the maximum canonical distance between this project and its most distant dependency. |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
330 """ |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
331 distances = dict() |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
332 self._compute_max_dep_distances(self.name, distances, 0) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
333 return max(distances.values()) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
334 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
335 def source_dirs(self): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
336 """ |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
337 Get the directories in which the sources of this project are found. |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
338 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
339 return [join(self.dir, s) for s in self.srcDirs] |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
340 |
6535
f938212e56ab
Improvements of annotation processor functionality in mx script; allow javac to be run in debugger in order to debug annotation processor
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6533
diff
changeset
|
341 def source_gen_dir(self): |
f938212e56ab
Improvements of annotation processor functionality in mx script; allow javac to be run in debugger in order to debug annotation processor
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6533
diff
changeset
|
342 """ |
f938212e56ab
Improvements of annotation processor functionality in mx script; allow javac to be run in debugger in order to debug annotation processor
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6533
diff
changeset
|
343 Get the directory in which source files generated by the annotation processor are found/placed. |
f938212e56ab
Improvements of annotation processor functionality in mx script; allow javac to be run in debugger in order to debug annotation processor
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6533
diff
changeset
|
344 """ |
f938212e56ab
Improvements of annotation processor functionality in mx script; allow javac to be run in debugger in order to debug annotation processor
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6533
diff
changeset
|
345 if self.native: |
f938212e56ab
Improvements of annotation processor functionality in mx script; allow javac to be run in debugger in order to debug annotation processor
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6533
diff
changeset
|
346 return None |
f938212e56ab
Improvements of annotation processor functionality in mx script; allow javac to be run in debugger in order to debug annotation processor
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6533
diff
changeset
|
347 return join(self.dir, 'src_gen') |
f938212e56ab
Improvements of annotation processor functionality in mx script; allow javac to be run in debugger in order to debug annotation processor
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6533
diff
changeset
|
348 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
349 def output_dir(self): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
350 """ |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
351 Get the directory in which the class files of this project are found/placed. |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
352 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
353 if self.native: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
354 return None |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
355 return join(self.dir, 'bin') |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
356 |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
357 def jasmin_output_dir(self): |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
358 """ |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
359 Get the directory in which the Jasmin assembled class files of this project are found/placed. |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
360 """ |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
361 if self.native: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
362 return None |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
363 return join(self.dir, 'jasmin_classes') |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
364 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
365 def append_to_classpath(self, cp, resolve): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
366 if not self.native: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
367 cp.append(self.output_dir()) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
368 |
5762
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
369 def find_classes_with_matching_source_line(self, pkgRoot, function, includeInnerClasses=False): |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
370 """ |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
371 Scan the sources of this project for Java source files containing a line for which |
8607
c7672a325faf
search for classes containing annotations returns source file as well as class name
Doug Simon <doug.simon@oracle.com>
parents:
8585
diff
changeset
|
372 'function' returns true. A map from class name to source file path for each existing class |
c7672a325faf
search for classes containing annotations returns source file as well as class name
Doug Simon <doug.simon@oracle.com>
parents:
8585
diff
changeset
|
373 corresponding to a matched source file is returned. |
5762
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
374 """ |
8607
c7672a325faf
search for classes containing annotations returns source file as well as class name
Doug Simon <doug.simon@oracle.com>
parents:
8585
diff
changeset
|
375 result = dict() |
5762
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
376 pkgDecl = re.compile(r"^package\s+([a-zA-Z_][\w\.]*)\s*;$") |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
377 for srcDir in self.source_dirs(): |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
378 outputDir = self.output_dir() |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
379 for root, _, files in os.walk(srcDir): |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
380 for name in files: |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
381 if name.endswith('.java') and name != 'package-info.java': |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
382 matchFound = False |
8607
c7672a325faf
search for classes containing annotations returns source file as well as class name
Doug Simon <doug.simon@oracle.com>
parents:
8585
diff
changeset
|
383 source = join(root, name) |
c7672a325faf
search for classes containing annotations returns source file as well as class name
Doug Simon <doug.simon@oracle.com>
parents:
8585
diff
changeset
|
384 with open(source) as f: |
5762
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
385 pkg = None |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
386 for line in f: |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
387 if line.startswith("package "): |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
388 match = pkgDecl.match(line) |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
389 if match: |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
390 pkg = match.group(1) |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
391 if function(line.strip()): |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
392 matchFound = True |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
393 if pkg and matchFound: |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
394 break |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
395 |
5762
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
396 if matchFound: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
397 simpleClassName = name[:-len('.java')] |
5762
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
398 assert pkg is not None |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
399 if pkgRoot is None or pkg.startswith(pkgRoot): |
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
400 pkgOutputDir = join(outputDir, pkg.replace('.', os.path.sep)) |
11245
d89a5dbaaaf6
ignore sources for which class files do not exist
Doug Simon <doug.simon@oracle.com>
parents:
11205
diff
changeset
|
401 if exists(pkgOutputDir): |
d89a5dbaaaf6
ignore sources for which class files do not exist
Doug Simon <doug.simon@oracle.com>
parents:
11205
diff
changeset
|
402 for e in os.listdir(pkgOutputDir): |
d89a5dbaaaf6
ignore sources for which class files do not exist
Doug Simon <doug.simon@oracle.com>
parents:
11205
diff
changeset
|
403 if includeInnerClasses: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
404 if e.endswith('.class') and (e.startswith(simpleClassName) or e.startswith(simpleClassName + '$')): |
11245
d89a5dbaaaf6
ignore sources for which class files do not exist
Doug Simon <doug.simon@oracle.com>
parents:
11205
diff
changeset
|
405 className = pkg + '.' + e[:-len('.class')] |
d89a5dbaaaf6
ignore sources for which class files do not exist
Doug Simon <doug.simon@oracle.com>
parents:
11205
diff
changeset
|
406 result[className] = source |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
407 elif e == simpleClassName + '.class': |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
408 className = pkg + '.' + simpleClassName |
11245
d89a5dbaaaf6
ignore sources for which class files do not exist
Doug Simon <doug.simon@oracle.com>
parents:
11205
diff
changeset
|
409 result[className] = source |
8607
c7672a325faf
search for classes containing annotations returns source file as well as class name
Doug Simon <doug.simon@oracle.com>
parents:
8585
diff
changeset
|
410 return result |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
411 |
6527
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
412 def _init_packages_and_imports(self): |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
413 if not hasattr(self, '_defined_java_packages'): |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
414 packages = set() |
8439
39c7142e7aef
added support for projects that extend a package defined in another project when canonicalizing projects
Doug Simon <doug.simon@oracle.com>
parents:
8391
diff
changeset
|
415 extendedPackages = set() |
6527
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
416 depPackages = set() |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
417 for d in self.all_deps([], includeLibs=False, includeSelf=False): |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
418 depPackages.update(d.defined_java_packages()) |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
419 imports = set() |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
420 importRe = re.compile(r'import\s+(?:static\s+)?([^;]+);') |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
421 for sourceDir in self.source_dirs(): |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
422 for root, _, files in os.walk(sourceDir): |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
423 javaSources = [name for name in files if name.endswith('.java')] |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
424 if len(javaSources) != 0: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
425 pkg = root[len(sourceDir) + 1:].replace(os.sep, '.') |
6527
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
426 if not pkg in depPackages: |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
427 packages.add(pkg) |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
428 else: |
8439
39c7142e7aef
added support for projects that extend a package defined in another project when canonicalizing projects
Doug Simon <doug.simon@oracle.com>
parents:
8391
diff
changeset
|
429 # A project extends a package already defined by one of it dependencies |
39c7142e7aef
added support for projects that extend a package defined in another project when canonicalizing projects
Doug Simon <doug.simon@oracle.com>
parents:
8391
diff
changeset
|
430 extendedPackages.add(pkg) |
6527
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
431 imports.add(pkg) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
432 |
6527
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
433 for n in javaSources: |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
434 with open(join(root, n)) as fp: |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
435 content = fp.read() |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
436 imports.update(importRe.findall(content)) |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
437 self._defined_java_packages = frozenset(packages) |
8439
39c7142e7aef
added support for projects that extend a package defined in another project when canonicalizing projects
Doug Simon <doug.simon@oracle.com>
parents:
8391
diff
changeset
|
438 self._extended_java_packages = frozenset(extendedPackages) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
439 |
6527
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
440 importedPackages = set() |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
441 for imp in imports: |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
442 name = imp |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
443 while not name in depPackages and len(name) > 0: |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
444 lastDot = name.rfind('.') |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
445 if lastDot == -1: |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
446 name = None |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
447 break |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
448 name = name[0:lastDot] |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
449 if name is not None: |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
450 importedPackages.add(name) |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
451 self._imported_java_packages = frozenset(importedPackages) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
452 |
6527
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
453 def defined_java_packages(self): |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
454 """Get the immutable set of Java packages defined by the Java sources of this project""" |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
455 self._init_packages_and_imports() |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
456 return self._defined_java_packages |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
457 |
8439
39c7142e7aef
added support for projects that extend a package defined in another project when canonicalizing projects
Doug Simon <doug.simon@oracle.com>
parents:
8391
diff
changeset
|
458 def extended_java_packages(self): |
39c7142e7aef
added support for projects that extend a package defined in another project when canonicalizing projects
Doug Simon <doug.simon@oracle.com>
parents:
8391
diff
changeset
|
459 """Get the immutable set of Java packages extended by the Java sources of this project""" |
39c7142e7aef
added support for projects that extend a package defined in another project when canonicalizing projects
Doug Simon <doug.simon@oracle.com>
parents:
8391
diff
changeset
|
460 self._init_packages_and_imports() |
39c7142e7aef
added support for projects that extend a package defined in another project when canonicalizing projects
Doug Simon <doug.simon@oracle.com>
parents:
8391
diff
changeset
|
461 return self._extended_java_packages |
39c7142e7aef
added support for projects that extend a package defined in another project when canonicalizing projects
Doug Simon <doug.simon@oracle.com>
parents:
8391
diff
changeset
|
462 |
6527
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
463 def imported_java_packages(self): |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
464 """Get the immutable set of Java packages defined by other Java projects that are |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
465 imported by the Java sources of this project.""" |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
466 self._init_packages_and_imports() |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
467 return self._imported_java_packages |
3c5b19e8f2a3
modified canonicalizeprojects to detect imprecise dependencies (e.g., A specifies that it depends on B but only imports packages from B's dependencies)
Doug Simon <doug.simon@oracle.com>
parents:
6509
diff
changeset
|
468 |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
469 """ |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
470 Gets the list of projects defining the annotation processors that will be applied |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
471 when compiling this project. This includes the projects declared by the annotationProcessors property |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
472 of this project and any of its project dependencies. It also includes |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
473 any project dependencies that define an annotation processors. |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
474 """ |
9854
394f38496856
made projects inherit annotation processors from dependencies
Doug Simon <doug.simon@oracle.com>
parents:
9847
diff
changeset
|
475 def annotation_processors(self): |
9857
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
476 if not hasattr(self, '_annotationProcessors'): |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
477 aps = set() |
9857
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
478 if hasattr(self, '_declaredAnnotationProcessors'): |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
479 aps = set(self._declaredAnnotationProcessors) |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
480 for ap in aps: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
481 if project(ap).definedAnnotationProcessorsDist is None: |
16847
043575a99815
moved NodeInfo processor into a separate project to avoid injecting Truffle DSL annotation processor into Graal projects
Doug Simon <doug.simon@oracle.com>
parents:
16846
diff
changeset
|
482 config = join(project(ap).source_dirs()[0], 'META-INF', 'services', 'javax.annotation.processing.Processor') |
043575a99815
moved NodeInfo processor into a separate project to avoid injecting Truffle DSL annotation processor into Graal projects
Doug Simon <doug.simon@oracle.com>
parents:
16846
diff
changeset
|
483 if not exists(config): |
043575a99815
moved NodeInfo processor into a separate project to avoid injecting Truffle DSL annotation processor into Graal projects
Doug Simon <doug.simon@oracle.com>
parents:
16846
diff
changeset
|
484 TimeStampFile(config).touch() |
043575a99815
moved NodeInfo processor into a separate project to avoid injecting Truffle DSL annotation processor into Graal projects
Doug Simon <doug.simon@oracle.com>
parents:
16846
diff
changeset
|
485 abort('Project ' + ap + ' declared in annotationProcessors property of ' + self.name + ' does not define any annotation processors.\n' + |
043575a99815
moved NodeInfo processor into a separate project to avoid injecting Truffle DSL annotation processor into Graal projects
Doug Simon <doug.simon@oracle.com>
parents:
16846
diff
changeset
|
486 'Please specify the annotation processors in ' + config) |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
487 |
9857
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
488 allDeps = self.all_deps([], includeLibs=False, includeSelf=False, includeAnnotationProcessors=False) |
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
489 for p in allDeps: |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
490 # Add an annotation processor dependency |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
491 if p.definedAnnotationProcessorsDist is not None: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
492 aps.add(p.name) |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
493 |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
494 # Inherit annotation processors from dependencies |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
495 aps.update(p.annotation_processors()) |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
496 |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
497 self._annotationProcessors = list(aps) |
9857
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
498 return self._annotationProcessors |
5762
b30cced39597
generalized functionality for finding classes based on searching for patterns in source code and moved it from commands.py to mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5712
diff
changeset
|
499 |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
500 """ |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
501 Gets the class path composed of the distribution jars containing the |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
502 annotation processors that will be applied when compiling this project. |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
503 """ |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
504 def annotation_processors_path(self): |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
505 aps = [project(ap) for ap in self.annotation_processors()] |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
506 if len(aps): |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
507 return os.pathsep.join([ap.definedAnnotationProcessorsDist.path for ap in aps if ap.definedAnnotationProcessorsDist]) |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
508 return None |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
509 |
12631
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
510 def update_current_annotation_processors_file(self): |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
511 aps = self.annotation_processors() |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
512 outOfDate = False |
12641
851aa5341214
moved persistent annotation processor dependency files into mx/currentAnnotationProcessors directory
Doug Simon <doug.simon@oracle.com>
parents:
12640
diff
changeset
|
513 currentApsFile = join(self.suite.mxDir, 'currentAnnotationProcessors', self.name) |
12648
1fbe3ca3d30d
don't equate missing current annotation processor file with it being out of date
Doug Simon <doug.simon@oracle.com>
parents:
12641
diff
changeset
|
514 currentApsFileExists = exists(currentApsFile) |
1fbe3ca3d30d
don't equate missing current annotation processor file with it being out of date
Doug Simon <doug.simon@oracle.com>
parents:
12641
diff
changeset
|
515 if currentApsFileExists: |
12631
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
516 with open(currentApsFile) as fp: |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
517 currentAps = [l.strip() for l in fp.readlines()] |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
518 if currentAps != aps: |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
519 outOfDate = True |
12648
1fbe3ca3d30d
don't equate missing current annotation processor file with it being out of date
Doug Simon <doug.simon@oracle.com>
parents:
12641
diff
changeset
|
520 if outOfDate or not currentApsFileExists: |
12641
851aa5341214
moved persistent annotation processor dependency files into mx/currentAnnotationProcessors directory
Doug Simon <doug.simon@oracle.com>
parents:
12640
diff
changeset
|
521 if not exists(dirname(currentApsFile)): |
851aa5341214
moved persistent annotation processor dependency files into mx/currentAnnotationProcessors directory
Doug Simon <doug.simon@oracle.com>
parents:
12640
diff
changeset
|
522 os.mkdir(dirname(currentApsFile)) |
12631
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
523 with open(currentApsFile, 'w') as fp: |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
524 for ap in aps: |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
525 print >> fp, ap |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
526 return outOfDate |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
527 |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
528 def make_archive(self, path=None): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
529 outputDir = self.output_dir() |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
530 if not path: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
531 path = join(self.dir, self.name + '.jar') |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
532 with Archiver(path) as arc: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
533 for root, _, files in os.walk(outputDir): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
534 for f in files: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
535 relpath = root[len(outputDir) + 1:] |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
536 arcname = join(relpath, f).replace(os.sep, '/') |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
537 arc.zf.write(join(root, f), arcname) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
538 return path |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
539 |
14964
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
540 def _make_absolute(path, prefix): |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
541 """ |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
542 Makes 'path' absolute if it isn't already by prefixing 'prefix' |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
543 """ |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
544 if not isabs(path): |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
545 return join(prefix, path) |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
546 return path |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
547 |
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:
16598
diff
changeset
|
548 def sha1OfFile(path): |
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:
16598
diff
changeset
|
549 with open(path, 'rb') as f: |
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:
16598
diff
changeset
|
550 d = hashlib.sha1() |
89be7c4db12c
made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents:
16598
diff
changeset
|
551 while 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:
16598
diff
changeset
|
552 buf = f.read(4096) |
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:
16598
diff
changeset
|
553 if not buf: |
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:
16598
diff
changeset
|
554 break |
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:
16598
diff
changeset
|
555 d.update(buf) |
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:
16598
diff
changeset
|
556 return d.hexdigest() |
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:
16598
diff
changeset
|
557 |
16720
ad19df13df14
mx: add support for Java agent libraries that use the Boot-Class-Path manifest attribute to ensure that are loaded by the boot class path loader
Doug Simon <doug.simon@oracle.com>
parents:
16706
diff
changeset
|
558 def download_file_with_sha1(name, path, urls, sha1, sha1path, resolve, mustExist, sources=False, canSymlink=True): |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
559 def _download_lib(): |
16598
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
560 cacheDir = get_env('MX_CACHE_DIR', join(_opts.user_home, '.mx', 'cache')) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
561 if not exists(cacheDir): |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
562 os.makedirs(cacheDir) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
563 base = basename(path) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
564 cachePath = join(cacheDir, base + '_' + sha1) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
565 |
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:
16598
diff
changeset
|
566 if not exists(cachePath) or sha1OfFile(cachePath) != sha1: |
16598
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
567 if exists(cachePath): |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
568 log('SHA1 of ' + cachePath + ' does not match expected value (' + sha1 + ') - re-downloading') |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
569 print 'Downloading ' + ("sources " if sources else "") + name + ' from ' + str(urls) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
570 download(cachePath, urls) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
571 |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
572 d = dirname(path) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
573 if d != '' and not exists(d): |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
574 os.makedirs(d) |
16720
ad19df13df14
mx: add support for Java agent libraries that use the Boot-Class-Path manifest attribute to ensure that are loaded by the boot class path loader
Doug Simon <doug.simon@oracle.com>
parents:
16706
diff
changeset
|
575 |
ad19df13df14
mx: add support for Java agent libraries that use the Boot-Class-Path manifest attribute to ensure that are loaded by the boot class path loader
Doug Simon <doug.simon@oracle.com>
parents:
16706
diff
changeset
|
576 if canSymlink and 'symlink' in dir(os): |
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:
16598
diff
changeset
|
577 if exists(path): |
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:
16598
diff
changeset
|
578 os.unlink(path) |
16598
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
579 os.symlink(cachePath, path) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
580 else: |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
581 shutil.copy(cachePath, path) |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
582 |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
583 def _sha1Cached(): |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
584 with open(sha1path, 'r') as f: |
14154
e666c172c9aa
mx: some cleanup around sha1 digest support
Bernhard Urban <bernhard.urban@jku.at>
parents:
14153
diff
changeset
|
585 return f.read()[0:40] |
e666c172c9aa
mx: some cleanup around sha1 digest support
Bernhard Urban <bernhard.urban@jku.at>
parents:
14153
diff
changeset
|
586 |
e666c172c9aa
mx: some cleanup around sha1 digest support
Bernhard Urban <bernhard.urban@jku.at>
parents:
14153
diff
changeset
|
587 def _writeSha1Cached(): |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
588 with open(sha1path, 'w') as f: |
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:
16598
diff
changeset
|
589 f.write(sha1OfFile(path)) |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
590 |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
591 if resolve and mustExist and not exists(path): |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
592 assert not len(urls) == 0, 'cannot find required library ' + name + ' ' + path |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
593 _download_lib() |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
594 |
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:
16598
diff
changeset
|
595 if exists(path): |
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:
16598
diff
changeset
|
596 if sha1 and not exists(sha1path): |
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:
16598
diff
changeset
|
597 _writeSha1Cached() |
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:
16598
diff
changeset
|
598 |
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:
16598
diff
changeset
|
599 if sha1 and sha1 != _sha1Cached(): |
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:
16598
diff
changeset
|
600 _download_lib() |
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:
16598
diff
changeset
|
601 if sha1 != sha1OfFile(path): |
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:
16598
diff
changeset
|
602 abort("SHA1 does not match for " + name + ". Broken download? SHA1 not updated in projects file?") |
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:
16598
diff
changeset
|
603 _writeSha1Cached() |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
604 |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
605 return path |
12631
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
606 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
607 class BaseLibrary(Dependency): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
608 def __init__(self, suite, name, optional): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
609 Dependency.__init__(self, suite, name) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
610 self.optional = optional |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
611 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
612 def __ne__(self, other): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
613 result = self.__eq__(other) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
614 if result is NotImplemented: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
615 return result |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
616 return not result |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
617 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
618 """ |
16671
7cdd7ede912d
mx: fix comments: jrelibrary is about the JRE, not the JDK
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16670
diff
changeset
|
619 A library that will be provided by the JRE but may be absent. |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
620 Any project or normal library that depends on a missing library |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
621 will be removed from the global project and library dictionaries |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
622 (i.e., _projects and _libs). |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
623 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
624 This mechanism exists primarily to be able to support code |
16671
7cdd7ede912d
mx: fix comments: jrelibrary is about the JRE, not the JDK
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16670
diff
changeset
|
625 that may use functionality in one JRE (e.g., Oracle JRE) |
7cdd7ede912d
mx: fix comments: jrelibrary is about the JRE, not the JDK
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16670
diff
changeset
|
626 that is not present in another JRE (e.g., OpenJDK). A |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
627 motivating example is the Java Flight Recorder library |
16671
7cdd7ede912d
mx: fix comments: jrelibrary is about the JRE, not the JDK
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16670
diff
changeset
|
628 found in the Oracle JRE. |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
629 """ |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
630 class JreLibrary(BaseLibrary): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
631 def __init__(self, suite, name, jar, optional): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
632 BaseLibrary.__init__(self, suite, name, optional) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
633 self.jar = jar |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
634 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
635 def __eq__(self, other): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
636 if isinstance(other, JreLibrary): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
637 return self.jar == other.jar |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
638 else: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
639 return NotImplemented |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
640 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
641 def is_present_in_jdk(self, jdk): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
642 for e in jdk.bootclasspath().split(os.pathsep): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
643 if basename(e) == self.jar: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
644 return True |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
645 for d in jdk.extdirs().split(os.pathsep): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
646 if len(d) and self.jar in os.listdir(d): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
647 return True |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
648 for d in jdk.endorseddirs().split(os.pathsep): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
649 if len(d) and self.jar in os.listdir(d): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
650 return True |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
651 return False |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
652 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
653 def all_deps(self, deps, includeLibs, includeSelf=True, includeJreLibs=False, includeAnnotationProcessors=False): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
654 """ |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
655 Add the transitive set of dependencies for this JRE library to the 'deps' list. |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
656 """ |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
657 if includeJreLibs and includeSelf and not self in deps: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
658 deps.append(self) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
659 return deps |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
660 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
661 class Library(BaseLibrary): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
662 def __init__(self, suite, name, path, optional, urls, sha1, sourcePath, sourceUrls, sourceSha1, deps): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
663 BaseLibrary.__init__(self, suite, name, optional) |
4271
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
664 self.path = path.replace('/', os.sep) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
665 self.urls = urls |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
666 self.sha1 = sha1 |
5853
767312416f6a
added support to mx for specifying library sources
Doug Simon <doug.simon@oracle.com>
parents:
5824
diff
changeset
|
667 self.sourcePath = sourcePath |
767312416f6a
added support to mx for specifying library sources
Doug Simon <doug.simon@oracle.com>
parents:
5824
diff
changeset
|
668 self.sourceUrls = sourceUrls |
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:
16598
diff
changeset
|
669 if sourcePath == path: |
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:
16598
diff
changeset
|
670 assert sourceSha1 is None or sourceSha1 == sha1 |
89be7c4db12c
made sha1 signatures mandatory for libraries; made libraries for all downloading performed by commands in mx_graal
Doug Simon <doug.simon@oracle.com>
parents:
16598
diff
changeset
|
671 sourceSha1 = sha1 |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
672 self.sourceSha1 = sourceSha1 |
15149
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
673 self.deps = deps |
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:
16598
diff
changeset
|
674 abspath = _make_absolute(path, self.suite.dir) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
675 if not optional and not exists(abspath): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
676 if not len(urls): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
677 abort('Non-optional library {} must either exist at {} or specify one or more URLs from which it can be retrieved'.format(name, abspath)) |
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:
16598
diff
changeset
|
678 |
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:
16598
diff
changeset
|
679 def _checkSha1PropertyCondition(propName, cond, inputPath): |
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:
16598
diff
changeset
|
680 if not cond: |
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:
16598
diff
changeset
|
681 absInputPath = _make_absolute(inputPath, self.suite.dir) |
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:
16598
diff
changeset
|
682 if exists(absInputPath): |
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:
16598
diff
changeset
|
683 abort('Missing "{}" property for library {}. Add the following line to projects file:\nlibrary@{}@{}={}'.format(propName, name, name, propName, sha1OfFile(absInputPath))) |
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:
16598
diff
changeset
|
684 abort('Missing "{}" property for library {}'.format(propName, name)) |
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:
16598
diff
changeset
|
685 |
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:
16598
diff
changeset
|
686 _checkSha1PropertyCondition('sha1', sha1, path) |
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:
16598
diff
changeset
|
687 _checkSha1PropertyCondition('sourceSha1', not sourcePath or sourceSha1, sourcePath) |
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:
16598
diff
changeset
|
688 |
6350
f45d5cb03c3b
added support for downloading dependencies that are directories
Doug Simon <doug.simon@oracle.com>
parents:
6335
diff
changeset
|
689 for url in urls: |
f45d5cb03c3b
added support for downloading dependencies that are directories
Doug Simon <doug.simon@oracle.com>
parents:
6335
diff
changeset
|
690 if url.endswith('/') != self.path.endswith(os.sep): |
f45d5cb03c3b
added support for downloading dependencies that are directories
Doug Simon <doug.simon@oracle.com>
parents:
6335
diff
changeset
|
691 abort('Path for dependency directory must have a URL ending with "/": path=' + self.path + ' url=' + url) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
692 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
693 def __eq__(self, other): |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
694 if isinstance(other, Library): |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
695 if len(self.urls) == 0: |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
696 return self.path == other.path |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
697 else: |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
698 return self.urls == other.urls |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
699 else: |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
700 return NotImplemented |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
701 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
702 def get_path(self, resolve): |
14964
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
703 path = _make_absolute(self.path, self.suite.dir) |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
704 sha1path = path + '.sha1' |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
705 |
11687
facb442de5db
added support for specifying the JDK version in which a library becomes redundant (e.g., nashorn.jar)
Doug Simon <doug.simon@oracle.com>
parents:
11659
diff
changeset
|
706 includedInJDK = getattr(self, 'includedInJDK', None) |
facb442de5db
added support for specifying the JDK version in which a library becomes redundant (e.g., nashorn.jar)
Doug Simon <doug.simon@oracle.com>
parents:
11659
diff
changeset
|
707 if includedInJDK and java().javaCompliance >= JavaCompliance(includedInJDK): |
facb442de5db
added support for specifying the JDK version in which a library becomes redundant (e.g., nashorn.jar)
Doug Simon <doug.simon@oracle.com>
parents:
11659
diff
changeset
|
708 return None |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
709 |
16725
22b2950a0613
workaround for buggy pylint warning
Doug Simon <doug.simon@oracle.com>
parents:
16720
diff
changeset
|
710 bootClassPathAgent = getattr(self, 'bootClassPathAgent').lower() == 'true' if hasattr(self, 'bootClassPathAgent') else False |
16720
ad19df13df14
mx: add support for Java agent libraries that use the Boot-Class-Path manifest attribute to ensure that are loaded by the boot class path loader
Doug Simon <doug.simon@oracle.com>
parents:
16706
diff
changeset
|
711 |
ad19df13df14
mx: add support for Java agent libraries that use the Boot-Class-Path manifest attribute to ensure that are loaded by the boot class path loader
Doug Simon <doug.simon@oracle.com>
parents:
16706
diff
changeset
|
712 return download_file_with_sha1(self.name, path, self.urls, self.sha1, sha1path, resolve, not self.optional, canSymlink=not bootClassPathAgent) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
713 |
5853
767312416f6a
added support to mx for specifying library sources
Doug Simon <doug.simon@oracle.com>
parents:
5824
diff
changeset
|
714 def get_source_path(self, resolve): |
15147
d93cc1fdf55e
Fix Library.get_source_path (use sourcePath instead of path)
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15135
diff
changeset
|
715 if self.sourcePath is None: |
5853
767312416f6a
added support to mx for specifying library sources
Doug Simon <doug.simon@oracle.com>
parents:
5824
diff
changeset
|
716 return None |
15147
d93cc1fdf55e
Fix Library.get_source_path (use sourcePath instead of path)
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15135
diff
changeset
|
717 path = _make_absolute(self.sourcePath, self.suite.dir) |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
718 sha1path = path + '.sha1' |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
719 |
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:
16598
diff
changeset
|
720 return download_file_with_sha1(self.name, path, self.sourceUrls, self.sourceSha1, sha1path, resolve, len(self.sourceUrls) != 0, sources=True) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
721 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
722 def append_to_classpath(self, cp, resolve): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
723 path = self.get_path(resolve) |
11687
facb442de5db
added support for specifying the JDK version in which a library becomes redundant (e.g., nashorn.jar)
Doug Simon <doug.simon@oracle.com>
parents:
11659
diff
changeset
|
724 if path and (exists(path) or not resolve): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
725 cp.append(path) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
726 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
727 def all_deps(self, deps, includeLibs, includeSelf=True, includeJreLibs=False, includeAnnotationProcessors=False): |
15149
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
728 """ |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
729 Add the transitive set of dependencies for this library to the 'deps' list. |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
730 """ |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
731 if not includeLibs: |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
732 return deps |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
733 childDeps = list(self.deps) |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
734 if self in deps: |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
735 return deps |
15149
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
736 for name in childDeps: |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
737 assert name != self.name |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
738 dep = library(name) |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
739 if not dep in deps: |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
740 dep.all_deps(deps, includeLibs=includeLibs, includeJreLibs=includeJreLibs, includeAnnotationProcessors=includeAnnotationProcessors) |
15149
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
741 if not self in deps and includeSelf: |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
742 deps.append(self) |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
743 return deps |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
744 |
12508
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
745 class HgConfig: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
746 """ |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
747 Encapsulates access to Mercurial (hg) |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
748 """ |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
749 def __init__(self): |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
750 self.missing = 'no hg executable found' |
12512
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
751 self.has_hg = None |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
752 |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
753 def check(self, abortOnFail=True): |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
754 if self.has_hg is None: |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
755 try: |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
756 subprocess.check_output(['hg']) |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
757 self.has_hg = True |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
758 except OSError: |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
759 self.has_hg = False |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
760 warn(self.missing) |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
761 |
12508
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
762 if not self.has_hg: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
763 if abortOnFail: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
764 abort(self.missing) |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
765 else: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
766 warn(self.missing) |
12512
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
767 |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
768 def tip(self, sDir, abortOnError=True): |
12508
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
769 try: |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
770 return subprocess.check_output(['hg', 'tip', '-R', sDir, '--template', '{node}']) |
12512
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
771 except OSError: |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
772 warn(self.missing) |
12508
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
773 except subprocess.CalledProcessError: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
774 if abortOnError: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
775 abort('failed to get tip revision id') |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
776 else: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
777 return None |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
778 |
15402
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
779 def isDirty(self, sDir, abortOnError=True): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
780 try: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
781 return len(subprocess.check_output(['hg', 'status', '-R', sDir])) > 0 |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
782 except OSError: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
783 warn(self.missing) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
784 except subprocess.CalledProcessError: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
785 if abortOnError: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
786 abort('failed to get status') |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
787 else: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
788 return None |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
789 |
17159
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
790 # TODO: remove this function once all repos have transitioned |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
791 # to the new project format |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
792 def _read_projects_file(projectsFile): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
793 suite = OrderedDict() |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
794 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
795 suite['projects'] = OrderedDict() |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
796 suite['libraries'] = OrderedDict() |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
797 suite['jrelibraries'] = OrderedDict() |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
798 suite['distributions'] = OrderedDict() |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
799 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
800 with open(projectsFile) as f: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
801 prefix = '' |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
802 lineNum = 0 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
803 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
804 def error(message): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
805 abort(projectsFile + ':' + str(lineNum) + ': ' + message) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
806 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
807 for line in f: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
808 lineNum = lineNum + 1 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
809 line = line.strip() |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
810 if line.endswith('\\'): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
811 prefix = prefix + line[:-1] |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
812 continue |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
813 if len(prefix) != 0: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
814 line = prefix + line |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
815 prefix = '' |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
816 if len(line) != 0 and line[0] != '#': |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
817 if '=' not in line: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
818 error('non-comment line does not contain an "=" character') |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
819 key, value = line.split('=', 1) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
820 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
821 parts = key.split('@') |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
822 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
823 if len(parts) == 1: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
824 if parts[0] == 'suite': |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
825 suite['name'] = value |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
826 elif parts[0] == 'mxversion': |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
827 suite['mxversion'] = value |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
828 else: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
829 error('Single part property must be "suite": ' + key) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
830 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
831 continue |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
832 if len(parts) != 3: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
833 error('Property name does not have 3 parts separated by "@": ' + key) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
834 kind, name, attr = parts |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
835 if kind == 'project': |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
836 m = suite['projects'] |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
837 elif kind == 'library': |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
838 m = suite['libraries'] |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
839 elif kind == 'jrelibrary': |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
840 m = suite['jrelibraries'] |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
841 elif kind == 'distribution': |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
842 m = suite['distributions'] |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
843 else: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
844 error('Property name does not start with "project@", "library@" or "distribution@": ' + key) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
845 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
846 attrs = m.get(name) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
847 if attrs is None: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
848 attrs = OrderedDict() |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
849 m[name] = attrs |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
850 attrs[attr] = value |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
851 return suite |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
852 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
853 def _load_suite_dict(mxDir): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
854 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
855 suffix = 1 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
856 suite = None |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
857 dictName = 'suite' |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
858 |
17169
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
859 def expand(value, context): |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
860 if isinstance(value, types.DictionaryType): |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
861 for n, v in value.iteritems(): |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
862 value[n] = expand(v, context + [n]) |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
863 elif isinstance(value, types.ListType): |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
864 for i in range(len(value)): |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
865 value[i] = expand(value[i], context + [str(i)]) |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
866 else: |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
867 if not isinstance(value, types.StringTypes): |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
868 abort('value of ' + '.'.join(context) + ' is of unexpected type ' + str(type(value))) |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
869 value = expandvars(value) |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
870 if '$' in value or '%' in value: |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
871 abort('value of ' + '.'.join(context) + ' contains an undefined environment variable: ' + value) |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
872 |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
873 return value |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
874 |
17182
d6c7c530ca84
mx: change name of suite specification file from projects.py to suite.py
Doug Simon <doug.simon@oracle.com>
parents:
17169
diff
changeset
|
875 moduleName = 'suite' |
17159
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
876 modulePath = join(mxDir, moduleName + '.py') |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
877 while exists(modulePath): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
878 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
879 savedModule = sys.modules.get(moduleName) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
880 if savedModule: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
881 warn(modulePath + ' conflicts with ' + savedModule.__file__) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
882 # temporarily extend the Python path |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
883 sys.path.insert(0, mxDir) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
884 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
885 snapshot = frozenset(sys.modules.viewkeys()) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
886 module = __import__(moduleName) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
887 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
888 if savedModule: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
889 # restore the old module into the module name space |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
890 sys.modules[moduleName] = savedModule |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
891 else: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
892 # remove moduleName from the module name space |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
893 sys.modules.pop(moduleName) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
894 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
895 # For now fail fast if extra modules were loaded. |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
896 # This can later be relaxed to simply remove the extra modules |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
897 # from the sys.modules name space if necessary. |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
898 extraModules = snapshot - sys.modules.viewkeys() |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
899 assert len(extraModules) == 0, 'loading ' + modulePath + ' caused extra modules to be loaded: ' + ', '.join([m.__file__ for m in extraModules]) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
900 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
901 # revert the Python path |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
902 del sys.path[0] |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
903 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
904 if not hasattr(module, dictName): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
905 abort(modulePath + ' must define a variable named "' + dictName + '"') |
17169
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
906 d = expand(getattr(module, dictName), [dictName]) |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
907 sections = ['projects', 'libraries', 'jrelibraries', 'distributions'] + (['distribution_extensions'] if suite else ['name', 'mxversion']) |
17159
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
908 unknown = d.viewkeys() - sections |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
909 if unknown: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
910 abort(modulePath + ' defines unsupported suite sections: ' + ', '.join(unknown)) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
911 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
912 if suite is None: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
913 suite = d |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
914 else: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
915 for s in sections: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
916 existing = suite.get(s) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
917 additional = d.get(s) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
918 if additional: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
919 if not existing: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
920 suite[s] = additional |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
921 else: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
922 conflicting = additional.viewkeys() & existing.viewkeys() |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
923 if conflicting: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
924 abort(modulePath + ' redefines: ' + ', '.join(conflicting)) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
925 existing.update(additional) |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
926 distExtensions = d.get('distribution_extensions') |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
927 if distExtensions: |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
928 existing = suite['distributions'] |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
929 for n, attrs in distExtensions.iteritems(): |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
930 original = existing.get(n) |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
931 if not original: |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
932 abort('cannot extend non-existing distribution ' + n) |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
933 for k, v in attrs.iteritems(): |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
934 if k != 'dependencies': |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
935 abort('Only the dependencies of distribution ' + n + ' can be extended') |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
936 if not isinstance(v, types.ListType): |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
937 abort('distribution_extensions.' + n + '.dependencies must be a list') |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
938 original['dependencies'] += v |
17159
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
939 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
940 dictName = 'extra' |
17182
d6c7c530ca84
mx: change name of suite specification file from projects.py to suite.py
Doug Simon <doug.simon@oracle.com>
parents:
17169
diff
changeset
|
941 moduleName = 'suite' + str(suffix) |
17159
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
942 modulePath = join(mxDir, moduleName + '.py') |
17186 | 943 |
17182
d6c7c530ca84
mx: change name of suite specification file from projects.py to suite.py
Doug Simon <doug.simon@oracle.com>
parents:
17169
diff
changeset
|
944 deprecatedModulePath = join(mxDir, 'projects' + str(suffix) + '.py') |
d6c7c530ca84
mx: change name of suite specification file from projects.py to suite.py
Doug Simon <doug.simon@oracle.com>
parents:
17169
diff
changeset
|
945 if exists(deprecatedModulePath): |
d6c7c530ca84
mx: change name of suite specification file from projects.py to suite.py
Doug Simon <doug.simon@oracle.com>
parents:
17169
diff
changeset
|
946 abort('Please rename ' + deprecatedModulePath + ' to ' + modulePath) |
17186 | 947 |
17159
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
948 suffix = suffix + 1 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
949 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
950 return suite, modulePath |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
951 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
952 class Suite: |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
953 def __init__(self, mxDir, primary, load=True): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
954 self.dir = dirname(mxDir) |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
955 self.mxDir = mxDir |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
956 self.projects = [] |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
957 self.libs = [] |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
958 self.jreLibs = [] |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
959 self.dists = [] |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
960 self.commands = None |
4180
383c1272cd1f
Fixed gate script such that JAVA_HOME can be set in env file.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4178
diff
changeset
|
961 self.primary = primary |
13358
e1a50eac0eac
Add a version number for the mxtool and support for requesting a minimum mx version in a suite
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13288
diff
changeset
|
962 self.requiredMxVersion = None |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
963 self.name = _suitename(mxDir) # validated in _load_projects |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
964 if load: |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
965 # just check that there are no imports |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
966 self._load_imports() |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
967 self._load_env() |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
968 self._load_commands() |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
969 _suites[self.name] = self |
9193
c8f4e1081c0b
support for referencing commands in other suites (e.g. mx.suite('graal').commands.build([]))
Doug Simon <doug.simon@oracle.com>
parents:
9144
diff
changeset
|
970 |
c8f4e1081c0b
support for referencing commands in other suites (e.g. mx.suite('graal').commands.build([]))
Doug Simon <doug.simon@oracle.com>
parents:
9144
diff
changeset
|
971 def __str__(self): |
c8f4e1081c0b
support for referencing commands in other suites (e.g. mx.suite('graal').commands.build([]))
Doug Simon <doug.simon@oracle.com>
parents:
9144
diff
changeset
|
972 return self.name |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
973 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
974 def _load_projects(self): |
17182
d6c7c530ca84
mx: change name of suite specification file from projects.py to suite.py
Doug Simon <doug.simon@oracle.com>
parents:
17169
diff
changeset
|
975 suitePyFile = join(self.mxDir, 'suite.py') |
d6c7c530ca84
mx: change name of suite specification file from projects.py to suite.py
Doug Simon <doug.simon@oracle.com>
parents:
17169
diff
changeset
|
976 if not exists(suitePyFile): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
977 return |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
978 |
17159
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
979 suiteDict, _ = _load_suite_dict(self.mxDir) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
980 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
981 if suiteDict.get('name') is not None and suiteDict.get('name') != self.name: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
982 abort('suite name in project file does not match ' + _suitename(self.mxDir)) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
983 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
984 if suiteDict.has_key('mxversion'): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
985 try: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
986 self.requiredMxVersion = VersionSpec(suiteDict['mxversion']) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
987 except AssertionError as ae: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
988 abort('Exception while parsing "mxversion" in project file: ' + str(ae)) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
989 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
990 libsMap = suiteDict['libraries'] |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
991 jreLibsMap = suiteDict['jrelibraries'] |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
992 projsMap = suiteDict['projects'] |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
993 distsMap = suiteDict['distributions'] |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
994 |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
995 def pop_list(attrs, name, context): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
996 v = attrs.pop(name, None) |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
997 if not v: |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
998 return [] |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
999 if not isinstance(v, list): |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1000 abort('Attribute "' + name + '" for ' + context + ' must be a list') |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1001 return v |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1002 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1003 for name, attrs in projsMap.iteritems(): |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1004 context = 'project ' + name |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1005 srcDirs = pop_list(attrs, 'sourceDirs', context) |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1006 deps = pop_list(attrs, 'dependencies', context) |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1007 ap = pop_list(attrs, 'annotationProcessors', context) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1008 javaCompliance = attrs.pop('javaCompliance', None) |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
1009 subDir = attrs.pop('subDir', None) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1010 if subDir is None: |
7509 | 1011 d = join(self.dir, name) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1012 else: |
7509 | 1013 d = join(self.dir, subDir, name) |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
1014 workingSets = attrs.pop('workingSets', None) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
1015 p = Project(self, name, srcDirs, deps, javaCompliance, workingSets, d) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1016 p.checkstyleProj = attrs.pop('checkstyle', name) |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1017 p.native = attrs.pop('native', '') == 'true' |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1018 if not p.native and p.javaCompliance is None: |
17159
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
1019 abort('javaCompliance property required for non-native project ' + name) |
5876
c21886d4e125
Annotation Processor support in mx : use annotationProcessorClasses property on projects that contain annotation processors and annotationProcessors on projects that require annotation processing
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5854
diff
changeset
|
1020 if len(ap) > 0: |
9857
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
1021 p._declaredAnnotationProcessors = ap |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1022 p.__dict__.update(attrs) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1023 self.projects.append(p) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1024 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1025 for name, attrs in jreLibsMap.iteritems(): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1026 jar = attrs.pop('jar') |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1027 # JRE libraries are optional by default |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1028 optional = attrs.pop('optional', 'true') != 'false' |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1029 l = JreLibrary(self, name, jar, optional) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1030 self.jreLibs.append(l) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1031 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1032 for name, attrs in libsMap.iteritems(): |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1033 context = 'library ' + name |
17013
0b2675391d01
mx library: support platform/architecture specific libraries
Bernhard Urban <bernhard.urban@jku.at>
parents:
17012
diff
changeset
|
1034 if "|" in name: |
17159
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
1035 if name.count('|') != 2: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
1036 abort("Format error in library name: " + name + "\nsyntax: libname|os-platform|architecture") |
17013
0b2675391d01
mx library: support platform/architecture specific libraries
Bernhard Urban <bernhard.urban@jku.at>
parents:
17012
diff
changeset
|
1037 name, platform, architecture = name.split("|") |
0b2675391d01
mx library: support platform/architecture specific libraries
Bernhard Urban <bernhard.urban@jku.at>
parents:
17012
diff
changeset
|
1038 if platform != get_os() or architecture != get_arch(): |
0b2675391d01
mx library: support platform/architecture specific libraries
Bernhard Urban <bernhard.urban@jku.at>
parents:
17012
diff
changeset
|
1039 continue |
4271
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
1040 path = attrs.pop('path') |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1041 urls = pop_list(attrs, 'urls', context) |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
1042 sha1 = attrs.pop('sha1', None) |
5853
767312416f6a
added support to mx for specifying library sources
Doug Simon <doug.simon@oracle.com>
parents:
5824
diff
changeset
|
1043 sourcePath = attrs.pop('sourcePath', None) |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1044 sourceUrls = pop_list(attrs, 'sourceUrls', context) |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
1045 sourceSha1 = attrs.pop('sourceSha1', None) |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1046 deps = pop_list(attrs, 'dependencies', context) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1047 # Add support optional libraries once we have a good use case |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1048 optional = False |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1049 l = Library(self, name, path, optional, urls, sha1, sourcePath, sourceUrls, sourceSha1, deps) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1050 l.__dict__.update(attrs) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1051 self.libs.append(l) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1052 |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1053 for name, attrs in distsMap.iteritems(): |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1054 context = 'distribution ' + name |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1055 path = attrs.pop('path') |
14937
3de340bdb8d3
added support for adding sources to distribution
Doug Simon <doug.simon@oracle.com>
parents:
14918
diff
changeset
|
1056 sourcesPath = attrs.pop('sourcesPath', None) |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1057 deps = pop_list(attrs, 'dependencies', context) |
15819
2460aed6c899
mx: add support for setting a main class in distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
15818
diff
changeset
|
1058 mainClass = attrs.pop('mainClass', None) |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1059 exclDeps = pop_list(attrs, 'exclude', context) |
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
1060 distDeps = pop_list(attrs, 'distDependencies', context) |
17059
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
1061 javaCompliance = attrs.pop('javaCompliance', None) |
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
1062 d = Distribution(self, name, path, sourcesPath, deps, mainClass, exclDeps, distDeps, javaCompliance) |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1063 d.__dict__.update(attrs) |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1064 self.dists.append(d) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1065 |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1066 # Create a distribution for each project that defines annotation processors |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1067 for p in self.projects: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1068 annotationProcessors = None |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1069 for srcDir in p.source_dirs(): |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1070 configFile = join(srcDir, 'META-INF', 'services', 'javax.annotation.processing.Processor') |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1071 if exists(configFile): |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1072 with open(configFile) as fp: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1073 annotationProcessors = [ap.strip() for ap in fp] |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1074 if len(annotationProcessors) != 0: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1075 for ap in annotationProcessors: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1076 if not ap.startswith(p.name): |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1077 abort(ap + ' in ' + configFile + ' does not start with ' + p.name) |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1078 if annotationProcessors: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1079 dname = p.name.replace('.', '_').upper() |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1080 apDir = join(p.dir, 'ap') |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1081 path = join(apDir, p.name + '.jar') |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1082 sourcesPath = None |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1083 deps = [p.name] |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1084 mainClass = None |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1085 exclDeps = [] |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1086 distDeps = [] |
17059
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
1087 javaCompliance = None |
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
1088 d = Distribution(self, dname, path, sourcesPath, deps, mainClass, exclDeps, distDeps, javaCompliance) |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1089 d.subDir = os.path.relpath(os.path.dirname(p.dir), self.dir) |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1090 self.dists.append(d) |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1091 p.definedAnnotationProcessors = annotationProcessors |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1092 p.definedAnnotationProcessorsDist = d |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1093 d.definingProject = p |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1094 |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1095 # Restrict exported annotation processors to those explicitly defined by the project |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1096 def _refineAnnotationProcessorServiceConfig(dist): |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1097 aps = dist.definingProject.definedAnnotationProcessors |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1098 apsJar = dist.path |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1099 config = 'META-INF/services/javax.annotation.processing.Processor' |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1100 with zipfile.ZipFile(apsJar, 'r') as zf: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1101 currentAps = zf.read(config).split() |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1102 if currentAps != aps: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1103 logv('[updating ' + config + ' in ' + apsJar + ']') |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1104 with Archiver(apsJar) as arc, zipfile.ZipFile(apsJar, 'r') as lp: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1105 for arcname in lp.namelist(): |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1106 if arcname == config: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1107 arc.zf.writestr(arcname, '\n'.join(aps)) |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1108 else: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1109 arc.zf.writestr(arcname, lp.read(arcname)) |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1110 d.add_update_listener(_refineAnnotationProcessorServiceConfig) |
16845
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
1111 self.dists.append(d) |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1112 |
9193
c8f4e1081c0b
support for referencing commands in other suites (e.g. mx.suite('graal').commands.build([]))
Doug Simon <doug.simon@oracle.com>
parents:
9144
diff
changeset
|
1113 if self.name is None: |
17182
d6c7c530ca84
mx: change name of suite specification file from projects.py to suite.py
Doug Simon <doug.simon@oracle.com>
parents:
17169
diff
changeset
|
1114 abort('Missing "suite=<name>" in ' + suitePyFile) |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1115 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1116 def _commands_name(self): |
12641
851aa5341214
moved persistent annotation processor dependency files into mx/currentAnnotationProcessors directory
Doug Simon <doug.simon@oracle.com>
parents:
12640
diff
changeset
|
1117 return 'mx_' + self.name.replace('-', '_') |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1118 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1119 def _find_commands(self, name): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1120 commandsPath = join(self.mxDir, name + '.py') |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1121 if exists(commandsPath): |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1122 return name |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1123 else: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1124 return None |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1125 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1126 def _load_commands(self): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1127 commandsName = self._find_commands(self._commands_name()) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1128 if commandsName is None: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1129 # backwards compatibility |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1130 commandsName = self._find_commands('commands') |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1131 if commandsName is not None: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1132 if commandsName in sys.modules: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1133 abort(commandsName + '.py in suite ' + self.name + ' duplicates ' + sys.modules[commandsName].__file__) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1134 # temporarily extend the Python path |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1135 sys.path.insert(0, self.mxDir) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1136 mod = __import__(commandsName) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1137 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1138 self.commands = sys.modules.pop(commandsName) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1139 sys.modules[commandsName] = self.commands |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1140 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1141 # revert the Python path |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1142 del sys.path[0] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1143 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1144 if not hasattr(mod, 'mx_init'): |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1145 abort(commandsName + '.py in suite ' + self.name + ' must define an mx_init(suite) function') |
4215
a2caa019ba3a
Fix mx : commands' scripts mx_init hook should be called before parsing command line arguments.
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents:
4188
diff
changeset
|
1146 if hasattr(mod, 'mx_post_parse_cmd_line'): |
a2caa019ba3a
Fix mx : commands' scripts mx_init hook should be called before parsing command line arguments.
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents:
4188
diff
changeset
|
1147 self.mx_post_parse_cmd_line = mod.mx_post_parse_cmd_line |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1148 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
1149 mod.mx_init(self) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1150 self.commands = mod |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1151 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1152 def _load_imports(self): |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1153 if exists(join(self.mxDir, 'imports')): |
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1154 abort('multiple suites are not supported in this version of mx') |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1155 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1156 def _load_env(self): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1157 e = join(self.mxDir, 'env') |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1158 if exists(e): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1159 with open(e) as f: |
10585
be8b942f448f
made parsing of mx/env more robust
Doug Simon <doug.simon@oracle.com>
parents:
10576
diff
changeset
|
1160 lineNum = 0 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1161 for line in f: |
10585
be8b942f448f
made parsing of mx/env more robust
Doug Simon <doug.simon@oracle.com>
parents:
10576
diff
changeset
|
1162 lineNum = lineNum + 1 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1163 line = line.strip() |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1164 if len(line) != 0 and line[0] != '#': |
10585
be8b942f448f
made parsing of mx/env more robust
Doug Simon <doug.simon@oracle.com>
parents:
10576
diff
changeset
|
1165 if not '=' in line: |
be8b942f448f
made parsing of mx/env more robust
Doug Simon <doug.simon@oracle.com>
parents:
10576
diff
changeset
|
1166 abort(e + ':' + str(lineNum) + ': line does not match pattern "key=value"') |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1167 key, value = line.split('=', 1) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1168 os.environ[key.strip()] = expandvars_in_property(value.strip()) |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1169 |
4180
383c1272cd1f
Fixed gate script such that JAVA_HOME can be set in env file.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4178
diff
changeset
|
1170 def _post_init(self, opts): |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1171 self._load_projects() |
13358
e1a50eac0eac
Add a version number for the mxtool and support for requesting a minimum mx version in a suite
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13288
diff
changeset
|
1172 if self.requiredMxVersion is None: |
e1a50eac0eac
Add a version number for the mxtool and support for requesting a minimum mx version in a suite
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13288
diff
changeset
|
1173 warn("This suite does not express any required mx version. Consider adding 'mxversion=<version>' to your projects file.") |
e1a50eac0eac
Add a version number for the mxtool and support for requesting a minimum mx version in a suite
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13288
diff
changeset
|
1174 elif self.requiredMxVersion > version: |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1175 abort("This suite requires mx version " + str(self.requiredMxVersion) + " while your current mx version is " + str(version) + ". Please update mx.") |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1176 # set the global data structures, checking for conflicts unless _check_global_structures is False |
4180
383c1272cd1f
Fixed gate script such that JAVA_HOME can be set in env file.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4178
diff
changeset
|
1177 for p in self.projects: |
383c1272cd1f
Fixed gate script such that JAVA_HOME can be set in env file.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4178
diff
changeset
|
1178 existing = _projects.get(p.name) |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1179 if existing is not None: |
4180
383c1272cd1f
Fixed gate script such that JAVA_HOME can be set in env file.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4178
diff
changeset
|
1180 abort('cannot override project ' + p.name + ' in ' + p.dir + " with project of the same name in " + existing.dir) |
5821
0cd337450409
added support to mx for ignoring (broken) projects
Doug Simon <doug.simon@oracle.com>
parents:
5782
diff
changeset
|
1181 if not p.name in _opts.ignored_projects: |
0cd337450409
added support to mx for ignoring (broken) projects
Doug Simon <doug.simon@oracle.com>
parents:
5782
diff
changeset
|
1182 _projects[p.name] = p |
4180
383c1272cd1f
Fixed gate script such that JAVA_HOME can be set in env file.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4178
diff
changeset
|
1183 for l in self.libs: |
383c1272cd1f
Fixed gate script such that JAVA_HOME can be set in env file.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4178
diff
changeset
|
1184 existing = _libs.get(l.name) |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
1185 # Check that suites that define same library are consistent |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1186 if existing is not None and existing != l: |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
1187 abort('inconsistent library redefinition of ' + l.name + ' in ' + existing.suite.dir + ' and ' + l.suite.dir) |
4180
383c1272cd1f
Fixed gate script such that JAVA_HOME can be set in env file.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4178
diff
changeset
|
1188 _libs[l.name] = l |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1189 for l in self.jreLibs: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1190 existing = _jreLibs.get(l.name) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1191 # Check that suites that define same library are consistent |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1192 if existing is not None and existing != l: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1193 abort('inconsistent JRE library redefinition of ' + l.name + ' in ' + existing.suite.dir + ' and ' + l.suite.dir) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1194 _jreLibs[l.name] = l |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1195 for d in self.dists: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1196 existing = _dists.get(d.name) |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1197 if existing is not None: |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1198 # allow redefinition, so use path from existing |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1199 # abort('cannot redefine distribution ' + d.name) |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1200 warn('distribution ' + d.name + ' redefined') |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1201 d.path = existing.path |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1202 _dists[d.name] = d |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1203 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1204 # Remove projects and libraries that (recursively) depend on an optional library |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1205 # whose artifact does not exist or on a JRE library that is not present in the |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1206 # JDK for a project. Also remove projects whose Java compliance requirement |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1207 # cannot be satisfied by the configured JDKs. |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1208 # |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1209 # Removed projects and libraries are also removed from |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1210 # distributions in they are listed as dependencies. |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1211 for d in sorted_deps(includeLibs=True): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1212 if d.isLibrary(): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1213 if d.optional: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1214 try: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1215 d.optional = False |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1216 path = d.get_path(resolve=True) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1217 except SystemExit: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1218 path = None |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1219 finally: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1220 d.optional = True |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1221 if not path: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1222 logv('[omitting optional library {} as {} does not exist]'.format(d, d.path)) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1223 del _libs[d.name] |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1224 self.libs.remove(d) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1225 elif d.isProject(): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1226 if java(d.javaCompliance) is None: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1227 logv('[omitting project {} as Java compliance {} cannot be satisfied by configured JDKs]'.format(d, d.javaCompliance)) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1228 del _projects[d.name] |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1229 self.projects.remove(d) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1230 else: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1231 for name in list(d.deps): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1232 jreLib = _jreLibs.get(name) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1233 if jreLib: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1234 if not jreLib.is_present_in_jdk(java(d.javaCompliance)): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1235 if jreLib.optional: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1236 logv('[omitting project {} as dependency {} is missing]'.format(d, name)) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1237 del _projects[d.name] |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1238 self.projects.remove(d) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1239 else: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1240 abort('JRE library {} required by {} not found'.format(jreLib, d)) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1241 elif not dependency(name, fatalIfMissing=False): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1242 logv('[omitting project {} as dependency {} is missing]'.format(d, name)) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1243 del _projects[d.name] |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1244 self.projects.remove(d) |
16629
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1245 for dist in _dists.itervalues(): |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1246 for name in list(dist.deps): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1247 if not dependency(name, fatalIfMissing=False): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1248 logv('[omitting {} from distribution {}]'.format(name, dist)) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1249 dist.deps.remove(name) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1250 |
8134
6e3ebc6fd5a4
graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents:
8131
diff
changeset
|
1251 if hasattr(self, 'mx_post_parse_cmd_line'): |
6e3ebc6fd5a4
graal.jar is installed in all JDKs every time it is updated (GRAAL-136)
Doug Simon <doug.simon@oracle.com>
parents:
8131
diff
changeset
|
1252 self.mx_post_parse_cmd_line(opts) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1253 |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1254 class XMLElement(xml.dom.minidom.Element): |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1255 def writexml(self, writer, indent="", addindent="", newl=""): |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1256 writer.write(indent + "<" + self.tagName) |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1257 |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1258 attrs = self._get_attributes() |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1259 a_names = attrs.keys() |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1260 a_names.sort() |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1261 |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1262 for a_name in a_names: |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1263 writer.write(" %s=\"" % a_name) |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1264 xml.dom.minidom._write_data(writer, attrs[a_name].value) |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1265 writer.write("\"") |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1266 if self.childNodes: |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1267 if not self.ownerDocument.padTextNodeWithoutSiblings and len(self.childNodes) == 1 and isinstance(self.childNodes[0], xml.dom.minidom.Text): |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1268 # if the only child of an Element node is a Text node, then the |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1269 # text is printed without any indentation or new line padding |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1270 writer.write(">") |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1271 self.childNodes[0].writexml(writer) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1272 writer.write("</%s>%s" % (self.tagName, newl)) |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1273 else: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1274 writer.write(">%s" % (newl)) |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1275 for node in self.childNodes: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1276 node.writexml(writer, indent + addindent, addindent, newl) |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1277 writer.write("%s</%s>%s" % (indent, self.tagName, newl)) |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1278 else: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1279 writer.write("/>%s" % (newl)) |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
1280 |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1281 class XMLDoc(xml.dom.minidom.Document): |
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
|
1282 |
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
|
1283 def __init__(self): |
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
|
1284 xml.dom.minidom.Document.__init__(self) |
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
|
1285 self.current = self |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
1286 self.padTextNodeWithoutSiblings = False |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
1287 |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1288 def createElement(self, tagName): |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1289 # overwritten to create XMLElement |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1290 e = XMLElement(tagName) |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1291 e.ownerDocument = self |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1292 return e |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1293 |
8302
b246434a3e4a
made build-graal.xml be generated by mx
Doug Simon <doug.simon@oracle.com>
parents:
8189
diff
changeset
|
1294 def comment(self, txt): |
b246434a3e4a
made build-graal.xml be generated by mx
Doug Simon <doug.simon@oracle.com>
parents:
8189
diff
changeset
|
1295 self.current.appendChild(self.createComment(txt)) |
b246434a3e4a
made build-graal.xml be generated by mx
Doug Simon <doug.simon@oracle.com>
parents:
8189
diff
changeset
|
1296 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1297 def open(self, tag, attributes=None, data=None): |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1298 if attributes is None: |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1299 attributes = {} |
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
|
1300 element = self.createElement(tag) |
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
|
1301 for key, value in attributes.items(): |
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
|
1302 element.setAttribute(key, value) |
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
|
1303 self.current.appendChild(element) |
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
|
1304 self.current = element |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
1305 if data is not None: |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
1306 element.appendChild(self.createTextNode(data)) |
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
|
1307 return self |
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
|
1308 |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
1309 def close(self, tag): |
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
|
1310 assert self.current != self |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1311 assert tag == self.current.tagName, str(tag) + ' != ' + self.current.tagName |
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
|
1312 self.current = self.current.parentNode |
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
|
1313 return self |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1314 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1315 def element(self, tag, attributes=None, data=None): |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1316 if attributes is None: |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1317 attributes = {} |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
1318 return self.open(tag, attributes, data).close(tag) |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1319 |
8633
c4bca84d86d7
ensure generated Jar.launch files have the same format as that produced when refreshing in Eclipse
Doug Simon <doug.simon@oracle.com>
parents:
8607
diff
changeset
|
1320 def xml(self, indent='', newl='', escape=False, standalone=None): |
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
|
1321 assert self.current == self |
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
|
1322 result = self.toprettyxml(indent, newl, encoding="UTF-8") |
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
|
1323 if escape: |
13968
6c6d1eacc398
mxtool: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
1324 entities = {'"': """, "'": "'", '\n': ' '} |
5194
a6eceb5efb0e
added --ecl option to mx for saving VM execution(s) as Eclipse launch configurations
Doug Simon <doug.simon@oracle.com>
parents:
5189
diff
changeset
|
1325 result = xml.sax.saxutils.escape(result, entities) |
8633
c4bca84d86d7
ensure generated Jar.launch files have the same format as that produced when refreshing in Eclipse
Doug Simon <doug.simon@oracle.com>
parents:
8607
diff
changeset
|
1326 if standalone is not None: |
c4bca84d86d7
ensure generated Jar.launch files have the same format as that produced when refreshing in Eclipse
Doug Simon <doug.simon@oracle.com>
parents:
8607
diff
changeset
|
1327 result = result.replace('encoding="UTF-8"?>', 'encoding="UTF-8" standalone="' + str(standalone) + '"?>') |
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
|
1328 return result |
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
|
1329 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1330 def get_os(): |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1331 """ |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1332 Get a canonical form of sys.platform. |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1333 """ |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1334 if sys.platform.startswith('darwin'): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1335 return 'darwin' |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1336 elif sys.platform.startswith('linux'): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1337 return 'linux' |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1338 elif sys.platform.startswith('sunos'): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1339 return 'solaris' |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1340 elif sys.platform.startswith('win32') or sys.platform.startswith('cygwin'): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1341 return 'windows' |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1342 else: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1343 abort('Unknown operating system ' + sys.platform) |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
1344 |
17012
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1345 def get_arch(): |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1346 machine = platform.uname()[4] |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1347 if machine in ['amd64', 'AMD64', 'x86_64', 'i86pc']: |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1348 return 'amd64' |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1349 if machine in ['sun4v', 'sun4u']: |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1350 return 'sparcv9' |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1351 if machine == 'i386' and get_os() == 'darwin': |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1352 try: |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1353 # Support for Snow Leopard and earlier version of MacOSX |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1354 if subprocess.check_output(['sysctl', '-n', 'hw.cpu64bit_capable']).strip() == '1': |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1355 return 'amd64' |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1356 except OSError: |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1357 # sysctl is not available |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1358 pass |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1359 abort('unknown or unsupported architecture: os=' + get_os() + ', machine=' + machine) |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1360 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1361 def _loadSuite(mxDir, primary=False): |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
1362 """ |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1363 Load a suite from 'mxDir'. |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
1364 """ |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1365 for s in _suites.itervalues(): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1366 if s.mxDir == mxDir: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1367 return s |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1368 # create the new suite |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1369 s = Suite(mxDir, primary) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1370 return s |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1371 |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1372 def suites(opt_limit_to_suite=False): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1373 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1374 Get the list of all loaded suites. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1375 """ |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1376 return _suites.values() |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1377 |
9193
c8f4e1081c0b
support for referencing commands in other suites (e.g. mx.suite('graal').commands.build([]))
Doug Simon <doug.simon@oracle.com>
parents:
9144
diff
changeset
|
1378 def suite(name, fatalIfMissing=True): |
c8f4e1081c0b
support for referencing commands in other suites (e.g. mx.suite('graal').commands.build([]))
Doug Simon <doug.simon@oracle.com>
parents:
9144
diff
changeset
|
1379 """ |
c8f4e1081c0b
support for referencing commands in other suites (e.g. mx.suite('graal').commands.build([]))
Doug Simon <doug.simon@oracle.com>
parents:
9144
diff
changeset
|
1380 Get the suite for a given name. |
c8f4e1081c0b
support for referencing commands in other suites (e.g. mx.suite('graal').commands.build([]))
Doug Simon <doug.simon@oracle.com>
parents:
9144
diff
changeset
|
1381 """ |
c8f4e1081c0b
support for referencing commands in other suites (e.g. mx.suite('graal').commands.build([]))
Doug Simon <doug.simon@oracle.com>
parents:
9144
diff
changeset
|
1382 s = _suites.get(name) |
c8f4e1081c0b
support for referencing commands in other suites (e.g. mx.suite('graal').commands.build([]))
Doug Simon <doug.simon@oracle.com>
parents:
9144
diff
changeset
|
1383 if s is None and fatalIfMissing: |
c8f4e1081c0b
support for referencing commands in other suites (e.g. mx.suite('graal').commands.build([]))
Doug Simon <doug.simon@oracle.com>
parents:
9144
diff
changeset
|
1384 abort('suite named ' + name + ' not found') |
c8f4e1081c0b
support for referencing commands in other suites (e.g. mx.suite('graal').commands.build([]))
Doug Simon <doug.simon@oracle.com>
parents:
9144
diff
changeset
|
1385 return s |
c8f4e1081c0b
support for referencing commands in other suites (e.g. mx.suite('graal').commands.build([]))
Doug Simon <doug.simon@oracle.com>
parents:
9144
diff
changeset
|
1386 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1387 |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1388 def projects_from_names(projectNames): |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1389 """ |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1390 Get the list of projects corresponding to projectNames; all projects if None |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1391 """ |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1392 if projectNames is None: |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1393 return projects() |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1394 else: |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1395 return [project(name) for name in projectNames] |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1396 |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1397 def projects(opt_limit_to_suite=False): |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1398 """ |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1399 Get the list of all loaded projects limited by --suite option if opt_limit_to_suite == True |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1400 """ |
16944
a04d9cbc149f
mx: Make order of projects() deterministic
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16875
diff
changeset
|
1401 sortedProjects = sorted(_projects.values(), key=lambda p: p.name) |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1402 if opt_limit_to_suite: |
16944
a04d9cbc149f
mx: Make order of projects() deterministic
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16875
diff
changeset
|
1403 return _projects_opt_limit_to_suites(sortedProjects) |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1404 else: |
16944
a04d9cbc149f
mx: Make order of projects() deterministic
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16875
diff
changeset
|
1405 return sortedProjects |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1406 |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1407 def projects_opt_limit_to_suites(): |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1408 """ |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1409 Get the list of all loaded projects optionally limited by --suite option |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1410 """ |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1411 return projects(True) |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1412 |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1413 def _projects_opt_limit_to_suites(projects): |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1414 return projects |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1415 |
9857
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
1416 def annotation_processors(): |
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
1417 """ |
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
1418 Get the list of all loaded projects that define an annotation processor. |
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
1419 """ |
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
1420 global _annotationProcessors |
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
1421 if _annotationProcessors is None: |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1422 aps = set() |
9857
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
1423 for p in projects(): |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1424 for ap in p.annotation_processors(): |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1425 if project(ap, False): |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1426 aps.add(ap) |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1427 _annotationProcessors = list(aps) |
9857
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
1428 return _annotationProcessors |
719a290b8a23
added optional annotationProcessorForDependents attribute for a project to inject itself as an annotation processor for all dependents
Doug Simon <doug.simon@oracle.com>
parents:
9854
diff
changeset
|
1429 |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1430 def distribution(name, fatalIfMissing=True): |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1431 """ |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1432 Get the distribution for a given name. This will abort if the named distribution does |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1433 not exist and 'fatalIfMissing' is true. |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1434 """ |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1435 d = _dists.get(name) |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1436 if d is None and fatalIfMissing: |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1437 abort('distribution named ' + name + ' not found') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1438 return d |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1439 |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1440 def dependency(name, fatalIfMissing=True): |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1441 """ |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1442 Get the project or library for a given name. This will abort if a project or library does |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1443 not exist for 'name' and 'fatalIfMissing' is true. |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1444 """ |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1445 d = _projects.get(name) |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1446 if d is None: |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1447 d = _libs.get(name) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1448 if d is None: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1449 d = _jreLibs.get(name) |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1450 if d is None and fatalIfMissing: |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1451 if name in _opts.ignored_projects: |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1452 abort('project named ' + name + ' is ignored') |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1453 abort('project or library named ' + name + ' not found') |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1454 return d |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1455 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1456 def project(name, fatalIfMissing=True): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1457 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1458 Get the project for a given name. This will abort if the named project does |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1459 not exist and 'fatalIfMissing' is true. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1460 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1461 p = _projects.get(name) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1462 if p is None and fatalIfMissing: |
5821
0cd337450409
added support to mx for ignoring (broken) projects
Doug Simon <doug.simon@oracle.com>
parents:
5782
diff
changeset
|
1463 if name in _opts.ignored_projects: |
0cd337450409
added support to mx for ignoring (broken) projects
Doug Simon <doug.simon@oracle.com>
parents:
5782
diff
changeset
|
1464 abort('project named ' + name + ' is ignored') |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1465 abort('project named ' + name + ' not found') |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1466 return p |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1467 |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1468 def library(name, fatalIfMissing=True): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1469 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1470 Gets the library for a given name. This will abort if the named library does |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1471 not exist and 'fatalIfMissing' is true. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1472 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1473 l = _libs.get(name) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1474 if l is None and fatalIfMissing: |
14781
d2038d372cd2
changed distribution dependency exclusion mechanism to be only for library dependencies
Doug Simon <doug.simon@oracle.com>
parents:
14775
diff
changeset
|
1475 if _projects.get(name): |
d2038d372cd2
changed distribution dependency exclusion mechanism to be only for library dependencies
Doug Simon <doug.simon@oracle.com>
parents:
14775
diff
changeset
|
1476 abort(name + ' is a project, not a library') |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1477 abort('library named ' + name + ' not found') |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1478 return l |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1479 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1480 def _as_classpath(deps, resolve): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1481 cp = [] |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1482 if _opts.cp_prefix is not None: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1483 cp = [_opts.cp_prefix] |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1484 for d in deps: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1485 d.append_to_classpath(cp, resolve) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1486 if _opts.cp_suffix is not None: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1487 cp += [_opts.cp_suffix] |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1488 return os.pathsep.join(cp) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1489 |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1490 def classpath(names=None, resolve=True, includeSelf=True, includeBootClasspath=False): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1491 """ |
16417
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1492 Get the class path for a list of given dependencies and distributions, resolving each entry in the |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1493 path (e.g. downloading a missing library) if 'resolve' is true. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1494 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1495 if names is None: |
16417
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1496 deps = sorted_deps(includeLibs=True) |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1497 dists = list(_dists.values()) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1498 else: |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1499 deps = [] |
16417
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1500 dists = [] |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1501 if isinstance(names, types.StringTypes): |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1502 names = [names] |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1503 for n in names: |
16417
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1504 dep = dependency(n, fatalIfMissing=False) |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1505 if dep: |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1506 dep.all_deps(deps, True, includeSelf) |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1507 else: |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1508 dist = distribution(n) |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1509 if not dist: |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1510 abort('project, library or distribution named ' + n + ' not found') |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1511 dists.append(dist) |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1512 |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1513 if len(dists): |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1514 distsDeps = set() |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1515 for d in dists: |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1516 distsDeps.update(d.sorted_deps()) |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1517 |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1518 # remove deps covered by a dist that will be on the class path |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1519 deps = [d for d in deps if d not in distsDeps] |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1520 |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1521 result = _as_classpath(deps, resolve) |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1522 |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1523 # prepend distributions |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1524 if len(dists): |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1525 distsCp = os.pathsep.join(dist.path for dist in dists) |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1526 if len(result): |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1527 result = distsCp + os.pathsep + result |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1528 else: |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1529 result = distsCp |
9fe3cb463079
mx: classpath function now accepts distributions as well (which are prepend to the class path)
Doug Simon <doug.simon@oracle.com>
parents:
16269
diff
changeset
|
1530 |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1531 if includeBootClasspath: |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1532 result = os.pathsep.join([java().bootclasspath(), result]) |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1533 return result |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1534 |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1535 def classpath_walk(names=None, resolve=True, includeSelf=True, includeBootClasspath=False): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1536 """ |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1537 Walks the resources available in a given classpath, yielding a tuple for each resource |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1538 where the first member of the tuple is a directory path or ZipFile object for a |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1539 classpath entry and the second member is the qualified path of the resource relative |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1540 to the classpath entry. |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1541 """ |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1542 cp = classpath(names, resolve, includeSelf, includeBootClasspath) |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1543 for entry in cp.split(os.pathsep): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1544 if not exists(entry): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1545 continue |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1546 if isdir(entry): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1547 for root, dirs, files in os.walk(entry): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1548 for d in dirs: |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1549 entryPath = join(root[len(entry) + 1:], d) |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1550 yield entry, entryPath |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1551 for f in files: |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1552 entryPath = join(root[len(entry) + 1:], f) |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1553 yield entry, entryPath |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1554 elif entry.endswith('.jar') or entry.endswith('.zip'): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1555 with zipfile.ZipFile(entry, 'r') as zf: |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1556 for zi in zf.infolist(): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1557 entryPath = zi.filename |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1558 yield zf, entryPath |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1559 |
15785
7a6f6a7ef886
Add JRE library support to mx projectgraph.
Josef Eisl <josef.eisl@jku.at>
parents:
15781
diff
changeset
|
1560 def sorted_deps(projectNames=None, includeLibs=False, includeJreLibs=False, includeAnnotationProcessors=False): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1561 """ |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1562 Gets projects and libraries sorted such that dependencies |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1563 are before the projects that depend on them. Unless 'includeLibs' is |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1564 true, libraries are omitted from the result. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1565 """ |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1566 projects = projects_from_names(projectNames) |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
1567 |
15785
7a6f6a7ef886
Add JRE library support to mx projectgraph.
Josef Eisl <josef.eisl@jku.at>
parents:
15781
diff
changeset
|
1568 return sorted_project_deps(projects, includeLibs=includeLibs, includeJreLibs=includeJreLibs, includeAnnotationProcessors=includeAnnotationProcessors) |
7a6f6a7ef886
Add JRE library support to mx projectgraph.
Josef Eisl <josef.eisl@jku.at>
parents:
15781
diff
changeset
|
1569 |
16629
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1570 def sorted_dists(): |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1571 """ |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1572 Gets distributions sorted such that each distribution comes after |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1573 any distributions it depends upon. |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1574 """ |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1575 dists = [] |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1576 def add_dist(dist): |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1577 if not dist in dists: |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1578 for depDist in [distribution(name) for name in dist.distDependencies]: |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1579 add_dist(depDist) |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1580 if not dist in dists: |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1581 dists.append(dist) |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1582 |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1583 for d in _dists.itervalues(): |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1584 add_dist(d) |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1585 return dists |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1586 |
15785
7a6f6a7ef886
Add JRE library support to mx projectgraph.
Josef Eisl <josef.eisl@jku.at>
parents:
15781
diff
changeset
|
1587 def sorted_project_deps(projects, includeLibs=False, includeJreLibs=False, includeAnnotationProcessors=False): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1588 deps = [] |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1589 for p in projects: |
15785
7a6f6a7ef886
Add JRE library support to mx projectgraph.
Josef Eisl <josef.eisl@jku.at>
parents:
15781
diff
changeset
|
1590 p.all_deps(deps, includeLibs=includeLibs, includeJreLibs=includeJreLibs, includeAnnotationProcessors=includeAnnotationProcessors) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1591 return deps |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1592 |
11301
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1593 def _handle_missing_java_home(): |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1594 if not sys.stdout.isatty(): |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1595 abort('Could not find bootstrap JDK. Use --java-home option or ensure JAVA_HOME environment variable is set.') |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1596 |
11301
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1597 candidateJdks = [] |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1598 if get_os() == 'darwin': |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1599 base = '/Library/Java/JavaVirtualMachines' |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1600 candidateJdks = [join(base, n, 'Contents/Home') for n in os.listdir(base) if exists(join(base, n, 'Contents/Home'))] |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1601 elif get_os() == 'linux': |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1602 base = '/usr/lib/jvm' |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1603 candidateJdks = [join(base, n) for n in os.listdir(base) if exists(join(base, n, 'jre/lib/rt.jar'))] |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1604 elif get_os() == 'solaris': |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1605 base = '/usr/jdk/instances' |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1606 candidateJdks = [join(base, n) for n in os.listdir(base) if exists(join(base, n, 'jre/lib/rt.jar'))] |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1607 elif get_os() == 'windows': |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1608 base = r'C:\Program Files\Java' |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1609 candidateJdks = [join(base, n) for n in os.listdir(base) if exists(join(base, n, r'jre\lib\rt.jar'))] |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1610 |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1611 javaHome = None |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1612 if len(candidateJdks) != 0: |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1613 javaHome = select_items(candidateJdks + ['<other>'], allowMultiple=False) |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1614 if javaHome == '<other>': |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1615 javaHome = None |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1616 |
11301
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1617 while javaHome is None: |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1618 javaHome = raw_input('Enter path of bootstrap JDK: ') |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1619 rtJarPath = join(javaHome, 'jre', 'lib', 'rt.jar') |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1620 if not exists(rtJarPath): |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1621 log('Does not appear to be a valid JDK as ' + rtJarPath + ' does not exist') |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1622 javaHome = None |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1623 else: |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1624 break |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1625 |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
1626 envPath = join(_primary_suite.mxDir, 'env') |
11511
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
1627 if ask_yes_no('Persist this setting by adding "JAVA_HOME=' + javaHome + '" to ' + envPath, 'y'): |
11301
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1628 with open(envPath, 'a') as fp: |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1629 print >> fp, 'JAVA_HOME=' + javaHome |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1630 |
11301
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1631 return javaHome |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1632 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1633 class ArgParser(ArgumentParser): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1634 # Override parent to append the list of available commands |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1635 def format_help(self): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1636 return ArgumentParser.format_help(self) + _format_commands() |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1637 |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1638 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1639 def __init__(self): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1640 self.java_initialized = False |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
1641 # this doesn't resolve the right way, but can't figure out how to override _handle_conflict_resolve in _ActionsContainer |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
1642 ArgumentParser.__init__(self, prog='mx', conflict_handler='resolve') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1643 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1644 self.add_argument('-v', action='store_true', dest='verbose', help='enable verbose output') |
5091
54819cdcca7f
Added -V option to mx for 'very verbose'which prints the environment variables used for an external command.
Doug Simon <doug.simon@oracle.com>
parents:
5072
diff
changeset
|
1645 self.add_argument('-V', action='store_true', dest='very_verbose', help='enable very verbose output') |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1646 self.add_argument('-w', action='store_true', dest='warn', help='enable warning messages') |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
1647 self.add_argument('-p', '--primary-suite-path', help='set the primary suite directory', metavar='<path>') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1648 self.add_argument('--dbg', type=int, dest='java_dbg_port', help='make Java processes wait on <port> for a debugger', metavar='<port>') |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1649 self.add_argument('-d', action='store_const', const=8000, dest='java_dbg_port', help='alias for "-dbg 8000"') |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1650 self.add_argument('--cp-pfx', dest='cp_prefix', help='class path prefix', metavar='<arg>') |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1651 self.add_argument('--cp-sfx', dest='cp_suffix', help='class path suffix', metavar='<arg>') |
13952
b076b5c13c3f
mx: factor out JavaConfig.processArgs and use it in mx vm. remove default -J arguments.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13951
diff
changeset
|
1652 self.add_argument('--J', dest='java_args', help='Java VM arguments (e.g. --J @-dsa)', metavar='@<args>') |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1653 self.add_argument('--Jp', action='append', dest='java_args_pfx', help='prefix Java VM arguments (e.g. --Jp @-dsa)', metavar='@<args>', default=[]) |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1654 self.add_argument('--Ja', action='append', dest='java_args_sfx', help='suffix Java VM arguments (e.g. --Ja @-dsa)', metavar='@<args>', default=[]) |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1655 self.add_argument('--user-home', help='users home directory', metavar='<path>', default=os.path.expanduser('~')) |
14763 | 1656 self.add_argument('--java-home', help='primary JDK directory (must be JDK 7 or later)', metavar='<path>') |
1657 self.add_argument('--extra-java-homes', help='secondary JDK directories separated by "' + os.pathsep + '"', metavar='<path>') | |
5821
0cd337450409
added support to mx for ignoring (broken) projects
Doug Simon <doug.simon@oracle.com>
parents:
5782
diff
changeset
|
1658 self.add_argument('--ignore-project', action='append', dest='ignored_projects', help='name of project to ignore', metavar='<name>', default=[]) |
14135
ee66410c0679
mx: add option to send sigquit before killing child
Bernhard Urban <bernhard.urban@jku.at>
parents:
14134
diff
changeset
|
1659 self.add_argument('--kill-with-sigquit', action='store_true', dest='killwithsigquit', help='send sigquit first before killing child processes') |
4239
676feaf8adee
Made the --timeout option apply to the whole mx command as opposed to each subprocess executed (the new --ptimeout does the latter).
Doug Simon <doug.simon@oracle.com>
parents:
4236
diff
changeset
|
1660 if get_os() != 'windows': |
676feaf8adee
Made the --timeout option apply to the whole mx command as opposed to each subprocess executed (the new --ptimeout does the latter).
Doug Simon <doug.simon@oracle.com>
parents:
4236
diff
changeset
|
1661 # Time outs are (currently) implemented with Unix specific functionality |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1662 self.add_argument('--timeout', help='timeout (in seconds) for command', type=int, default=0, metavar='<secs>') |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1663 self.add_argument('--ptimeout', help='timeout (in seconds) for subprocesses', type=int, default=0, metavar='<secs>') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1664 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1665 def _parse_cmd_line(self, args=None): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1666 if args is None: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1667 args = sys.argv[1:] |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1668 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1669 self.add_argument('commandAndArgs', nargs=REMAINDER, metavar='command args...') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1670 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1671 opts = self.parse_args() |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1672 |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
1673 # Give the timeout options a default value to avoid the need for hasattr() tests |
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
1674 opts.__dict__.setdefault('timeout', 0) |
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
1675 opts.__dict__.setdefault('ptimeout', 0) |
4149
cf4de9cc1268
Integrated latest mxtool updates.
Doug Simon <doug.simon@oracle.com>
parents:
4148
diff
changeset
|
1676 |
5091
54819cdcca7f
Added -V option to mx for 'very verbose'which prints the environment variables used for an external command.
Doug Simon <doug.simon@oracle.com>
parents:
5072
diff
changeset
|
1677 if opts.very_verbose: |
54819cdcca7f
Added -V option to mx for 'very verbose'which prints the environment variables used for an external command.
Doug Simon <doug.simon@oracle.com>
parents:
5072
diff
changeset
|
1678 opts.verbose = True |
54819cdcca7f
Added -V option to mx for 'very verbose'which prints the environment variables used for an external command.
Doug Simon <doug.simon@oracle.com>
parents:
5072
diff
changeset
|
1679 |
4149
cf4de9cc1268
Integrated latest mxtool updates.
Doug Simon <doug.simon@oracle.com>
parents:
4148
diff
changeset
|
1680 if opts.java_home is None: |
cf4de9cc1268
Integrated latest mxtool updates.
Doug Simon <doug.simon@oracle.com>
parents:
4148
diff
changeset
|
1681 opts.java_home = os.environ.get('JAVA_HOME') |
14763 | 1682 if opts.extra_java_homes is None: |
1683 opts.extra_java_homes = os.environ.get('EXTRA_JAVA_HOMES') | |
4149
cf4de9cc1268
Integrated latest mxtool updates.
Doug Simon <doug.simon@oracle.com>
parents:
4148
diff
changeset
|
1684 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1685 if opts.java_home is None or opts.java_home == '': |
11301
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1686 opts.java_home = _handle_missing_java_home() |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1687 |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1688 if opts.user_home is None or opts.user_home == '': |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1689 abort('Could not find user home. Use --user-home option or ensure HOME environment variable is set.') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1690 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1691 os.environ['JAVA_HOME'] = opts.java_home |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1692 os.environ['HOME'] = opts.user_home |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1693 |
5821
0cd337450409
added support to mx for ignoring (broken) projects
Doug Simon <doug.simon@oracle.com>
parents:
5782
diff
changeset
|
1694 opts.ignored_projects = opts.ignored_projects + os.environ.get('IGNORED_PROJECTS', '').split(',') |
0cd337450409
added support to mx for ignoring (broken) projects
Doug Simon <doug.simon@oracle.com>
parents:
5782
diff
changeset
|
1695 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1696 commandAndArgs = opts.__dict__.pop('commandAndArgs') |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1697 return opts, commandAndArgs |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1698 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
1699 def _handle_conflict_resolve(self, action, conflicting_actions): |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
1700 self._handle_conflict_error(action, conflicting_actions) |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
1701 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1702 def _format_commands(): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1703 msg = '\navailable commands:\n\n' |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1704 for cmd in sorted(_commands.iterkeys()): |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1705 c, _ = _commands[cmd][:2] |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1706 doc = c.__doc__ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1707 if doc is None: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1708 doc = '' |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1709 msg += ' {0:<20} {1}\n'.format(cmd, doc.split('\n', 1)[0]) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1710 return msg + '\n' |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1711 |
14763 | 1712 def java(requiredCompliance=None): |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1713 """ |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1714 Get a JavaConfig object containing Java commands launch details. |
14763 | 1715 If requiredCompliance is None, the compliance level specified by --java-home/JAVA_HOME |
1716 is returned. Otherwise, the JavaConfig exactly matching requiredCompliance is returned | |
1717 or None if there is no exact match. | |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1718 """ |
14763 | 1719 assert _java_homes |
1720 if not requiredCompliance: | |
1721 return _java_homes[0] | |
1722 for java in _java_homes: | |
1723 if java.javaCompliance == requiredCompliance: | |
1724 return java | |
1725 return None | |
1726 | |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1727 |
14913
2d1cc640512c
Add possibility to build using error-prone instead of javac.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14907
diff
changeset
|
1728 def run_java(args, nonZeroIsFatal=True, out=None, err=None, cwd=None, addDefaultArgs=True, javaConfig=None): |
2d1cc640512c
Add possibility to build using error-prone instead of javac.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14907
diff
changeset
|
1729 if not javaConfig: |
2d1cc640512c
Add possibility to build using error-prone instead of javac.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14907
diff
changeset
|
1730 javaConfig = java() |
2d1cc640512c
Add possibility to build using error-prone instead of javac.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14907
diff
changeset
|
1731 return run(javaConfig.format_cmd(args, addDefaultArgs), nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1732 |
14153
e328f28f7401
fix for mx, did not compile on Windows
Christian Wirth <christian.wirth@oracle.com>
parents:
14136
diff
changeset
|
1733 def _kill_process_group(pid, sig): |
14538
5454f6bf50bf
fix for mx, did not compile on Windows
Christian Wirth <christian.wirth@oracle.com>
parents:
14136
diff
changeset
|
1734 if not sig: |
5454f6bf50bf
fix for mx, did not compile on Windows
Christian Wirth <christian.wirth@oracle.com>
parents:
14136
diff
changeset
|
1735 sig = signal.SIGKILL |
4241
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1736 pgid = os.getpgid(pid) |
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1737 try: |
14134
e71d421370f3
mx: proxy SIGQUIT to child process
Bernhard Urban <bernhard.urban@jku.at>
parents:
14133
diff
changeset
|
1738 os.killpg(pgid, sig) |
4241
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1739 return True |
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1740 except: |
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1741 log('Error killing subprocess ' + str(pgid) + ': ' + str(sys.exc_info()[1])) |
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1742 return False |
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1743 |
4158
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1744 def _waitWithTimeout(process, args, timeout): |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1745 def _waitpid(pid): |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1746 while True: |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1747 try: |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1748 return os.waitpid(pid, os.WNOHANG) |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1749 except OSError, e: |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1750 if e.errno == errno.EINTR: |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1751 continue |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1752 raise |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1753 |
4236
11383dafc318
Fixed bug in getting correct result code for a subprocess executed with a timeout.
Doug Simon <doug.simon@oracle.com>
parents:
4234
diff
changeset
|
1754 def _returncode(status): |
11383dafc318
Fixed bug in getting correct result code for a subprocess executed with a timeout.
Doug Simon <doug.simon@oracle.com>
parents:
4234
diff
changeset
|
1755 if os.WIFSIGNALED(status): |
11383dafc318
Fixed bug in getting correct result code for a subprocess executed with a timeout.
Doug Simon <doug.simon@oracle.com>
parents:
4234
diff
changeset
|
1756 return -os.WTERMSIG(status) |
11383dafc318
Fixed bug in getting correct result code for a subprocess executed with a timeout.
Doug Simon <doug.simon@oracle.com>
parents:
4234
diff
changeset
|
1757 elif os.WIFEXITED(status): |
11383dafc318
Fixed bug in getting correct result code for a subprocess executed with a timeout.
Doug Simon <doug.simon@oracle.com>
parents:
4234
diff
changeset
|
1758 return os.WEXITSTATUS(status) |
11383dafc318
Fixed bug in getting correct result code for a subprocess executed with a timeout.
Doug Simon <doug.simon@oracle.com>
parents:
4234
diff
changeset
|
1759 else: |
11383dafc318
Fixed bug in getting correct result code for a subprocess executed with a timeout.
Doug Simon <doug.simon@oracle.com>
parents:
4234
diff
changeset
|
1760 # Should never happen |
11383dafc318
Fixed bug in getting correct result code for a subprocess executed with a timeout.
Doug Simon <doug.simon@oracle.com>
parents:
4234
diff
changeset
|
1761 raise RuntimeError("Unknown child exit status!") |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1762 |
4158
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1763 end = time.time() + timeout |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1764 delay = 0.0005 |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1765 while True: |
4236
11383dafc318
Fixed bug in getting correct result code for a subprocess executed with a timeout.
Doug Simon <doug.simon@oracle.com>
parents:
4234
diff
changeset
|
1766 (pid, status) = _waitpid(process.pid) |
4158
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1767 if pid == process.pid: |
4236
11383dafc318
Fixed bug in getting correct result code for a subprocess executed with a timeout.
Doug Simon <doug.simon@oracle.com>
parents:
4234
diff
changeset
|
1768 return _returncode(status) |
4158
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1769 remaining = end - time.time() |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1770 if remaining <= 0: |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1771 abort('Process timed out after {0} seconds: {1}'.format(timeout, ' '.join(args))) |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1772 delay = min(delay * 2, remaining, .05) |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1773 time.sleep(delay) |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1774 |
4242
3e25132be4b4
Disabled eager resolution of libraries as they are defined.
Doug Simon <doug.simon@oracle.com>
parents:
4241
diff
changeset
|
1775 # Makes the current subprocess accessible to the abort() function |
15489
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1776 # This is a list of tuples of the subprocess.Popen or |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1777 # multiprocessing.Process object and args. |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1778 _currentSubprocesses = [] |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1779 |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1780 def _addSubprocess(p, args): |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1781 entry = (p, args) |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1782 _currentSubprocesses.append(entry) |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1783 return entry |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1784 |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1785 def _removeSubprocess(entry): |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1786 if entry and entry in _currentSubprocesses: |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1787 try: |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1788 _currentSubprocesses.remove(entry) |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1789 except: |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1790 pass |
4241
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1791 |
4660
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1792 def waitOn(p): |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1793 if get_os() == 'windows': |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1794 # on windows use a poll loop, otherwise signal does not get handled |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1795 retcode = None |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1796 while retcode == None: |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1797 retcode = p.poll() |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1798 time.sleep(0.05) |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1799 else: |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1800 retcode = p.wait() |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1801 return retcode |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1802 |
8884
51a8368d0231
Adapt to changes in hotspot makefiles : pass our JAVA_HOME as ALT_BOOTDIR (so that things are built with a 'safe' jdk) and our jdk copy as JAVA_HOME (so that the jvm gets installed there)
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
8633
diff
changeset
|
1803 def run(args, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, env=None): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1804 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1805 Run a command in a subprocess, wait for it to complete and return the exit status of the process. |
4158
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1806 If the exit status is non-zero and `nonZeroIsFatal` is true, then mx is exited with |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1807 the same exit status. |
4225
339cf8d4904d
Made mx.run work properly when stderr is redirected to stdout.
Doug Simon <doug.simon@oracle.com>
parents:
4219
diff
changeset
|
1808 Each line of the standard output and error streams of the subprocess are redirected to |
339cf8d4904d
Made mx.run work properly when stderr is redirected to stdout.
Doug Simon <doug.simon@oracle.com>
parents:
4219
diff
changeset
|
1809 out and err if they are callable objects. |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1810 """ |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1811 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1812 assert isinstance(args, types.ListType), "'args' must be a list: " + str(args) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1813 for arg in args: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1814 assert isinstance(arg, types.StringTypes), 'argument is not a string: ' + str(arg) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1815 |
9262
0f4ae7bbe062
fixed bug in handling of -V mx option
Doug Simon <doug.simon@oracle.com>
parents:
9193
diff
changeset
|
1816 if env is None: |
0f4ae7bbe062
fixed bug in handling of -V mx option
Doug Simon <doug.simon@oracle.com>
parents:
9193
diff
changeset
|
1817 env = os.environ |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1818 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1819 if _opts.verbose: |
5091
54819cdcca7f
Added -V option to mx for 'very verbose'which prints the environment variables used for an external command.
Doug Simon <doug.simon@oracle.com>
parents:
5072
diff
changeset
|
1820 if _opts.very_verbose: |
54819cdcca7f
Added -V option to mx for 'very verbose'which prints the environment variables used for an external command.
Doug Simon <doug.simon@oracle.com>
parents:
5072
diff
changeset
|
1821 log('Environment variables:') |
9262
0f4ae7bbe062
fixed bug in handling of -V mx option
Doug Simon <doug.simon@oracle.com>
parents:
9193
diff
changeset
|
1822 for key in sorted(env.keys()): |
0f4ae7bbe062
fixed bug in handling of -V mx option
Doug Simon <doug.simon@oracle.com>
parents:
9193
diff
changeset
|
1823 log(' ' + key + '=' + env[key]) |
13950
35783e78eaef
mx.run: shell-escape arguments when printing them in verbose mode
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13927
diff
changeset
|
1824 log(' '.join(map(pipes.quote, args))) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1825 |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
1826 if timeout is None and _opts.ptimeout != 0: |
4241
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1827 timeout = _opts.ptimeout |
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1828 |
15489
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1829 sub = None |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1830 try: |
4241
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1831 # On Unix, the new subprocess should be in a separate group so that a timeout alarm |
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1832 # can use os.killpg() to kill the whole subprocess group |
4252
67e88b7624d5
Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents:
4248
diff
changeset
|
1833 preexec_fn = None |
67e88b7624d5
Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents:
4248
diff
changeset
|
1834 creationflags = 0 |
67e88b7624d5
Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents:
4248
diff
changeset
|
1835 if get_os() == 'windows': |
67e88b7624d5
Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents:
4248
diff
changeset
|
1836 creationflags = subprocess.CREATE_NEW_PROCESS_GROUP |
67e88b7624d5
Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents:
4248
diff
changeset
|
1837 else: |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1838 preexec_fn = os.setsid |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1839 |
12689
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1840 def redirect(stream, f): |
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1841 for line in iter(stream.readline, ''): |
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1842 f(line) |
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1843 stream.close() |
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1844 stdout = out if not callable(out) else subprocess.PIPE |
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1845 stderr = err if not callable(err) else subprocess.PIPE |
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1846 p = subprocess.Popen(args, cwd=cwd, stdout=stdout, stderr=stderr, preexec_fn=preexec_fn, creationflags=creationflags, env=env) |
15489
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1847 sub = _addSubprocess(p, args) |
15871
11bf5b8973c9
mx: drain all subprocess output to callables before returning from mx.run
Doug Simon <doug.simon@oracle.com>
parents:
15863
diff
changeset
|
1848 joiners = [] |
12689
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1849 if callable(out): |
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1850 t = Thread(target=redirect, args=(p.stdout, out)) |
15701
16059f6f5661
mx: drain *all* output from subprocess if redirecting to functions
Doug Simon <doug.simon@oracle.com>
parents:
15697
diff
changeset
|
1851 # Don't make the reader thread a daemon otherwise output can be droppped |
12689
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1852 t.start() |
15871
11bf5b8973c9
mx: drain all subprocess output to callables before returning from mx.run
Doug Simon <doug.simon@oracle.com>
parents:
15863
diff
changeset
|
1853 joiners.append(t) |
12689
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1854 if callable(err): |
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1855 t = Thread(target=redirect, args=(p.stderr, err)) |
15701
16059f6f5661
mx: drain *all* output from subprocess if redirecting to functions
Doug Simon <doug.simon@oracle.com>
parents:
15697
diff
changeset
|
1856 # Don't make the reader thread a daemon otherwise output can be droppped |
12689
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1857 t.start() |
15871
11bf5b8973c9
mx: drain all subprocess output to callables before returning from mx.run
Doug Simon <doug.simon@oracle.com>
parents:
15863
diff
changeset
|
1858 joiners.append(t) |
15898
c102edf38127
mx: prevent CTRL-C from being blocked while subprocess is running (re-applied without unrelated changes)
Doug Simon <doug.simon@oracle.com>
parents:
15897
diff
changeset
|
1859 while any([t.is_alive() for t in joiners]): |
c102edf38127
mx: prevent CTRL-C from being blocked while subprocess is running (re-applied without unrelated changes)
Doug Simon <doug.simon@oracle.com>
parents:
15897
diff
changeset
|
1860 # Need to use timeout otherwise all signals (including CTRL-C) are blocked |
c102edf38127
mx: prevent CTRL-C from being blocked while subprocess is running (re-applied without unrelated changes)
Doug Simon <doug.simon@oracle.com>
parents:
15897
diff
changeset
|
1861 # see: http://bugs.python.org/issue1167930 |
c102edf38127
mx: prevent CTRL-C from being blocked while subprocess is running (re-applied without unrelated changes)
Doug Simon <doug.simon@oracle.com>
parents:
15897
diff
changeset
|
1862 for t in joiners: |
c102edf38127
mx: prevent CTRL-C from being blocked while subprocess is running (re-applied without unrelated changes)
Doug Simon <doug.simon@oracle.com>
parents:
15897
diff
changeset
|
1863 t.join(10) |
12689
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1864 if timeout is None or timeout == 0: |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1865 retcode = waitOn(p) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1866 else: |
12689
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1867 if get_os() == 'windows': |
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1868 abort('Use of timeout not (yet) supported on Windows') |
697ef4cf18c0
mx.run should support streams for out/err even if there is no timeout
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12684
diff
changeset
|
1869 retcode = _waitWithTimeout(p, args, timeout) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1870 except OSError as e: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1871 log('Error executing \'' + ' '.join(args) + '\': ' + str(e)) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1872 if _opts.verbose: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1873 raise e |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1874 abort(e.errno) |
4242
3e25132be4b4
Disabled eager resolution of libraries as they are defined.
Doug Simon <doug.simon@oracle.com>
parents:
4241
diff
changeset
|
1875 except KeyboardInterrupt: |
3e25132be4b4
Disabled eager resolution of libraries as they are defined.
Doug Simon <doug.simon@oracle.com>
parents:
4241
diff
changeset
|
1876 abort(1) |
4241
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1877 finally: |
15489
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
1878 _removeSubprocess(sub) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1879 |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1880 if retcode and nonZeroIsFatal: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1881 if _opts.verbose: |
5091
54819cdcca7f
Added -V option to mx for 'very verbose'which prints the environment variables used for an external command.
Doug Simon <doug.simon@oracle.com>
parents:
5072
diff
changeset
|
1882 if _opts.very_verbose: |
54819cdcca7f
Added -V option to mx for 'very verbose'which prints the environment variables used for an external command.
Doug Simon <doug.simon@oracle.com>
parents:
5072
diff
changeset
|
1883 raise subprocess.CalledProcessError(retcode, ' '.join(args)) |
54819cdcca7f
Added -V option to mx for 'very verbose'which prints the environment variables used for an external command.
Doug Simon <doug.simon@oracle.com>
parents:
5072
diff
changeset
|
1884 else: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1885 log('[exit code: ' + str(retcode) + ']') |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1886 abort(retcode) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1887 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1888 return retcode |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1889 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1890 def exe_suffix(name): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1891 """ |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1892 Gets the platform specific suffix for an executable |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1893 """ |
4258
8d2c14f722ac
mx.py: fix OS detection in exe_suffix()
Andreas Woess <andreas.woess@jku.at>
parents:
4257
diff
changeset
|
1894 if get_os() == 'windows': |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1895 return name + '.exe' |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1896 return name |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1897 |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1898 def add_lib_prefix(name): |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1899 """ |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1900 Adds the platform specific library prefix to a name |
4482
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4396
diff
changeset
|
1901 """ |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1902 os = get_os() |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1903 if os == 'linux' or os == 'solaris' or os == 'darwin': |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1904 return 'lib' + name |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1905 return name |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1906 |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1907 def add_lib_suffix(name): |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1908 """ |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1909 Adds the platform specific library suffix to a name |
4482
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4396
diff
changeset
|
1910 """ |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1911 os = get_os() |
4482
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4396
diff
changeset
|
1912 if os == 'windows': |
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4396
diff
changeset
|
1913 return name + '.dll' |
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:
5171
diff
changeset
|
1914 if os == 'linux' or os == 'solaris': |
4482
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4396
diff
changeset
|
1915 return name + '.so' |
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:
5171
diff
changeset
|
1916 if os == 'darwin': |
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:
5171
diff
changeset
|
1917 return name + '.dylib' |
4482
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4396
diff
changeset
|
1918 return name |
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4396
diff
changeset
|
1919 |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1920 """ |
12042
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1921 Utility for filtering duplicate lines. |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1922 """ |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1923 class DuplicateSuppressingStream: |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1924 """ |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1925 Creates an object that will suppress duplicate lines sent to 'out'. |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1926 The lines considered for suppression are those that contain one of the |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1927 strings in 'restrictTo' if it is not None. |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1928 """ |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1929 def __init__(self, restrictTo=None, out=sys.stdout): |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1930 self.restrictTo = restrictTo |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1931 self.seen = set() |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1932 self.out = out |
14522
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
1933 self.currentFilteredLineCount = 0 |
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
1934 self.currentFilteredTime = None |
12042
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1935 |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1936 def isSuppressionCandidate(self, line): |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1937 if self.restrictTo: |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1938 for p in self.restrictTo: |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1939 if p in line: |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1940 return True |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1941 return False |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1942 else: |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1943 return True |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1944 |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1945 def write(self, line): |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1946 if self.isSuppressionCandidate(line): |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1947 if line in self.seen: |
14522
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
1948 self.currentFilteredLineCount += 1 |
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
1949 if self.currentFilteredTime: |
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
1950 if time.time() - self.currentFilteredTime > 1 * 60: |
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
1951 self.out.write(" Filtered " + str(self.currentFilteredLineCount) + " repeated lines...\n") |
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
1952 self.currentFilteredTime = time.time() |
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
1953 else: |
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
1954 self.currentFilteredTime = time.time() |
12042
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1955 return |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1956 self.seen.add(line) |
14522
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
1957 self.currentFilteredLineCount = 0 |
12042
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1958 self.out.write(line) |
14522
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
1959 self.currentFilteredTime = None |
12042
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1960 |
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
1961 """ |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1962 A JavaCompliance simplifies comparing Java compliance values extracted from a JDK version string. |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1963 """ |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1964 class JavaCompliance: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1965 def __init__(self, ver): |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1966 m = re.match(r'1\.(\d+).*', ver) |
5071
9d055af068a8
Made Java builds look for mx/ecj.jar to use Eclipse batch compiler by default.
Doug Simon <doug.simon@oracle.com>
parents:
5032
diff
changeset
|
1967 assert m is not None, 'not a recognized version string: ' + ver |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1968 self.value = int(m.group(1)) |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1969 |
13968
6c6d1eacc398
mxtool: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
1970 def __str__(self): |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1971 return '1.' + str(self.value) |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1972 |
13968
6c6d1eacc398
mxtool: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
1973 def __cmp__(self, other): |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1974 if isinstance(other, types.StringType): |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1975 other = JavaCompliance(other) |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1976 |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1977 return cmp(self.value, other.value) |
13779 | 1978 |
13775
43c7df32d5ab
use lowest version JRE specified by any project for source path in Eclipse attach/launch configuration
Doug Simon <doug.simon@oracle.com>
parents:
13727
diff
changeset
|
1979 def __hash__(self): |
43c7df32d5ab
use lowest version JRE specified by any project for source path in Eclipse attach/launch configuration
Doug Simon <doug.simon@oracle.com>
parents:
13727
diff
changeset
|
1980 return self.value.__hash__() |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1981 |
7916
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
1982 """ |
13471
020099961eb4
renamed JavaVersion to VersionSpec
Doug Simon <doug.simon@oracle.com>
parents:
13470
diff
changeset
|
1983 A version specification as defined in JSR-56 |
7916
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
1984 """ |
13471
020099961eb4
renamed JavaVersion to VersionSpec
Doug Simon <doug.simon@oracle.com>
parents:
13470
diff
changeset
|
1985 class VersionSpec: |
7916
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
1986 def __init__(self, versionString): |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1987 validChar = r'[\x21-\x25\x27-\x29\x2c\x2f-\x5e\x60-\x7f]' |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1988 separator = r'[.\-_]' |
13358
e1a50eac0eac
Add a version number for the mxtool and support for requesting a minimum mx version in a suite
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13288
diff
changeset
|
1989 m = re.match("^" + validChar + '+(' + separator + validChar + '+)*$', versionString) |
7916
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
1990 assert m is not None, 'not a recognized version string: ' + versionString |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1991 self.versionString = versionString |
8391
d1d486c03e8a
Fix version parsing in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
8302
diff
changeset
|
1992 self.parts = [int(f) if f.isdigit() else f for f in re.split(separator, versionString)] |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1993 |
7916
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
1994 def __str__(self): |
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
1995 return self.versionString |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1996 |
7916
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
1997 def __cmp__(self, other): |
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
1998 return cmp(self.parts, other.parts) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1999 |
14940
82971f397b94
mx.JavaConfig: filter non-existant paths from bootclasspath, extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14939
diff
changeset
|
2000 def _filter_non_existant_paths(paths): |
82971f397b94
mx.JavaConfig: filter non-existant paths from bootclasspath, extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14939
diff
changeset
|
2001 return os.pathsep.join([path for path in paths.split(os.pathsep) if exists(path)]) |
82971f397b94
mx.JavaConfig: filter non-existant paths from bootclasspath, extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14939
diff
changeset
|
2002 |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2003 """ |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2004 A JavaConfig object encapsulates info on how Java commands are run. |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2005 """ |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2006 class JavaConfig: |
14763 | 2007 def __init__(self, java_home, java_dbg_port): |
2008 self.jdk = java_home | |
2009 self.debug_port = java_dbg_port | |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2010 self.jar = exe_suffix(join(self.jdk, 'bin', 'jar')) |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2011 self.java = exe_suffix(join(self.jdk, 'bin', 'java')) |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2012 self.javac = exe_suffix(join(self.jdk, 'bin', 'javac')) |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2013 self.javap = exe_suffix(join(self.jdk, 'bin', 'javap')) |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
2014 self.javadoc = exe_suffix(join(self.jdk, 'bin', 'javadoc')) |
15863
f04a541af3c9
mx: add pack200 to javaconfig
Bernhard Urban <bernhard.urban@jku.at>
parents:
15861
diff
changeset
|
2015 self.pack200 = exe_suffix(join(self.jdk, 'bin', 'pack200')) |
14913
2d1cc640512c
Add possibility to build using error-prone instead of javac.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14907
diff
changeset
|
2016 self.toolsjar = join(self.jdk, 'lib', 'tools.jar') |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
2017 self._bootclasspath = None |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
2018 self._extdirs = None |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
2019 self._endorseddirs = None |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2020 |
4257
32b8274f52ad
Made 'mx ideinit' resolve library dependencies eagerly as well as put absolute paths into the generated Eclipse project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4252
diff
changeset
|
2021 if not exists(self.java): |
14763 | 2022 abort('Java launcher does not exist: ' + self.java) |
4257
32b8274f52ad
Made 'mx ideinit' resolve library dependencies eagerly as well as put absolute paths into the generated Eclipse project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4252
diff
changeset
|
2023 |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2024 def delAtAndSplit(s): |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2025 return shlex.split(s.lstrip('@')) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2026 |
13952
b076b5c13c3f
mx: factor out JavaConfig.processArgs and use it in mx vm. remove default -J arguments.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13951
diff
changeset
|
2027 self.java_args = delAtAndSplit(_opts.java_args) if _opts.java_args else [] |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2028 self.java_args_pfx = sum(map(delAtAndSplit, _opts.java_args_pfx), []) |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2029 self.java_args_sfx = sum(map(delAtAndSplit, _opts.java_args_sfx), []) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2030 |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2031 # Prepend the -d64 VM option only if the java command supports it |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2032 try: |
4148
bf5efc22fb3f
Replace downloading of JDK 7 with copying of host JDK 7.
Doug Simon <doug.simon@oracle.com>
parents:
4147
diff
changeset
|
2033 output = subprocess.check_output([self.java, '-d64', '-version'], stderr=subprocess.STDOUT) |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2034 self.java_args = ['-d64'] + self.java_args |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2035 except subprocess.CalledProcessError as e: |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2036 try: |
4148
bf5efc22fb3f
Replace downloading of JDK 7 with copying of host JDK 7.
Doug Simon <doug.simon@oracle.com>
parents:
4147
diff
changeset
|
2037 output = subprocess.check_output([self.java, '-version'], stderr=subprocess.STDOUT) |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2038 except subprocess.CalledProcessError as e: |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2039 print e.output |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2040 abort(e.returncode) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2041 |
16534
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2042 def _checkOutput(out): |
16539
cc30bd72a19b
mx: fix in java version parsing
Bernhard Urban <bernhard.urban@jku.at>
parents:
16534
diff
changeset
|
2043 return 'version' in out |
16534
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2044 |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2045 # hotspot can print a warning, e.g. if there's a .hotspot_compiler file in the cwd |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2046 output = output.split('\n') |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2047 version = None |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2048 for o in output: |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2049 if _checkOutput(o): |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2050 assert version is None |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2051 version = o |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2052 |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2053 self.version = VersionSpec(version.split()[2].strip('"')) |
7916
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
2054 self.javaCompliance = JavaCompliance(self.version.versionString) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2055 |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2056 if self.debug_port is not None: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2057 self.java_args += ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=' + str(self.debug_port)] |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2058 |
14914
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2059 def _init_classpaths(self): |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2060 myDir = dirname(__file__) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2061 outDir = join(dirname(__file__), '.jdk' + str(self.version)) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2062 if not exists(outDir): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2063 os.makedirs(outDir) |
14914
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2064 javaSource = join(myDir, 'ClasspathDump.java') |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2065 if not exists(join(outDir, 'ClasspathDump.class')): |
16534
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2066 subprocess.check_call([self.javac, '-d', outDir, javaSource], stderr=subprocess.PIPE, stdout=subprocess.PIPE) |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2067 self._bootclasspath, self._extdirs, self._endorseddirs = [x if x != 'null' else None for x in subprocess.check_output([self.java, '-cp', outDir, 'ClasspathDump'], stderr=subprocess.PIPE).split('|')] |
14914
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2068 if not self._bootclasspath or not self._extdirs or not self._endorseddirs: |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2069 warn("Could not find all classpaths: boot='" + str(self._bootclasspath) + "' extdirs='" + str(self._extdirs) + "' endorseddirs='" + str(self._endorseddirs) + "'") |
14940
82971f397b94
mx.JavaConfig: filter non-existant paths from bootclasspath, extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14939
diff
changeset
|
2070 self._bootclasspath = _filter_non_existant_paths(self._bootclasspath) |
82971f397b94
mx.JavaConfig: filter non-existant paths from bootclasspath, extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14939
diff
changeset
|
2071 self._extdirs = _filter_non_existant_paths(self._extdirs) |
82971f397b94
mx.JavaConfig: filter non-existant paths from bootclasspath, extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14939
diff
changeset
|
2072 self._endorseddirs = _filter_non_existant_paths(self._endorseddirs) |
14914
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2073 |
14763 | 2074 def __hash__(self): |
2075 return hash(self.jdk) | |
14764 | 2076 |
14763 | 2077 def __cmp__(self, other): |
2078 if isinstance(other, JavaConfig): | |
2079 return cmp(self.javaCompliance, other.javaCompliance) | |
2080 raise TypeError() | |
2081 | |
13951
392b6ac8da36
Allow using run_java without the arguments from -J -Ja -Jp. Factor out the argument processing of mx_graal.vm and use it to pass tested-vm args down through the jmh harness
Bernhard Urban <bernhard.urban@jku.at>
parents:
13950
diff
changeset
|
2082 def format_cmd(self, args, addDefaultArgs): |
392b6ac8da36
Allow using run_java without the arguments from -J -Ja -Jp. Factor out the argument processing of mx_graal.vm and use it to pass tested-vm args down through the jmh harness
Bernhard Urban <bernhard.urban@jku.at>
parents:
13950
diff
changeset
|
2083 if addDefaultArgs: |
13952
b076b5c13c3f
mx: factor out JavaConfig.processArgs and use it in mx vm. remove default -J arguments.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13951
diff
changeset
|
2084 return [self.java] + self.processArgs(args) |
13951
392b6ac8da36
Allow using run_java without the arguments from -J -Ja -Jp. Factor out the argument processing of mx_graal.vm and use it to pass tested-vm args down through the jmh harness
Bernhard Urban <bernhard.urban@jku.at>
parents:
13950
diff
changeset
|
2085 else: |
392b6ac8da36
Allow using run_java without the arguments from -J -Ja -Jp. Factor out the argument processing of mx_graal.vm and use it to pass tested-vm args down through the jmh harness
Bernhard Urban <bernhard.urban@jku.at>
parents:
13950
diff
changeset
|
2086 return [self.java] + args |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2087 |
13952
b076b5c13c3f
mx: factor out JavaConfig.processArgs and use it in mx vm. remove default -J arguments.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13951
diff
changeset
|
2088 def processArgs(self, args): |
b076b5c13c3f
mx: factor out JavaConfig.processArgs and use it in mx vm. remove default -J arguments.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13951
diff
changeset
|
2089 return self.java_args_pfx + self.java_args + self.java_args_sfx + args |
b076b5c13c3f
mx: factor out JavaConfig.processArgs and use it in mx vm. remove default -J arguments.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13951
diff
changeset
|
2090 |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
2091 def bootclasspath(self): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
2092 if self._bootclasspath is None: |
14914
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2093 self._init_classpaths() |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
2094 return self._bootclasspath |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
2095 |
14914
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2096 def extdirs(self): |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2097 if self._extdirs is None: |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2098 self._init_classpaths() |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2099 return self._extdirs |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2100 |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2101 def endorseddirs(self): |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2102 if self._endorseddirs is None: |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2103 self._init_classpaths() |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2104 return self._endorseddirs |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2105 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2106 def check_get_env(key): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2107 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2108 Gets an environment variable, aborting with a useful message if it is not set. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2109 """ |
4178
d1b26c17910a
Add the Dacapo benchmarks to the "lib" folder instead of using the environment variable. Fixed an issue in the downloader.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4161
diff
changeset
|
2110 value = get_env(key) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2111 if value is None: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2112 abort('Required environment variable ' + key + ' must be set') |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2113 return value |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2114 |
4227
1fe200db8c30
Environment variables for HotSpot's make are only set by mx.build if they aren't already defined.
Doug Simon <doug.simon@oracle.com>
parents:
4226
diff
changeset
|
2115 def get_env(key, default=None): |
4178
d1b26c17910a
Add the Dacapo benchmarks to the "lib" folder instead of using the environment variable. Fixed an issue in the downloader.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4161
diff
changeset
|
2116 """ |
d1b26c17910a
Add the Dacapo benchmarks to the "lib" folder instead of using the environment variable. Fixed an issue in the downloader.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4161
diff
changeset
|
2117 Gets an environment variable. |
d1b26c17910a
Add the Dacapo benchmarks to the "lib" folder instead of using the environment variable. Fixed an issue in the downloader.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4161
diff
changeset
|
2118 """ |
4227
1fe200db8c30
Environment variables for HotSpot's make are only set by mx.build if they aren't already defined.
Doug Simon <doug.simon@oracle.com>
parents:
4226
diff
changeset
|
2119 value = os.environ.get(key, default) |
4178
d1b26c17910a
Add the Dacapo benchmarks to the "lib" folder instead of using the environment variable. Fixed an issue in the downloader.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4161
diff
changeset
|
2120 return value |
d1b26c17910a
Add the Dacapo benchmarks to the "lib" folder instead of using the environment variable. Fixed an issue in the downloader.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4161
diff
changeset
|
2121 |
10568
070b4a3c56f3
disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents:
10530
diff
changeset
|
2122 def logv(msg=None): |
070b4a3c56f3
disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents:
10530
diff
changeset
|
2123 if _opts.verbose: |
070b4a3c56f3
disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents:
10530
diff
changeset
|
2124 log(msg) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2125 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2126 def log(msg=None): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2127 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2128 Write a message to the console. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2129 All script output goes through this method thus allowing a subclass |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2130 to redirect it. |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2131 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2132 if msg is None: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2133 print |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2134 else: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2135 print msg |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2136 |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2137 def expand_project_in_class_path_arg(cpArg): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2138 cp = [] |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2139 for part in cpArg.split(os.pathsep): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2140 if part.startswith('@'): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2141 cp += classpath(part[1:]).split(os.pathsep) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2142 else: |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2143 cp.append(part) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2144 return os.pathsep.join(cp) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2145 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2146 def expand_project_in_args(args): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2147 for i in range(len(args)): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2148 if args[i] == '-cp' or args[i] == '-classpath': |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2149 if i + 1 < len(args): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2150 args[i + 1] = expand_project_in_class_path_arg(args[i + 1]) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2151 return |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2152 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2153 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2154 def gmake_cmd(): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2155 for a in ['make', 'gmake', 'gnumake']: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2156 try: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2157 output = subprocess.check_output([a, '--version']) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2158 if 'GNU' in output: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2159 return a |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2160 except: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2161 pass |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2162 abort('Could not find a GNU make executable on the current path.') |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2163 |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2164 def expandvars_in_property(value): |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2165 result = expandvars(value) |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2166 if '$' in result or '%' in result: |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2167 abort('Property contains an undefined environment variable: ' + value) |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2168 return result |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2169 |
14135
ee66410c0679
mx: add option to send sigquit before killing child
Bernhard Urban <bernhard.urban@jku.at>
parents:
14134
diff
changeset
|
2170 def _send_sigquit(): |
15489
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2171 for p, args in _currentSubprocesses: |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2172 |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2173 def _isJava(): |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2174 if args: |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2175 name = args[0].split(os.sep)[-1] |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2176 return name == "java" |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2177 return False |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2178 |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2179 if p is not None and _isJava(): |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2180 if get_os() == 'windows': |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2181 log("mx: implement me! want to send SIGQUIT to my child process") |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2182 else: |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2183 _kill_process_group(p.pid, sig=signal.SIGQUIT) |
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2184 time.sleep(0.1) |
14781
d2038d372cd2
changed distribution dependency exclusion mechanism to be only for library dependencies
Doug Simon <doug.simon@oracle.com>
parents:
14775
diff
changeset
|
2185 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2186 def abort(codeOrMessage): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2187 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2188 Aborts the program with a SystemExit exception. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2189 If 'codeOrMessage' is a plain integer, it specifies the system exit status; |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2190 if it is None, the exit status is zero; if it has another type (such as a string), |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2191 the object's value is printed and the exit status is one. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2192 """ |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2193 |
14135
ee66410c0679
mx: add option to send sigquit before killing child
Bernhard Urban <bernhard.urban@jku.at>
parents:
14134
diff
changeset
|
2194 if _opts.killwithsigquit: |
ee66410c0679
mx: add option to send sigquit before killing child
Bernhard Urban <bernhard.urban@jku.at>
parents:
14134
diff
changeset
|
2195 _send_sigquit() |
ee66410c0679
mx: add option to send sigquit before killing child
Bernhard Urban <bernhard.urban@jku.at>
parents:
14134
diff
changeset
|
2196 |
15823
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2197 def is_alive(p): |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2198 if isinstance(p, subprocess.Popen): |
15845
babe4565c371
mx: fixed incorrect test for subprocess being alive
twisti
parents:
15823
diff
changeset
|
2199 return p.poll() is None |
15823
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2200 assert isinstance(p, multiprocessing.Process), p |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2201 return p.is_alive() |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2202 |
15489
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2203 for p, args in _currentSubprocesses: |
15823
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2204 if is_alive(p): |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2205 try: |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2206 if get_os() == 'windows': |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2207 p.terminate() |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2208 else: |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2209 _kill_process_group(p.pid, signal.SIGKILL) |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2210 except BaseException as e: |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2211 if is_alive(p): |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2212 log('error while killing subprocess {} "{}": {}'.format(p.pid, ' '.join(args), e)) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2213 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
2214 if _opts and _opts.verbose: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
2215 import traceback |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
2216 traceback.print_stack() |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2217 raise SystemExit(codeOrMessage) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2218 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2219 def download(path, urls, verbose=False): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2220 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2221 Attempts to downloads content for each URL in a list, stopping after the first successful download. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2222 If the content cannot be retrieved from any URL, the program is aborted. The downloaded content |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2223 is written to the file indicated by 'path'. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2224 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2225 d = dirname(path) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2226 if d != '' and not exists(d): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2227 os.makedirs(d) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2228 |
15925
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2229 assert not path.endswith(os.sep) |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2230 |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2231 myDir = dirname(__file__) |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2232 javaSource = join(myDir, 'URLConnectionDownload.java') |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2233 javaClass = join(myDir, 'URLConnectionDownload.class') |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2234 if not exists(javaClass) or getmtime(javaClass) < getmtime(javaSource): |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2235 subprocess.check_call([java().javac, '-d', myDir, javaSource]) |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2236 verbose = [] |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2237 if sys.stderr.isatty(): |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2238 verbose.append("-v") |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2239 if run([java().java, '-cp', myDir, 'URLConnectionDownload', path] + verbose + urls, nonZeroIsFatal=False) == 0: |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2240 return |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2241 |
4188
148fa38782e8
Downloads are attempted via Java first since it shows a progress counter.
Doug Simon <doug.simon@oracle.com>
parents:
4186
diff
changeset
|
2242 abort('Could not download to ' + path + ' from any of the following URLs:\n\n ' + |
148fa38782e8
Downloads are attempted via Java first since it shows a progress counter.
Doug Simon <doug.simon@oracle.com>
parents:
4186
diff
changeset
|
2243 '\n '.join(urls) + '\n\nPlease use a web browser to do the download manually') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2244 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2245 def update_file(path, content): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2246 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2247 Updates a file with some given content if the content differs from what's in |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2248 the file already. The return value indicates if the file was updated. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2249 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2250 existed = exists(path) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2251 try: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2252 old = None |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2253 if existed: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2254 with open(path, 'rb') as f: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2255 old = f.read() |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2256 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2257 if old == content: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2258 return False |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2259 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2260 with open(path, 'wb') as f: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2261 f.write(content) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2262 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2263 log(('modified ' if existed else 'created ') + path) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2264 return True |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2265 except IOError as e: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2266 abort('Error while writing to ' + path + ': ' + str(e)) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2267 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2268 # Builtin commands |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2269 |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2270 def _defaultEcjPath(): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2271 return get_env('JDT', join(_primary_suite.mxDir, 'ecj.jar')) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2272 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2273 class JavaCompileTask: |
15496
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2274 def __init__(self, args, proj, reason, javafilelist, jdk, outputDir, jdtJar, deps): |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2275 self.proj = proj |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2276 self.reason = reason |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2277 self.javafilelist = javafilelist |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2278 self.deps = deps |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2279 self.jdk = jdk |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2280 self.outputDir = outputDir |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2281 self.done = False |
15496
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2282 self.jdtJar = jdtJar |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2283 self.args = args |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2284 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2285 def __str__(self): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2286 return self.proj.name |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2287 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2288 def logCompilation(self, compiler): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2289 log('Compiling Java sources for {} with {}... [{}]'.format(self.proj.name, compiler, self.reason)) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2290 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2291 def execute(self): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2292 argfileName = join(self.proj.dir, 'javafilelist.txt') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2293 argfile = open(argfileName, 'wb') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2294 argfile.write('\n'.join(self.javafilelist)) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2295 argfile.close() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2296 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2297 processorArgs = [] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2298 |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2299 processorPath = self.proj.annotation_processors_path() |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2300 if processorPath: |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2301 genDir = self.proj.source_gen_dir() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2302 if exists(genDir): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2303 shutil.rmtree(genDir) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2304 os.mkdir(genDir) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2305 processorArgs += ['-processorpath', join(processorPath), '-s', genDir] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2306 else: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2307 processorArgs += ['-proc:none'] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2308 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2309 args = self.args |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2310 jdk = self.jdk |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2311 outputDir = self.outputDir |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2312 compliance = str(jdk.javaCompliance) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2313 cp = classpath(self.proj.name, includeSelf=True) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2314 toBeDeleted = [argfileName] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2315 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2316 try: |
15496
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2317 if not self.jdtJar: |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2318 mainJava = java() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2319 if not args.error_prone: |
16062
a864a411fad3
mx: added -alt-javac option to build command to support an external javac executable (or javac wrapper)
Doug Simon <doug.simon@oracle.com>
parents:
16005
diff
changeset
|
2320 javac = args.alt_javac if args.alt_javac else mainJava.javac |
a864a411fad3
mx: added -alt-javac option to build command to support an external javac executable (or javac wrapper)
Doug Simon <doug.simon@oracle.com>
parents:
16005
diff
changeset
|
2321 self.logCompilation('javac' if not args.alt_javac else args.alt_javac) |
a864a411fad3
mx: added -alt-javac option to build command to support an external javac executable (or javac wrapper)
Doug Simon <doug.simon@oracle.com>
parents:
16005
diff
changeset
|
2322 javacCmd = [javac, '-g', '-J-Xmx1g', '-source', compliance, '-target', compliance, '-classpath', cp, '-d', outputDir, '-bootclasspath', jdk.bootclasspath(), '-endorseddirs', jdk.endorseddirs(), '-extdirs', jdk.extdirs()] |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2323 if jdk.debug_port is not None: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2324 javacCmd += ['-J-Xdebug', '-J-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=' + str(jdk.debug_port)] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2325 javacCmd += processorArgs |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2326 javacCmd += ['@' + argfile.name] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2327 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2328 if not args.warnAPI: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2329 javacCmd.append('-XDignore.symbol.file') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2330 run(javacCmd) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2331 else: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2332 self.logCompilation('javac (with error-prone)') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2333 javaArgs = ['-Xmx1g'] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2334 javacArgs = ['-g', '-source', compliance, '-target', compliance, '-classpath', cp, '-d', outputDir, '-bootclasspath', jdk.bootclasspath(), '-endorseddirs', jdk.endorseddirs(), '-extdirs', jdk.extdirs()] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2335 javacArgs += processorArgs |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2336 javacArgs += ['@' + argfile.name] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2337 if not args.warnAPI: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2338 javacArgs.append('-XDignore.symbol.file') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2339 run_java(javaArgs + ['-cp', os.pathsep.join([mainJava.toolsjar, args.error_prone]), 'com.google.errorprone.ErrorProneCompiler'] + javacArgs) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2340 else: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2341 self.logCompilation('JDT') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2342 |
15496
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2343 jdtVmArgs = ['-Xmx1g', '-jar', self.jdtJar] |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2344 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2345 jdtArgs = ['-' + compliance, |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2346 '-cp', cp, '-g', '-enableJavadoc', |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2347 '-d', outputDir, |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2348 '-bootclasspath', jdk.bootclasspath(), |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2349 '-endorseddirs', jdk.endorseddirs(), |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2350 '-extdirs', jdk.extdirs()] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2351 jdtArgs += processorArgs |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2352 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2353 jdtProperties = join(self.proj.dir, '.settings', 'org.eclipse.jdt.core.prefs') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2354 rootJdtProperties = join(self.proj.suite.mxDir, 'eclipse-settings', 'org.eclipse.jdt.core.prefs') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2355 if not exists(jdtProperties) or os.path.getmtime(jdtProperties) < os.path.getmtime(rootJdtProperties): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2356 # Try to fix a missing properties file by running eclipseinit |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
2357 _eclipseinit_project(self.proj) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2358 if not exists(jdtProperties): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2359 log('JDT properties file {0} not found'.format(jdtProperties)) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2360 else: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2361 with open(jdtProperties) as fp: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2362 origContent = fp.read() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2363 content = origContent |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2364 if args.jdt_warning_as_error: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2365 content = content.replace('=warning', '=error') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2366 if not args.jdt_show_task_tags: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2367 content = content + '\norg.eclipse.jdt.core.compiler.problem.tasks=ignore' |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2368 if origContent != content: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2369 jdtPropertiesTmp = jdtProperties + '.tmp' |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2370 with open(jdtPropertiesTmp, 'w') as fp: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2371 fp.write(content) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2372 toBeDeleted.append(jdtPropertiesTmp) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2373 jdtArgs += ['-properties', jdtPropertiesTmp] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2374 else: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2375 jdtArgs += ['-properties', jdtProperties] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2376 jdtArgs.append('@' + argfile.name) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2377 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2378 run_java(jdtVmArgs + jdtArgs) |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2379 |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2380 # Create annotation processor jar for a project that defines annotation processors |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2381 if self.proj.definedAnnotationProcessorsDist: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2382 self.proj.definedAnnotationProcessorsDist.make_archive() |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2383 |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2384 finally: |
16947
7dbe1207fccf
mx: do not clean up temp files from the build command if -v is specified
Doug Simon <doug.simon@oracle.com>
parents:
16945
diff
changeset
|
2385 # Do not clean up temp files if verbose as there's |
7dbe1207fccf
mx: do not clean up temp files from the build command if -v is specified
Doug Simon <doug.simon@oracle.com>
parents:
16945
diff
changeset
|
2386 # a good chance the user wants to copy and paste the |
7dbe1207fccf
mx: do not clean up temp files from the build command if -v is specified
Doug Simon <doug.simon@oracle.com>
parents:
16945
diff
changeset
|
2387 # Java compiler command directly |
7dbe1207fccf
mx: do not clean up temp files from the build command if -v is specified
Doug Simon <doug.simon@oracle.com>
parents:
16945
diff
changeset
|
2388 if not _opts.verbose: |
7dbe1207fccf
mx: do not clean up temp files from the build command if -v is specified
Doug Simon <doug.simon@oracle.com>
parents:
16945
diff
changeset
|
2389 for n in toBeDeleted: |
7dbe1207fccf
mx: do not clean up temp files from the build command if -v is specified
Doug Simon <doug.simon@oracle.com>
parents:
16945
diff
changeset
|
2390 os.remove(n) |
7dbe1207fccf
mx: do not clean up temp files from the build command if -v is specified
Doug Simon <doug.simon@oracle.com>
parents:
16945
diff
changeset
|
2391 |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2392 self.done = True |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2393 |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2394 def build(args, parser=None): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2395 """compile the Java and C sources, linking the latter |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2396 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2397 Compile all the Java source code using the appropriate compilers |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2398 and linkers for the various source code types.""" |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2399 |
4234
057620486c90
Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents:
4227
diff
changeset
|
2400 suppliedParser = parser is not None |
057620486c90
Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents:
4227
diff
changeset
|
2401 if not suppliedParser: |
057620486c90
Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents:
4227
diff
changeset
|
2402 parser = ArgumentParser(prog='mx build') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2403 |
4234
057620486c90
Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents:
4227
diff
changeset
|
2404 parser = parser if parser is not None else ArgumentParser(prog='mx build') |
5239
b9db4fee6eb2
skip a native build if all files in src and make are older than the timestamp of the previous build
Doug Simon <doug.simon@oracle.com>
parents:
5219
diff
changeset
|
2405 parser.add_argument('-f', action='store_true', dest='force', help='force build (disables timestamp checking)') |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2406 parser.add_argument('-c', action='store_true', dest='clean', help='removes existing build output') |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2407 parser.add_argument('-p', action='store_true', dest='parallelize', help='parallelizes Java compilation') |
14763 | 2408 parser.add_argument('--source', dest='compliance', help='Java compliance level for projects without an explicit one') |
4147
55376d8953a6
Improved 'build' and 'clean' commands.
Doug Simon <doug.simon@oracle.com>
parents:
4145
diff
changeset
|
2409 parser.add_argument('--Wapi', action='store_true', dest='warnAPI', help='show warnings about using internal APIs') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2410 parser.add_argument('--projects', action='store', help='comma separated projects to build (omit to build all projects)') |
6535
f938212e56ab
Improvements of annotation processor functionality in mx script; allow javac to be run in debugger in order to debug annotation processor
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6533
diff
changeset
|
2411 parser.add_argument('--only', action='store', help='comma separated projects to build, without checking their dependencies (omit to build all projects)') |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2412 parser.add_argument('--no-java', action='store_false', dest='java', help='do not build Java projects') |
4147
55376d8953a6
Improved 'build' and 'clean' commands.
Doug Simon <doug.simon@oracle.com>
parents:
4145
diff
changeset
|
2413 parser.add_argument('--no-native', action='store_false', dest='native', help='do not build native projects') |
5778
74c802348d1f
added --jdt-warning-as-error option to 'mx build'
Doug Simon <doug.simon@oracle.com>
parents:
5771
diff
changeset
|
2414 parser.add_argument('--jdt-warning-as-error', action='store_true', help='convert all Eclipse batch compiler warnings to errors') |
15118
3a1f48125f53
added --jdt-show-task-tags option to build command
Doug Simon <doug.simon@oracle.com>
parents:
15087
diff
changeset
|
2415 parser.add_argument('--jdt-show-task-tags', action='store_true', help='show task tags as Eclipse batch compiler warnings') |
16062
a864a411fad3
mx: added -alt-javac option to build command to support an external javac executable (or javac wrapper)
Doug Simon <doug.simon@oracle.com>
parents:
16005
diff
changeset
|
2416 parser.add_argument('--alt-javac', dest='alt_javac', help='path to alternative javac executable', metavar='<path>') |
15376
b3cd96f137a6
mx build: make --error-prone, --jdt and --force-javac mutually exclusive
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15364
diff
changeset
|
2417 compilerSelect = parser.add_mutually_exclusive_group() |
b3cd96f137a6
mx build: make --error-prone, --jdt and --force-javac mutually exclusive
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15364
diff
changeset
|
2418 compilerSelect.add_argument('--error-prone', dest='error_prone', help='path to error-prone.jar', metavar='<path>') |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2419 compilerSelect.add_argument('--jdt', help='path to ecj.jar, the Eclipse batch compiler', default=_defaultEcjPath(), metavar='<path>') |
16062
a864a411fad3
mx: added -alt-javac option to build command to support an external javac executable (or javac wrapper)
Doug Simon <doug.simon@oracle.com>
parents:
16005
diff
changeset
|
2420 compilerSelect.add_argument('--force-javac', action='store_true', dest='javac', help='use javac whether ecj.jar is found or not') |
15378
dea98caac669
Fix help text for ideinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15376
diff
changeset
|
2421 |
4234
057620486c90
Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents:
4227
diff
changeset
|
2422 if suppliedParser: |
057620486c90
Improved time stamps of gate tasks to show duration of each task explicitly.
Doug Simon <doug.simon@oracle.com>
parents:
4227
diff
changeset
|
2423 parser.add_argument('remainder', nargs=REMAINDER, metavar='...') |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2424 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2425 args = parser.parse_args(args) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2426 |
15496
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2427 jdtJar = None |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2428 if not args.javac and args.jdt is not None: |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2429 if not args.jdt.endswith('.jar'): |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2430 abort('Path for Eclipse batch compiler does not look like a jar file: ' + args.jdt) |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2431 jdtJar = args.jdt |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2432 if not exists(jdtJar): |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2433 if os.path.abspath(jdtJar) == os.path.abspath(_defaultEcjPath()) and get_env('JDT', None) is None: |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2434 # Silently ignore JDT if default location is used but does not exist |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2435 jdtJar = None |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2436 else: |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2437 abort('Eclipse batch compiler jar does not exist: ' + args.jdt) |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2438 |
6535
f938212e56ab
Improvements of annotation processor functionality in mx script; allow javac to be run in debugger in order to debug annotation processor
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6533
diff
changeset
|
2439 if args.only is not None: |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
2440 # N.B. This build will not include dependencies including annotation processor dependencies |
6535
f938212e56ab
Improvements of annotation processor functionality in mx script; allow javac to be run in debugger in order to debug annotation processor
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6533
diff
changeset
|
2441 sortedProjects = [project(name) for name in args.only.split(',')] |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
2442 else: |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
2443 if args.projects is not None: |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
2444 projectNames = args.projects.split(',') |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
2445 else: |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
2446 projectNames = None |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
2447 |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
2448 projects = _projects_opt_limit_to_suites(projects_from_names(projectNames)) |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
2449 # N.B. Limiting to a suite only affects the starting set of projects. Dependencies in other suites will still be compiled |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
2450 sortedProjects = sorted_project_deps(projects, includeAnnotationProcessors=True) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2451 |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
2452 if args.java: |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2453 ideinit([], refreshOnly=True, buildProcessorJars=False) |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
2454 |
12631
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2455 def prepareOutputDirs(p, clean): |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2456 outputDir = p.output_dir() |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2457 if exists(outputDir): |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2458 if clean: |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2459 log('Cleaning {0}...'.format(outputDir)) |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2460 shutil.rmtree(outputDir) |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2461 os.mkdir(outputDir) |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2462 else: |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2463 os.mkdir(outputDir) |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2464 genDir = p.source_gen_dir() |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2465 if genDir != '' and exists(genDir) and clean: |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2466 log('Cleaning {0}...'.format(genDir)) |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2467 for f in os.listdir(genDir): |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2468 shutil.rmtree(join(genDir, f)) |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2469 return outputDir |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2470 |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2471 tasks = {} |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2472 updatedAnnotationProcessorDists = set() |
6535
f938212e56ab
Improvements of annotation processor functionality in mx script; allow javac to be run in debugger in order to debug annotation processor
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6533
diff
changeset
|
2473 for p in sortedProjects: |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2474 if p.native: |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2475 if args.native: |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2476 log('Calling GNU make {0}...'.format(p.dir)) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2477 |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2478 if args.clean: |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2479 run([gmake_cmd(), 'clean'], cwd=p.dir) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2480 |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2481 run([gmake_cmd()], cwd=p.dir) |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2482 continue |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2483 else: |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2484 if not args.java: |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2485 continue |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2486 if exists(join(p.dir, 'plugin.xml')): # eclipse plugin project |
5853
767312416f6a
added support to mx for specifying library sources
Doug Simon <doug.simon@oracle.com>
parents:
5824
diff
changeset
|
2487 continue |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2488 |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2489 # skip building this Java project if its Java compliance level is "higher" than the configured JDK |
14763 | 2490 requiredCompliance = p.javaCompliance if p.javaCompliance else JavaCompliance(args.compliance) if args.compliance else None |
2491 jdk = java(requiredCompliance) | |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
2492 assert jdk |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2493 |
12631
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2494 outputDir = prepareOutputDirs(p, args.clean) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2495 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2496 sourceDirs = p.source_dirs() |
15386
1439685d06e4
mx: log reason why Java classes are being (re)built
Doug Simon <doug.simon@oracle.com>
parents:
15378
diff
changeset
|
2497 buildReason = 'forced build' if args.force else None |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2498 taskDeps = [] |
16670
4ae1d1ed5cc1
fixed regression in use of -f option to 'mx build'
Doug Simon <doug.simon@oracle.com>
parents:
16667
diff
changeset
|
2499 for dep in p.all_deps([], includeLibs=False, includeAnnotationProcessors=True): |
4ae1d1ed5cc1
fixed regression in use of -f option to 'mx build'
Doug Simon <doug.simon@oracle.com>
parents:
16667
diff
changeset
|
2500 taskDep = tasks.get(dep.name) |
4ae1d1ed5cc1
fixed regression in use of -f option to 'mx build'
Doug Simon <doug.simon@oracle.com>
parents:
16667
diff
changeset
|
2501 if taskDep: |
4ae1d1ed5cc1
fixed regression in use of -f option to 'mx build'
Doug Simon <doug.simon@oracle.com>
parents:
16667
diff
changeset
|
2502 if not buildReason: |
4ae1d1ed5cc1
fixed regression in use of -f option to 'mx build'
Doug Simon <doug.simon@oracle.com>
parents:
16667
diff
changeset
|
2503 buildReason = dep.name + ' rebuilt' |
4ae1d1ed5cc1
fixed regression in use of -f option to 'mx build'
Doug Simon <doug.simon@oracle.com>
parents:
16667
diff
changeset
|
2504 taskDeps.append(taskDep) |
12631
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2505 |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2506 jasminAvailable = None |
4247
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
2507 javafilelist = [] |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2508 for sourceDir in sourceDirs: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2509 for root, _, files in os.walk(sourceDir): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2510 javafiles = [join(root, name) for name in files if name.endswith('.java') and name != 'package-info.java'] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2511 javafilelist += javafiles |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2512 |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2513 # Copy all non Java resources or assemble Jasmin files |
4247
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
2514 nonjavafilelist = [join(root, name) for name in files if not name.endswith('.java')] |
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
2515 for src in nonjavafilelist: |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2516 if src.endswith('.jasm'): |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2517 className = None |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2518 with open(src) as f: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2519 for line in f: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2520 if line.startswith('.class '): |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2521 className = line.split()[-1] |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2522 break |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2523 |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2524 if className is not None: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2525 jasminOutputDir = p.jasmin_output_dir() |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2526 classFile = join(jasminOutputDir, className.replace('/', os.sep) + '.class') |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2527 if exists(dirname(classFile)) and (not exists(classFile) or os.path.getmtime(classFile) < os.path.getmtime(src)): |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2528 if jasminAvailable is None: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2529 try: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2530 with open(os.devnull) as devnull: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2531 subprocess.call('jasmin', stdout=devnull, stderr=subprocess.STDOUT) |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2532 jasminAvailable = True |
5071
9d055af068a8
Made Java builds look for mx/ecj.jar to use Eclipse batch compiler by default.
Doug Simon <doug.simon@oracle.com>
parents:
5032
diff
changeset
|
2533 except OSError: |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2534 jasminAvailable = False |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2535 |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2536 if jasminAvailable: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2537 log('Assembling Jasmin file ' + src) |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2538 run(['jasmin', '-d', jasminOutputDir, src]) |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2539 else: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2540 log('The jasmin executable could not be found - skipping ' + src) |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2541 with file(classFile, 'a'): |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2542 os.utime(classFile, None) |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2543 |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2544 else: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2545 log('could not file .class directive in Jasmin source: ' + src) |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2546 else: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2547 dst = join(outputDir, src[len(sourceDir) + 1:]) |
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:
6535
diff
changeset
|
2548 if not exists(dirname(dst)): |
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:
6535
diff
changeset
|
2549 os.makedirs(dirname(dst)) |
7299
57edf6b07d36
Removed ANT_JAR_TOOL dependency. Eclipse jar builds are now calling the command 'mx jar ${projectName}'.
Christian Humer <christian.humer@gmail.com>
parents:
7293
diff
changeset
|
2550 if exists(dirname(dst)) and (not exists(dst) or os.path.getmtime(dst) < os.path.getmtime(src)): |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2551 shutil.copyfile(src, dst) |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2552 |
15386
1439685d06e4
mx: log reason why Java classes are being (re)built
Doug Simon <doug.simon@oracle.com>
parents:
15378
diff
changeset
|
2553 if not buildReason: |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2554 for javafile in javafiles: |
12631
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2555 classfile = TimeStampFile(outputDir + javafile[len(sourceDir):-len('java')] + 'class') |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2556 if not classfile.exists() or classfile.isOlderThan(javafile): |
15386
1439685d06e4
mx: log reason why Java classes are being (re)built
Doug Simon <doug.simon@oracle.com>
parents:
15378
diff
changeset
|
2557 buildReason = 'class file(s) out of date' |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2558 break |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2559 |
12631
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2560 apsOutOfDate = p.update_current_annotation_processors_file() |
2303d9e199e3
rebuild projects if their annotation processor dependencies change; clean output directories before (re)compiling a Java project
Doug Simon <doug.simon@oracle.com>
parents:
12630
diff
changeset
|
2561 if apsOutOfDate: |
15386
1439685d06e4
mx: log reason why Java classes are being (re)built
Doug Simon <doug.simon@oracle.com>
parents:
15378
diff
changeset
|
2562 buildReason = 'annotation processor(s) changed' |
1439685d06e4
mx: log reason why Java classes are being (re)built
Doug Simon <doug.simon@oracle.com>
parents:
15378
diff
changeset
|
2563 |
1439685d06e4
mx: log reason why Java classes are being (re)built
Doug Simon <doug.simon@oracle.com>
parents:
15378
diff
changeset
|
2564 if not buildReason: |
10568
070b4a3c56f3
disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents:
10530
diff
changeset
|
2565 logv('[all class files for {0} are up to date - skipping]'.format(p.name)) |
4247
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
2566 continue |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2567 |
4247
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
2568 if len(javafilelist) == 0: |
10568
070b4a3c56f3
disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents:
10530
diff
changeset
|
2569 logv('[no Java sources for {0} - skipping]'.format(p.name)) |
4247
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
2570 continue |
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
2571 |
16945
5e5f5073d713
mx: Make java file list order deterministic
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16944
diff
changeset
|
2572 javafilelist = sorted(javafilelist) |
5e5f5073d713
mx: Make java file list order deterministic
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16944
diff
changeset
|
2573 |
15496
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2574 task = JavaCompileTask(args, p, buildReason, javafilelist, jdk, outputDir, jdtJar, taskDeps) |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2575 if p.definedAnnotationProcessorsDist: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2576 updatedAnnotationProcessorDists.add(p.definedAnnotationProcessorsDist) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2577 |
17050
49b8c8932786
projects must be rebuilt when any of their dependencies are rebuilt
Doug Simon <doug.simon@oracle.com>
parents:
17013
diff
changeset
|
2578 tasks[p.name] = task |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2579 if args.parallelize: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2580 # Best to initialize class paths on main process |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2581 jdk.bootclasspath() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2582 task.proc = None |
5876
c21886d4e125
Annotation Processor support in mx : use annotationProcessorClasses property on projects that contain annotation processors and annotationProcessors on projects that require annotation processing
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
5854
diff
changeset
|
2583 else: |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2584 task.execute() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2585 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2586 if args.parallelize: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2587 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2588 def joinTasks(tasks): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2589 failed = [] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2590 for t in tasks: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2591 t.proc.join() |
15786
d54cca247d0b
mx: propagate failure from forked Java compilation task back up to parent (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15785
diff
changeset
|
2592 _removeSubprocess(t.sub) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2593 if t.proc.exitcode != 0: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2594 failed.append(t) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2595 return failed |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2596 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2597 def checkTasks(tasks): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2598 active = [] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2599 for t in tasks: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2600 if t.proc.is_alive(): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2601 active.append(t) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2602 else: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2603 if t.proc.exitcode != 0: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2604 return ([], joinTasks(tasks)) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2605 return (active, []) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2606 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2607 def remainingDepsDepth(task): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2608 if task._d is None: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2609 incompleteDeps = [d for d in task.deps if d.proc is None or d.proc.is_alive()] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2610 if len(incompleteDeps) == 0: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2611 task._d = 0 |
14913
2d1cc640512c
Add possibility to build using error-prone instead of javac.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14907
diff
changeset
|
2612 else: |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2613 task._d = max([remainingDepsDepth(t) for t in incompleteDeps]) + 1 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2614 return task._d |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2615 |
15490
5d0dd6a6f6b3
mx: improved heuristics for sorting remaining tasks in parallel Java build worklist
Doug Simon <doug.simon@oracle.com>
parents:
15489
diff
changeset
|
2616 def compareTasks(t1, t2): |
5d0dd6a6f6b3
mx: improved heuristics for sorting remaining tasks in parallel Java build worklist
Doug Simon <doug.simon@oracle.com>
parents:
15489
diff
changeset
|
2617 d = remainingDepsDepth(t1) - remainingDepsDepth(t2) |
5d0dd6a6f6b3
mx: improved heuristics for sorting remaining tasks in parallel Java build worklist
Doug Simon <doug.simon@oracle.com>
parents:
15489
diff
changeset
|
2618 if d == 0: |
15497
1f28c463e452
mx: slight tweak of parallel Java build heuristics
Doug Simon <doug.simon@oracle.com>
parents:
15496
diff
changeset
|
2619 t1Work = (1 + len(t1.proj.annotation_processors())) * len(t1.javafilelist) |
1f28c463e452
mx: slight tweak of parallel Java build heuristics
Doug Simon <doug.simon@oracle.com>
parents:
15496
diff
changeset
|
2620 t2Work = (1 + len(t2.proj.annotation_processors())) * len(t2.javafilelist) |
1f28c463e452
mx: slight tweak of parallel Java build heuristics
Doug Simon <doug.simon@oracle.com>
parents:
15496
diff
changeset
|
2621 d = t1Work - t2Work |
15490
5d0dd6a6f6b3
mx: improved heuristics for sorting remaining tasks in parallel Java build worklist
Doug Simon <doug.simon@oracle.com>
parents:
15489
diff
changeset
|
2622 return d |
5d0dd6a6f6b3
mx: improved heuristics for sorting remaining tasks in parallel Java build worklist
Doug Simon <doug.simon@oracle.com>
parents:
15489
diff
changeset
|
2623 |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2624 def sortWorklist(tasks): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2625 for t in tasks: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2626 t._d = None |
15490
5d0dd6a6f6b3
mx: improved heuristics for sorting remaining tasks in parallel Java build worklist
Doug Simon <doug.simon@oracle.com>
parents:
15489
diff
changeset
|
2627 return sorted(tasks, compareTasks) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2628 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2629 cpus = multiprocessing.cpu_count() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2630 worklist = sortWorklist(tasks.values()) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2631 active = [] |
15786
d54cca247d0b
mx: propagate failure from forked Java compilation task back up to parent (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15785
diff
changeset
|
2632 failed = [] |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2633 while len(worklist) != 0: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2634 while True: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2635 active, failed = checkTasks(active) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2636 if len(failed) != 0: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2637 assert not active, active |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2638 break |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2639 if len(active) == cpus: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2640 # Sleep for 1 second |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2641 time.sleep(1) |
5071
9d055af068a8
Made Java builds look for mx/ecj.jar to use Eclipse batch compiler by default.
Doug Simon <doug.simon@oracle.com>
parents:
5032
diff
changeset
|
2642 else: |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2643 break |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2644 |
15786
d54cca247d0b
mx: propagate failure from forked Java compilation task back up to parent (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15785
diff
changeset
|
2645 if len(failed) != 0: |
d54cca247d0b
mx: propagate failure from forked Java compilation task back up to parent (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15785
diff
changeset
|
2646 break |
d54cca247d0b
mx: propagate failure from forked Java compilation task back up to parent (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15785
diff
changeset
|
2647 |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2648 def executeTask(task): |
15781
8b9e7f235d85
mx: fixed spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15701
diff
changeset
|
2649 # Clear sub-process list cloned from parent process |
8b9e7f235d85
mx: fixed spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15701
diff
changeset
|
2650 del _currentSubprocesses[:] |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2651 task.execute() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2652 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2653 def depsDone(task): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2654 for d in task.deps: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2655 if d.proc is None or d.proc.exitcode is None: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2656 return False |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2657 return True |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2658 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2659 for task in worklist: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2660 if depsDone(task): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2661 worklist.remove(task) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2662 task.proc = multiprocessing.Process(target=executeTask, args=(task,)) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2663 task.proc.start() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2664 active.append(task) |
15489
d0e3f6963ed7
mx: made parallel Java builds interact correctly with management of subprocesses upon abort/quit
Doug Simon <doug.simon@oracle.com>
parents:
15462
diff
changeset
|
2665 task.sub = _addSubprocess(task.proc, ['JavaCompileTask', str(task)]) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2666 if len(active) == cpus: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2667 break |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2668 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2669 worklist = sortWorklist(worklist) |
15786
d54cca247d0b
mx: propagate failure from forked Java compilation task back up to parent (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15785
diff
changeset
|
2670 |
d54cca247d0b
mx: propagate failure from forked Java compilation task back up to parent (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15785
diff
changeset
|
2671 failed += joinTasks(active) |
d54cca247d0b
mx: propagate failure from forked Java compilation task back up to parent (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15785
diff
changeset
|
2672 if len(failed): |
d54cca247d0b
mx: propagate failure from forked Java compilation task back up to parent (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15785
diff
changeset
|
2673 for t in failed: |
d54cca247d0b
mx: propagate failure from forked Java compilation task back up to parent (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15785
diff
changeset
|
2674 log('Compiling {} failed'.format(t.proj.name)) |
d54cca247d0b
mx: propagate failure from forked Java compilation task back up to parent (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15785
diff
changeset
|
2675 abort('{} Java compilation tasks failed'.format(len(failed))) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2676 |
16875
73d994651fcd
fixed regression when building original VM without a Java build beforehand
Doug Simon <doug.simon@oracle.com>
parents:
16849
diff
changeset
|
2677 if args.java: |
73d994651fcd
fixed regression when building original VM without a Java build beforehand
Doug Simon <doug.simon@oracle.com>
parents:
16849
diff
changeset
|
2678 for dist in sorted_dists(): |
73d994651fcd
fixed regression when building original VM without a Java build beforehand
Doug Simon <doug.simon@oracle.com>
parents:
16849
diff
changeset
|
2679 if dist not in updatedAnnotationProcessorDists: |
73d994651fcd
fixed regression when building original VM without a Java build beforehand
Doug Simon <doug.simon@oracle.com>
parents:
16849
diff
changeset
|
2680 archive(['@' + dist.name]) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2681 |
4247
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
2682 if suppliedParser: |
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
2683 return args |
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
2684 return None |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2685 |
15274
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2686 def _chunk_files_for_command_line(files, limit=None, pathFunction=None): |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2687 """ |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2688 Returns a generator for splitting up a list of files into chunks such that the |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2689 size of the space separated file paths in a chunk is less than a given limit. |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2690 This is used to work around system command line length limits. |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2691 """ |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2692 chunkSize = 0 |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2693 chunkStart = 0 |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2694 if limit is None: |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2695 commandLinePrefixAllowance = 3000 |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2696 if get_os() == 'windows': |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2697 # The CreateProcess function on Windows limits the length of a command line to |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2698 # 32,768 characters (http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx) |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2699 limit = 32768 - commandLinePrefixAllowance |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2700 else: |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2701 # Using just SC_ARG_MAX without extra downwards adjustment |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2702 # results in "[Errno 7] Argument list too long" on MacOS. |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2703 syslimit = os.sysconf('SC_ARG_MAX') - 20000 |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2704 limit = syslimit - commandLinePrefixAllowance |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2705 for i in range(len(files)): |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2706 path = files[i] if pathFunction is None else pathFunction(files[i]) |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2707 size = len(path) + 1 |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2708 if chunkSize + size < limit: |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2709 chunkSize += size |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2710 else: |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2711 assert i > chunkStart |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2712 yield files[chunkStart:i] |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2713 chunkStart = i |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2714 chunkSize = 0 |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2715 if chunkStart == 0: |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2716 assert chunkSize < limit |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2717 yield files |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2718 |
7524
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2719 def eclipseformat(args): |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2720 """run the Eclipse Code Formatter on the Java sources |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2721 |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2722 The exit code 1 denotes that at least one file was modified.""" |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2723 |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2724 parser = ArgumentParser(prog='mx eclipseformat') |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2725 parser.add_argument('-e', '--eclipse-exe', help='location of the Eclipse executable') |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2726 parser.add_argument('-C', '--no-backup', action='store_false', dest='backup', help='do not save backup of modified files') |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2727 parser.add_argument('--projects', action='store', help='comma separated projects to process (omit to process all projects)') |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2728 |
7524
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2729 args = parser.parse_args(args) |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2730 if args.eclipse_exe is None: |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2731 args.eclipse_exe = os.environ.get('ECLIPSE_EXE') |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2732 if args.eclipse_exe is None: |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2733 abort('Could not find Eclipse executable. Use -e option or ensure ECLIPSE_EXE environment variable is set.') |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2734 |
8991
096725f4da58
the -e option to the eclipseformat can now also accept an Eclipse installation directory
Doug Simon <doug.simon@oracle.com>
parents:
8958
diff
changeset
|
2735 # Maybe an Eclipse installation dir was specified - look for the executable in it |
14553
6fb61ad67962
Fix mx eclipseformat always adds the 'eclipse' suffix
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14539
diff
changeset
|
2736 if isdir(args.eclipse_exe): |
8991
096725f4da58
the -e option to the eclipseformat can now also accept an Eclipse installation directory
Doug Simon <doug.simon@oracle.com>
parents:
8958
diff
changeset
|
2737 args.eclipse_exe = join(args.eclipse_exe, exe_suffix('eclipse')) |
14553
6fb61ad67962
Fix mx eclipseformat always adds the 'eclipse' suffix
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14539
diff
changeset
|
2738 warn("The eclipse-exe was a directory, now using " + args.eclipse_exe) |
6fb61ad67962
Fix mx eclipseformat always adds the 'eclipse' suffix
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14539
diff
changeset
|
2739 |
6fb61ad67962
Fix mx eclipseformat always adds the 'eclipse' suffix
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14539
diff
changeset
|
2740 if not os.path.isfile(args.eclipse_exe): |
6fb61ad67962
Fix mx eclipseformat always adds the 'eclipse' suffix
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14539
diff
changeset
|
2741 abort('File does not exist: ' + args.eclipse_exe) |
6fb61ad67962
Fix mx eclipseformat always adds the 'eclipse' suffix
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14539
diff
changeset
|
2742 if not os.access(args.eclipse_exe, os.X_OK): |
8991
096725f4da58
the -e option to the eclipseformat can now also accept an Eclipse installation directory
Doug Simon <doug.simon@oracle.com>
parents:
8958
diff
changeset
|
2743 abort('Not an executable file: ' + args.eclipse_exe) |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2744 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2745 eclipseinit([], buildProcessorJars=False) |
7524
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2746 |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2747 # build list of projects to be processed |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2748 projects = sorted_deps() |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2749 if args.projects is not None: |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2750 projects = [project(name) for name in args.projects.split(',')] |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2751 |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2752 class Batch: |
14874
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2753 def __init__(self, settingsDir, javaCompliance): |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2754 self.path = join(settingsDir, 'org.eclipse.jdt.core.prefs') |
14763 | 2755 self.javaCompliance = javaCompliance |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2756 self.javafiles = list() |
14874
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2757 with open(join(settingsDir, 'org.eclipse.jdt.ui.prefs')) as fp: |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2758 jdtUiPrefs = fp.read() |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2759 self.removeTrailingWhitespace = 'sp_cleanup.remove_trailing_whitespaces_all=true' in jdtUiPrefs |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2760 if self.removeTrailingWhitespace: |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2761 assert 'sp_cleanup.remove_trailing_whitespaces=true' in jdtUiPrefs and 'sp_cleanup.remove_trailing_whitespaces_ignore_empty=false' in jdtUiPrefs |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2762 |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2763 def settings(self): |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2764 with open(self.path) as fp: |
14874
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2765 return fp.read() + java(self.javaCompliance).java + str(self.removeTrailingWhitespace) |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2766 |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2767 class FileInfo: |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2768 def __init__(self, path): |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2769 self.path = path |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2770 with open(path) as fp: |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2771 self.content = fp.read() |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2772 self.times = (os.path.getatime(path), os.path.getmtime(path)) |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2773 |
14874
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2774 def update(self, removeTrailingWhitespace): |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2775 with open(self.path) as fp: |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2776 content = fp.read() |
14874
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2777 |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2778 if self.content != content: |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2779 # Only apply *after* formatting to match the order in which the IDE does it |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2780 if removeTrailingWhitespace: |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2781 content, n = re.subn(r'[ \t]+$', '', content, flags=re.MULTILINE) |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2782 if n != 0 and self.content == content: |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2783 # undo on-disk changes made by the Eclipse formatter |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2784 with open(self.path, 'w') as fp: |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2785 fp.write(content) |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2786 |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2787 if self.content != content: |
14626
4f8268dee8aa
mx: eclipseformat now prints all the changes that were found to the console.
Christian Humer <christian.humer@gmail.com>
parents:
14553
diff
changeset
|
2788 self.diff = difflib.unified_diff(self.content.splitlines(1), content.splitlines(1)) |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2789 self.content = content |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2790 return True |
14874
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2791 |
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2792 # reset access and modification time of file |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2793 os.utime(self.path, self.times) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2794 |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2795 modified = list() |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2796 batches = dict() # all sources with the same formatting settings are formatted together |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2797 for p in projects: |
7524
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2798 if p.native: |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2799 continue |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2800 sourceDirs = p.source_dirs() |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2801 |
14874
7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
Doug Simon <doug.simon@oracle.com>
parents:
14785
diff
changeset
|
2802 batch = Batch(join(p.dir, '.settings'), p.javaCompliance) |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2803 |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2804 if not exists(batch.path): |
10568
070b4a3c56f3
disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents:
10530
diff
changeset
|
2805 if _opts.verbose: |
070b4a3c56f3
disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents:
10530
diff
changeset
|
2806 log('[no Eclipse Code Formatter preferences at {0} - skipping]'.format(batch.path)) |
7524
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2807 continue |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2808 |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2809 for sourceDir in sourceDirs: |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2810 for root, _, files in os.walk(sourceDir): |
7532
780269e56ddd
eclipseformat is also applied to package-info.java files
Doug Simon <doug.simon@oracle.com>
parents:
7528
diff
changeset
|
2811 for f in [join(root, name) for name in files if name.endswith('.java')]: |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2812 batch.javafiles.append(FileInfo(f)) |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2813 if len(batch.javafiles) == 0: |
10568
070b4a3c56f3
disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents:
10530
diff
changeset
|
2814 logv('[no Java sources in {0} - skipping]'.format(p.name)) |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2815 continue |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2816 |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2817 res = batches.setdefault(batch.settings(), batch) |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2818 if res is not batch: |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2819 res.javafiles = res.javafiles + batch.javafiles |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2820 |
15274
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2821 log("we have: " + str(len(batches)) + " batches") |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2822 for batch in batches.itervalues(): |
15274
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2823 for chunk in _chunk_files_for_command_line(batch.javafiles, pathFunction=lambda f: f.path): |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2824 run([args.eclipse_exe, |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2825 '-nosplash', |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2826 '-application', |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2827 'org.eclipse.jdt.core.JavaCodeFormatter', |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2828 '-vm', java(batch.javaCompliance).java, |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2829 '-config', batch.path] |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2830 + [f.path for f in chunk]) |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2831 for fi in chunk: |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2832 if fi.update(batch.removeTrailingWhitespace): |
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
2833 modified.append(fi) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2834 |
7524
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2835 log('{0} files were modified'.format(len(modified))) |
14626
4f8268dee8aa
mx: eclipseformat now prints all the changes that were found to the console.
Christian Humer <christian.humer@gmail.com>
parents:
14553
diff
changeset
|
2836 |
7524
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2837 if len(modified) != 0: |
13288
9c3c915b5f56
Log modiffied files during eclipseformat
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13266
diff
changeset
|
2838 arcbase = _primary_suite.dir |
7524
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2839 if args.backup: |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2840 backup = os.path.abspath('eclipseformat.backup.zip') |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2841 zf = zipfile.ZipFile(backup, 'w', zipfile.ZIP_DEFLATED) |
13288
9c3c915b5f56
Log modiffied files during eclipseformat
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13266
diff
changeset
|
2842 for fi in modified: |
9c3c915b5f56
Log modiffied files during eclipseformat
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13266
diff
changeset
|
2843 name = os.path.relpath(fi.path, arcbase) |
9c3c915b5f56
Log modiffied files during eclipseformat
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13266
diff
changeset
|
2844 log(' - {0}'.format(name)) |
14626
4f8268dee8aa
mx: eclipseformat now prints all the changes that were found to the console.
Christian Humer <christian.humer@gmail.com>
parents:
14553
diff
changeset
|
2845 log('Changes:') |
4f8268dee8aa
mx: eclipseformat now prints all the changes that were found to the console.
Christian Humer <christian.humer@gmail.com>
parents:
14553
diff
changeset
|
2846 log(''.join(fi.diff)) |
13288
9c3c915b5f56
Log modiffied files during eclipseformat
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13266
diff
changeset
|
2847 if args.backup: |
9c3c915b5f56
Log modiffied files during eclipseformat
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13266
diff
changeset
|
2848 arcname = name.replace(os.sep, '/') |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2849 zf.writestr(arcname, fi.content) |
13288
9c3c915b5f56
Log modiffied files during eclipseformat
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13266
diff
changeset
|
2850 if args.backup: |
7524
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2851 zf.close() |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2852 log('Wrote backup of {0} modified files to {1}'.format(len(modified), backup)) |
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2853 return 1 |
7533
29b0768b7ba6
added eclipseformat to the gate
Doug Simon <doug.simon@oracle.com>
parents:
7532
diff
changeset
|
2854 return 0 |
7524
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
2855 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2856 def processorjars(): |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2857 for s in suites(True): |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2858 _processorjars_suite(s) |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2859 |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2860 def _processorjars_suite(s): |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2861 projs = [p for p in s.projects if p.definedAnnotationProcessors is not None] |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2862 if len(projs) <= 0: |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2863 return [] |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2864 |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2865 pnames = [p.name for p in projs] |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2866 build(['--jdt-warning-as-error', '--projects', ",".join(pnames)]) |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2867 return [p.definedAnnotationProcessorsDist.path for p in s.projects if p.definedAnnotationProcessorsDist is not None] |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2868 |
11777
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2869 def pylint(args): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2870 """run pylint (if available) over Python source files (found by 'hg locate' or by tree walk with -walk)""" |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2871 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2872 parser = ArgumentParser(prog='mx pylint') |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2873 parser.add_argument('--walk', action='store_true', help='use tree walk find .py files') |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2874 args = parser.parse_args(args) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2875 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2876 rcfile = join(dirname(__file__), '.pylintrc') |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2877 if not exists(rcfile): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2878 log('pylint configuration file does not exist: ' + rcfile) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2879 return |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2880 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2881 try: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2882 output = subprocess.check_output(['pylint', '--version'], stderr=subprocess.STDOUT) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2883 m = re.match(r'.*pylint (\d+)\.(\d+)\.(\d+).*', output, re.DOTALL) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2884 if not m: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2885 log('could not determine pylint version from ' + output) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2886 return |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2887 major, minor, micro = (int(m.group(1)), int(m.group(2)), int(m.group(3))) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2888 if major < 1: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2889 log('require pylint version >= 1 (got {0}.{1}.{2})'.format(major, minor, micro)) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2890 return |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2891 except BaseException: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2892 log('pylint is not available') |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2893 return |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2894 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2895 def findfiles_by_walk(): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2896 result = [] |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2897 for suite in suites(True): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2898 for root, dirs, files in os.walk(suite.dir): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2899 for f in files: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2900 if f.endswith('.py'): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2901 pyfile = join(root, f) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2902 result.append(pyfile) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2903 if 'bin' in dirs: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2904 dirs.remove('bin') |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2905 if 'lib' in dirs: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2906 # avoids downloaded .py files |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2907 dirs.remove('lib') |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2908 return result |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2909 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2910 def findfiles_by_hg(): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2911 result = [] |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2912 for suite in suites(True): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2913 versioned = subprocess.check_output(['hg', 'locate', '-f'], stderr=subprocess.STDOUT, cwd=suite.dir).split(os.linesep) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2914 for f in versioned: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2915 if f.endswith('.py') and exists(f): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2916 result.append(f) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2917 return result |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2918 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2919 # Perhaps we should just look in suite.mxDir directories for .py files? |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2920 if args.walk: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2921 pyfiles = findfiles_by_walk() |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2922 else: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2923 pyfiles = findfiles_by_hg() |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2924 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2925 env = os.environ.copy() |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2926 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2927 pythonpath = dirname(__file__) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2928 for suite in suites(True): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2929 pythonpath = os.pathsep.join([pythonpath, suite.mxDir]) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2930 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2931 env['PYTHONPATH'] = pythonpath |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2932 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2933 for pyfile in pyfiles: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2934 log('Running pylint on ' + pyfile + '...') |
13266
78ed696884b3
fixed regression in pylint command (exit code must be non-zero if at least one warning/error was found)
Doug Simon <doug.simon@oracle.com>
parents:
13247
diff
changeset
|
2935 run(['pylint', '--reports=n', '--rcfile=' + rcfile, pyfile], env=env) |
11777
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2936 |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2937 """ |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2938 Utility for creating and updating a zip file atomically. |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2939 """ |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2940 class Archiver: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2941 def __init__(self, path): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2942 self.path = path |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2943 |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2944 def __enter__(self): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2945 if self.path: |
16682
63706366f6c5
moved distribution artifacts into build/ sub-directory
Doug Simon <doug.simon@oracle.com>
parents:
16671
diff
changeset
|
2946 if not isdir(dirname(self.path)): |
63706366f6c5
moved distribution artifacts into build/ sub-directory
Doug Simon <doug.simon@oracle.com>
parents:
16671
diff
changeset
|
2947 os.makedirs(dirname(self.path)) |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2948 fd, tmp = tempfile.mkstemp(suffix='', prefix=basename(self.path) + '.', dir=dirname(self.path)) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2949 self.tmpFd = fd |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2950 self.tmpPath = tmp |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2951 self.zf = zipfile.ZipFile(tmp, 'w') |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2952 else: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2953 self.tmpFd = None |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2954 self.tmpPath = None |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2955 self.zf = None |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2956 return self |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2957 |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2958 def __exit__(self, exc_type, exc_value, traceback): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2959 if self.zf: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2960 self.zf.close() |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2961 os.close(self.tmpFd) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2962 # Correct the permissions on the temporary file which is created with restrictive permissions |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2963 os.chmod(self.tmpPath, 0o666 & ~currentUmask) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2964 # Atomic on Unix |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2965 shutil.move(self.tmpPath, self.path) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2966 |
15818
718034423138
mxtool: fix archive subcommand such that it will return a successful returncode
Bernhard Urban <bernhard.urban@jku.at>
parents:
15786
diff
changeset
|
2967 def _archive(args): |
718034423138
mxtool: fix archive subcommand such that it will return a successful returncode
Bernhard Urban <bernhard.urban@jku.at>
parents:
15786
diff
changeset
|
2968 archive(args) |
718034423138
mxtool: fix archive subcommand such that it will return a successful returncode
Bernhard Urban <bernhard.urban@jku.at>
parents:
15786
diff
changeset
|
2969 return 0 |
718034423138
mxtool: fix archive subcommand such that it will return a successful returncode
Bernhard Urban <bernhard.urban@jku.at>
parents:
15786
diff
changeset
|
2970 |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
2971 def archive(args): |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
2972 """create jar files for projects and distributions""" |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2973 parser = ArgumentParser(prog='mx archive') |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
2974 parser.add_argument('names', nargs=REMAINDER, metavar='[<project>|@<distribution>]...') |
7925
c7d7d9936809
use zipfile module instead of an external call to jar for creating jar files from projects
Doug Simon <doug.simon@oracle.com>
parents:
7918
diff
changeset
|
2975 args = parser.parse_args(args) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2976 |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
2977 archives = [] |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
2978 for name in args.names: |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
2979 if name.startswith('@'): |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
2980 dname = name[1:] |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
2981 d = distribution(dname) |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2982 d.make_archive() |
14964
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
2983 archives.append(d.path) |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
2984 else: |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
2985 p = project(name) |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
2986 archives.append(p.make_archive()) |
14964
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
2987 |
15818
718034423138
mxtool: fix archive subcommand such that it will return a successful returncode
Bernhard Urban <bernhard.urban@jku.at>
parents:
15786
diff
changeset
|
2988 logv("generated archives: " + str(archives)) |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
2989 return archives |
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:
6535
diff
changeset
|
2990 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2991 def canonicalizeprojects(args): |
17159
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
2992 """check all project specifications for canonical dependencies |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
2993 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
2994 The exit code of this command reflects how many projects have non-canonical dependencies.""" |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
2995 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
2996 nonCanonical = [] |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
2997 for s in suites(True): |
17159
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
2998 for p in s.projects: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
2999 for pkg in p.defined_java_packages(): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3000 if not pkg.startswith(p.name): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3001 abort('package in {0} does not have prefix matching project name: {1}'.format(p, pkg)) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3002 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3003 ignoredDeps = set([name for name in p.deps if project(name, False) is not None]) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3004 for pkg in p.imported_java_packages(): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3005 for name in p.deps: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3006 dep = project(name, False) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3007 if dep is None: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3008 ignoredDeps.discard(name) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3009 else: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3010 if pkg in dep.defined_java_packages(): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3011 ignoredDeps.discard(name) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3012 if pkg in dep.extended_java_packages(): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3013 ignoredDeps.discard(name) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3014 if len(ignoredDeps) != 0: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3015 candidates = set() |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3016 # Compute dependencies based on projects required by p |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3017 for d in sorted_deps(): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3018 if not d.defined_java_packages().isdisjoint(p.imported_java_packages()): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3019 candidates.add(d) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3020 # Remove non-canonical candidates |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3021 for c in list(candidates): |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3022 candidates.difference_update(c.all_deps([], False, False)) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3023 candidates = [d.name for d in candidates] |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3024 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3025 abort('{} does not use any packages defined in these projects: {}\nComputed project dependencies: {}'.format( |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3026 p, ', '.join(ignoredDeps), ','.join(candidates))) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3027 |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3028 excess = frozenset(p.deps) - set(p.canonical_deps()) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3029 if len(excess) != 0: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3030 nonCanonical.append(p) |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3031 if len(nonCanonical) != 0: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3032 for p in nonCanonical: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3033 canonicalDeps = p.canonical_deps() |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3034 if len(canonicalDeps) != 0: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3035 log('Canonical dependencies for project ' + p.name + ' are: [') |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3036 for d in canonicalDeps: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3037 log(' "' + d + '",') |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3038 log(' ],') |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3039 else: |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3040 log('Canonical dependencies for project ' + p.name + ' are: []') |
ef5212ce8091
support for new projects file format including support for automatically updating from old format
Doug Simon <doug.simon@oracle.com>
parents:
17092
diff
changeset
|
3041 return len(nonCanonical) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3042 |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3043 class TimeStampFile: |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3044 def __init__(self, path): |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3045 self.path = path |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3046 self.timestamp = os.path.getmtime(path) if exists(path) else None |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3047 |
12524
2583afcd26ee
fixed bug in creation of CreateGRAALDist.launch files
Doug Simon <doug.simon@oracle.com>
parents:
12522
diff
changeset
|
3048 def isOlderThan(self, arg): |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3049 if not self.timestamp: |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3050 return True |
12630
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3051 if isinstance(arg, TimeStampFile): |
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3052 if arg.timestamp is None: |
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3053 return False |
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3054 else: |
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3055 return arg.timestamp > self.timestamp |
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3056 elif isinstance(arg, types.ListType): |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3057 files = arg |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3058 else: |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3059 files = [arg] |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3060 for f in files: |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3061 if os.path.getmtime(f) > self.timestamp: |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3062 return True |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3063 return False |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3064 |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3065 def exists(self): |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3066 return exists(self.path) |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3067 |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3068 def touch(self): |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3069 if exists(self.path): |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3070 os.utime(self.path, None) |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3071 else: |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3072 if not isdir(dirname(self.path)): |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3073 os.makedirs(dirname(self.path)) |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3074 file(self.path, 'a') |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3075 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3076 def checkstyle(args): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3077 """run Checkstyle on the Java sources |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3078 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3079 Run Checkstyle over the Java sources. Any errors or warnings |
6284
e952911afd2f
made mx help command accept abbreviations
Doug Simon <doug.simon@oracle.com>
parents:
5876
diff
changeset
|
3080 produced by Checkstyle result in a non-zero exit code.""" |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3081 |
10059
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3082 parser = ArgumentParser(prog='mx checkstyle') |
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3083 |
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3084 parser.add_argument('-f', action='store_true', dest='force', help='force checking (disables timestamp checking)') |
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3085 args = parser.parse_args(args) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3086 |
10059
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3087 totalErrors = 0 |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3088 for p in projects_opt_limit_to_suites(): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3089 if p.native: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3090 continue |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3091 sourceDirs = p.source_dirs() |
14918
31a9c79399c8
disabled current Checkstyle configurations (until Checkstyle supports Java8)
Doug Simon <doug.simon@oracle.com>
parents:
14917
diff
changeset
|
3092 |
31a9c79399c8
disabled current Checkstyle configurations (until Checkstyle supports Java8)
Doug Simon <doug.simon@oracle.com>
parents:
14917
diff
changeset
|
3093 csConfig = join(p.dir, '.checkstyle_checks.xml') |
31a9c79399c8
disabled current Checkstyle configurations (until Checkstyle supports Java8)
Doug Simon <doug.simon@oracle.com>
parents:
14917
diff
changeset
|
3094 if not exists(csConfig): |
31a9c79399c8
disabled current Checkstyle configurations (until Checkstyle supports Java8)
Doug Simon <doug.simon@oracle.com>
parents:
14917
diff
changeset
|
3095 abort('ERROR: Checkstyle configuration for project {} is missing: {}'.format(p.name, csConfig)) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3096 |
10060
193d5163a94a
exclude projects from mx checkstyle if their Java compliance level is higher than the configured JDK
Doug Simon <doug.simon@oracle.com>
parents:
10059
diff
changeset
|
3097 # skip checking this Java project if its Java compliance level is "higher" than the configured JDK |
14763 | 3098 jdk = java(p.javaCompliance) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
3099 assert jdk |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3100 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3101 for sourceDir in sourceDirs: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3102 javafilelist = [] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3103 for root, _, files in os.walk(sourceDir): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3104 javafilelist += [join(root, name) for name in files if name.endswith('.java') and name != 'package-info.java'] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3105 if len(javafilelist) == 0: |
10568
070b4a3c56f3
disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents:
10530
diff
changeset
|
3106 logv('[no Java sources in {0} - skipping]'.format(sourceDir)) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3107 continue |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3108 |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3109 timestamp = TimeStampFile(join(p.suite.mxDir, 'checkstyle-timestamps', sourceDir[len(p.suite.dir) + 1:].replace(os.sep, '_') + '.timestamp')) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3110 mustCheck = False |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3111 if not args.force and timestamp.exists(): |
12524
2583afcd26ee
fixed bug in creation of CreateGRAALDist.launch files
Doug Simon <doug.simon@oracle.com>
parents:
12522
diff
changeset
|
3112 mustCheck = timestamp.isOlderThan(javafilelist) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3113 else: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3114 mustCheck = True |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3115 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3116 if not mustCheck: |
10059
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3117 if _opts.verbose: |
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3118 log('[all Java sources in {0} already checked - skipping]'.format(sourceDir)) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3119 continue |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3120 |
14918
31a9c79399c8
disabled current Checkstyle configurations (until Checkstyle supports Java8)
Doug Simon <doug.simon@oracle.com>
parents:
14917
diff
changeset
|
3121 dotCheckstyleXML = xml.dom.minidom.parse(csConfig) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3122 localCheckConfig = dotCheckstyleXML.getElementsByTagName('local-check-config')[0] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3123 configLocation = localCheckConfig.getAttribute('location') |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3124 configType = localCheckConfig.getAttribute('type') |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3125 if configType == 'project': |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3126 # Eclipse plugin "Project Relative Configuration" format: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3127 # |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3128 # '/<project_name>/<suffix>' |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3129 # |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3130 if configLocation.startswith('/'): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3131 name, _, suffix = configLocation.lstrip('/').partition('/') |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3132 config = join(project(name).dir, suffix) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3133 else: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3134 config = join(p.dir, configLocation) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3135 else: |
10568
070b4a3c56f3
disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents:
10530
diff
changeset
|
3136 logv('[unknown Checkstyle configuration type "' + configType + '" in {0} - skipping]'.format(sourceDir)) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3137 continue |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3138 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3139 exclude = join(p.dir, '.checkstyle.exclude') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3140 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3141 if exists(exclude): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3142 with open(exclude) as f: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3143 # Convert patterns to OS separators |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3144 patterns = [name.rstrip().replace('/', os.sep) for name in f.readlines()] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3145 def match(name): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3146 for p in patterns: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3147 if p in name: |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3148 if _opts.verbose: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3149 log('excluding: ' + name) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3150 return True |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3151 return False |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3152 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3153 javafilelist = [name for name in javafilelist if not match(name)] |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3154 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3155 auditfileName = join(p.dir, 'checkstyleOutput.txt') |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3156 log('Running Checkstyle on {0} using {1}...'.format(sourceDir, config)) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3157 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3158 try: |
15274
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
3159 for chunk in _chunk_files_for_command_line(javafilelist): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3160 try: |
15274
1ea79f17ab95
mx: generalized workaround for system command line length limits and used it to fix issue with eclipseformat command
Doug Simon <doug.simon@oracle.com>
parents:
15227
diff
changeset
|
3161 run_java(['-Xmx1g', '-jar', library('CHECKSTYLE').get_path(True), '-f', 'xml', '-c', config, '-o', auditfileName] + chunk, nonZeroIsFatal=False) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3162 finally: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3163 if exists(auditfileName): |
9826
cff647969dfa
fixed detection of Checkstyle errors in checkstyle command (GRAAL-293)
Doug Simon <doug.simon@oracle.com>
parents:
9262
diff
changeset
|
3164 errors = [] |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3165 source = [None] |
9826
cff647969dfa
fixed detection of Checkstyle errors in checkstyle command (GRAAL-293)
Doug Simon <doug.simon@oracle.com>
parents:
9262
diff
changeset
|
3166 def start_element(name, attrs): |
cff647969dfa
fixed detection of Checkstyle errors in checkstyle command (GRAAL-293)
Doug Simon <doug.simon@oracle.com>
parents:
9262
diff
changeset
|
3167 if name == 'file': |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3168 source[0] = attrs['name'] |
9826
cff647969dfa
fixed detection of Checkstyle errors in checkstyle command (GRAAL-293)
Doug Simon <doug.simon@oracle.com>
parents:
9262
diff
changeset
|
3169 elif name == 'error': |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3170 errors.append('{}:{}: {}'.format(source[0], attrs['line'], attrs['message'])) |
9826
cff647969dfa
fixed detection of Checkstyle errors in checkstyle command (GRAAL-293)
Doug Simon <doug.simon@oracle.com>
parents:
9262
diff
changeset
|
3171 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
3172 xp = xml.parsers.expat.ParserCreate() |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
3173 xp.StartElementHandler = start_element |
9826
cff647969dfa
fixed detection of Checkstyle errors in checkstyle command (GRAAL-293)
Doug Simon <doug.simon@oracle.com>
parents:
9262
diff
changeset
|
3174 with open(auditfileName) as fp: |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
3175 xp.ParseFile(fp) |
9826
cff647969dfa
fixed detection of Checkstyle errors in checkstyle command (GRAAL-293)
Doug Simon <doug.simon@oracle.com>
parents:
9262
diff
changeset
|
3176 if len(errors) != 0: |
cff647969dfa
fixed detection of Checkstyle errors in checkstyle command (GRAAL-293)
Doug Simon <doug.simon@oracle.com>
parents:
9262
diff
changeset
|
3177 map(log, errors) |
10059
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3178 totalErrors = totalErrors + len(errors) |
9826
cff647969dfa
fixed detection of Checkstyle errors in checkstyle command (GRAAL-293)
Doug Simon <doug.simon@oracle.com>
parents:
9262
diff
changeset
|
3179 else: |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3180 timestamp.touch() |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3181 finally: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3182 if exists(auditfileName): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3183 os.unlink(auditfileName) |
10059
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3184 return totalErrors |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3185 |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3186 def clean(args, parser=None): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3187 """remove all class files, images, and executables |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3188 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3189 Removes all files created by a build, including Java class files, executables, and |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3190 generated images. |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3191 """ |
4247
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
3192 |
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
3193 suppliedParser = parser is not None |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3194 |
12620
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3195 parser = parser if suppliedParser else ArgumentParser(prog='mx clean') |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3196 parser.add_argument('--no-native', action='store_false', dest='native', help='do not clean native projects') |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3197 parser.add_argument('--no-java', action='store_false', dest='java', help='do not clean Java projects') |
16087
64e172733061
mx clean: delete distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
16086
diff
changeset
|
3198 parser.add_argument('--no-dist', action='store_false', dest='dist', help='do not delete distributions') |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3199 |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3200 args = parser.parse_args(args) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3201 |
15579
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3202 def _rmtree(dirPath): |
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3203 path = dirPath |
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3204 if get_os() == 'windows': |
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3205 path = unicode("\\\\?\\" + dirPath) |
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3206 shutil.rmtree(path) |
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3207 |
16087
64e172733061
mx clean: delete distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
16086
diff
changeset
|
3208 def _rmIfExists(name): |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
3209 if name and os.path.isfile(name): |
16087
64e172733061
mx clean: delete distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
16086
diff
changeset
|
3210 os.unlink(name) |
64e172733061
mx clean: delete distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
16086
diff
changeset
|
3211 |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3212 for p in projects_opt_limit_to_suites(): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3213 if p.native: |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3214 if args.native: |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3215 run([gmake_cmd(), '-C', p.dir, 'clean']) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3216 else: |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3217 if args.java: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3218 genDir = p.source_gen_dir() |
7778
6b540bb82312
Fixed clean should clean also generated source directories.
Christian Humer <christian.humer@gmail.com>
parents:
7681
diff
changeset
|
3219 if genDir != '' and exists(genDir): |
6b540bb82312
Fixed clean should clean also generated source directories.
Christian Humer <christian.humer@gmail.com>
parents:
7681
diff
changeset
|
3220 log('Clearing {0}...'.format(genDir)) |
6b540bb82312
Fixed clean should clean also generated source directories.
Christian Humer <christian.humer@gmail.com>
parents:
7681
diff
changeset
|
3221 for f in os.listdir(genDir): |
15579
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3222 _rmtree(join(genDir, f)) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3223 |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3224 |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3225 outputDir = p.output_dir() |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3226 if outputDir != '' and exists(outputDir): |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3227 log('Removing {0}...'.format(outputDir)) |
15579
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3228 _rmtree(outputDir) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3229 |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3230 for configName in ['netbeans-config.zip', 'eclipse-config.zip']: |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3231 config = TimeStampFile(join(p.suite.mxDir, configName)) |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3232 if config.exists(): |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3233 os.unlink(config.path) |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3234 |
17063
75a4acd33159
mx: do not clean distributions if the --no-java option is given to the clean command
Doug Simon <doug.simon@oracle.com>
parents:
17059
diff
changeset
|
3235 if args.java: |
75a4acd33159
mx: do not clean distributions if the --no-java option is given to the clean command
Doug Simon <doug.simon@oracle.com>
parents:
17059
diff
changeset
|
3236 if args.dist: |
75a4acd33159
mx: do not clean distributions if the --no-java option is given to the clean command
Doug Simon <doug.simon@oracle.com>
parents:
17059
diff
changeset
|
3237 for d in _dists.keys(): |
75a4acd33159
mx: do not clean distributions if the --no-java option is given to the clean command
Doug Simon <doug.simon@oracle.com>
parents:
17059
diff
changeset
|
3238 log('Removing distribution {0}...'.format(d)) |
75a4acd33159
mx: do not clean distributions if the --no-java option is given to the clean command
Doug Simon <doug.simon@oracle.com>
parents:
17059
diff
changeset
|
3239 _rmIfExists(distribution(d).path) |
75a4acd33159
mx: do not clean distributions if the --no-java option is given to the clean command
Doug Simon <doug.simon@oracle.com>
parents:
17059
diff
changeset
|
3240 _rmIfExists(distribution(d).sourcesPath) |
16087
64e172733061
mx clean: delete distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
16086
diff
changeset
|
3241 |
4247
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
3242 if suppliedParser: |
3f6c6e61614e
Changed 'mx build' such that all Java sources for a project are compiled together instead of by source directory.
Doug Simon <doug.simon@oracle.com>
parents:
4242
diff
changeset
|
3243 return args |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3244 |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3245 def about(args): |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3246 """show the 'man page' for mx""" |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3247 print __doc__ |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3248 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3249 def help_(args): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3250 """show help for a given command |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3251 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3252 With no arguments, print a list of commands and short help for each command. |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3253 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3254 Given a command name, print help for that command.""" |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3255 if len(args) == 0: |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3256 _argParser.print_help() |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3257 return |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3258 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3259 name = args[0] |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3260 if not _commands.has_key(name): |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3261 hits = [c for c in _commands.iterkeys() if c.startswith(name)] |
6284
e952911afd2f
made mx help command accept abbreviations
Doug Simon <doug.simon@oracle.com>
parents:
5876
diff
changeset
|
3262 if len(hits) == 1: |
e952911afd2f
made mx help command accept abbreviations
Doug Simon <doug.simon@oracle.com>
parents:
5876
diff
changeset
|
3263 name = hits[0] |
e952911afd2f
made mx help command accept abbreviations
Doug Simon <doug.simon@oracle.com>
parents:
5876
diff
changeset
|
3264 elif len(hits) == 0: |
e952911afd2f
made mx help command accept abbreviations
Doug Simon <doug.simon@oracle.com>
parents:
5876
diff
changeset
|
3265 abort('mx: unknown command \'{0}\'\n{1}use "mx help" for more options'.format(name, _format_commands())) |
e952911afd2f
made mx help command accept abbreviations
Doug Simon <doug.simon@oracle.com>
parents:
5876
diff
changeset
|
3266 else: |
e952911afd2f
made mx help command accept abbreviations
Doug Simon <doug.simon@oracle.com>
parents:
5876
diff
changeset
|
3267 abort('mx: command \'{0}\' is ambiguous\n {1}'.format(name, ' '.join(hits))) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3268 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3269 value = _commands[name] |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3270 (func, usage) = value[:2] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3271 doc = func.__doc__ |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3272 if len(value) > 2: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3273 docArgs = value[2:] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3274 fmtArgs = [] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3275 for d in docArgs: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3276 if isinstance(d, Callable): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3277 fmtArgs += [d()] |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3278 else: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3279 fmtArgs += [str(d)] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3280 doc = doc.format(*fmtArgs) |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3281 print 'mx {0} {1}\n\n{2}\n'.format(name, usage, doc) |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3282 |
4301
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3283 def projectgraph(args, suite=None): |
12620
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3284 """create graph for project structure ("mx projectgraph | dot -Tpdf -oprojects.pdf" or "mx projectgraph --igv")""" |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3285 |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3286 parser = ArgumentParser(prog='mx projectgraph') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3287 parser.add_argument('--igv', action='store_true', help='output to IGV listening on 127.0.0.1:4444') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3288 parser.add_argument('--igv-format', action='store_true', help='output graph in IGV format') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3289 |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3290 args = parser.parse_args(args) |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3291 |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3292 if args.igv or args.igv_format: |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3293 ids = {} |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3294 nextToIndex = {} |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3295 igv = XMLDoc() |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3296 igv.open('graphDocument') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3297 igv.open('group') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3298 igv.open('properties') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3299 igv.element('p', {'name' : 'name'}, 'GraalProjectDependencies') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3300 igv.close('properties') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3301 igv.open('graph', {'name' : 'dependencies'}) |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3302 igv.open('nodes') |
15785
7a6f6a7ef886
Add JRE library support to mx projectgraph.
Josef Eisl <josef.eisl@jku.at>
parents:
15781
diff
changeset
|
3303 for p in sorted_deps(includeLibs=True, includeJreLibs=True): |
12620
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3304 ident = len(ids) |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3305 ids[p.name] = str(ident) |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3306 igv.open('node', {'id' : str(ident)}) |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3307 igv.open('properties') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3308 igv.element('p', {'name' : 'name'}, p.name) |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3309 igv.close('properties') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3310 igv.close('node') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3311 igv.close('nodes') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3312 igv.open('edges') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3313 for p in projects(): |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3314 fromIndex = 0 |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3315 for dep in p.canonical_deps(): |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3316 toIndex = nextToIndex.get(dep, 0) |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3317 nextToIndex[dep] = toIndex + 1 |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3318 igv.element('edge', {'from' : ids[p.name], 'fromIndex' : str(fromIndex), 'to' : ids[dep], 'toIndex' : str(toIndex), 'label' : 'dependsOn'}) |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3319 fromIndex = fromIndex + 1 |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3320 igv.close('edges') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3321 igv.close('graph') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3322 igv.close('group') |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3323 igv.close('graphDocument') |
12630
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3324 |
12620
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3325 if args.igv: |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3326 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3327 s.connect(('127.0.0.1', 4444)) |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3328 s.send(igv.xml()) |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3329 else: |
12630
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3330 print igv.xml(indent=' ', newl='\n') |
12620
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3331 return |
12630
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3332 |
4301
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3333 print 'digraph projects {' |
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3334 print 'rankdir=BT;' |
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3335 print 'node [shape=rect];' |
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3336 for p in projects(): |
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3337 for dep in p.canonical_deps(): |
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3338 print '"' + p.name + '"->"' + dep + '"' |
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3339 print '}' |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
3340 |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3341 def _source_locator_memento(deps): |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
3342 slm = XMLDoc() |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3343 slm.open('sourceLookupDirector') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3344 slm.open('sourceContainers', {'duplicates' : 'false'}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3345 |
13775
43c7df32d5ab
use lowest version JRE specified by any project for source path in Eclipse attach/launch configuration
Doug Simon <doug.simon@oracle.com>
parents:
13727
diff
changeset
|
3346 javaCompliance = None |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3347 for dep in deps: |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3348 if dep.isLibrary(): |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3349 if hasattr(dep, 'eclipse.container'): |
8633
c4bca84d86d7
ensure generated Jar.launch files have the same format as that produced when refreshing in Eclipse
Doug Simon <doug.simon@oracle.com>
parents:
8607
diff
changeset
|
3350 memento = XMLDoc().element('classpathContainer', {'path' : getattr(dep, 'eclipse.container')}).xml(standalone='no') |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3351 slm.element('classpathContainer', {'memento' : memento, 'typeId':'org.eclipse.jdt.launching.sourceContainer.classpathContainer'}) |
13727
10e6f192631f
added library sources (if available) to generated Eclipse attach launcher
Doug Simon <doug.simon@oracle.com>
parents:
13682
diff
changeset
|
3352 elif dep.get_source_path(resolve=True): |
10e6f192631f
added library sources (if available) to generated Eclipse attach launcher
Doug Simon <doug.simon@oracle.com>
parents:
13682
diff
changeset
|
3353 memento = XMLDoc().element('archive', {'detectRoot' : 'true', 'path' : dep.get_source_path(resolve=True)}).xml(standalone='no') |
10e6f192631f
added library sources (if available) to generated Eclipse attach launcher
Doug Simon <doug.simon@oracle.com>
parents:
13682
diff
changeset
|
3354 slm.element('container', {'memento' : memento, 'typeId':'org.eclipse.debug.core.containerType.externalArchive'}) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
3355 elif dep.isProject(): |
8633
c4bca84d86d7
ensure generated Jar.launch files have the same format as that produced when refreshing in Eclipse
Doug Simon <doug.simon@oracle.com>
parents:
8607
diff
changeset
|
3356 memento = XMLDoc().element('javaProject', {'name' : dep.name}).xml(standalone='no') |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3357 slm.element('container', {'memento' : memento, 'typeId':'org.eclipse.jdt.launching.sourceContainer.javaProject'}) |
15693
807090ddbbf2
use JDK with highest compliance level for generated Eclipse attach launcher
Doug Simon <doug.simon@oracle.com>
parents:
15662
diff
changeset
|
3358 if javaCompliance is None or dep.javaCompliance > javaCompliance: |
13775
43c7df32d5ab
use lowest version JRE specified by any project for source path in Eclipse attach/launch configuration
Doug Simon <doug.simon@oracle.com>
parents:
13727
diff
changeset
|
3359 javaCompliance = dep.javaCompliance |
43c7df32d5ab
use lowest version JRE specified by any project for source path in Eclipse attach/launch configuration
Doug Simon <doug.simon@oracle.com>
parents:
13727
diff
changeset
|
3360 |
43c7df32d5ab
use lowest version JRE specified by any project for source path in Eclipse attach/launch configuration
Doug Simon <doug.simon@oracle.com>
parents:
13727
diff
changeset
|
3361 if javaCompliance: |
43c7df32d5ab
use lowest version JRE specified by any project for source path in Eclipse attach/launch configuration
Doug Simon <doug.simon@oracle.com>
parents:
13727
diff
changeset
|
3362 memento = XMLDoc().element('classpathContainer', {'path' : 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-' + str(javaCompliance)}).xml(standalone='no') |
43c7df32d5ab
use lowest version JRE specified by any project for source path in Eclipse attach/launch configuration
Doug Simon <doug.simon@oracle.com>
parents:
13727
diff
changeset
|
3363 slm.element('classpathContainer', {'memento' : memento, 'typeId':'org.eclipse.jdt.launching.sourceContainer.classpathContainer'}) |
43c7df32d5ab
use lowest version JRE specified by any project for source path in Eclipse attach/launch configuration
Doug Simon <doug.simon@oracle.com>
parents:
13727
diff
changeset
|
3364 else: |
43c7df32d5ab
use lowest version JRE specified by any project for source path in Eclipse attach/launch configuration
Doug Simon <doug.simon@oracle.com>
parents:
13727
diff
changeset
|
3365 memento = XMLDoc().element('classpathContainer', {'path' : 'org.eclipse.jdt.launching.JRE_CONTAINER'}).xml(standalone='no') |
43c7df32d5ab
use lowest version JRE specified by any project for source path in Eclipse attach/launch configuration
Doug Simon <doug.simon@oracle.com>
parents:
13727
diff
changeset
|
3366 slm.element('classpathContainer', {'memento' : memento, 'typeId':'org.eclipse.jdt.launching.sourceContainer.classpathContainer'}) |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3367 |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3368 slm.close('sourceContainers') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3369 slm.close('sourceLookupDirector') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3370 return slm |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3371 |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3372 def make_eclipse_attach(suite, hostname, port, name=None, deps=None): |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3373 """ |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3374 Creates an Eclipse launch configuration file for attaching to a Java process. |
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
|
3375 """ |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3376 if deps is None: |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3377 deps = [] |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3378 slm = _source_locator_memento(deps) |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
3379 launch = XMLDoc() |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3380 launch.open('launchConfiguration', {'type' : 'org.eclipse.jdt.launching.remoteJavaApplication'}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3381 launch.element('stringAttribute', {'key' : 'org.eclipse.debug.core.source_locator_id', 'value' : 'org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector'}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3382 launch.element('stringAttribute', {'key' : 'org.eclipse.debug.core.source_locator_memento', 'value' : '%s'}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3383 launch.element('booleanAttribute', {'key' : 'org.eclipse.jdt.launching.ALLOW_TERMINATE', 'value' : 'true'}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3384 launch.open('mapAttribute', {'key' : 'org.eclipse.jdt.launching.CONNECT_MAP'}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3385 launch.element('mapEntry', {'key' : 'hostname', 'value' : hostname}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3386 launch.element('mapEntry', {'key' : 'port', 'value' : port}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3387 launch.close('mapAttribute') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3388 launch.element('stringAttribute', {'key' : 'org.eclipse.jdt.launching.PROJECT_ATTR', 'value' : ''}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3389 launch.element('stringAttribute', {'key' : 'org.eclipse.jdt.launching.VM_CONNECTOR_ID', 'value' : 'org.eclipse.jdt.launching.socketAttachConnector'}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3390 launch.close('launchConfiguration') |
8633
c4bca84d86d7
ensure generated Jar.launch files have the same format as that produced when refreshing in Eclipse
Doug Simon <doug.simon@oracle.com>
parents:
8607
diff
changeset
|
3391 launch = launch.xml(newl='\n', standalone='no') % slm.xml(escape=True, standalone='no') |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
3392 |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3393 if name is None: |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3394 if len(suites()) == 1: |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
3395 suitePrefix = '' |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3396 else: |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3397 suitePrefix = suite.name + '-' |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3398 name = suitePrefix + 'attach-' + hostname + '-' + port |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3399 eclipseLaunches = join(suite.mxDir, 'eclipse-launches') |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3400 if not exists(eclipseLaunches): |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3401 os.makedirs(eclipseLaunches) |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3402 launchFile = join(eclipseLaunches, name + '.launch') |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3403 return update_file(launchFile, launch), launchFile |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3404 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3405 def make_eclipse_launch(javaArgs, jre, name=None, deps=None): |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3406 """ |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3407 Creates an Eclipse launch configuration file for running/debugging a Java command. |
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
|
3408 """ |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3409 if deps is None: |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3410 deps = [] |
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
|
3411 mainClass = None |
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
|
3412 vmArgs = [] |
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
|
3413 appArgs = [] |
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
|
3414 cp = None |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3415 argsCopy = list(reversed(javaArgs)) |
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
|
3416 while len(argsCopy) != 0: |
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
|
3417 a = argsCopy.pop() |
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
|
3418 if a == '-jar': |
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
|
3419 mainClass = '-jar' |
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
|
3420 appArgs = list(reversed(argsCopy)) |
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
|
3421 break |
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
|
3422 if a == '-cp' or a == '-classpath': |
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
|
3423 assert len(argsCopy) != 0 |
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
|
3424 cp = argsCopy.pop() |
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
|
3425 vmArgs.append(a) |
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
|
3426 vmArgs.append(cp) |
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
|
3427 elif a.startswith('-'): |
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
|
3428 vmArgs.append(a) |
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
|
3429 else: |
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
|
3430 mainClass = a |
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
|
3431 appArgs = list(reversed(argsCopy)) |
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
|
3432 break |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
3433 |
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
|
3434 if mainClass is None: |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3435 log('Cannot create Eclipse launch configuration without main class or jar file: java ' + ' '.join(javaArgs)) |
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
|
3436 return False |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
3437 |
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
|
3438 if name is None: |
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
|
3439 if mainClass == '-jar': |
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
|
3440 name = basename(appArgs[0]) |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3441 if len(appArgs) > 1 and not appArgs[1].startswith('-'): |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3442 name = name + '_' + appArgs[1] |
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
|
3443 else: |
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
|
3444 name = mainClass |
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
|
3445 name = time.strftime('%Y-%m-%d-%H%M%S_' + name) |
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
|
3446 |
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
|
3447 if cp is not None: |
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
|
3448 for e in cp.split(os.pathsep): |
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
|
3449 for s in suites(): |
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
|
3450 deps += [p for p in s.projects if e == p.output_dir()] |
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
|
3451 deps += [l for l in s.libs if e == l.get_path(False)] |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
3452 |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3453 slm = _source_locator_memento(deps) |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
3454 |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
3455 launch = XMLDoc() |
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
|
3456 launch.open('launchConfiguration', {'type' : 'org.eclipse.jdt.launching.localJavaApplication'}) |
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
|
3457 launch.element('stringAttribute', {'key' : 'org.eclipse.debug.core.source_locator_id', 'value' : 'org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector'}) |
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
|
3458 launch.element('stringAttribute', {'key' : 'org.eclipse.debug.core.source_locator_memento', 'value' : '%s'}) |
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
|
3459 launch.element('stringAttribute', {'key' : 'org.eclipse.jdt.launching.JRE_CONTAINER', 'value' : 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/' + jre}) |
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
|
3460 launch.element('stringAttribute', {'key' : 'org.eclipse.jdt.launching.MAIN_TYPE', 'value' : mainClass}) |
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
|
3461 launch.element('stringAttribute', {'key' : 'org.eclipse.jdt.launching.PROGRAM_ARGUMENTS', 'value' : ' '.join(appArgs)}) |
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
|
3462 launch.element('stringAttribute', {'key' : 'org.eclipse.jdt.launching.PROJECT_ATTR', 'value' : ''}) |
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
|
3463 launch.element('stringAttribute', {'key' : 'org.eclipse.jdt.launching.VM_ARGUMENTS', 'value' : ' '.join(vmArgs)}) |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3464 launch.close('launchConfiguration') |
8633
c4bca84d86d7
ensure generated Jar.launch files have the same format as that produced when refreshing in Eclipse
Doug Simon <doug.simon@oracle.com>
parents:
8607
diff
changeset
|
3465 launch = launch.xml(newl='\n', standalone='no') % slm.xml(escape=True, standalone='no') |
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
|
3466 |
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
|
3467 eclipseLaunches = join('mx', 'eclipse-launches') |
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
|
3468 if not exists(eclipseLaunches): |
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
|
3469 os.makedirs(eclipseLaunches) |
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
|
3470 return update_file(join(eclipseLaunches, name + '.launch'), launch) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3471 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3472 def eclipseinit(args, buildProcessorJars=True, refreshOnly=False): |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3473 """(re)generate Eclipse project configurations and working sets""" |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3474 for s in suites(True): |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3475 _eclipseinit_suite(args, s, buildProcessorJars, refreshOnly) |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
3476 |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3477 generate_eclipse_workingsets() |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3478 |
13682
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
3479 def _check_ide_timestamp(suite, configZip, ide): |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
3480 """return True if and only if the projects file, eclipse-settings files, and mx itself are all older than configZip""" |
17182
d6c7c530ca84
mx: change name of suite specification file from projects.py to suite.py
Doug Simon <doug.simon@oracle.com>
parents:
17169
diff
changeset
|
3481 suitePyFiles = [join(suite.mxDir, e) for e in os.listdir(suite.mxDir) if e.startswith('suite') and e.endswith('.py')] |
d6c7c530ca84
mx: change name of suite specification file from projects.py to suite.py
Doug Simon <doug.simon@oracle.com>
parents:
17169
diff
changeset
|
3482 if configZip.isOlderThan(suitePyFiles): |
13243
68529068f08e
Update eclipse config when files in eclipse-settings have changed
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12689
diff
changeset
|
3483 return False |
12630
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3484 # Assume that any mx change might imply changes to the generated IDE files |
13682
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
3485 if configZip.isOlderThan(__file__): |
13243
68529068f08e
Update eclipse config when files in eclipse-settings have changed
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
12689
diff
changeset
|
3486 return False |
13266
78ed696884b3
fixed regression in pylint command (exit code must be non-zero if at least one warning/error was found)
Doug Simon <doug.simon@oracle.com>
parents:
13247
diff
changeset
|
3487 |
13682
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
3488 if ide == 'eclipse': |
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
3489 eclipseSettingsDir = join(suite.mxDir, 'eclipse-settings') |
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
3490 if exists(eclipseSettingsDir): |
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
3491 for name in os.listdir(eclipseSettingsDir): |
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
3492 path = join(eclipseSettingsDir, name) |
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
3493 if configZip.isOlderThan(path): |
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
3494 return False |
13266
78ed696884b3
fixed regression in pylint command (exit code must be non-zero if at least one warning/error was found)
Doug Simon <doug.simon@oracle.com>
parents:
13247
diff
changeset
|
3495 return True |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3496 |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3497 def _eclipseinit_project(p, files=None, libFiles=None): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3498 assert java(p.javaCompliance) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3499 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3500 if not exists(p.dir): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3501 os.makedirs(p.dir) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3502 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3503 out = XMLDoc() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3504 out.open('classpath') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3505 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3506 for src in p.srcDirs: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3507 srcDir = join(p.dir, src) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3508 if not exists(srcDir): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3509 os.mkdir(srcDir) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3510 out.element('classpathentry', {'kind' : 'src', 'path' : src}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3511 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3512 if len(p.annotation_processors()) > 0: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3513 genDir = p.source_gen_dir() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3514 if not exists(genDir): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3515 os.mkdir(genDir) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3516 out.element('classpathentry', {'kind' : 'src', 'path' : 'src_gen'}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3517 if files: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3518 files.append(genDir) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3519 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3520 # Every Java program depends on a JRE |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3521 out.element('classpathentry', {'kind' : 'con', 'path' : 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-' + str(p.javaCompliance)}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3522 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3523 if exists(join(p.dir, 'plugin.xml')): # eclipse plugin project |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3524 out.element('classpathentry', {'kind' : 'con', 'path' : 'org.eclipse.pde.core.requiredPlugins'}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3525 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3526 containerDeps = set() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3527 libraryDeps = set() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3528 projectDeps = set() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3529 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3530 for dep in p.all_deps([], True): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3531 if dep == p: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3532 continue |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3533 if dep.isLibrary(): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3534 if hasattr(dep, 'eclipse.container'): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3535 container = getattr(dep, 'eclipse.container') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3536 containerDeps.add(container) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3537 libraryDeps -= set(dep.all_deps([], True)) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3538 else: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3539 libraryDeps.add(dep) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3540 elif dep.isProject(): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3541 projectDeps.add(dep) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3542 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3543 for dep in containerDeps: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3544 out.element('classpathentry', {'exported' : 'true', 'kind' : 'con', 'path' : dep}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3545 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3546 for dep in libraryDeps: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3547 path = dep.path |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3548 dep.get_path(resolve=True) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3549 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3550 # Relative paths for "lib" class path entries have various semantics depending on the Eclipse |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3551 # version being used (e.g. see https://bugs.eclipse.org/bugs/show_bug.cgi?id=274737) so it's |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3552 # safest to simply use absolute paths. |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3553 path = _make_absolute(path, p.suite.dir) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3554 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3555 attributes = {'exported' : 'true', 'kind' : 'lib', 'path' : path} |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3556 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3557 sourcePath = dep.get_source_path(resolve=True) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3558 if sourcePath is not None: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3559 attributes['sourcepath'] = sourcePath |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3560 out.element('classpathentry', attributes) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3561 if libFiles: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3562 libFiles.append(path) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3563 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3564 for dep in projectDeps: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3565 out.element('classpathentry', {'combineaccessrules' : 'false', 'exported' : 'true', 'kind' : 'src', 'path' : '/' + dep.name}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3566 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3567 out.element('classpathentry', {'kind' : 'output', 'path' : getattr(p, 'eclipse.output', 'bin')}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3568 out.close('classpath') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3569 classpathFile = join(p.dir, '.classpath') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3570 update_file(classpathFile, out.xml(indent='\t', newl='\n')) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3571 if files: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3572 files.append(classpathFile) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3573 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3574 csConfig = join(project(p.checkstyleProj).dir, '.checkstyle_checks.xml') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3575 if exists(csConfig): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3576 out = XMLDoc() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3577 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3578 dotCheckstyle = join(p.dir, ".checkstyle") |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3579 checkstyleConfigPath = '/' + p.checkstyleProj + '/.checkstyle_checks.xml' |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3580 out.open('fileset-config', {'file-format-version' : '1.2.0', 'simple-config' : 'true'}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3581 out.open('local-check-config', {'name' : 'Checks', 'location' : checkstyleConfigPath, 'type' : 'project', 'description' : ''}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3582 out.element('additional-data', {'name' : 'protect-config-file', 'value' : 'false'}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3583 out.close('local-check-config') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3584 out.open('fileset', {'name' : 'all', 'enabled' : 'true', 'check-config-name' : 'Checks', 'local' : 'true'}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3585 out.element('file-match-pattern', {'match-pattern' : '.', 'include-pattern' : 'true'}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3586 out.close('fileset') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3587 out.open('filter', {'name' : 'all', 'enabled' : 'true', 'check-config-name' : 'Checks', 'local' : 'true'}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3588 out.element('filter-data', {'value' : 'java'}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3589 out.close('filter') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3590 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3591 exclude = join(p.dir, '.checkstyle.exclude') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3592 if exists(exclude): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3593 out.open('filter', {'name' : 'FilesFromPackage', 'enabled' : 'true'}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3594 with open(exclude) as f: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3595 for line in f: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3596 if not line.startswith('#'): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3597 line = line.strip() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3598 exclDir = join(p.dir, line) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3599 assert isdir(exclDir), 'excluded source directory listed in ' + exclude + ' does not exist or is not a directory: ' + exclDir |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3600 out.element('filter-data', {'value' : line}) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3601 out.close('filter') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3602 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3603 out.close('fileset-config') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3604 update_file(dotCheckstyle, out.xml(indent=' ', newl='\n')) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3605 if files: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3606 files.append(dotCheckstyle) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3607 else: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3608 # clean up existing .checkstyle file |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3609 dotCheckstyle = join(p.dir, ".checkstyle") |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3610 if exists(dotCheckstyle): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3611 os.unlink(dotCheckstyle) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3612 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3613 out = XMLDoc() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3614 out.open('projectDescription') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3615 out.element('name', data=p.name) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3616 out.element('comment', data='') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3617 out.element('projects', data='') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3618 out.open('buildSpec') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3619 out.open('buildCommand') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3620 out.element('name', data='org.eclipse.jdt.core.javabuilder') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3621 out.element('arguments', data='') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3622 out.close('buildCommand') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3623 if exists(csConfig): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3624 out.open('buildCommand') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3625 out.element('name', data='net.sf.eclipsecs.core.CheckstyleBuilder') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3626 out.element('arguments', data='') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3627 out.close('buildCommand') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3628 if exists(join(p.dir, 'plugin.xml')): # eclipse plugin project |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3629 for buildCommand in ['org.eclipse.pde.ManifestBuilder', 'org.eclipse.pde.SchemaBuilder']: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3630 out.open('buildCommand') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3631 out.element('name', data=buildCommand) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3632 out.element('arguments', data='') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3633 out.close('buildCommand') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3634 |
16849
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3635 if p.definedAnnotationProcessorsDist: |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3636 # Create a launcher that will (re)build the annotation processor |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3637 # jar any time one of its sources is modified. |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3638 dist = p.definedAnnotationProcessorsDist |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3639 |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3640 distProjects = [d for d in dist.sorted_deps(transitive=True) if d.isProject()] |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3641 relevantResources = [] |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3642 for p in distProjects: |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3643 for srcDir in p.source_dirs(): |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3644 relevantResources.append(join(p.name, os.path.relpath(srcDir, p.dir))) |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3645 relevantResources.append(join(p.name, os.path.relpath(p.output_dir(), p.dir))) |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3646 |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3647 # The path should always be p.name/dir independent of where the workspace actually is. |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3648 # So we use the parent folder of the project, whatever that is, to generate such a relative path. |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3649 logicalWorkspaceRoot = os.path.dirname(p.dir) |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3650 refreshFile = os.path.relpath(p.definedAnnotationProcessorsDist.path, logicalWorkspaceRoot) |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3651 _genEclipseBuilder(out, p, 'CreateAnnotationProcessorJar', 'archive @' + dist.name, refresh=True, refreshFile=refreshFile, relevantResources=relevantResources, async=True, xmlIndent='', xmlStandalone='no') |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3652 |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3653 out.close('buildSpec') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3654 out.open('natures') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3655 out.element('nature', data='org.eclipse.jdt.core.javanature') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3656 if exists(csConfig): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3657 out.element('nature', data='net.sf.eclipsecs.core.CheckstyleNature') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3658 if exists(join(p.dir, 'plugin.xml')): # eclipse plugin project |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3659 out.element('nature', data='org.eclipse.pde.PluginNature') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3660 out.close('natures') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3661 out.close('projectDescription') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3662 projectFile = join(p.dir, '.project') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3663 update_file(projectFile, out.xml(indent='\t', newl='\n')) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3664 if files: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3665 files.append(projectFile) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3666 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3667 settingsDir = join(p.dir, ".settings") |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3668 if not exists(settingsDir): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3669 os.mkdir(settingsDir) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3670 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3671 # collect the defaults from mxtool |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3672 defaultEclipseSettingsDir = join(dirname(__file__), 'eclipse-settings') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3673 esdict = {} |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3674 if exists(defaultEclipseSettingsDir): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3675 for name in os.listdir(defaultEclipseSettingsDir): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3676 if isfile(join(defaultEclipseSettingsDir, name)): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3677 esdict[name] = os.path.abspath(join(defaultEclipseSettingsDir, name)) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3678 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3679 # check for suite overrides |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3680 eclipseSettingsDir = join(p.suite.mxDir, 'eclipse-settings') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3681 if exists(eclipseSettingsDir): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3682 for name in os.listdir(eclipseSettingsDir): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3683 if isfile(join(eclipseSettingsDir, name)): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3684 esdict[name] = os.path.abspath(join(eclipseSettingsDir, name)) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3685 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3686 # check for project overrides |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3687 projectSettingsDir = join(p.dir, 'eclipse-settings') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3688 if exists(projectSettingsDir): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3689 for name in os.listdir(projectSettingsDir): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3690 if isfile(join(projectSettingsDir, name)): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3691 esdict[name] = os.path.abspath(join(projectSettingsDir, name)) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3692 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3693 # copy a possibly modified file to the project's .settings directory |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3694 for name, path in esdict.iteritems(): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3695 # ignore this file altogether if this project has no annotation processors |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3696 if name == "org.eclipse.jdt.apt.core.prefs" and not len(p.annotation_processors()) > 0: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3697 continue |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3698 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3699 with open(path) as f: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3700 content = f.read() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3701 content = content.replace('${javaCompliance}', str(p.javaCompliance)) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3702 if len(p.annotation_processors()) > 0: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3703 content = content.replace('org.eclipse.jdt.core.compiler.processAnnotations=disabled', 'org.eclipse.jdt.core.compiler.processAnnotations=enabled') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3704 update_file(join(settingsDir, name), content) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3705 if files: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3706 files.append(join(settingsDir, name)) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3707 |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
3708 processorPath = p.annotation_processors_path() |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
3709 if processorPath: |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3710 out = XMLDoc() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3711 out.open('factorypath') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3712 out.element('factorypathentry', {'kind' : 'PLUGIN', 'id' : 'org.eclipse.jst.ws.annotations.core', 'enabled' : 'true', 'runInBatchMode' : 'false'}) |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
3713 for e in processorPath.split(os.pathsep): |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
3714 out.element('factorypathentry', {'kind' : 'EXTJAR', 'id' : e, 'enabled' : 'true', 'runInBatchMode' : 'false'}) |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3715 out.close('factorypath') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3716 update_file(join(p.dir, '.factorypath'), out.xml(indent='\t', newl='\n')) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3717 if files: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3718 files.append(join(p.dir, '.factorypath')) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3719 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3720 def _eclipseinit_suite(args, suite, buildProcessorJars=True, refreshOnly=False): |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3721 configZip = TimeStampFile(join(suite.mxDir, 'eclipse-config.zip')) |
13475
4a3628c79ff9
separated external libs out from zipped up IDE configs
Doug Simon <doug.simon@oracle.com>
parents:
13473
diff
changeset
|
3722 configLibsZip = join(suite.mxDir, 'eclipse-config-libs.zip') |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3723 if refreshOnly and not configZip.exists(): |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3724 return |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3725 |
13682
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
3726 if _check_ide_timestamp(suite, configZip, 'eclipse'): |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3727 logv('[Eclipse configurations are up to date - skipping]') |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3728 return |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3729 |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3730 files = [] |
13475
4a3628c79ff9
separated external libs out from zipped up IDE configs
Doug Simon <doug.simon@oracle.com>
parents:
13473
diff
changeset
|
3731 libFiles = [] |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3732 if buildProcessorJars: |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3733 files += _processorjars_suite(suite) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3734 |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3735 for p in suite.projects: |
5071
9d055af068a8
Made Java builds look for mx/ecj.jar to use Eclipse batch compiler by default.
Doug Simon <doug.simon@oracle.com>
parents:
5032
diff
changeset
|
3736 if p.native: |
9d055af068a8
Made Java builds look for mx/ecj.jar to use Eclipse batch compiler by default.
Doug Simon <doug.simon@oracle.com>
parents:
5032
diff
changeset
|
3737 continue |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3738 _eclipseinit_project(p, files, libFiles) |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3739 |
13727
10e6f192631f
added library sources (if available) to generated Eclipse attach launcher
Doug Simon <doug.simon@oracle.com>
parents:
13682
diff
changeset
|
3740 _, launchFile = make_eclipse_attach(suite, 'localhost', '8000', deps=sorted_deps(projectNames=None, includeLibs=True)) |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3741 files.append(launchFile) |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3742 |
15899
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3743 # Create an Eclipse project for each distribution that will create/update the archive |
16667
1d4313c3ab38
mx: distribution should (also) be rebuilt when a transitive project dependency is updated
Doug Simon <doug.simon@oracle.com>
parents:
16629
diff
changeset
|
3744 # for the distribution whenever any (transitively) dependent project of the |
1d4313c3ab38
mx: distribution should (also) be rebuilt when a transitive project dependency is updated
Doug Simon <doug.simon@oracle.com>
parents:
16629
diff
changeset
|
3745 # distribution is updated. |
15899
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3746 for dist in suite.dists: |
16845
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
3747 projectDir = dist.get_ide_project_dir() |
16849
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3748 if not projectDir: |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
3749 continue |
15899
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3750 if not exists(projectDir): |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3751 os.makedirs(projectDir) |
16667
1d4313c3ab38
mx: distribution should (also) be rebuilt when a transitive project dependency is updated
Doug Simon <doug.simon@oracle.com>
parents:
16629
diff
changeset
|
3752 distProjects = [d for d in dist.sorted_deps(transitive=True) if d.isProject()] |
15899
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3753 relevantResources = [] |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3754 for p in distProjects: |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3755 for srcDir in p.source_dirs(): |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3756 relevantResources.append(join(p.name, os.path.relpath(srcDir, p.dir))) |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3757 relevantResources.append(join(p.name, os.path.relpath(p.output_dir(), p.dir))) |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3758 out = XMLDoc() |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3759 out.open('projectDescription') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3760 out.element('name', data=dist.name) |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3761 out.element('comment', data='Updates ' + dist.path + ' if a project dependency of ' + dist.name + ' is updated') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3762 out.open('projects') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3763 for p in distProjects: |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3764 out.element('project', data=p.name) |
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:
16599
diff
changeset
|
3765 for d in dist.distDependencies: |
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:
16599
diff
changeset
|
3766 out.element('project', data=d) |
15899
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3767 out.close('projects') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3768 out.open('buildSpec') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3769 dist.dir = projectDir |
16667
1d4313c3ab38
mx: distribution should (also) be rebuilt when a transitive project dependency is updated
Doug Simon <doug.simon@oracle.com>
parents:
16629
diff
changeset
|
3770 dist.javaCompliance = max([p.javaCompliance for p in distProjects]) |
15899
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3771 _genEclipseBuilder(out, dist, 'Create' + dist.name + 'Dist', 'archive @' + dist.name, relevantResources=relevantResources, logToFile=True, refresh=False, async=True) |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3772 out.close('buildSpec') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3773 out.open('natures') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3774 out.element('nature', data='org.eclipse.jdt.core.javanature') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3775 out.close('natures') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3776 out.close('projectDescription') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3777 projectFile = join(projectDir, '.project') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3778 update_file(projectFile, out.xml(indent='\t', newl='\n')) |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3779 files.append(projectFile) |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3780 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3781 _zip_files(files, suite.dir, configZip.path) |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3782 _zip_files(libFiles, suite.dir, configLibsZip) |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3783 |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3784 def _zip_files(files, baseDir, zipPath): |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3785 fd, tmp = tempfile.mkstemp(suffix='', prefix=basename(zipPath), dir=baseDir) |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3786 try: |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3787 zf = zipfile.ZipFile(tmp, 'w') |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3788 for f in sorted(set(files)): |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3789 relpath = os.path.relpath(f, baseDir) |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3790 arcname = relpath.replace(os.sep, '/') |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3791 zf.write(f, arcname) |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3792 zf.close() |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3793 os.close(fd) |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3794 # Atomic on Unix |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3795 shutil.move(tmp, zipPath) |
14103
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
3796 # Correct the permissions on the temporary file which is created with restrictive permissions |
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
3797 os.chmod(zipPath, 0o666 & ~currentUmask) |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3798 finally: |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3799 if exists(tmp): |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
3800 os.remove(tmp) |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
3801 |
12661
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3802 def _genEclipseBuilder(dotProjectDoc, p, name, mxCommand, refresh=True, refreshFile=None, relevantResources=None, async=False, logToConsole=False, logToFile=False, appendToLogFile=True, xmlIndent='\t', xmlStandalone=None): |
12514
8c64f10f86b7
append output of mx command to (re)build graal.jar to a per-project log file
Doug Simon <doug.simon@oracle.com>
parents:
12513
diff
changeset
|
3803 externalToolDir = join(p.dir, '.externalToolBuilders') |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3804 launchOut = XMLDoc() |
8181
989e0582a30f
enabled Eclipse builders to use console logging
Doug Simon <doug.simon@oracle.com>
parents:
8180
diff
changeset
|
3805 consoleOn = 'true' if logToConsole else 'false' |
7299
57edf6b07d36
Removed ANT_JAR_TOOL dependency. Eclipse jar builds are now calling the command 'mx jar ${projectName}'.
Christian Humer <christian.humer@gmail.com>
parents:
7293
diff
changeset
|
3806 launchOut.open('launchConfiguration', {'type' : 'org.eclipse.ui.externaltools.ProgramBuilderLaunchConfigurationType'}) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3807 launchOut.element('booleanAttribute', {'key' : 'org.eclipse.debug.core.capture_output', 'value': consoleOn}) |
8174
67d654d9ee9a
pass JAVA_HOME to eclipse builder
Lukas Stadler <lukas.stadler@jku.at>
parents:
8138
diff
changeset
|
3808 launchOut.open('mapAttribute', {'key' : 'org.eclipse.debug.core.environmentVariables'}) |
14763 | 3809 launchOut.element('mapEntry', {'key' : 'JAVA_HOME', 'value' : java(p.javaCompliance).jdk}) |
14785
66ac13a2c7a1
pass EXTRA_JAVA_HOMES to eclipse builders
Lukas Stadler <lukas.stadler@oracle.com>
parents:
14781
diff
changeset
|
3810 launchOut.element('mapEntry', {'key' : 'EXTRA_JAVA_HOMES', 'value' : _opts.extra_java_homes}) |
8174
67d654d9ee9a
pass JAVA_HOME to eclipse builder
Lukas Stadler <lukas.stadler@jku.at>
parents:
8138
diff
changeset
|
3811 launchOut.close('mapAttribute') |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3812 |
7681
f81be78f15a5
Fixed eclipse configuration for annotation processors. Annotation processor jars
Christian Humer <christian.humer@gmail.com>
parents:
7533
diff
changeset
|
3813 if refresh: |
12661
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3814 if refreshFile is None: |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3815 refreshScope = '${project}' |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3816 else: |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3817 refreshScope = '${working_set:<?xml version="1.0" encoding="UTF-8"?><resources><item path="' + refreshFile + '" type="1"/></resources>}' |
12684
ec224fef3012
integrated auto-formatting changes
Doug Simon <doug.simon@oracle.com>
parents:
12662
diff
changeset
|
3818 |
ec224fef3012
integrated auto-formatting changes
Doug Simon <doug.simon@oracle.com>
parents:
12662
diff
changeset
|
3819 launchOut.element('booleanAttribute', {'key' : 'org.eclipse.debug.core.ATTR_REFRESH_RECURSIVE', 'value': 'false'}) |
12661
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3820 launchOut.element('stringAttribute', {'key' : 'org.eclipse.debug.core.ATTR_REFRESH_SCOPE', 'value': refreshScope}) |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3821 |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3822 if relevantResources is not None: |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3823 resources = '${working_set:<?xml version="1.0" encoding="UTF-8"?><resources>' |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3824 for relevantResource in relevantResources: |
12684
ec224fef3012
integrated auto-formatting changes
Doug Simon <doug.simon@oracle.com>
parents:
12662
diff
changeset
|
3825 resources += '<item path="' + relevantResource + '" type="2" />' |
12661
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3826 resources += '</resources>}' |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3827 launchOut.element('stringAttribute', {'key' : 'org.eclipse.ui.externaltools.ATTR_BUILD_SCOPE', 'value': resources}) |
12684
ec224fef3012
integrated auto-formatting changes
Doug Simon <doug.simon@oracle.com>
parents:
12662
diff
changeset
|
3828 |
ec224fef3012
integrated auto-formatting changes
Doug Simon <doug.simon@oracle.com>
parents:
12662
diff
changeset
|
3829 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3830 launchOut.element('booleanAttribute', {'key' : 'org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON', 'value': consoleOn}) |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3831 launchOut.element('booleanAttribute', {'key' : 'org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND', 'value': 'true' if async else 'false'}) |
12514
8c64f10f86b7
append output of mx command to (re)build graal.jar to a per-project log file
Doug Simon <doug.simon@oracle.com>
parents:
12513
diff
changeset
|
3832 if logToFile: |
8c64f10f86b7
append output of mx command to (re)build graal.jar to a per-project log file
Doug Simon <doug.simon@oracle.com>
parents:
12513
diff
changeset
|
3833 logFile = join(externalToolDir, name + '.log') |
12524
2583afcd26ee
fixed bug in creation of CreateGRAALDist.launch files
Doug Simon <doug.simon@oracle.com>
parents:
12522
diff
changeset
|
3834 launchOut.element('stringAttribute', {'key' : 'org.eclipse.debug.ui.ATTR_CAPTURE_IN_FILE', 'value': logFile}) |
12514
8c64f10f86b7
append output of mx command to (re)build graal.jar to a per-project log file
Doug Simon <doug.simon@oracle.com>
parents:
12513
diff
changeset
|
3835 launchOut.element('booleanAttribute', {'key' : 'org.eclipse.debug.ui.ATTR_APPEND_TO_FILE', 'value': 'true' if appendToLogFile else 'false'}) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3836 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3837 # expect to find the OS command to invoke mx in the same directory |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3838 baseDir = dirname(os.path.abspath(__file__)) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3839 |
7299
57edf6b07d36
Removed ANT_JAR_TOOL dependency. Eclipse jar builds are now calling the command 'mx jar ${projectName}'.
Christian Humer <christian.humer@gmail.com>
parents:
7293
diff
changeset
|
3840 cmd = 'mx.sh' |
57edf6b07d36
Removed ANT_JAR_TOOL dependency. Eclipse jar builds are now calling the command 'mx jar ${projectName}'.
Christian Humer <christian.humer@gmail.com>
parents:
7293
diff
changeset
|
3841 if get_os() == 'windows': |
57edf6b07d36
Removed ANT_JAR_TOOL dependency. Eclipse jar builds are now calling the command 'mx jar ${projectName}'.
Christian Humer <christian.humer@gmail.com>
parents:
7293
diff
changeset
|
3842 cmd = 'mx.cmd' |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3843 cmdPath = join(baseDir, cmd) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3844 if not os.path.exists(cmdPath): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3845 # backwards compatibility for when the commands lived in parent of mxtool |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3846 cmdPath = join(dirname(baseDir), cmd) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3847 if not os.path.exists(cmdPath): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3848 abort('cannot locate ' + cmd) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3849 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3850 launchOut.element('stringAttribute', {'key' : 'org.eclipse.ui.externaltools.ATTR_LOCATION', 'value': cmdPath}) |
12661
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3851 launchOut.element('stringAttribute', {'key' : 'org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS', 'value': 'full,incremental,auto,'}) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3852 launchOut.element('stringAttribute', {'key' : 'org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS', 'value': mxCommand}) |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3853 launchOut.element('booleanAttribute', {'key' : 'org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED', 'value': 'true'}) |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3854 launchOut.element('stringAttribute', {'key' : 'org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY', 'value': p.suite.dir}) |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3855 |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3856 |
7299
57edf6b07d36
Removed ANT_JAR_TOOL dependency. Eclipse jar builds are now calling the command 'mx jar ${projectName}'.
Christian Humer <christian.humer@gmail.com>
parents:
7293
diff
changeset
|
3857 launchOut.close('launchConfiguration') |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3858 |
7299
57edf6b07d36
Removed ANT_JAR_TOOL dependency. Eclipse jar builds are now calling the command 'mx jar ${projectName}'.
Christian Humer <christian.humer@gmail.com>
parents:
7293
diff
changeset
|
3859 if not exists(externalToolDir): |
57edf6b07d36
Removed ANT_JAR_TOOL dependency. Eclipse jar builds are now calling the command 'mx jar ${projectName}'.
Christian Humer <christian.humer@gmail.com>
parents:
7293
diff
changeset
|
3860 os.makedirs(externalToolDir) |
12514
8c64f10f86b7
append output of mx command to (re)build graal.jar to a per-project log file
Doug Simon <doug.simon@oracle.com>
parents:
12513
diff
changeset
|
3861 update_file(join(externalToolDir, name + '.launch'), launchOut.xml(indent=xmlIndent, standalone=xmlStandalone, newl='\n')) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3862 |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3863 dotProjectDoc.open('buildCommand') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3864 dotProjectDoc.element('name', data='org.eclipse.ui.externaltools.ExternalToolBuilder') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3865 dotProjectDoc.element('triggers', data='auto,full,incremental,') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3866 dotProjectDoc.open('arguments') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3867 dotProjectDoc.open('dictionary') |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3868 dotProjectDoc.element('key', data='LaunchConfigHandle') |
12514
8c64f10f86b7
append output of mx command to (re)build graal.jar to a per-project log file
Doug Simon <doug.simon@oracle.com>
parents:
12513
diff
changeset
|
3869 dotProjectDoc.element('value', data='<project>/.externalToolBuilders/' + name + '.launch') |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3870 dotProjectDoc.close('dictionary') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3871 dotProjectDoc.open('dictionary') |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3872 dotProjectDoc.element('key', data='incclean') |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3873 dotProjectDoc.element('value', data='true') |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3874 dotProjectDoc.close('dictionary') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3875 dotProjectDoc.close('arguments') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3876 dotProjectDoc.close('buildCommand') |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3877 |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3878 def generate_eclipse_workingsets(): |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3879 """ |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3880 Populate the workspace's working set configuration with working sets generated from project data for the primary suite |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3881 If the workspace already contains working set definitions, the existing ones will be retained and extended. |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3882 In case mx/env does not contain a WORKSPACE definition pointing to the workspace root directory, a parent search from the primary suite directory is performed. |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3883 If no workspace root directory can be identified, the primary suite directory is used and the user has to place the workingsets.xml file by hand. |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3884 """ |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3885 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3886 # identify the location where to look for workingsets.xml |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3887 wsfilename = 'workingsets.xml' |
11597
723796685546
more verbose output for eclipseinit if it cannot place workingsets.xml in Eclipse metadata location
Michael Haupt <michael.haupt@oracle.com>
parents:
11514
diff
changeset
|
3888 wsloc = '.metadata/.plugins/org.eclipse.ui.workbench' |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3889 if os.environ.has_key('WORKSPACE'): |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3890 expected_wsroot = os.environ['WORKSPACE'] |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3891 else: |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
3892 expected_wsroot = _primary_suite.dir |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
3893 |
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
3894 wsroot = _find_eclipse_wsroot(expected_wsroot) |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3895 if wsroot is None: |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3896 # failed to find it |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3897 wsroot = expected_wsroot |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
3898 |
11597
723796685546
more verbose output for eclipseinit if it cannot place workingsets.xml in Eclipse metadata location
Michael Haupt <michael.haupt@oracle.com>
parents:
11514
diff
changeset
|
3899 wsdir = join(wsroot, wsloc) |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3900 if not exists(wsdir): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3901 wsdir = wsroot |
13480
6215ff792647
put warning about missing Eclipse metadata directory behind -v option
Doug Simon <doug.simon@oracle.com>
parents:
13475
diff
changeset
|
3902 logv('Could not find Eclipse metadata directory. Please place ' + wsfilename + ' in ' + wsloc + ' manually.') |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3903 wspath = join(wsdir, wsfilename) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3904 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3905 # gather working set info from project data |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3906 workingSets = dict() |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3907 for p in projects(): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3908 if p.workingSets is None: |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3909 continue |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3910 for w in p.workingSets.split(","): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3911 if not workingSets.has_key(w): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3912 workingSets[w] = [p.name] |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3913 else: |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3914 workingSets[w].append(p.name) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3915 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3916 if exists(wspath): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3917 wsdoc = _copy_workingset_xml(wspath, workingSets) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3918 else: |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3919 wsdoc = _make_workingset_xml(workingSets) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3920 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3921 update_file(wspath, wsdoc.xml(newl='\n')) |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
3922 |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3923 def _find_eclipse_wsroot(wsdir): |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3924 md = join(wsdir, '.metadata') |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3925 if exists(md): |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3926 return wsdir |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3927 split = os.path.split(wsdir) |
12042
fbe1ee508936
added ability to suppress duplicate lines on an output stream and used it to filter the GC verification log messages in the gate
Doug Simon <doug.simon@oracle.com>
parents:
11807
diff
changeset
|
3928 if split[0] == wsdir: # root directory |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3929 return None |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3930 else: |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3931 return _find_eclipse_wsroot(split[0]) |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
3932 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3933 def _make_workingset_xml(workingSets): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3934 wsdoc = XMLDoc() |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3935 wsdoc.open('workingSetManager') |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3936 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3937 for w in sorted(workingSets.keys()): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3938 _workingset_open(wsdoc, w) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3939 for p in workingSets[w]: |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3940 _workingset_element(wsdoc, p) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3941 wsdoc.close('workingSet') |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3942 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3943 wsdoc.close('workingSetManager') |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3944 return wsdoc |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3945 |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3946 def _copy_workingset_xml(wspath, workingSets): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3947 target = XMLDoc() |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3948 target.open('workingSetManager') |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3949 |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3950 parser = xml.parsers.expat.ParserCreate() |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3951 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3952 class ParserState(object): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3953 def __init__(self): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3954 self.current_ws_name = 'none yet' |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3955 self.current_ws = None |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3956 self.seen_ws = list() |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3957 self.seen_projects = list() |
13824
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3958 self.aggregate_ws = False |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3959 self.nested_ws = False |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3960 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3961 ps = ParserState() |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3962 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3963 # parsing logic |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3964 def _ws_start(name, attributes): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3965 if name == 'workingSet': |
13824
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3966 if attributes.has_key('name'): |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3967 ps.current_ws_name = attributes['name'] |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3968 if attributes.has_key('aggregate') and attributes['aggregate'] == 'true': |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3969 ps.aggregate_ws = True |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3970 ps.current_ws = None |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3971 elif workingSets.has_key(ps.current_ws_name): |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3972 ps.current_ws = workingSets[ps.current_ws_name] |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3973 ps.seen_ws.append(ps.current_ws_name) |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3974 ps.seen_projects = list() |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3975 else: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3976 ps.current_ws = None |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3977 target.open(name, attributes) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3978 parser.StartElementHandler = _ws_item |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3979 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3980 def _ws_end(name): |
13824
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3981 closeAndResetHandler = False |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3982 if name == 'workingSet': |
13824
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3983 if ps.aggregate_ws: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3984 if ps.nested_ws: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3985 ps.nested_ws = False |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3986 else: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3987 ps.aggregate_ws = False |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3988 closeAndResetHandler = True |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3989 else: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3990 if not ps.current_ws is None: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3991 for p in ps.current_ws: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3992 if not p in ps.seen_projects: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3993 _workingset_element(target, p) |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3994 closeAndResetHandler = True |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3995 if closeAndResetHandler: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3996 target.close('workingSet') |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
3997 parser.StartElementHandler = _ws_start |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3998 elif name == 'workingSetManager': |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3999 # process all working sets that are new to the file |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4000 for w in sorted(workingSets.keys()): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4001 if not w in ps.seen_ws: |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4002 _workingset_open(target, w) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4003 for p in workingSets[w]: |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4004 _workingset_element(target, p) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4005 target.close('workingSet') |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4006 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4007 def _ws_item(name, attributes): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4008 if name == 'item': |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4009 if ps.current_ws is None: |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4010 target.element(name, attributes) |
13982
b167b1838029
mx eclipseinit: take care of working sets that were edited by hand
Michael Haupt <michael.haupt@oracle.com>
parents:
13968
diff
changeset
|
4011 elif not attributes.has_key('elementID') and attributes.has_key('factoryID') and attributes.has_key('path') and attributes.has_key('type'): |
b167b1838029
mx eclipseinit: take care of working sets that were edited by hand
Michael Haupt <michael.haupt@oracle.com>
parents:
13968
diff
changeset
|
4012 target.element(name, attributes) |
14937
3de340bdb8d3
added support for adding sources to distribution
Doug Simon <doug.simon@oracle.com>
parents:
14918
diff
changeset
|
4013 p_name = attributes['path'][1:] # strip off the leading '/' |
13982
b167b1838029
mx eclipseinit: take care of working sets that were edited by hand
Michael Haupt <michael.haupt@oracle.com>
parents:
13968
diff
changeset
|
4014 ps.seen_projects.append(p_name) |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4015 else: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4016 p_name = attributes['elementID'][1:] # strip off the leading '=' |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4017 _workingset_element(target, p_name) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4018 ps.seen_projects.append(p_name) |
13824
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4019 elif name == 'workingSet': |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4020 ps.nested_ws = True |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4021 target.element(name, attributes) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4022 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4023 # process document |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4024 parser.StartElementHandler = _ws_start |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4025 parser.EndElementHandler = _ws_end |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4026 with open(wspath, 'r') as wsfile: |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4027 parser.ParseFile(wsfile) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4028 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4029 target.close('workingSetManager') |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4030 return target |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4031 |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4032 def _workingset_open(wsdoc, ws): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4033 wsdoc.open('workingSet', {'editPageID': 'org.eclipse.jdt.ui.JavaWorkingSetPage', 'factoryID': 'org.eclipse.ui.internal.WorkingSetFactory', 'id': 'wsid_' + ws, 'label': ws, 'name': ws}) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4034 |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4035 def _workingset_element(wsdoc, p): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4036 wsdoc.element('item', {'elementID': '=' + p, 'factoryID': 'org.eclipse.jdt.ui.PersistableJavaElementFactory'}) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4037 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
4038 def netbeansinit(args, refreshOnly=False, buildProcessorJars=True): |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4039 """(re)generate NetBeans project configurations""" |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4040 |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
4041 for suite in suites(True): |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
4042 _netbeansinit_suite(args, suite, refreshOnly, buildProcessorJars) |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
4043 |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
4044 def _netbeansinit_suite(args, suite, refreshOnly=False, buildProcessorJars=True): |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
4045 configZip = TimeStampFile(join(suite.mxDir, 'netbeans-config.zip')) |
13475
4a3628c79ff9
separated external libs out from zipped up IDE configs
Doug Simon <doug.simon@oracle.com>
parents:
13473
diff
changeset
|
4046 configLibsZip = join(suite.mxDir, 'eclipse-config-libs.zip') |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
4047 if refreshOnly and not configZip.exists(): |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
4048 return |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
4049 |
13682
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
4050 if _check_ide_timestamp(suite, configZip, 'netbeans'): |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
4051 logv('[NetBeans configurations are up to date - skipping]') |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
4052 return |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
4053 |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4054 updated = False |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
4055 files = [] |
13475
4a3628c79ff9
separated external libs out from zipped up IDE configs
Doug Simon <doug.simon@oracle.com>
parents:
13473
diff
changeset
|
4056 libFiles = [] |
14763 | 4057 jdks = set() |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
4058 for p in suite.projects: |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4059 if p.native: |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4060 continue |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4061 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4062 if exists(join(p.dir, 'plugin.xml')): # eclipse plugin project |
5853
767312416f6a
added support to mx for specifying library sources
Doug Simon <doug.simon@oracle.com>
parents:
5824
diff
changeset
|
4063 continue |
767312416f6a
added support to mx for specifying library sources
Doug Simon <doug.simon@oracle.com>
parents:
5824
diff
changeset
|
4064 |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4065 if not exists(join(p.dir, 'nbproject')): |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4066 os.makedirs(join(p.dir, 'nbproject')) |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4067 |
14763 | 4068 jdk = java(p.javaCompliance) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
4069 assert jdk |
14764 | 4070 |
14763 | 4071 jdks.add(jdk) |
4072 | |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
4073 out = XMLDoc() |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4074 out.open('project', {'name' : p.name, 'default' : 'default', 'basedir' : '.'}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4075 out.element('description', data='Builds, tests, and runs the project ' + p.name + '.') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4076 out.element('import', {'file' : 'nbproject/build-impl.xml'}) |
8189
3c74a32bb262
generated NetBeans projects will also update graal.jar
Doug Simon <doug.simon@oracle.com>
parents:
8183
diff
changeset
|
4077 out.open('target', {'name' : '-post-compile'}) |
13968
6c6d1eacc398
mxtool: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
4078 out.open('exec', {'executable' : sys.executable}) |
14763 | 4079 out.element('env', {'key' : 'JAVA_HOME', 'value' : jdk.jdk}) |
8189
3c74a32bb262
generated NetBeans projects will also update graal.jar
Doug Simon <doug.simon@oracle.com>
parents:
8183
diff
changeset
|
4080 out.element('arg', {'value' : os.path.abspath(__file__)}) |
3c74a32bb262
generated NetBeans projects will also update graal.jar
Doug Simon <doug.simon@oracle.com>
parents:
8183
diff
changeset
|
4081 out.element('arg', {'value' : 'archive'}) |
3c74a32bb262
generated NetBeans projects will also update graal.jar
Doug Simon <doug.simon@oracle.com>
parents:
8183
diff
changeset
|
4082 out.element('arg', {'value' : '@GRAAL'}) |
3c74a32bb262
generated NetBeans projects will also update graal.jar
Doug Simon <doug.simon@oracle.com>
parents:
8183
diff
changeset
|
4083 out.close('exec') |
3c74a32bb262
generated NetBeans projects will also update graal.jar
Doug Simon <doug.simon@oracle.com>
parents:
8183
diff
changeset
|
4084 out.close('target') |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4085 out.close('project') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4086 updated = update_file(join(p.dir, 'build.xml'), out.xml(indent='\t', newl='\n')) or updated |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
4087 files.append(join(p.dir, 'build.xml')) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4088 |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
4089 out = XMLDoc() |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4090 out.open('project', {'xmlns' : 'http://www.netbeans.org/ns/project/1'}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4091 out.element('type', data='org.netbeans.modules.java.j2seproject') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4092 out.open('configuration') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4093 out.open('data', {'xmlns' : 'http://www.netbeans.org/ns/j2se-project/3'}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4094 out.element('name', data=p.name) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4095 out.element('explicit-platform', {'explicit-source-supported' : 'true'}) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4096 out.open('source-roots') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4097 out.element('root', {'id' : 'src.dir'}) |
9854
394f38496856
made projects inherit annotation processors from dependencies
Doug Simon <doug.simon@oracle.com>
parents:
9847
diff
changeset
|
4098 if len(p.annotation_processors()) > 0: |
17075
c24ea91c30ba
create generated source dirs as part of netbeansinit
Doug Simon <doug.simon@oracle.com>
parents:
17063
diff
changeset
|
4099 out.element('root', {'id' : 'src.ap-source-output.dir', 'name' : 'Generated Packages'}) |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4100 out.close('source-roots') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4101 out.open('test-roots') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4102 out.close('test-roots') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4103 out.close('data') |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4104 |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
4105 firstDep = True |
17075
c24ea91c30ba
create generated source dirs as part of netbeansinit
Doug Simon <doug.simon@oracle.com>
parents:
17063
diff
changeset
|
4106 for dep in p.all_deps([], includeLibs=False, includeAnnotationProcessors=True): |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
4107 if dep == p: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4108 continue |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4109 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
4110 if dep.isProject(): |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
4111 n = dep.name.replace('.', '_') |
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
4112 if firstDep: |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4113 out.open('references', {'xmlns' : 'http://www.netbeans.org/ns/ant-project-references/1'}) |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
4114 firstDep = False |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4115 |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4116 out.open('reference') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4117 out.element('foreign-project', data=n) |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4118 out.element('artifact-type', data='jar') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4119 out.element('script', data='build.xml') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4120 out.element('target', data='jar') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4121 out.element('clean-target', data='clean') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4122 out.element('id', data='jar') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4123 out.close('reference') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4124 |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
4125 if not firstDep: |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4126 out.close('references') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4127 |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4128 out.close('configuration') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4129 out.close('project') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4130 updated = update_file(join(p.dir, 'nbproject', 'project.xml'), out.xml(indent=' ', newl='\n')) or updated |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
4131 files.append(join(p.dir, 'nbproject', 'project.xml')) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4132 |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4133 out = StringIO.StringIO() |
14763 | 4134 jdkPlatform = 'JDK_' + str(jdk.version) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4135 |
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:
6535
diff
changeset
|
4136 annotationProcessorEnabled = "false" |
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:
6535
diff
changeset
|
4137 annotationProcessorReferences = "" |
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:
6535
diff
changeset
|
4138 annotationProcessorSrcFolder = "" |
9854
394f38496856
made projects inherit annotation processors from dependencies
Doug Simon <doug.simon@oracle.com>
parents:
9847
diff
changeset
|
4139 if len(p.annotation_processors()) > 0: |
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:
6535
diff
changeset
|
4140 annotationProcessorEnabled = "true" |
17075
c24ea91c30ba
create generated source dirs as part of netbeansinit
Doug Simon <doug.simon@oracle.com>
parents:
17063
diff
changeset
|
4141 genSrcDir = p.source_gen_dir() |
c24ea91c30ba
create generated source dirs as part of netbeansinit
Doug Simon <doug.simon@oracle.com>
parents:
17063
diff
changeset
|
4142 if not exists(genSrcDir): |
c24ea91c30ba
create generated source dirs as part of netbeansinit
Doug Simon <doug.simon@oracle.com>
parents:
17063
diff
changeset
|
4143 os.makedirs(genSrcDir) |
c24ea91c30ba
create generated source dirs as part of netbeansinit
Doug Simon <doug.simon@oracle.com>
parents:
17063
diff
changeset
|
4144 annotationProcessorSrcFolder = "src.ap-source-output.dir=" + genSrcDir |
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:
6535
diff
changeset
|
4145 |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4146 content = """ |
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:
6535
diff
changeset
|
4147 annotation.processing.enabled=""" + annotationProcessorEnabled + """ |
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:
6535
diff
changeset
|
4148 annotation.processing.enabled.in.editor=""" + annotationProcessorEnabled + """ |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4149 annotation.processing.processors.list= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4150 annotation.processing.run.all.processors=true |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4151 application.title=""" + p.name + """ |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4152 application.vendor=mx |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4153 build.classes.dir=${build.dir} |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4154 build.classes.excludes=**/*.java,**/*.form |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4155 # This directory is removed when the project is cleaned: |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4156 build.dir=bin |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4157 build.generated.sources.dir=${build.dir}/generated-sources |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4158 # Only compile against the classpath explicitly listed here: |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4159 build.sysclasspath=ignore |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4160 build.test.classes.dir=${build.dir}/test/classes |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4161 build.test.results.dir=${build.dir}/test/results |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4162 # Uncomment to specify the preferred debugger connection transport: |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4163 #debug.transport=dt_socket |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4164 debug.classpath=\\ |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4165 ${run.classpath} |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4166 debug.test.classpath=\\ |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4167 ${run.test.classpath} |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4168 # This directory is removed when the project is cleaned: |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4169 dist.dir=dist |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4170 dist.jar=${dist.dir}/""" + p.name + """.jar |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4171 dist.javadoc.dir=${dist.dir}/javadoc |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4172 endorsed.classpath= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4173 excludes= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4174 includes=** |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4175 jar.compress=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4176 # Space-separated list of extra javac options |
17075
c24ea91c30ba
create generated source dirs as part of netbeansinit
Doug Simon <doug.simon@oracle.com>
parents:
17063
diff
changeset
|
4177 javac.compilerargs=-XDignore.symbol.file |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4178 javac.deprecation=false |
16706
ff2b25002a58
set javac.source and javac.target in NetBeans configurations based on per-project Java compliance
Doug Simon <doug.simon@oracle.com>
parents:
16682
diff
changeset
|
4179 javac.source=""" + str(p.javaCompliance) + """ |
ff2b25002a58
set javac.source and javac.target in NetBeans configurations based on per-project Java compliance
Doug Simon <doug.simon@oracle.com>
parents:
16682
diff
changeset
|
4180 javac.target=""" + str(p.javaCompliance) + """ |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4181 javac.test.classpath=\\ |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4182 ${javac.classpath}:\\ |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4183 ${build.classes.dir} |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4184 javadoc.additionalparam= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4185 javadoc.author=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4186 javadoc.encoding=${source.encoding} |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4187 javadoc.noindex=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4188 javadoc.nonavbar=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4189 javadoc.notree=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4190 javadoc.private=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4191 javadoc.splitindex=true |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4192 javadoc.use=true |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4193 javadoc.version=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4194 javadoc.windowtitle= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4195 main.class= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4196 manifest.file=manifest.mf |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4197 meta.inf.dir=${src.dir}/META-INF |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
4198 mkdist.disabled=false |
14763 | 4199 platforms.""" + jdkPlatform + """.home=""" + jdk.jdk + """ |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4200 platform.active=""" + jdkPlatform + """ |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4201 run.classpath=\\ |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4202 ${javac.classpath}:\\ |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4203 ${build.classes.dir} |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4204 # Space-separated list of JVM arguments used when running the project |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4205 # (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4206 # or test-sys-prop.name=value to set system properties for unit tests): |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4207 run.jvmargs= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4208 run.test.classpath=\\ |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4209 ${javac.test.classpath}:\\ |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4210 ${build.test.classes.dir} |
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:
6535
diff
changeset
|
4211 test.src.dir=./test |
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:
6535
diff
changeset
|
4212 """ + annotationProcessorSrcFolder + """ |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4213 source.encoding=UTF-8""".replace(':', os.pathsep).replace('/', os.sep) |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4214 print >> out, content |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4215 |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4216 mainSrc = True |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4217 for src in p.srcDirs: |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4218 srcDir = join(p.dir, src) |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4219 if not exists(srcDir): |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4220 os.mkdir(srcDir) |
17092
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4221 ref = 'file.reference.' + p.name + '-' + src |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4222 print >> out, ref + '=' + src |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4223 if mainSrc: |
17092
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4224 print >> out, 'src.dir=${' + ref + '}' |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4225 mainSrc = False |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4226 else: |
17092
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4227 print >> out, 'src.' + src + '.dir=${' + ref + '}' |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4228 |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4229 javacClasspath = [] |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4230 |
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:
6535
diff
changeset
|
4231 deps = p.all_deps([], True) |
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:
6535
diff
changeset
|
4232 annotationProcessorOnlyDeps = [] |
9854
394f38496856
made projects inherit annotation processors from dependencies
Doug Simon <doug.simon@oracle.com>
parents:
9847
diff
changeset
|
4233 if len(p.annotation_processors()) > 0: |
394f38496856
made projects inherit annotation processors from dependencies
Doug Simon <doug.simon@oracle.com>
parents:
9847
diff
changeset
|
4234 for ap in p.annotation_processors(): |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
4235 apDep = dependency(ap) |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
4236 if not apDep in deps: |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
4237 deps.append(apDep) |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
4238 annotationProcessorOnlyDeps.append(apDep) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4239 |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4240 annotationProcessorReferences = [] |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4241 |
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:
6535
diff
changeset
|
4242 for dep in deps: |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4243 if dep == p: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4244 continue |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4245 |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4246 if dep.isLibrary(): |
4271
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4247 path = dep.get_path(resolve=True) |
17092
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4248 if path: |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4249 if os.sep == '\\': |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4250 path = path.replace('\\', '\\\\') |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4251 ref = 'file.reference.' + dep.name + '-bin' |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4252 print >> out, ref + '=' + path |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4253 libFiles.append(path) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4254 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
4255 elif dep.isProject(): |
17092
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4256 n = dep.name.replace('.', '_') |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4257 relDepPath = os.path.relpath(dep.dir, p.dir).replace(os.sep, '/') |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4258 ref = 'reference.' + n + '.jar' |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4259 print >> out, 'project.' + n + '=' + relDepPath |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4260 print >> out, ref + '=${project.' + n + '}/dist/' + dep.name + '.jar' |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4261 |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4262 if not dep in annotationProcessorOnlyDeps: |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4263 javacClasspath.append('${' + ref + '}') |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4264 else: |
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4265 annotationProcessorReferences.append('${' + ref + '}') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4266 |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
4267 print >> out, 'javac.classpath=\\\n ' + (os.pathsep + '\\\n ').join(javacClasspath) |
13682
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
4268 print >> out, 'javac.processorpath=' + (os.pathsep + '\\\n ').join(['${javac.classpath}'] + annotationProcessorReferences) |
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
4269 print >> out, 'javac.test.processorpath=' + (os.pathsep + '\\\n ').join(['${javac.test.classpath}'] + annotationProcessorReferences) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4270 |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4271 updated = update_file(join(p.dir, 'nbproject', 'project.properties'), out.getvalue()) or updated |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4272 out.close() |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
4273 files.append(join(p.dir, 'nbproject', 'project.properties')) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4274 |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4275 if updated: |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
4276 log('If using NetBeans:') |
17075
c24ea91c30ba
create generated source dirs as part of netbeansinit
Doug Simon <doug.simon@oracle.com>
parents:
17063
diff
changeset
|
4277 # http://stackoverflow.com/questions/24720665/cant-resolve-jdk-internal-package |
c24ea91c30ba
create generated source dirs as part of netbeansinit
Doug Simon <doug.simon@oracle.com>
parents:
17063
diff
changeset
|
4278 log(' 1. Edit etc/netbeans.conf in your NetBeans installation and modify netbeans_default_options variable to include "-J-DCachingArchiveProvider.disableCtSym=true"') |
c24ea91c30ba
create generated source dirs as part of netbeansinit
Doug Simon <doug.simon@oracle.com>
parents:
17063
diff
changeset
|
4279 log(' 2. Ensure that the following platform(s) are defined (Tools -> Java Platforms):') |
14763 | 4280 for jdk in jdks: |
4281 log(' JDK_' + str(jdk.version)) | |
17075
c24ea91c30ba
create generated source dirs as part of netbeansinit
Doug Simon <doug.simon@oracle.com>
parents:
17063
diff
changeset
|
4282 log(' 3. Open/create a Project Group for the directory containing the projects (File -> Project Group -> New Group... -> Folder of Projects)') |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4283 |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
4284 _zip_files(files, suite.dir, configZip.path) |
13475
4a3628c79ff9
separated external libs out from zipped up IDE configs
Doug Simon <doug.simon@oracle.com>
parents:
13473
diff
changeset
|
4285 _zip_files(libFiles, suite.dir, configLibsZip) |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
4286 |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4287 def intellijinit(args, refreshOnly=False): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4288 """(re)generate Intellij project configurations""" |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4289 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4290 for suite in suites(True): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4291 _intellij_suite(args, suite, refreshOnly) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4292 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4293 def _intellij_suite(args, suite, refreshOnly=False): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4294 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4295 libraries = set() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4296 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4297 ideaProjectDirectory = join(suite.dir, '.idea') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4298 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4299 if not exists(ideaProjectDirectory): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4300 os.mkdir(ideaProjectDirectory) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4301 nameFile = join(ideaProjectDirectory, '.name') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4302 update_file(nameFile, "Graal") |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4303 modulesXml = XMLDoc() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4304 modulesXml.open('project', attributes={'version': '4'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4305 modulesXml.open('component', attributes={'name': 'ProjectModuleManager'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4306 modulesXml.open('modules') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4307 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4308 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4309 def _intellij_exclude_if_exists(xml, p, name): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4310 path = join(p.dir, name) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4311 if exists(path): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4312 xml.element('excludeFolder', attributes={'url':'file://$MODULE_DIR$/' + name}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4313 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4314 annotationProcessorProfiles = {} |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4315 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4316 def _complianceToIntellijLanguageLevel(compliance): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4317 return 'JDK_1_' + str(compliance.value) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4318 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4319 # create the modules (1 module = 1 Intellij project) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4320 for p in suite.projects: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4321 if p.native: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4322 continue |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4323 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
4324 assert java(p.javaCompliance) |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4325 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4326 if not exists(p.dir): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4327 os.makedirs(p.dir) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4328 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4329 annotationProcessorProfileKey = tuple(p.annotation_processors()) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4330 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4331 if not annotationProcessorProfileKey in annotationProcessorProfiles: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4332 annotationProcessorProfiles[annotationProcessorProfileKey] = [p] |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4333 else: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4334 annotationProcessorProfiles[annotationProcessorProfileKey].append(p) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4335 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4336 intellijLanguageLevel = _complianceToIntellijLanguageLevel(p.javaCompliance) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4337 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4338 moduleXml = XMLDoc() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4339 moduleXml.open('module', attributes={'type': 'JAVA_MODULE', 'version': '4'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4340 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4341 moduleXml.open('component', attributes={'name': 'NewModuleRootManager', 'LANGUAGE_LEVEL': intellijLanguageLevel, 'inherit-compiler-output': 'false'}) |
15122
11a591a99515
mx: fixed bug in exportlibs
Doug Simon <doug.simon@oracle.com>
parents:
15118
diff
changeset
|
4342 moduleXml.element('output', attributes={'url': 'file://$MODULE_DIR$/bin'}) |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4343 moduleXml.element('exclude-output') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4344 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4345 moduleXml.open('content', attributes={'url': 'file://$MODULE_DIR$'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4346 for src in p.srcDirs: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4347 srcDir = join(p.dir, src) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4348 if not exists(srcDir): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4349 os.mkdir(srcDir) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4350 moduleXml.element('sourceFolder', attributes={'url':'file://$MODULE_DIR$/' + src, 'isTestSource': 'false'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4351 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4352 if len(p.annotation_processors()) > 0: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4353 genDir = p.source_gen_dir() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4354 if not exists(genDir): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4355 os.mkdir(genDir) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4356 moduleXml.element('sourceFolder', attributes={'url':'file://$MODULE_DIR$/' + os.path.relpath(genDir, p.dir), 'isTestSource': 'false'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4357 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4358 for name in ['.externalToolBuilders', '.settings', 'nbproject']: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4359 _intellij_exclude_if_exists(moduleXml, p, name) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4360 moduleXml.close('content') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4361 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4362 moduleXml.element('orderEntry', attributes={'type': 'jdk', 'jdkType': 'JavaSDK', 'jdkName': str(p.javaCompliance)}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4363 moduleXml.element('orderEntry', attributes={'type': 'sourceFolder', 'forTests': 'false'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4364 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4365 deps = p.all_deps([], True, includeAnnotationProcessors=True) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4366 for dep in deps: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4367 if dep == p: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4368 continue |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4369 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4370 if dep.isLibrary(): |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
4371 libraries.add(dep) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
4372 moduleXml.element('orderEntry', attributes={'type': 'library', 'name': dep.name, 'level': 'project'}) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
4373 elif dep.isProject(): |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4374 moduleXml.element('orderEntry', attributes={'type': 'module', 'module-name': dep.name}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4375 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4376 moduleXml.close('component') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4377 moduleXml.close('module') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4378 moduleFile = join(p.dir, p.name + '.iml') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4379 update_file(moduleFile, moduleXml.xml(indent=' ', newl='\n')) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4380 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4381 moduleFilePath = "$PROJECT_DIR$/" + os.path.relpath(moduleFile, suite.dir) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4382 modulesXml.element('module', attributes={'fileurl': 'file://' + moduleFilePath, 'filepath': moduleFilePath}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4383 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4384 modulesXml.close('modules') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4385 modulesXml.close('component') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4386 modulesXml.close('project') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4387 moduleXmlFile = join(ideaProjectDirectory, 'modules.xml') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4388 update_file(moduleXmlFile, modulesXml.xml(indent=' ', newl='\n')) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4389 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4390 # TODO What about cross-suite dependencies? |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4391 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4392 librariesDirectory = join(ideaProjectDirectory, 'libraries') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4393 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4394 if not exists(librariesDirectory): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4395 os.mkdir(librariesDirectory) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4396 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4397 # Setup the libraries that were used above |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4398 # TODO: setup all the libraries from the suite regardless of usage? |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4399 for library in libraries: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4400 libraryXml = XMLDoc() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4401 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4402 libraryXml.open('component', attributes={'name': 'libraryTable'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4403 libraryXml.open('library', attributes={'name': library.name}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4404 libraryXml.open('CLASSES') |
15134
f0fc09c0845e
Be sure to resolve and download librariesin mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15122
diff
changeset
|
4405 libraryXml.element('root', attributes={'url': 'jar://$PROJECT_DIR$/' + os.path.relpath(library.get_path(True), suite.dir) + '!/'}) |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4406 libraryXml.close('CLASSES') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4407 libraryXml.element('JAVADOC') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4408 if library.sourcePath: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4409 libraryXml.open('SOURCES') |
15134
f0fc09c0845e
Be sure to resolve and download librariesin mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15122
diff
changeset
|
4410 libraryXml.element('root', attributes={'url': 'jar://$PROJECT_DIR$/' + os.path.relpath(library.get_source_path(True), suite.dir) + '!/'}) |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4411 libraryXml.close('SOURCES') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4412 else: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4413 libraryXml.element('SOURCES') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4414 libraryXml.close('library') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4415 libraryXml.close('component') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4416 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4417 libraryFile = join(librariesDirectory, library.name + '.xml') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4418 update_file(libraryFile, libraryXml.xml(indent=' ', newl='\n')) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4419 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4420 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4421 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4422 # Set annotation processor profiles up, and link them to modules in compiler.xml |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4423 compilerXml = XMLDoc() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4424 compilerXml.open('project', attributes={'version': '4'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4425 compilerXml.open('component', attributes={'name': 'CompilerConfiguration'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4426 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4427 compilerXml.element('option', attributes={'name': "DEFAULT_COMPILER", 'value': 'Javac'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4428 compilerXml.element('resourceExtensions') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4429 compilerXml.open('wildcardResourcePatterns') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4430 compilerXml.element('entry', attributes={'name': '!?*.java'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4431 compilerXml.close('wildcardResourcePatterns') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4432 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4433 if annotationProcessorProfiles: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4434 compilerXml.open('annotationProcessing') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4435 for processors, modules in annotationProcessorProfiles.items(): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4436 compilerXml.open('profile', attributes={'default': 'false', 'name': '-'.join(processors), 'enabled': 'true'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4437 compilerXml.element('sourceOutputDir', attributes={'name': 'src_gen'}) # TODO use p.source_gen_dir() ? |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4438 compilerXml.element('outputRelativeToContentRoot', attributes={'value': 'true'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4439 compilerXml.open('processorPath', attributes={'useClasspath': 'false'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4440 for apName in processors: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4441 pDep = dependency(apName) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4442 for entry in pDep.all_deps([], True): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4443 if entry.isLibrary(): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4444 compilerXml.element('entry', attributes={'name': '$PROJECT_DIR$/' + os.path.relpath(entry.path, suite.dir)}) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
4445 elif entry.isProject(): |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4446 assert entry.isProject() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4447 compilerXml.element('entry', attributes={'name': '$PROJECT_DIR$/' + os.path.relpath(entry.output_dir(), suite.dir)}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4448 compilerXml.close('processorPath') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4449 for module in modules: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4450 compilerXml.element('module', attributes={'name': module.name}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4451 compilerXml.close('profile') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4452 compilerXml.close('annotationProcessing') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4453 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4454 compilerXml.close('component') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4455 compilerXml.close('project') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4456 compilerFile = join(ideaProjectDirectory, 'compiler.xml') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4457 update_file(compilerFile, compilerXml.xml(indent=' ', newl='\n')) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4458 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4459 # Wite misc.xml for global JDK config |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4460 miscXml = XMLDoc() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4461 miscXml.open('project', attributes={'version': '4'}) |
15135
0672512feb81
mx intellijinit: fix typo in project's language level settings
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15134
diff
changeset
|
4462 miscXml.element('component', attributes={'name': 'ProjectRootManager', 'version': '2', 'languageLevel': _complianceToIntellijLanguageLevel(java().javaCompliance), 'project-jdk-name': str(java().javaCompliance), 'project-jdk-type': 'JavaSDK'}) |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4463 miscXml.close('project') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4464 miscFile = join(ideaProjectDirectory, 'misc.xml') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4465 update_file(miscFile, miscXml.xml(indent=' ', newl='\n')) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4466 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4467 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4468 # TODO look into copyright settings |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4469 # TODO should add vcs.xml support |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4470 |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
4471 def ideclean(args): |
4271
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4472 """remove all Eclipse and NetBeans project configurations""" |
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4473 def rm(path): |
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4474 if exists(path): |
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4475 os.remove(path) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4476 |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
4477 for s in suites(): |
13473
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
4478 rm(join(s.mxDir, 'eclipse-config.zip')) |
69f3251332c9
modified eclipseinit and netbeansinit to save all created/copied/downloaded project related files in zip files
Doug Simon <doug.simon@oracle.com>
parents:
13471
diff
changeset
|
4479 rm(join(s.mxDir, 'netbeans-config.zip')) |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4480 shutil.rmtree(join(s.dir, '.idea'), ignore_errors=True) |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
4481 |
4271
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4482 for p in projects(): |
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4483 if p.native: |
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4484 continue |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4485 |
4271
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4486 shutil.rmtree(join(p.dir, '.settings'), ignore_errors=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:
6535
diff
changeset
|
4487 shutil.rmtree(join(p.dir, '.externalToolBuilders'), ignore_errors=True) |
4271
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4488 shutil.rmtree(join(p.dir, 'nbproject'), ignore_errors=True) |
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4489 rm(join(p.dir, '.classpath')) |
14918
31a9c79399c8
disabled current Checkstyle configurations (until Checkstyle supports Java8)
Doug Simon <doug.simon@oracle.com>
parents:
14917
diff
changeset
|
4490 rm(join(p.dir, '.checkstyle')) |
4271
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4491 rm(join(p.dir, '.project')) |
10043
e063474076dd
clean up .factorypath files on "mx ideclean"
Lukas Stadler <lukas.stadler@jku.at>
parents:
9857
diff
changeset
|
4492 rm(join(p.dir, '.factorypath')) |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4493 rm(join(p.dir, p.name + '.iml')) |
4271
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4494 rm(join(p.dir, 'build.xml')) |
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:
6535
diff
changeset
|
4495 rm(join(p.dir, 'eclipse-build.xml')) |
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:
6535
diff
changeset
|
4496 try: |
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:
6535
diff
changeset
|
4497 rm(join(p.dir, p.name + '.jar')) |
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:
6535
diff
changeset
|
4498 except: |
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:
6535
diff
changeset
|
4499 log("Error removing {0}".format(p.name + '.jar')) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4500 |
16845
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
4501 for d in _dists.itervalues(): |
16849
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
4502 if d.get_ide_project_dir(): |
0d987db807df
do not generate IDE configurations for distributions auto-generated for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16847
diff
changeset
|
4503 shutil.rmtree(d.get_ide_project_dir(), ignore_errors=True) |
16845
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
4504 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
4505 def ideinit(args, refreshOnly=False, buildProcessorJars=True): |
15378
dea98caac669
Fix help text for ideinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15376
diff
changeset
|
4506 """(re)generate Eclipse, NetBeans and Intellij project configurations""" |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
4507 eclipseinit(args, refreshOnly=refreshOnly, buildProcessorJars=buildProcessorJars) |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
4508 netbeansinit(args, refreshOnly=refreshOnly, buildProcessorJars=buildProcessorJars) |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4509 intellijinit(args, refreshOnly=refreshOnly) |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
4510 if not refreshOnly: |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
4511 fsckprojects([]) |
7913
0df252296c8d
added fsckproject command to mx for removing directories corresponding to deleted projects. This command is also called from the ideinit command (GRAAL-90)
Doug Simon <doug.simon@oracle.com>
parents:
7787
diff
changeset
|
4512 |
0df252296c8d
added fsckproject command to mx for removing directories corresponding to deleted projects. This command is also called from the ideinit command (GRAAL-90)
Doug Simon <doug.simon@oracle.com>
parents:
7787
diff
changeset
|
4513 def fsckprojects(args): |
0df252296c8d
added fsckproject command to mx for removing directories corresponding to deleted projects. This command is also called from the ideinit command (GRAAL-90)
Doug Simon <doug.simon@oracle.com>
parents:
7787
diff
changeset
|
4514 """find directories corresponding to deleted Java projects and delete them""" |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
4515 for suite in suites(True): |
7913
0df252296c8d
added fsckproject command to mx for removing directories corresponding to deleted projects. This command is also called from the ideinit command (GRAAL-90)
Doug Simon <doug.simon@oracle.com>
parents:
7787
diff
changeset
|
4516 projectDirs = [p.dir for p in suite.projects] |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4517 for dirpath, dirnames, files in os.walk(suite.dir): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4518 if dirpath == suite.dir: |
16269
f5437f2db322
mx fsckprojects: do not traverse lib subdirectory
Andreas Woess <andreas.woess@jku.at>
parents:
16262
diff
changeset
|
4519 # no point in traversing .hg or lib/ |
f5437f2db322
mx fsckprojects: do not traverse lib subdirectory
Andreas Woess <andreas.woess@jku.at>
parents:
16262
diff
changeset
|
4520 dirnames[:] = [d for d in dirnames if d not in ['.hg', 'lib']] |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4521 elif dirpath in projectDirs: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4522 # don't traverse subdirs of an existing project in this suite |
7913
0df252296c8d
added fsckproject command to mx for removing directories corresponding to deleted projects. This command is also called from the ideinit command (GRAAL-90)
Doug Simon <doug.simon@oracle.com>
parents:
7787
diff
changeset
|
4523 dirnames[:] = [] |
0df252296c8d
added fsckproject command to mx for removing directories corresponding to deleted projects. This command is also called from the ideinit command (GRAAL-90)
Doug Simon <doug.simon@oracle.com>
parents:
7787
diff
changeset
|
4524 else: |
0df252296c8d
added fsckproject command to mx for removing directories corresponding to deleted projects. This command is also called from the ideinit command (GRAAL-90)
Doug Simon <doug.simon@oracle.com>
parents:
7787
diff
changeset
|
4525 projectConfigFiles = frozenset(['.classpath', 'nbproject']) |
0df252296c8d
added fsckproject command to mx for removing directories corresponding to deleted projects. This command is also called from the ideinit command (GRAAL-90)
Doug Simon <doug.simon@oracle.com>
parents:
7787
diff
changeset
|
4526 indicators = projectConfigFiles.intersection(files) |
0df252296c8d
added fsckproject command to mx for removing directories corresponding to deleted projects. This command is also called from the ideinit command (GRAAL-90)
Doug Simon <doug.simon@oracle.com>
parents:
7787
diff
changeset
|
4527 if len(indicators) != 0: |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4528 if not sys.stdout.isatty() or ask_yes_no(dirpath + ' looks like a removed project -- delete it', 'n'): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4529 shutil.rmtree(dirpath) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4530 log('Deleted ' + dirpath) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
4531 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
4532 def javadoc(args, parser=None, docDir='javadoc', includeDeps=True, stdDoclet=True): |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4533 """generate javadoc for some/all Java projects""" |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4534 |
5701
d0a6e25de770
integrated mxtool changes from Maxine project
Doug Simon <doug.simon@oracle.com>
parents:
5699
diff
changeset
|
4535 parser = ArgumentParser(prog='mx javadoc') if parser is None else parser |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4536 parser.add_argument('-d', '--base', action='store', help='base directory for output') |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4537 parser.add_argument('--unified', action='store_true', help='put javadoc in a single directory instead of one per project') |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4538 parser.add_argument('--force', action='store_true', help='(re)generate javadoc even if package-list file exists') |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4539 parser.add_argument('--projects', action='store', help='comma separated projects to process (omit to process all projects)') |
5712
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4540 parser.add_argument('--Wapi', action='store_true', dest='warnAPI', help='show warnings about using internal APIs') |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4541 parser.add_argument('--argfile', action='store', help='name of file containing extra javadoc options') |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4542 parser.add_argument('--arg', action='append', dest='extra_args', help='extra Javadoc arguments (e.g. --arg @-use)', metavar='@<arg>', default=[]) |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4543 parser.add_argument('-m', '--memory', action='store', help='-Xmx value to pass to underlying JVM') |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4544 parser.add_argument('--packages', action='store', help='comma separated packages to process (omit to process all packages)') |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4545 parser.add_argument('--exclude-packages', action='store', help='comma separated packages to exclude') |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4546 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4547 args = parser.parse_args(args) |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4548 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4549 # build list of projects to be processed |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4550 if args.projects is not None: |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4551 candidates = [project(name) for name in args.projects.split(',')] |
11756
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
4552 else: |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
4553 candidates = projects_opt_limit_to_suites() |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4554 |
5701
d0a6e25de770
integrated mxtool changes from Maxine project
Doug Simon <doug.simon@oracle.com>
parents:
5699
diff
changeset
|
4555 # optionally restrict packages within a project |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4556 packages = [] |
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4557 if args.packages is not None: |
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4558 packages = [name for name in args.packages.split(',')] |
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4559 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4560 exclude_packages = [] |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4561 if args.exclude_packages is not None: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4562 exclude_packages = [name for name in args.exclude_packages.split(',')] |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4563 |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4564 def outDir(p): |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4565 if args.base is None: |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4566 return join(p.dir, docDir) |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4567 return join(args.base, p.name, docDir) |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4568 |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4569 def check_package_list(p): |
5701
d0a6e25de770
integrated mxtool changes from Maxine project
Doug Simon <doug.simon@oracle.com>
parents:
5699
diff
changeset
|
4570 return not exists(join(outDir(p), 'package-list')) |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4571 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4572 def assess_candidate(p, projects): |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4573 if p in projects: |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4574 return False |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4575 if args.force or args.unified or check_package_list(p): |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4576 projects.append(p) |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4577 return True |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4578 return False |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4579 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4580 projects = [] |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4581 for p in candidates: |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4582 if not p.native: |
5701
d0a6e25de770
integrated mxtool changes from Maxine project
Doug Simon <doug.simon@oracle.com>
parents:
5699
diff
changeset
|
4583 if includeDeps: |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4584 deps = p.all_deps([], includeLibs=False, includeSelf=False) |
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4585 for d in deps: |
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4586 assess_candidate(d, projects) |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4587 if not assess_candidate(p, projects): |
10568
070b4a3c56f3
disabled "noisy" log statements unless -v option (i.e. verbose) is specified to mx
Doug Simon <doug.simon@oracle.com>
parents:
10530
diff
changeset
|
4588 logv('[package-list file exists - skipping {0}]'.format(p.name)) |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4589 |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4590 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4591 def find_packages(sourceDirs, pkgs=None): |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4592 if pkgs is None: |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4593 pkgs = set() |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4594 for sourceDir in sourceDirs: |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4595 for root, _, files in os.walk(sourceDir): |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4596 if len([name for name in files if name.endswith('.java')]) != 0: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4597 pkg = root[len(sourceDir) + 1:].replace(os.sep, '.') |
5709
24347f3b605f
fixed javadoc command on Windows
Doug Simon <doug.simon@oracle.com>
parents:
5706
diff
changeset
|
4598 if len(packages) == 0 or pkg in packages: |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4599 if len(exclude_packages) == 0 or not pkg in exclude_packages: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4600 pkgs.add(pkg) |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4601 return pkgs |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4602 |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4603 extraArgs = [a.lstrip('@') for a in args.extra_args] |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4604 if args.argfile is not None: |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4605 extraArgs += ['@' + args.argfile] |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4606 memory = '2g' |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4607 if args.memory is not None: |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4608 memory = args.memory |
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4609 memory = '-J-Xmx' + memory |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4610 |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4611 if not args.unified: |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4612 for p in projects: |
5710
8d31a849ca97
make the javadoc command work when classes have not been previously compiled
Doug Simon <doug.simon@oracle.com>
parents:
5709
diff
changeset
|
4613 # The project must be built to ensure javadoc can find class files for all referenced classes |
8d31a849ca97
make the javadoc command work when classes have not been previously compiled
Doug Simon <doug.simon@oracle.com>
parents:
5709
diff
changeset
|
4614 build(['--no-native', '--projects', p.name]) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4615 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4616 pkgs = find_packages(p.source_dirs(), set()) |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4617 deps = p.all_deps([], includeLibs=False, includeSelf=False) |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4618 links = ['-link', 'http://docs.oracle.com/javase/' + str(p.javaCompliance.value) + '/docs/api/'] |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4619 out = outDir(p) |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4620 for d in deps: |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4621 depOut = outDir(d) |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4622 links.append('-link') |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4623 links.append(os.path.relpath(depOut, out)) |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4624 cp = classpath(p.name, includeSelf=True) |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4625 sp = os.pathsep.join(p.source_dirs()) |
5706
6f2ccb483d96
added overview.html for each project and integrated it into the generated 'mx site' command
Doug Simon <doug.simon@oracle.com>
parents:
5701
diff
changeset
|
4626 overviewFile = join(p.dir, 'overview.html') |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4627 delOverviewFile = False |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4628 if not exists(overviewFile): |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4629 with open(overviewFile, 'w') as fp: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4630 print >> fp, '<html><body>Documentation for the <code>' + p.name + '</code> project.</body></html>' |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4631 delOverviewFile = True |
5712
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4632 nowarnAPI = [] |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4633 if not args.warnAPI: |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4634 nowarnAPI.append('-XDignore.symbol.file') |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
4635 |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
4636 # windowTitle onloy applies to the standard doclet processor |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
4637 windowTitle = [] |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
4638 if stdDoclet: |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
4639 windowTitle = ['-windowtitle', p.name + ' javadoc'] |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4640 try: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4641 log('Generating {2} for {0} in {1}'.format(p.name, out, docDir)) |
14916
66e9855f4ae8
Add -source -bootclasspath and -extdirs arguments to javadoc command
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14915
diff
changeset
|
4642 projectJava = java(p.javaCompliance) |
15419
f093fa76e872
made note about workaround for JDK-8041628
Doug Simon <doug.simon@oracle.com>
parents:
15408
diff
changeset
|
4643 |
f093fa76e872
made note about workaround for JDK-8041628
Doug Simon <doug.simon@oracle.com>
parents:
15408
diff
changeset
|
4644 # Once https://bugs.openjdk.java.net/browse/JDK-8041628 is fixed, |
f093fa76e872
made note about workaround for JDK-8041628
Doug Simon <doug.simon@oracle.com>
parents:
15408
diff
changeset
|
4645 # this should be reverted to: |
f093fa76e872
made note about workaround for JDK-8041628
Doug Simon <doug.simon@oracle.com>
parents:
15408
diff
changeset
|
4646 # javadocExe = java().javadoc |
f093fa76e872
made note about workaround for JDK-8041628
Doug Simon <doug.simon@oracle.com>
parents:
15408
diff
changeset
|
4647 javadocExe = projectJava.javadoc |
f093fa76e872
made note about workaround for JDK-8041628
Doug Simon <doug.simon@oracle.com>
parents:
15408
diff
changeset
|
4648 |
f093fa76e872
made note about workaround for JDK-8041628
Doug Simon <doug.simon@oracle.com>
parents:
15408
diff
changeset
|
4649 run([javadocExe, memory, |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4650 '-XDignore.symbol.file', |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4651 '-classpath', cp, |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4652 '-quiet', |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4653 '-d', out, |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4654 '-overview', overviewFile, |
14916
66e9855f4ae8
Add -source -bootclasspath and -extdirs arguments to javadoc command
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14915
diff
changeset
|
4655 '-sourcepath', sp, |
66e9855f4ae8
Add -source -bootclasspath and -extdirs arguments to javadoc command
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14915
diff
changeset
|
4656 '-source', str(projectJava.javaCompliance), |
66e9855f4ae8
Add -source -bootclasspath and -extdirs arguments to javadoc command
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14915
diff
changeset
|
4657 '-bootclasspath', projectJava.bootclasspath(), |
66e9855f4ae8
Add -source -bootclasspath and -extdirs arguments to javadoc command
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14915
diff
changeset
|
4658 '-extdirs', projectJava.extdirs()] + |
15406
ca16edfcecd5
mx: fixed site command by removing brittle post-processing of javadoc output
Doug Simon <doug.simon@oracle.com>
parents:
15403
diff
changeset
|
4659 ([] if projectJava.javaCompliance < JavaCompliance('1.8') else ['-Xdoclint:none']) + |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4660 links + |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4661 extraArgs + |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4662 nowarnAPI + |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
4663 windowTitle + |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4664 list(pkgs)) |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4665 log('Generated {2} for {0} in {1}'.format(p.name, out, docDir)) |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4666 finally: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4667 if delOverviewFile: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4668 os.remove(overviewFile) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4669 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4670 else: |
5710
8d31a849ca97
make the javadoc command work when classes have not been previously compiled
Doug Simon <doug.simon@oracle.com>
parents:
5709
diff
changeset
|
4671 # The projects must be built to ensure javadoc can find class files for all referenced classes |
8d31a849ca97
make the javadoc command work when classes have not been previously compiled
Doug Simon <doug.simon@oracle.com>
parents:
5709
diff
changeset
|
4672 build(['--no-native']) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4673 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4674 pkgs = set() |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4675 sp = [] |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4676 names = [] |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4677 for p in projects: |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4678 find_packages(p.source_dirs(), pkgs) |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4679 sp += p.source_dirs() |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4680 names.append(p.name) |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4681 |
14763 | 4682 links = ['-link', 'http://docs.oracle.com/javase/' + str(java().javaCompliance.value) + '/docs/api/'] |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
4683 out = join(_primary_suite.dir, docDir) |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4684 if args.base is not None: |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4685 out = join(args.base, docDir) |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4686 cp = classpath() |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4687 sp = os.pathsep.join(sp) |
5712
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4688 nowarnAPI = [] |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4689 if not args.warnAPI: |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4690 nowarnAPI.append('-XDignore.symbol.file') |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4691 log('Generating {2} for {0} in {1}'.format(', '.join(names), out, docDir)) |
5712
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4692 run([java().javadoc, memory, |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4693 '-classpath', cp, |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4694 '-quiet', |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4695 '-d', out, |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4696 '-sourcepath', sp] + |
15403
a9df38ce8fb7
mx: disable doclint when running javadoc (until the code base is doclint clean)
Doug Simon <doug.simon@oracle.com>
parents:
15386
diff
changeset
|
4697 ([] if java().javaCompliance < JavaCompliance('1.8') else ['-Xdoclint:none']) + |
5712
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4698 links + |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4699 extraArgs + |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4700 nowarnAPI + |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4701 list(pkgs)) |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4702 log('Generated {2} for {0} in {1}'.format(', '.join(names), out, docDir)) |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4703 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4704 def site(args): |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4705 """creates a website containing javadoc and the project dependency graph""" |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4706 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4707 parser = ArgumentParser(prog='site') |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4708 parser.add_argument('-d', '--base', action='store', help='directory for generated site', required=True, metavar='<dir>') |
15406
ca16edfcecd5
mx: fixed site command by removing brittle post-processing of javadoc output
Doug Simon <doug.simon@oracle.com>
parents:
15403
diff
changeset
|
4709 parser.add_argument('--tmp', action='store', help='directory to use for intermediate results', metavar='<dir>') |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4710 parser.add_argument('--name', action='store', help='name of overall documentation', required=True, metavar='<name>') |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4711 parser.add_argument('--overview', action='store', help='path to the overview content for overall documentation', required=True, metavar='<path>') |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4712 parser.add_argument('--projects', action='store', help='comma separated projects to process (omit to process all projects)') |
5782
488864d5069a
added support for passing -tag option to javadoc to suppress warnings about unrecognized tags in javadoc comments
Doug Simon <doug.simon@oracle.com>
parents:
5778
diff
changeset
|
4713 parser.add_argument('--jd', action='append', help='extra Javadoc arguments (e.g. --jd @-use)', metavar='@<arg>', default=[]) |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4714 parser.add_argument('--exclude-packages', action='store', help='comma separated packages to exclude', metavar='<pkgs>') |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4715 parser.add_argument('--dot-output-base', action='store', help='base file name (relative to <dir>/all) for project dependency graph .svg and .jpg files generated by dot (omit to disable dot generation)', metavar='<path>') |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4716 parser.add_argument('--title', action='store', help='value used for -windowtitle and -doctitle javadoc args for overall documentation (default: "<name>")', metavar='<title>') |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4717 args = parser.parse_args(args) |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4718 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4719 args.base = os.path.abspath(args.base) |
15406
ca16edfcecd5
mx: fixed site command by removing brittle post-processing of javadoc output
Doug Simon <doug.simon@oracle.com>
parents:
15403
diff
changeset
|
4720 tmpbase = args.tmp if args.tmp else tempfile.mkdtemp(prefix=basename(args.base) + '.', dir=dirname(args.base)) |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4721 unified = join(tmpbase, 'all') |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4722 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4723 exclude_packages_arg = [] |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4724 if args.exclude_packages is not None: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4725 exclude_packages_arg = ['--exclude-packages', args.exclude_packages] |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4726 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4727 projects = sorted_deps() |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4728 projects_arg = [] |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4729 if args.projects is not None: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4730 projects_arg = ['--projects', args.projects] |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4731 projects = [project(name) for name in args.projects.split(',')] |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4732 |
5782
488864d5069a
added support for passing -tag option to javadoc to suppress warnings about unrecognized tags in javadoc comments
Doug Simon <doug.simon@oracle.com>
parents:
5778
diff
changeset
|
4733 extra_javadoc_args = [] |
488864d5069a
added support for passing -tag option to javadoc to suppress warnings about unrecognized tags in javadoc comments
Doug Simon <doug.simon@oracle.com>
parents:
5778
diff
changeset
|
4734 for a in args.jd: |
488864d5069a
added support for passing -tag option to javadoc to suppress warnings about unrecognized tags in javadoc comments
Doug Simon <doug.simon@oracle.com>
parents:
5778
diff
changeset
|
4735 extra_javadoc_args.append('--arg') |
488864d5069a
added support for passing -tag option to javadoc to suppress warnings about unrecognized tags in javadoc comments
Doug Simon <doug.simon@oracle.com>
parents:
5778
diff
changeset
|
4736 extra_javadoc_args.append('@' + a) |
488864d5069a
added support for passing -tag option to javadoc to suppress warnings about unrecognized tags in javadoc comments
Doug Simon <doug.simon@oracle.com>
parents:
5778
diff
changeset
|
4737 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4738 try: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4739 # Create javadoc for each project |
5782
488864d5069a
added support for passing -tag option to javadoc to suppress warnings about unrecognized tags in javadoc comments
Doug Simon <doug.simon@oracle.com>
parents:
5778
diff
changeset
|
4740 javadoc(['--base', tmpbase] + exclude_packages_arg + projects_arg + extra_javadoc_args) |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4741 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4742 # Create unified javadoc for all projects |
6506
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4743 with open(args.overview) as fp: |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4744 content = fp.read() |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4745 idx = content.rfind('</body>') |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4746 if idx != -1: |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4747 args.overview = join(tmpbase, 'overview_with_projects.html') |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4748 with open(args.overview, 'w') as fp2: |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4749 print >> fp2, content[0:idx] |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4750 print >> fp2, """<div class="contentContainer"> |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4751 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Projects table"> |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4752 <caption><span>Projects</span><span class="tabEnd"> </span></caption> |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4753 <tr><th class="colFirst" scope="col">Project</th><th class="colLast" scope="col"> </th></tr> |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4754 <tbody>""" |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4755 color = 'row' |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4756 for p in projects: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4757 print >> fp2, '<tr class="{1}Color"><td class="colFirst"><a href="../{0}/javadoc/index.html",target = "_top">{0}</a></td><td class="colLast"> </td></tr>'.format(p.name, color) |
6506
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4758 color = 'row' if color == 'alt' else 'alt' |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4759 |
6506
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4760 print >> fp2, '</tbody></table></div>' |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4761 print >> fp2, content[idx:] |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4762 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4763 title = args.title if args.title is not None else args.name |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4764 javadoc(['--base', tmpbase, |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4765 '--unified', |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4766 '--arg', '@-windowtitle', '--arg', '@' + title, |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4767 '--arg', '@-doctitle', '--arg', '@' + title, |
5782
488864d5069a
added support for passing -tag option to javadoc to suppress warnings about unrecognized tags in javadoc comments
Doug Simon <doug.simon@oracle.com>
parents:
5778
diff
changeset
|
4768 '--arg', '@-overview', '--arg', '@' + args.overview] + exclude_packages_arg + projects_arg + extra_javadoc_args) |
15406
ca16edfcecd5
mx: fixed site command by removing brittle post-processing of javadoc output
Doug Simon <doug.simon@oracle.com>
parents:
15403
diff
changeset
|
4769 |
ca16edfcecd5
mx: fixed site command by removing brittle post-processing of javadoc output
Doug Simon <doug.simon@oracle.com>
parents:
15403
diff
changeset
|
4770 if exists(unified): |
ca16edfcecd5
mx: fixed site command by removing brittle post-processing of javadoc output
Doug Simon <doug.simon@oracle.com>
parents:
15403
diff
changeset
|
4771 shutil.rmtree(unified) |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4772 os.rename(join(tmpbase, 'javadoc'), unified) |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4773 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4774 # Generate dependency graph with Graphviz |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4775 if args.dot_output_base is not None: |
6506
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4776 dotErr = None |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4777 try: |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4778 if not 'version' in subprocess.check_output(['dot', '-V'], stderr=subprocess.STDOUT): |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4779 dotErr = 'dot -V does not print a string containing "version"' |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4780 except subprocess.CalledProcessError as e: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4781 dotErr = 'error calling "dot -V": {}'.format(e) |
6506
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4782 except OSError as e: |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4783 dotErr = 'error calling "dot -V": {}'.format(e) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4784 |
6506
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4785 if dotErr != None: |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4786 abort('cannot generate dependency graph: ' + dotErr) |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4787 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4788 dot = join(tmpbase, 'all', str(args.dot_output_base) + '.dot') |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4789 svg = join(tmpbase, 'all', str(args.dot_output_base) + '.svg') |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4790 jpg = join(tmpbase, 'all', str(args.dot_output_base) + '.jpg') |
5854
2c00c51357d8
added more content to graal.api.meta overview
Doug Simon <doug.simon@oracle.com>
parents:
5853
diff
changeset
|
4791 html = join(tmpbase, 'all', str(args.dot_output_base) + '.html') |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4792 with open(dot, 'w') as fp: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4793 dim = len(projects) |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4794 print >> fp, 'digraph projects {' |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4795 print >> fp, 'rankdir=BT;' |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4796 print >> fp, 'size = "' + str(dim) + ',' + str(dim) + '";' |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4797 print >> fp, 'node [shape=rect, fontcolor="blue"];' |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4798 # print >> fp, 'edge [color="green"];' |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4799 for p in projects: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4800 print >> fp, '"' + p.name + '" [URL = "../' + p.name + '/javadoc/index.html", target = "_top"]' |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4801 for dep in p.canonical_deps(): |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4802 if dep in [proj.name for proj in projects]: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4803 print >> fp, '"' + p.name + '" -> "' + dep + '"' |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4804 depths = dict() |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4805 for p in projects: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4806 d = p.max_depth() |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4807 depths.setdefault(d, list()).append(p.name) |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4808 print >> fp, '}' |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4809 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4810 run(['dot', '-Tsvg', '-o' + svg, '-Tjpg', '-o' + jpg, dot]) |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4811 |
6506
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4812 # Post-process generated SVG to remove title elements which most browsers |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4813 # render as redundant (and annoying) tooltips. |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4814 with open(svg, 'r') as fp: |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4815 content = fp.read() |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4816 content = re.sub('<title>.*</title>', '', content) |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4817 content = re.sub('xlink:title="[^"]*"', '', content) |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4818 with open(svg, 'w') as fp: |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4819 fp.write(content) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4820 |
6506
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4821 # Create HTML that embeds the svg file in an <object> frame |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4822 with open(html, 'w') as fp: |
305b9166b455
added projects table to the top level javadoc page generated by the site command
Doug Simon <doug.simon@oracle.com>
parents:
6350
diff
changeset
|
4823 print >> fp, '<html><body><object data="{}.svg" type="image/svg+xml"></object></body></html>'.format(args.dot_output_base) |
5854
2c00c51357d8
added more content to graal.api.meta overview
Doug Simon <doug.simon@oracle.com>
parents:
5853
diff
changeset
|
4824 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4825 if exists(args.base): |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4826 shutil.rmtree(args.base) |
15406
ca16edfcecd5
mx: fixed site command by removing brittle post-processing of javadoc output
Doug Simon <doug.simon@oracle.com>
parents:
15403
diff
changeset
|
4827 if args.tmp: |
ca16edfcecd5
mx: fixed site command by removing brittle post-processing of javadoc output
Doug Simon <doug.simon@oracle.com>
parents:
15403
diff
changeset
|
4828 shutil.copytree(tmpbase, args.base) |
ca16edfcecd5
mx: fixed site command by removing brittle post-processing of javadoc output
Doug Simon <doug.simon@oracle.com>
parents:
15403
diff
changeset
|
4829 else: |
ca16edfcecd5
mx: fixed site command by removing brittle post-processing of javadoc output
Doug Simon <doug.simon@oracle.com>
parents:
15403
diff
changeset
|
4830 shutil.move(tmpbase, args.base) |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4831 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4832 print 'Created website - root is ' + join(args.base, 'all', 'index.html') |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4833 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4834 finally: |
15406
ca16edfcecd5
mx: fixed site command by removing brittle post-processing of javadoc output
Doug Simon <doug.simon@oracle.com>
parents:
15403
diff
changeset
|
4835 if not args.tmp and exists(tmpbase): |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4836 shutil.rmtree(tmpbase) |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4837 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4838 def _kwArg(kwargs): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4839 if len(kwargs) > 0: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4840 return kwargs.pop(0) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4841 return None |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4842 |
16167
1f4955abca9b
mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents:
16087
diff
changeset
|
4843 def findclass(args, logToConsole=True, matcher=lambda string, classname: string in classname): |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4844 """find all classes matching a given substring""" |
9009
1eb16dbb31a7
changed 'mx javap' command to accept class name patterns instead of fully qualified class names
Doug Simon <doug.simon@oracle.com>
parents:
9002
diff
changeset
|
4845 matches = [] |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4846 for entry, filename in classpath_walk(includeBootClasspath=True): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4847 if filename.endswith('.class'): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4848 if isinstance(entry, zipfile.ZipFile): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4849 classname = filename.replace('/', '.') |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4850 else: |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4851 classname = filename.replace(os.sep, '.') |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4852 classname = classname[:-len('.class')] |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4853 for a in args: |
16167
1f4955abca9b
mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents:
16087
diff
changeset
|
4854 if matcher(a, classname): |
9009
1eb16dbb31a7
changed 'mx javap' command to accept class name patterns instead of fully qualified class names
Doug Simon <doug.simon@oracle.com>
parents:
9002
diff
changeset
|
4855 matches.append(classname) |
1eb16dbb31a7
changed 'mx javap' command to accept class name patterns instead of fully qualified class names
Doug Simon <doug.simon@oracle.com>
parents:
9002
diff
changeset
|
4856 if logToConsole: |
1eb16dbb31a7
changed 'mx javap' command to accept class name patterns instead of fully qualified class names
Doug Simon <doug.simon@oracle.com>
parents:
9002
diff
changeset
|
4857 log(classname) |
1eb16dbb31a7
changed 'mx javap' command to accept class name patterns instead of fully qualified class names
Doug Simon <doug.simon@oracle.com>
parents:
9002
diff
changeset
|
4858 return matches |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4859 |
11295
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4860 def select_items(items, descriptions=None, allowMultiple=True): |
11203
8ab76b7c6ff6
added interactive selection capability to 'mx javap' command
Doug Simon <doug.simon@oracle.com>
parents:
10585
diff
changeset
|
4861 """ |
11295
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4862 Presents a command line interface for selecting one or more (if allowMultiple is true) items. |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4863 |
11203
8ab76b7c6ff6
added interactive selection capability to 'mx javap' command
Doug Simon <doug.simon@oracle.com>
parents:
10585
diff
changeset
|
4864 """ |
11318
345bce66c04a
mx: fix for select_items
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11301
diff
changeset
|
4865 if len(items) <= 1: |
345bce66c04a
mx: fix for select_items
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11301
diff
changeset
|
4866 return items |
345bce66c04a
mx: fix for select_items
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11301
diff
changeset
|
4867 else: |
11295
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4868 if allowMultiple: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4869 log('[0] <all>') |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4870 for i in range(0, len(items)): |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4871 if descriptions is None: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4872 log('[{0}] {1}'.format(i + 1, items[i])) |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4873 else: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4874 assert len(items) == len(descriptions) |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4875 wrapper = textwrap.TextWrapper(subsequent_indent=' ') |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4876 log('\n'.join(wrapper.wrap('[{0}] {1} - {2}'.format(i + 1, items[i], descriptions[i])))) |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4877 while True: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4878 if allowMultiple: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4879 s = raw_input('Enter number(s) of selection (separate multiple choices with spaces): ').split() |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4880 else: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4881 s = [raw_input('Enter number of selection: ')] |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4882 try: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4883 s = [int(x) for x in s] |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4884 except: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4885 log('Selection contains non-numeric characters: "' + ' '.join(s) + '"') |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4886 continue |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4887 |
11295
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4888 if allowMultiple and 0 in s: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4889 return items |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4890 |
11295
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4891 indexes = [] |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4892 for n in s: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4893 if n not in range(1, len(items) + 1): |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4894 log('Invalid selection: ' + str(n)) |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4895 continue |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4896 else: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4897 indexes.append(n - 1) |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4898 if allowMultiple: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4899 return [items[i] for i in indexes] |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4900 if len(indexes) == 1: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4901 return items[indexes[0]] |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4902 return None |
11203
8ab76b7c6ff6
added interactive selection capability to 'mx javap' command
Doug Simon <doug.simon@oracle.com>
parents:
10585
diff
changeset
|
4903 |
15087
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4904 def exportlibs(args): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4905 """export libraries to an archive file""" |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4906 |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4907 parser = ArgumentParser(prog='exportlibs') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4908 parser.add_argument('-b', '--base', action='store', help='base name of archive (default: libs)', default='libs', metavar='<path>') |
15364
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4909 parser.add_argument('-a', '--include-all', action='store_true', help="include all defined libaries") |
15087
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4910 parser.add_argument('--arc', action='store', choices=['tgz', 'tbz2', 'tar', 'zip'], default='tgz', help='the type of the archive to create') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4911 parser.add_argument('--no-sha1', action='store_false', dest='sha1', help='do not create SHA1 signature of archive') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4912 parser.add_argument('--no-md5', action='store_false', dest='md5', help='do not create MD5 signature of archive') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4913 parser.add_argument('--include-system-libs', action='store_true', help='include system libraries (i.e., those not downloaded from URLs)') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4914 parser.add_argument('extras', nargs=REMAINDER, help='extra files and directories to add to archive', metavar='files...') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4915 args = parser.parse_args(args) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4916 |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4917 def createArchive(addMethod): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4918 entries = {} |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4919 def add(path, arcname): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4920 apath = os.path.abspath(path) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4921 if not entries.has_key(arcname): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4922 entries[arcname] = apath |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4923 logv('[adding ' + path + ']') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4924 addMethod(path, arcname=arcname) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4925 elif entries[arcname] != apath: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4926 logv('[warning: ' + apath + ' collides with ' + entries[arcname] + ' as ' + arcname + ']') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4927 else: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4928 logv('[already added ' + path + ']') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4929 |
15355
43aa6a7e60bd
mx exportlibs: include libs only if there's a real dependency from a project
Bernhard Urban <bernhard.urban@jku.at>
parents:
15274
diff
changeset
|
4930 libsToExport = set() |
15364
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4931 if args.include_all: |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4932 for lib in _libs.itervalues(): |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4933 libsToExport.add(lib) |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4934 else: |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4935 def isValidLibrary(dep): |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4936 if dep in _libs.iterkeys(): |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4937 lib = _libs[dep] |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4938 if len(lib.urls) != 0 or args.include_system_libs: |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4939 return lib |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4940 return None |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4941 |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4942 # iterate over all project dependencies and find used libraries |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4943 for p in _projects.itervalues(): |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4944 for dep in p.deps: |
15355
43aa6a7e60bd
mx exportlibs: include libs only if there's a real dependency from a project
Bernhard Urban <bernhard.urban@jku.at>
parents:
15274
diff
changeset
|
4945 r = isValidLibrary(dep) |
43aa6a7e60bd
mx exportlibs: include libs only if there's a real dependency from a project
Bernhard Urban <bernhard.urban@jku.at>
parents:
15274
diff
changeset
|
4946 if r: |
43aa6a7e60bd
mx exportlibs: include libs only if there's a real dependency from a project
Bernhard Urban <bernhard.urban@jku.at>
parents:
15274
diff
changeset
|
4947 libsToExport.add(r) |
43aa6a7e60bd
mx exportlibs: include libs only if there's a real dependency from a project
Bernhard Urban <bernhard.urban@jku.at>
parents:
15274
diff
changeset
|
4948 |
15364
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4949 # a library can have other libraries as dependency |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4950 size = 0 |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4951 while size != len(libsToExport): |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4952 size = len(libsToExport) |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4953 for lib in libsToExport.copy(): |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4954 for dep in lib.deps: |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4955 r = isValidLibrary(dep) |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4956 if r: |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4957 libsToExport.add(r) |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
4958 |
15355
43aa6a7e60bd
mx exportlibs: include libs only if there's a real dependency from a project
Bernhard Urban <bernhard.urban@jku.at>
parents:
15274
diff
changeset
|
4959 for lib in libsToExport: |
43aa6a7e60bd
mx exportlibs: include libs only if there's a real dependency from a project
Bernhard Urban <bernhard.urban@jku.at>
parents:
15274
diff
changeset
|
4960 add(lib.get_path(resolve=True), lib.path) |
15356
9e7f87dc6395
mx exportlibs: include source dependencies and digest files
Bernhard Urban <bernhard.urban@jku.at>
parents:
15355
diff
changeset
|
4961 if lib.sha1: |
9e7f87dc6395
mx exportlibs: include source dependencies and digest files
Bernhard Urban <bernhard.urban@jku.at>
parents:
15355
diff
changeset
|
4962 add(lib.get_path(resolve=True) + ".sha1", lib.path + ".sha1") |
9e7f87dc6395
mx exportlibs: include source dependencies and digest files
Bernhard Urban <bernhard.urban@jku.at>
parents:
15355
diff
changeset
|
4963 if lib.sourcePath: |
9e7f87dc6395
mx exportlibs: include source dependencies and digest files
Bernhard Urban <bernhard.urban@jku.at>
parents:
15355
diff
changeset
|
4964 add(lib.get_source_path(resolve=True), lib.sourcePath) |
9e7f87dc6395
mx exportlibs: include source dependencies and digest files
Bernhard Urban <bernhard.urban@jku.at>
parents:
15355
diff
changeset
|
4965 if lib.sourceSha1: |
9e7f87dc6395
mx exportlibs: include source dependencies and digest files
Bernhard Urban <bernhard.urban@jku.at>
parents:
15355
diff
changeset
|
4966 add(lib.get_source_path(resolve=True) + ".sha1", lib.sourcePath + ".sha1") |
15355
43aa6a7e60bd
mx exportlibs: include libs only if there's a real dependency from a project
Bernhard Urban <bernhard.urban@jku.at>
parents:
15274
diff
changeset
|
4967 |
15087
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4968 if args.extras: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4969 for e in args.extras: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4970 if os.path.isdir(e): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4971 for root, _, filenames in os.walk(e): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4972 for name in filenames: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4973 f = join(root, name) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4974 add(f, f) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4975 else: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4976 add(e, e) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4977 |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4978 if args.arc == 'zip': |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4979 path = args.base + '.zip' |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4980 with zipfile.ZipFile(path, 'w') as zf: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4981 createArchive(zf.write) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4982 else: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4983 path = args.base + '.tar' |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4984 mode = 'w' |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4985 if args.arc != 'tar': |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4986 sfx = args.arc[1:] |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4987 mode = mode + ':' + sfx |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4988 path = path + '.' + sfx |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4989 with tarfile.open(path, mode) as tar: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4990 createArchive(tar.add) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4991 log('created ' + path) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4992 |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4993 def digest(enabled, path, factory, suffix): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4994 if enabled: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4995 d = factory() |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4996 with open(path, 'rb') as f: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4997 while True: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4998 buf = f.read(4096) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
4999 if not buf: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5000 break |
15122
11a591a99515
mx: fixed bug in exportlibs
Doug Simon <doug.simon@oracle.com>
parents:
15118
diff
changeset
|
5001 d.update(buf) |
15087
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5002 with open(path + '.' + suffix, 'w') as fp: |
15122
11a591a99515
mx: fixed bug in exportlibs
Doug Simon <doug.simon@oracle.com>
parents:
15118
diff
changeset
|
5003 print >> fp, d.hexdigest() |
15087
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5004 log('created ' + path + '.' + suffix) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5005 |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5006 digest(args.sha1, path, hashlib.sha1, 'sha1') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5007 digest(args.md5, path, hashlib.md5, 'md5') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5008 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5009 def javap(args): |
9009
1eb16dbb31a7
changed 'mx javap' command to accept class name patterns instead of fully qualified class names
Doug Simon <doug.simon@oracle.com>
parents:
9002
diff
changeset
|
5010 """disassemble classes matching given pattern with javap""" |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5011 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5012 javapExe = java().javap |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5013 if not exists(javapExe): |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5014 abort('The javap executable does not exists: ' + javapExe) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5015 else: |
11203
8ab76b7c6ff6
added interactive selection capability to 'mx javap' command
Doug Simon <doug.simon@oracle.com>
parents:
10585
diff
changeset
|
5016 candidates = findclass(args, logToConsole=False) |
8ab76b7c6ff6
added interactive selection capability to 'mx javap' command
Doug Simon <doug.simon@oracle.com>
parents:
10585
diff
changeset
|
5017 if len(candidates) == 0: |
8ab76b7c6ff6
added interactive selection capability to 'mx javap' command
Doug Simon <doug.simon@oracle.com>
parents:
10585
diff
changeset
|
5018 log('no matches') |
8ab76b7c6ff6
added interactive selection capability to 'mx javap' command
Doug Simon <doug.simon@oracle.com>
parents:
10585
diff
changeset
|
5019 selection = select_items(candidates) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5020 run([javapExe, '-private', '-verbose', '-classpath', classpath()] + selection) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5021 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5022 def show_projects(args): |
17184
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5023 """show all projects""" |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5024 for s in suites(): |
17163
30dda118ef3d
mx: added support for extending distributions; require list literals for list attributes in projects.py
Doug Simon <doug.simon@oracle.com>
parents:
17159
diff
changeset
|
5025 if len(s.projects) != 0: |
17184
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5026 log(join(s.mxDir, 'suite*.py')) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5027 for p in s.projects: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5028 log('\t' + p.name) |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
5029 |
17184
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5030 def show_suites(args): |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5031 """show all suites""" |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5032 def _show_section(name, section): |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5033 if len(section) != 0: |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5034 log(' ' + name + ':') |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5035 for e in section: |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5036 log(' ' + e.name) |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5037 |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5038 for s in suites(): |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5039 log(join(s.mxDir, 'suite*.py')) |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5040 _show_section('libraries', s.libs) |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5041 _show_section('jrelibraries', s.jreLibs) |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5042 _show_section('projects', s.projects) |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5043 _show_section('distributions', s.dists) |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5044 |
11511
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5045 def ask_yes_no(question, default=None): |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5046 """""" |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5047 assert not default or default == 'y' or default == 'n' |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5048 if not sys.stdout.isatty(): |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5049 if default: |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5050 return default |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5051 else: |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5052 abort("Can not answer '" + question + "?' if stdout is not a tty") |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5053 questionMark = '? [yn]: ' |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5054 if default: |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5055 questionMark = questionMark.replace(default, default.upper()) |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5056 answer = raw_input(question + questionMark) or default |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5057 while not answer: |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5058 answer = raw_input(question + questionMark) |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5059 return answer.lower().startswith('y') |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5060 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5061 def add_argument(*args, **kwargs): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5062 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5063 Define how a single command-line argument. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5064 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5065 assert _argParser is not None |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5066 _argParser.add_argument(*args, **kwargs) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5067 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
5068 def update_commands(suite, new_commands): |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
5069 for key, value in new_commands.iteritems(): |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5070 if _commands.has_key(key): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5071 warn("redefining command '" + key + "' in suite " + suite.name) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5072 _commands[key] = value |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5073 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5074 def warn(msg): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5075 if _warn: |
13968
6c6d1eacc398
mxtool: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
5076 print 'WARNING: ' + msg |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
5077 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5078 # Table of commands in alphabetical order. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5079 # Keys are command names, value are lists: [<function>, <usage msg>, <format args to doc string of function>...] |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5080 # If any of the format args are instances of Callable, then they are called with an 'env' are before being |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5081 # used in the call to str.format(). |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5082 # Suite extensions should not update this table directly, but use update_commands |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5083 _commands = { |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5084 'about': [about, ''], |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
5085 'build': [build, '[options]'], |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
5086 'checkstyle': [checkstyle, ''], |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5087 'canonicalizeprojects': [canonicalizeprojects, ''], |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5088 'clean': [clean, ''], |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
5089 'eclipseinit': [eclipseinit, ''], |
7524
bbaa734b3627
added 'mx eclipseformat' command for applying the Eclipse Code Formatter to the Java source files in a suite
Doug Simon <doug.simon@oracle.com>
parents:
7509
diff
changeset
|
5090 'eclipseformat': [eclipseformat, ''], |
15087
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5091 'exportlibs': [exportlibs, ''], |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
5092 'findclass': [findclass, ''], |
7913
0df252296c8d
added fsckproject command to mx for removing directories corresponding to deleted projects. This command is also called from the ideinit command (GRAAL-90)
Doug Simon <doug.simon@oracle.com>
parents:
7787
diff
changeset
|
5093 'fsckprojects': [fsckprojects, ''], |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5094 'help': [help_, '[command]'], |
4271
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
5095 'ideclean': [ideclean, ''], |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
5096 'ideinit': [ideinit, ''], |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
5097 'intellijinit': [intellijinit, ''], |
15818
718034423138
mxtool: fix archive subcommand such that it will return a successful returncode
Bernhard Urban <bernhard.urban@jku.at>
parents:
15786
diff
changeset
|
5098 'archive': [_archive, '[options]'], |
4301
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
5099 'projectgraph': [projectgraph, ''], |
11777
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
5100 'pylint': [pylint, ''], |
9009
1eb16dbb31a7
changed 'mx javap' command to accept class name patterns instead of fully qualified class names
Doug Simon <doug.simon@oracle.com>
parents:
9002
diff
changeset
|
5101 'javap': [javap, '<class name patterns>'], |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
5102 'javadoc': [javadoc, '[options]'], |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
5103 'site': [site, '[options]'], |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
5104 'netbeansinit': [netbeansinit, ''], |
17184
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5105 'suites': [show_suites, ''], |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5106 'projects': [show_projects, ''], |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5107 } |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5108 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5109 _argParser = ArgParser() |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5110 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5111 def _suitename(mxDir): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5112 base = os.path.basename(mxDir) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5113 parts = base.split('.') |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5114 # temporary workaround until mx.graal exists |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5115 if len(parts) == 1: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5116 return 'graal' |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5117 else: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5118 return parts[1] |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5119 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5120 def _is_suite_dir(d, mxDirName=None): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5121 """ |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5122 Checks if d contains a suite. |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5123 If mxDirName is None, matches any suite name, otherwise checks for exactly that suite. |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5124 """ |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5125 if os.path.isdir(d): |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
5126 for f in os.listdir(d): |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5127 if (mxDirName == None and (f == 'mx' or fnmatch.fnmatch(f, 'mx.*'))) or f == mxDirName: |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
5128 mxDir = join(d, f) |
17184
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5129 if exists(mxDir) and isdir(mxDir) and (exists(join(mxDir, 'suite.py'))): |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5130 return mxDir |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5131 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5132 def _check_primary_suite(): |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5133 if _primary_suite is None: |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5134 abort('no primary suite found') |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5135 else: |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5136 return _primary_suite |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5137 |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5138 def _findPrimarySuiteMxDirFrom(d): |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5139 """ search for a suite directory upwards from 'd' """ |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5140 while d: |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5141 mxDir = _is_suite_dir(d) |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5142 if mxDir is not None: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5143 return mxDir |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5144 parent = dirname(d) |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5145 if d == parent: |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5146 return None |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5147 d = parent |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5148 |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
5149 return None |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
5150 |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5151 def _findPrimarySuiteMxDir(): |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5152 # check for explicit setting |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5153 if _primary_suite_path is not None: |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5154 mxDir = _is_suite_dir(_primary_suite_path) |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5155 if mxDir is not None: |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5156 return mxDir |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5157 else: |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5158 abort(_primary_suite_path + ' does not contain an mx suite') |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5159 |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5160 # try current working directory first |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5161 mxDir = _findPrimarySuiteMxDirFrom(os.getcwd()) |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5162 if mxDir is not None: |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5163 return mxDir |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5164 # backwards compatibility: search from path of this file |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5165 return _findPrimarySuiteMxDirFrom(dirname(__file__)) |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5166 |
4241
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
5167 def main(): |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5168 primarySuiteMxDir = _findPrimarySuiteMxDir() |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5169 if primarySuiteMxDir: |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5170 global _primary_suite |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5171 _primary_suite = _loadSuite(primarySuiteMxDir, True) |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5172 else: |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
5173 abort('no primary suite found') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5174 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5175 opts, commandAndArgs = _argParser._parse_cmd_line() |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5176 |
14763 | 5177 global _opts, _java_homes |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5178 _opts = opts |
14763 | 5179 defaultJdk = JavaConfig(opts.java_home, opts.java_dbg_port) |
5180 _java_homes = [defaultJdk] | |
5181 if opts.extra_java_homes: | |
5182 for java_home in opts.extra_java_homes.split(os.pathsep): | |
5183 extraJdk = JavaConfig(java_home, opts.java_dbg_port) | |
5184 if extraJdk > defaultJdk: | |
5185 abort('Secondary JDK ' + extraJdk.jdk + ' has higher compliance level than default JDK ' + defaultJdk.jdk) | |
5186 _java_homes.append(extraJdk) | |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5187 |
4148
bf5efc22fb3f
Replace downloading of JDK 7 with copying of host JDK 7.
Doug Simon <doug.simon@oracle.com>
parents:
4147
diff
changeset
|
5188 for s in suites(): |
4180
383c1272cd1f
Fixed gate script such that JAVA_HOME can be set in env file.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4178
diff
changeset
|
5189 s._post_init(opts) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5190 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5191 if len(commandAndArgs) == 0: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5192 _argParser.print_help() |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5193 return |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5194 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5195 command = commandAndArgs[0] |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5196 command_args = commandAndArgs[1:] |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5197 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5198 if not _commands.has_key(command): |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5199 hits = [c for c in _commands.iterkeys() if c.startswith(command)] |
5824
b1dc8fbebb48
mx now handles unambiguous command prefixes (e.g. instead of 'mx eclipseinit' you can use 'mx ec')
Doug Simon <doug.simon@oracle.com>
parents:
5821
diff
changeset
|
5200 if len(hits) == 1: |
b1dc8fbebb48
mx now handles unambiguous command prefixes (e.g. instead of 'mx eclipseinit' you can use 'mx ec')
Doug Simon <doug.simon@oracle.com>
parents:
5821
diff
changeset
|
5201 command = hits[0] |
b1dc8fbebb48
mx now handles unambiguous command prefixes (e.g. instead of 'mx eclipseinit' you can use 'mx ec')
Doug Simon <doug.simon@oracle.com>
parents:
5821
diff
changeset
|
5202 elif len(hits) == 0: |
b1dc8fbebb48
mx now handles unambiguous command prefixes (e.g. instead of 'mx eclipseinit' you can use 'mx ec')
Doug Simon <doug.simon@oracle.com>
parents:
5821
diff
changeset
|
5203 abort('mx: unknown command \'{0}\'\n{1}use "mx help" for more options'.format(command, _format_commands())) |
b1dc8fbebb48
mx now handles unambiguous command prefixes (e.g. instead of 'mx eclipseinit' you can use 'mx ec')
Doug Simon <doug.simon@oracle.com>
parents:
5821
diff
changeset
|
5204 else: |
b1dc8fbebb48
mx now handles unambiguous command prefixes (e.g. instead of 'mx eclipseinit' you can use 'mx ec')
Doug Simon <doug.simon@oracle.com>
parents:
5821
diff
changeset
|
5205 abort('mx: command \'{0}\' is ambiguous\n {1}'.format(command, ' '.join(hits))) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5206 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5207 c, _ = _commands[command][:2] |
4293
d4906ea4255b
Handle SIGTERM : killing mx will properly kill subprocesses
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents:
4271
diff
changeset
|
5208 def term_handler(signum, frame): |
d4906ea4255b
Handle SIGTERM : killing mx will properly kill subprocesses
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents:
4271
diff
changeset
|
5209 abort(1) |
d4906ea4255b
Handle SIGTERM : killing mx will properly kill subprocesses
Gilles Duboscq <gilles.m.duboscq@gmail.com>
parents:
4271
diff
changeset
|
5210 signal.signal(signal.SIGTERM, term_handler) |
14134
e71d421370f3
mx: proxy SIGQUIT to child process
Bernhard Urban <bernhard.urban@jku.at>
parents:
14133
diff
changeset
|
5211 |
14135
ee66410c0679
mx: add option to send sigquit before killing child
Bernhard Urban <bernhard.urban@jku.at>
parents:
14134
diff
changeset
|
5212 def quit_handler(signum, frame): |
ee66410c0679
mx: add option to send sigquit before killing child
Bernhard Urban <bernhard.urban@jku.at>
parents:
14134
diff
changeset
|
5213 _send_sigquit() |
14153
e328f28f7401
fix for mx, did not compile on Windows
Christian Wirth <christian.wirth@oracle.com>
parents:
14136
diff
changeset
|
5214 if get_os() != 'windows': |
e328f28f7401
fix for mx, did not compile on Windows
Christian Wirth <christian.wirth@oracle.com>
parents:
14136
diff
changeset
|
5215 signal.signal(signal.SIGQUIT, quit_handler) |
14134
e71d421370f3
mx: proxy SIGQUIT to child process
Bernhard Urban <bernhard.urban@jku.at>
parents:
14133
diff
changeset
|
5216 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5217 try: |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
5218 if opts.timeout != 0: |
4239
676feaf8adee
Made the --timeout option apply to the whole mx command as opposed to each subprocess executed (the new --ptimeout does the latter).
Doug Simon <doug.simon@oracle.com>
parents:
4236
diff
changeset
|
5219 def alarm_handler(signum, frame): |
676feaf8adee
Made the --timeout option apply to the whole mx command as opposed to each subprocess executed (the new --ptimeout does the latter).
Doug Simon <doug.simon@oracle.com>
parents:
4236
diff
changeset
|
5220 abort('Command timed out after ' + str(opts.timeout) + ' seconds: ' + ' '.join(commandAndArgs)) |
676feaf8adee
Made the --timeout option apply to the whole mx command as opposed to each subprocess executed (the new --ptimeout does the latter).
Doug Simon <doug.simon@oracle.com>
parents:
4236
diff
changeset
|
5221 signal.signal(signal.SIGALRM, alarm_handler) |
676feaf8adee
Made the --timeout option apply to the whole mx command as opposed to each subprocess executed (the new --ptimeout does the latter).
Doug Simon <doug.simon@oracle.com>
parents:
4236
diff
changeset
|
5222 signal.alarm(opts.timeout) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5223 retcode = c(command_args) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5224 if retcode is not None and retcode != 0: |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5225 abort(retcode) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5226 except KeyboardInterrupt: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5227 # no need to show the stack trace when the user presses CTRL-C |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5228 abort(1) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5229 |
13471
020099961eb4
renamed JavaVersion to VersionSpec
Doug Simon <doug.simon@oracle.com>
parents:
13470
diff
changeset
|
5230 version = VersionSpec("1.0") |
13358
e1a50eac0eac
Add a version number for the mxtool and support for requesting a minimum mx version in a suite
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13288
diff
changeset
|
5231 |
14103
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
5232 currentUmask = None |
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
5233 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5234 if __name__ == '__main__': |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5235 # rename this module as 'mx' so it is not imported twice by the commands.py modules |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5236 sys.modules['mx'] = sys.modules.pop('__main__') |
4242
3e25132be4b4
Disabled eager resolution of libraries as they are defined.
Doug Simon <doug.simon@oracle.com>
parents:
4241
diff
changeset
|
5237 |
14103
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
5238 # Capture the current umask since there's no way to query it without mutating it. |
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
5239 currentUmask = os.umask(0) |
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
5240 os.umask(currentUmask) |
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
5241 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5242 main() |