Mercurial > hg > truffle
annotate mxtool/mx.py @ 19792:90f0e7566dc0
Merge.
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 11 Mar 2015 20:43:52 +0100 |
parents | 258b3658845a |
children | ad32fd810c83 |
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 # |
18890
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
5 # Copyright (c) 2007, 2015, 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 |
11295
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
37 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
|
38 import socket |
15087
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
39 import tarfile |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
40 import hashlib |
9826
cff647969dfa
fixed detection of Checkstyle errors in checkstyle command (GRAAL-293)
Doug Simon <doug.simon@oracle.com>
parents:
9262
diff
changeset
|
41 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
|
42 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
|
43 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
|
44 import difflib |
18601
676f1800077c
mx: removed unused _read_projects_file function
Doug Simon <doug.simon@oracle.com>
parents:
18484
diff
changeset
|
45 from collections import Callable |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
46 from threading import Thread |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
47 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
|
48 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
|
49 |
18602
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
50 # Support for Python 2.6 |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
51 def check_output(*popenargs, **kwargs): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
52 process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
53 output, _ = process.communicate() |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
54 retcode = process.poll() |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
55 if retcode: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
56 cmd = kwargs.get("args") |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
57 if cmd is None: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
58 cmd = popenargs[0] |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
59 error = subprocess.CalledProcessError(retcode, cmd) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
60 error.output = output |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
61 raise error |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
62 return output |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
63 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
64 # Support for jython |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
65 def is_jython(): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
66 return sys.platform.startswith('java') |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
67 |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
68 if not is_jython(): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
69 import multiprocessing |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
70 |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
71 def cpu_count(): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
72 if is_jython(): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
73 from java.lang import Runtime |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
74 runtime = Runtime.getRuntime() |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
75 return runtime.availableProcessors() |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
76 else: |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
77 return multiprocessing.cpu_count() |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
78 |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
79 |
18602
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
80 try: subprocess.check_output |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
81 except: subprocess.check_output = check_output |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
82 |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
83 try: zipfile.ZipFile.__enter__ |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
84 except: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
85 zipfile.ZipFile.__enter__ = lambda self: self |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
86 zipfile.ZipFile.__exit__ = lambda self, t, value, traceback: self.close() |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
87 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
88 _projects = dict() |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
89 _libs = dict() |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
90 _jreLibs = dict() |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
91 _dists = dict() |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
92 _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
|
93 _annotationProcessors = None |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
94 _primary_suite_path = None |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
95 _primary_suite = None |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
96 _opts = None |
14763 | 97 _java_homes = None |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
98 _warn = False |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
99 |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
100 """ |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
101 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
|
102 """ |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
103 class Distribution: |
17059
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
104 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
|
105 self.suite = suite |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
106 self.name = name |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
107 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
|
108 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
|
109 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
|
110 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
|
111 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
|
112 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
|
113 self.excludedDependencies = excludedDependencies |
15638
83c69954bbaa
mxtool: distribution dependency should be a list
Bernhard Urban <bernhard.urban@jku.at>
parents:
15601
diff
changeset
|
114 self.distDependencies = distDependencies |
17059
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
115 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
|
116 |
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
|
117 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
|
118 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
|
119 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
|
120 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
|
121 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
|
122 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
|
123 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
|
124 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
|
125 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
|
126 except SystemExit as e: |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
127 abort('invalid excluded dependency for {0} distribution: {1}'.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
|
128 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
|
129 |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
130 def __str__(self): |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
131 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
|
132 |
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
|
133 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
|
134 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
|
135 |
16845
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
136 """ |
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
137 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
|
138 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
|
139 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
|
140 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
|
141 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
|
142 """ |
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
143 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
|
144 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
|
145 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
|
146 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
|
147 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
|
148 else: |
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
149 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
|
150 |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
151 def make_archive(self): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
152 # are sources combined into main archive? |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
153 unified = self.path == self.sourcesPath |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
154 |
18602
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
155 with Archiver(self.path) as arc: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
156 with Archiver(None if unified else self.sourcesPath) as srcArcRaw: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
157 srcArc = arc if unified else srcArcRaw |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
158 services = {} |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
159 def overwriteCheck(zf, arcname, source): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
160 if not hasattr(zf, '_provenance'): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
161 zf._provenance = {} |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
162 existingSource = zf._provenance.get(arcname, None) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
163 isOverwrite = False |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
164 if existingSource and existingSource != source: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
165 if arcname[-1] != os.path.sep: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
166 logv('warning: ' + self.path + ': avoid overwrite of ' + arcname + '\n new: ' + source + '\n old: ' + existingSource) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
167 isOverwrite = True |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
168 zf._provenance[arcname] = source |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
169 return isOverwrite |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
170 |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
171 if self.mainClass: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
172 manifest = "Manifest-Version: 1.0\nMain-Class: %s\n\n" % (self.mainClass) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
173 if not overwriteCheck(arc.zf, "META-INF/MANIFEST.MF", "project files"): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
174 arc.zf.writestr("META-INF/MANIFEST.MF", manifest) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
175 |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
176 for dep in self.sorted_deps(includeLibs=True): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
177 isCoveredByDependecy = False |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
178 for d in self.distDependencies: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
179 if dep in _dists[d].sorted_deps(includeLibs=True, transitive=True): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
180 logv("Excluding {0} from {1} because it's provided by the dependency {2}".format(dep.name, self.path, d)) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
181 isCoveredByDependecy = True |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
182 break |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
183 |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
184 if isCoveredByDependecy: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
185 continue |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
186 |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
187 if dep.isLibrary(): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
188 l = dep |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
189 # merge library jar into distribution jar |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
190 logv('[' + self.path + ': adding library ' + l.name + ']') |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
191 lpath = l.get_path(resolve=True) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
192 libSourcePath = l.get_source_path(resolve=True) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
193 if lpath: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
194 with zipfile.ZipFile(lpath, 'r') as lp: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
195 for arcname in lp.namelist(): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
196 if arcname.startswith('META-INF/services/') and not arcname == 'META-INF/services/': |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
197 service = arcname[len('META-INF/services/'):] |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
198 assert '/' not in service |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
199 services.setdefault(service, []).extend(lp.read(arcname).splitlines()) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
200 else: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
201 if not overwriteCheck(arc.zf, arcname, lpath + '!' + arcname): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
202 arc.zf.writestr(arcname, lp.read(arcname)) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
203 if srcArc.zf and libSourcePath: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
204 with zipfile.ZipFile(libSourcePath, 'r') as lp: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
205 for arcname in lp.namelist(): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
206 if not overwriteCheck(srcArc.zf, arcname, lpath + '!' + arcname): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
207 srcArc.zf.writestr(arcname, lp.read(arcname)) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
208 elif dep.isProject(): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
209 p = dep |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
210 |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
211 if self.javaCompliance: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
212 if p.javaCompliance > self.javaCompliance: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
213 abort("Compliance level doesn't match: Distribution {0} requires {1}, but {2} is {3}.".format(self.name, self.javaCompliance, p.name, p.javaCompliance)) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
214 |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
215 # skip a Java project if its Java compliance level is "higher" than the configured JDK |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
216 jdk = java(p.javaCompliance) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
217 assert jdk |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
218 |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
219 logv('[' + self.path + ': adding project ' + p.name + ']') |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
220 outputDir = p.output_dir() |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
221 for root, _, files in os.walk(outputDir): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
222 relpath = root[len(outputDir) + 1:] |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
223 if relpath == join('META-INF', 'services'): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
224 for service in files: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
225 with open(join(root, service), 'r') as fp: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
226 services.setdefault(service, []).extend([provider.strip() for provider in fp.readlines()]) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
227 elif relpath == join('META-INF', 'providers'): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
228 for provider in files: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
229 with open(join(root, provider), 'r') as fp: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
230 for service in fp: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
231 services.setdefault(service.strip(), []).append(provider) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
232 else: |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
233 for f in files: |
18602
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
234 arcname = join(relpath, f).replace(os.sep, '/') |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
235 if not overwriteCheck(arc.zf, arcname, join(root, f)): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
236 arc.zf.write(join(root, f), arcname) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
237 if srcArc.zf: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
238 sourceDirs = p.source_dirs() |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
239 if p.source_gen_dir(): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
240 sourceDirs.append(p.source_gen_dir()) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
241 for srcDir in sourceDirs: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
242 for root, _, files in os.walk(srcDir): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
243 relpath = root[len(srcDir) + 1:] |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
244 for f in files: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
245 if f.endswith('.java'): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
246 arcname = join(relpath, f).replace(os.sep, '/') |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
247 if not overwriteCheck(srcArc.zf, arcname, join(root, f)): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
248 srcArc.zf.write(join(root, f), arcname) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
249 |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
250 for service, providers in services.iteritems(): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
251 arcname = 'META-INF/services/' + service |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
252 arc.zf.writestr(arcname, '\n'.join(providers)) |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
253 |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
254 self.notify_updated() |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
255 |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
256 |
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
|
257 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
|
258 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
|
259 l(self) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
260 |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
261 """ |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
262 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
|
263 """ |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
264 class Dependency: |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
265 def __init__(self, suite, name): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
266 self.name = name |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
267 self.suite = suite |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
268 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
269 def __cmp__(self, other): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
270 return cmp(self.name, other.name) |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
271 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
272 def __str__(self): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
273 return self.name |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
274 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
275 def __eq__(self, other): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
276 return self.name == other.name |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
277 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
278 def __ne__(self, other): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
279 return self.name != other.name |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
280 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
281 def __hash__(self): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
282 return hash(self.name) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
283 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
284 def isLibrary(self): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
285 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
|
286 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
287 def isJreLibrary(self): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
288 return isinstance(self, JreLibrary) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
289 |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
290 def isProject(self): |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
291 return isinstance(self, Project) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
292 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
293 class Project(Dependency): |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
294 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
|
295 Dependency.__init__(self, suite, name) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
296 self.srcDirs = srcDirs |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
297 self.deps = deps |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
298 self.checkstyleProj = name |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
299 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
|
300 self.native = False |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
301 self.workingSets = workingSets |
7509 | 302 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
|
303 |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
304 # 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
|
305 self.definedAnnotationProcessors = None |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
306 self.definedAnnotationProcessorsDist = None |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
307 |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
308 |
14763 | 309 # Verify that a JDK exists for this project if its compliance level is |
310 # less than the compliance level of the default JDK | |
311 jdk = java(self.javaCompliance) | |
312 if jdk is None and self.javaCompliance < java().javaCompliance: | |
313 abort('Cannot find ' + str(self.javaCompliance) + ' JDK required by ' + name + '. ' + | |
14764 | 314 'Specify it with --extra-java-homes option or EXTRA_JAVA_HOMES environment variable.') |
14763 | 315 |
5581
9911227e6dd3
create directories for not yet existing projects
Doug Simon <doug.simon@oracle.com>
parents:
5455
diff
changeset
|
316 # Create directories for projects that don't yet exist |
7509 | 317 if not exists(d): |
318 os.mkdir(d) | |
5581
9911227e6dd3
create directories for not yet existing projects
Doug Simon <doug.simon@oracle.com>
parents:
5455
diff
changeset
|
319 for s in self.source_dirs(): |
9911227e6dd3
create directories for not yet existing projects
Doug Simon <doug.simon@oracle.com>
parents:
5455
diff
changeset
|
320 if not exists(s): |
9911227e6dd3
create directories for not yet existing projects
Doug Simon <doug.simon@oracle.com>
parents:
5455
diff
changeset
|
321 os.mkdir(s) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
322 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
323 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
|
324 """ |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
325 Add the transitive set of dependencies for this project, including |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
326 libraries if 'includeLibs' is true, to the 'deps' list. |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
327 """ |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
328 return sorted(self._all_deps_helper(deps, [], includeLibs, includeSelf, includeJreLibs, includeAnnotationProcessors)) |
17248 | 329 |
17245
86d9e456ef98
mx: added cyclic dependency checking
Doug Simon <doug.simon@oracle.com>
parents:
17236
diff
changeset
|
330 def _all_deps_helper(self, deps, dependants, includeLibs, includeSelf=True, includeJreLibs=False, includeAnnotationProcessors=False): |
86d9e456ef98
mx: added cyclic dependency checking
Doug Simon <doug.simon@oracle.com>
parents:
17236
diff
changeset
|
331 if self in dependants: |
86d9e456ef98
mx: added cyclic dependency checking
Doug Simon <doug.simon@oracle.com>
parents:
17236
diff
changeset
|
332 abort(str(self) + 'Project dependency cycle found:\n ' + |
86d9e456ef98
mx: added cyclic dependency checking
Doug Simon <doug.simon@oracle.com>
parents:
17236
diff
changeset
|
333 '\n |\n V\n '.join(map(str, dependants[dependants.index(self):])) + |
86d9e456ef98
mx: added cyclic dependency checking
Doug Simon <doug.simon@oracle.com>
parents:
17236
diff
changeset
|
334 '\n |\n V\n ' + self.name) |
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
|
335 childDeps = list(self.deps) |
9854
394f38496856
made projects inherit annotation processors from dependencies
Doug Simon <doug.simon@oracle.com>
parents:
9847
diff
changeset
|
336 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
|
337 childDeps = self.annotation_processors() + childDeps |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
338 if self in deps: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
339 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
|
340 for name in childDeps: |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
341 assert name != self.name |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
342 dep = dependency(name) |
17245
86d9e456ef98
mx: added cyclic dependency checking
Doug Simon <doug.simon@oracle.com>
parents:
17236
diff
changeset
|
343 if not dep in deps: |
86d9e456ef98
mx: added cyclic dependency checking
Doug Simon <doug.simon@oracle.com>
parents:
17236
diff
changeset
|
344 if dep.isProject(): |
86d9e456ef98
mx: added cyclic dependency checking
Doug Simon <doug.simon@oracle.com>
parents:
17236
diff
changeset
|
345 dep._all_deps_helper(deps, dependants + [self], includeLibs=includeLibs, includeJreLibs=includeJreLibs, includeAnnotationProcessors=includeAnnotationProcessors) |
17248 | 346 elif dep.isProject or (dep.isLibrary() and includeLibs) or (dep.isJreLibrary() and includeJreLibs): |
17245
86d9e456ef98
mx: added cyclic dependency checking
Doug Simon <doug.simon@oracle.com>
parents:
17236
diff
changeset
|
347 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
|
348 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
|
349 deps.append(self) |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
350 return deps |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
351 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
352 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
|
353 currentDist = distances.get(name) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
354 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
|
355 distances[name] = dist |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
356 p = project(name, False) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
357 if p is not None: |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
358 for dep in p.deps: |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
359 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
|
360 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
361 def canonical_deps(self): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
362 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
363 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
|
364 via other dependencies). |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
365 """ |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
366 distances = dict() |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
367 result = set() |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
368 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
|
369 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
|
370 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
|
371 if d == 1: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
372 result.add(n) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
373 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
374 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
|
375 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
|
376 return result |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
377 |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
378 def max_depth(self): |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
379 """ |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
380 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
|
381 """ |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
382 distances = dict() |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
383 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
|
384 return max(distances.values()) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
385 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
386 def source_dirs(self): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
387 """ |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
388 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
|
389 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
390 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
|
391 |
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
|
392 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
|
393 """ |
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
|
394 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
|
395 """ |
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
|
396 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
|
397 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
|
398 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
|
399 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
400 def output_dir(self): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
401 """ |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
402 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
|
403 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
404 if self.native: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
405 return None |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
406 return join(self.dir, 'bin') |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
407 |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
408 def jasmin_output_dir(self): |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
409 """ |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
410 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
|
411 """ |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
412 if self.native: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
413 return None |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
414 return join(self.dir, 'jasmin_classes') |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
415 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
416 def append_to_classpath(self, cp, resolve): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
417 if not self.native: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
418 cp.append(self.output_dir()) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
419 |
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
|
420 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
|
421 """ |
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
|
422 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
|
423 '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
|
424 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
|
425 """ |
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
|
426 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
|
427 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
|
428 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
|
429 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
|
430 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
|
431 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
|
432 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
|
433 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
|
434 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
|
435 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
|
436 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
|
437 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
|
438 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
|
439 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
|
440 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
|
441 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
|
442 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
|
443 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
|
444 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
|
445 break |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
446 |
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
|
447 if matchFound: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
448 simpleClassName = name[:-len('.java')] |
18725
fdf29cc07ec2
Improved error message in mx tool when package statement cannot be found.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
18710
diff
changeset
|
449 assert pkg is not None, 'could not find package statement in file ' + name |
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
|
450 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
|
451 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
|
452 if exists(pkgOutputDir): |
d89a5dbaaaf6
ignore sources for which class files do not exist
Doug Simon <doug.simon@oracle.com>
parents:
11205
diff
changeset
|
453 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
|
454 if includeInnerClasses: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
455 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
|
456 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
|
457 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
|
458 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
|
459 className = pkg + '.' + simpleClassName |
11245
d89a5dbaaaf6
ignore sources for which class files do not exist
Doug Simon <doug.simon@oracle.com>
parents:
11205
diff
changeset
|
460 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
|
461 return result |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
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 _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
|
464 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
|
465 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
|
466 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
|
467 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
|
468 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
|
469 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
|
470 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
|
471 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
|
472 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
|
473 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
|
474 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
|
475 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
|
476 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
|
477 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
|
478 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
|
479 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
|
480 # 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
|
481 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
|
482 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
|
483 |
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
|
484 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
|
485 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
|
486 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
|
487 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
|
488 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
|
489 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
|
490 |
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
|
491 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
|
492 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
|
493 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
|
494 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
|
495 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
|
496 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
|
497 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
|
498 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
|
499 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
|
500 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
|
501 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
|
502 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
|
503 |
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
|
504 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
|
505 """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
|
506 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
|
507 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
|
508 |
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
|
509 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
|
510 """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
|
511 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
|
512 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
|
513 |
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
|
514 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
|
515 """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
|
516 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
|
517 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
|
518 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
|
519 |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
520 """ |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
521 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
|
522 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
|
523 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
|
524 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
|
525 """ |
9854
394f38496856
made projects inherit annotation processors from dependencies
Doug Simon <doug.simon@oracle.com>
parents:
9847
diff
changeset
|
526 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
|
527 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
|
528 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
|
529 if hasattr(self, '_declaredAnnotationProcessors'): |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
530 aps = set(self._declaredAnnotationProcessors) |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
531 for ap in aps: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
532 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
|
533 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
|
534 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
|
535 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
|
536 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
|
537 '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
|
538 |
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
|
539 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
|
540 for p in allDeps: |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
541 # Add an annotation processor dependency |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
542 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
|
543 aps.add(p.name) |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
544 |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
545 # Inherit annotation processors from dependencies |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
546 aps.update(p.annotation_processors()) |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
547 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
548 self._annotationProcessors = sorted(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
|
549 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
|
550 |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
551 """ |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
552 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
|
553 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
|
554 """ |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
555 def annotation_processors_path(self): |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
556 aps = [project(ap) for ap in self.annotation_processors()] |
18890
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
557 libAps = [dep for dep in self.all_deps([], includeLibs=True, includeSelf=False) if dep.isLibrary() and hasattr(dep, 'annotationProcessor') and getattr(dep, 'annotationProcessor').lower() == 'true'] |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
558 if len(aps) + len(libAps): |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
559 return os.pathsep.join([ap.definedAnnotationProcessorsDist.path for ap in aps if ap.definedAnnotationProcessorsDist] + [lib.get_path(False) for lib in libAps]) |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
560 return None |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
561 |
18890
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
562 def uses_annotation_processor_library(self): |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
563 for dep in self.all_deps([], includeLibs=True, includeSelf=False): |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
564 if dep.isLibrary() and hasattr(dep, 'annotationProcessor'): |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
565 return True |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
566 return False |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
567 |
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
|
568 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
|
569 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
|
570 outOfDate = False |
12641
851aa5341214
moved persistent annotation processor dependency files into mx/currentAnnotationProcessors directory
Doug Simon <doug.simon@oracle.com>
parents:
12640
diff
changeset
|
571 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
|
572 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
|
573 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
|
574 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
|
575 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
|
576 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
|
577 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
|
578 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
|
579 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
|
580 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
|
581 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
|
582 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
|
583 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
|
584 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
|
585 |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
586 def make_archive(self, path=None): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
587 outputDir = self.output_dir() |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
588 if not path: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
589 path = join(self.dir, self.name + '.jar') |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
590 with Archiver(path) as arc: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
591 for root, _, files in os.walk(outputDir): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
592 for f in files: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
593 relpath = root[len(outputDir) + 1:] |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
594 arcname = join(relpath, f).replace(os.sep, '/') |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
595 arc.zf.write(join(root, f), arcname) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
596 return path |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
597 |
14964
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
598 def _make_absolute(path, prefix): |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
599 """ |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
600 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
|
601 """ |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
602 if not isabs(path): |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
603 return join(prefix, path) |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
604 return path |
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
605 |
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
|
606 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
|
607 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
|
608 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
|
609 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
|
610 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
|
611 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
|
612 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
|
613 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
|
614 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
|
615 |
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
|
616 def download_file_with_sha1(name, path, urls, sha1, sha1path, resolve, mustExist, sources=False, canSymlink=True): |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
617 canSymlink = canSymlink and not (get_os() == 'windows' or get_os() == 'cygwin') |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
618 def _download_lib(): |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
619 cacheDir = _cygpathW2U(get_env('MX_CACHE_DIR', join(_opts.user_home, '.mx', 'cache'))) |
16598
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
620 if not exists(cacheDir): |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
621 os.makedirs(cacheDir) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
622 base = basename(path) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
623 cachePath = join(cacheDir, base + '_' + sha1) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
624 |
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
|
625 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
|
626 if exists(cachePath): |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
627 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
|
628 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
|
629 download(cachePath, urls) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
630 |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
631 d = dirname(path) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
632 if d != '' and not exists(d): |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
633 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
|
634 |
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
|
635 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
|
636 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
|
637 os.unlink(path) |
16598
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
638 os.symlink(cachePath, path) |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
639 else: |
edf653f51521
added per-user cache for mx downloads
Doug Simon <doug.simon@oracle.com>
parents:
16539
diff
changeset
|
640 shutil.copy(cachePath, path) |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
641 |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
642 def _sha1Cached(): |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
643 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
|
644 return f.read()[0:40] |
e666c172c9aa
mx: some cleanup around sha1 digest support
Bernhard Urban <bernhard.urban@jku.at>
parents:
14153
diff
changeset
|
645 |
e666c172c9aa
mx: some cleanup around sha1 digest support
Bernhard Urban <bernhard.urban@jku.at>
parents:
14153
diff
changeset
|
646 def _writeSha1Cached(): |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
647 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
|
648 f.write(sha1OfFile(path)) |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
649 |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
650 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
|
651 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
|
652 _download_lib() |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
653 |
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
|
654 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
|
655 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
|
656 _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
|
657 |
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
|
658 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
|
659 _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
|
660 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
|
661 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
|
662 _writeSha1Cached() |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
663 |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
664 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
|
665 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
666 class BaseLibrary(Dependency): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
667 def __init__(self, suite, name, optional): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
668 Dependency.__init__(self, suite, name) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
669 self.optional = optional |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
670 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
671 def __ne__(self, other): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
672 result = self.__eq__(other) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
673 if result is NotImplemented: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
674 return result |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
675 return not result |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
676 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
677 """ |
16671
7cdd7ede912d
mx: fix comments: jrelibrary is about the JRE, not the JDK
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16670
diff
changeset
|
678 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
|
679 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
|
680 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
|
681 (i.e., _projects and _libs). |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
682 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
683 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
|
684 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
|
685 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
|
686 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
|
687 found in the Oracle JRE. |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
688 """ |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
689 class JreLibrary(BaseLibrary): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
690 def __init__(self, suite, name, jar, optional): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
691 BaseLibrary.__init__(self, suite, name, optional) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
692 self.jar = jar |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
693 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
694 def __eq__(self, other): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
695 if isinstance(other, JreLibrary): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
696 return self.jar == other.jar |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
697 else: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
698 return NotImplemented |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
699 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
700 def is_present_in_jdk(self, jdk): |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
701 return jdk.containsJar(self.jar) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
702 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
703 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
|
704 """ |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
705 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
|
706 """ |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
707 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
|
708 deps.append(self) |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
709 return sorted(deps) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
710 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
711 class Library(BaseLibrary): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
712 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
|
713 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
|
714 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
|
715 self.urls = urls |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
716 self.sha1 = sha1 |
5853
767312416f6a
added support to mx for specifying library sources
Doug Simon <doug.simon@oracle.com>
parents:
5824
diff
changeset
|
717 self.sourcePath = sourcePath |
767312416f6a
added support to mx for specifying library sources
Doug Simon <doug.simon@oracle.com>
parents:
5824
diff
changeset
|
718 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
|
719 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
|
720 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
|
721 sourceSha1 = sha1 |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
722 self.sourceSha1 = sourceSha1 |
15149
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
723 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
|
724 abspath = _make_absolute(path, self.suite.dir) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
725 if not optional and not exists(abspath): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
726 if not len(urls): |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
727 abort('Non-optional library {0} must either exist at {1} 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
|
728 |
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
|
729 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
|
730 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
|
731 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
|
732 if exists(absInputPath): |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
733 abort('Missing "{0}" property for library {1}. Add the following line to projects file:\nlibrary@{2}@{3}={4}'.format(propName, name, name, propName, sha1OfFile(absInputPath))) |
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
734 abort('Missing "{0}" property for library {1}'.format(propName, name)) |
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
|
735 |
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
|
736 _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
|
737 _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
|
738 |
6350
f45d5cb03c3b
added support for downloading dependencies that are directories
Doug Simon <doug.simon@oracle.com>
parents:
6335
diff
changeset
|
739 for url in urls: |
f45d5cb03c3b
added support for downloading dependencies that are directories
Doug Simon <doug.simon@oracle.com>
parents:
6335
diff
changeset
|
740 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
|
741 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
|
742 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
743 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
|
744 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
|
745 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
|
746 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
|
747 else: |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
748 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
|
749 else: |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
750 return NotImplemented |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
751 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
752 def get_path(self, resolve): |
14964
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
753 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
|
754 sha1path = path + '.sha1' |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
755 |
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
|
756 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
|
757 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
|
758 return None |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
759 |
16725
22b2950a0613
workaround for buggy pylint warning
Doug Simon <doug.simon@oracle.com>
parents:
16720
diff
changeset
|
760 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
|
761 |
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
|
762 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
|
763 |
5853
767312416f6a
added support to mx for specifying library sources
Doug Simon <doug.simon@oracle.com>
parents:
5824
diff
changeset
|
764 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
|
765 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
|
766 return None |
15147
d93cc1fdf55e
Fix Library.get_source_path (use sourcePath instead of path)
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15135
diff
changeset
|
767 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
|
768 sha1path = path + '.sha1' |
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
769 |
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
|
770 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
|
771 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
772 def append_to_classpath(self, cp, resolve): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
773 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
|
774 if path and (exists(path) or not resolve): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
775 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
|
776 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
777 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
|
778 """ |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
779 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
|
780 """ |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
781 if not includeLibs: |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
782 return sorted(deps) |
15149
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
783 childDeps = list(self.deps) |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
784 if self in deps: |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
785 return sorted(deps) |
15149
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
786 for name in childDeps: |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
787 assert name != self.name |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
788 dep = library(name) |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
789 if not dep in deps: |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
790 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
|
791 if not self in deps and includeSelf: |
2c7b18ae25d2
Add support for library dependencies
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15148
diff
changeset
|
792 deps.append(self) |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
793 return sorted(deps) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
794 |
12508
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
795 class HgConfig: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
796 """ |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
797 Encapsulates access to Mercurial (hg) |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
798 """ |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
799 def __init__(self): |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
800 self.missing = 'no hg executable found' |
12512
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
801 self.has_hg = None |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
802 |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
803 def check(self, abortOnFail=True): |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
804 if self.has_hg is None: |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
805 try: |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
806 subprocess.check_output(['hg']) |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
807 self.has_hg = True |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
808 except OSError: |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
809 self.has_hg = False |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
810 warn(self.missing) |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
811 |
12508
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
812 if not self.has_hg: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
813 if abortOnFail: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
814 abort(self.missing) |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
815 else: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
816 warn(self.missing) |
12512
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
817 |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
818 def tip(self, sDir, abortOnError=True): |
12508
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
819 try: |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
820 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
|
821 except OSError: |
21aa1ce5c666
made hg be called lazily
Doug Simon <doug.simon@oracle.com>
parents:
12508
diff
changeset
|
822 warn(self.missing) |
12508
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
823 except subprocess.CalledProcessError: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
824 if abortOnError: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
825 abort('failed to get tip revision id') |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
826 else: |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
827 return None |
5cde653f58f9
mxtool: handle missing hg executable gracefully
Mick Jordan <mick.jordan@oracle.com>
parents:
12504
diff
changeset
|
828 |
15402
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
829 def isDirty(self, sDir, abortOnError=True): |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
830 try: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
831 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
|
832 except OSError: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
833 warn(self.missing) |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
834 except subprocess.CalledProcessError: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
835 if abortOnError: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
836 abort('failed to get status') |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
837 else: |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
838 return None |
5dcf0ae606f3
mx: new export command
Bernhard Urban <bernhard.urban@jku.at>
parents:
15386
diff
changeset
|
839 |
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
|
840 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
|
841 |
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 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
|
843 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
|
844 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
|
845 |
17169
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
846 def expand(value, context): |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
847 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
|
848 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
|
849 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
|
850 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
|
851 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
|
852 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
|
853 else: |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
854 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
|
855 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
|
856 value = expandvars(value) |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
857 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
|
858 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
|
859 |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
860 return value |
a8c0553cb2e4
restore support for expanding environment variables in suite declarations
Doug Simon <doug.simon@oracle.com>
parents:
17163
diff
changeset
|
861 |
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
|
862 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
|
863 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
|
864 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
|
865 |
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
|
866 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
|
867 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
|
868 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
|
869 # 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
|
870 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
|
871 |
18602
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
872 snapshot = frozenset(sys.modules.keys()) |
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
|
873 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
|
874 |
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
|
875 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
|
876 # 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
|
877 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
|
878 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
|
879 # 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
|
880 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
|
881 |
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 # 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
|
883 # 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
|
884 # from the sys.modules name space if necessary. |
18602
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
885 extraModules = frozenset(sys.modules.keys()) - snapshot |
17396
83bbc0e5891a
removed suite_helper.py and inlined common maven URL prefix
Doug Simon <doug.simon@oracle.com>
parents:
17262
diff
changeset
|
886 assert len(extraModules) == 0, 'loading ' + modulePath + ' caused extra modules to be loaded: ' + ', '.join([m for m in extraModules]) |
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
|
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 # 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
|
889 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
|
890 |
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 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
|
892 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
|
893 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
|
894 sections = ['projects', 'libraries', 'jrelibraries', 'distributions'] + (['distribution_extensions'] if suite else ['name', 'mxversion']) |
18602
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
895 unknown = frozenset(d.keys()) - frozenset(sections) |
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
|
896 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
|
897 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
|
898 |
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 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
|
900 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
|
901 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
|
902 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
|
903 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
|
904 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
|
905 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
|
906 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
|
907 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
|
908 else: |
18620
23de014b38ab
mx: fix missing frozenset constructor to fix intersection
Andreas Woess <andreas.woess@jku.at>
parents:
18602
diff
changeset
|
909 conflicting = frozenset(additional.keys()) & frozenset(existing.keys()) |
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
|
910 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
|
911 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
|
912 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
|
913 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
|
914 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
|
915 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
|
916 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
|
917 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
|
918 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
|
919 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
|
920 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
|
921 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
|
922 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
|
923 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
|
924 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
|
925 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
|
926 |
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
|
927 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
|
928 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
|
929 modulePath = join(mxDir, moduleName + '.py') |
17186 | 930 |
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
|
931 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
|
932 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
|
933 abort('Please rename ' + deprecatedModulePath + ' to ' + modulePath) |
17186 | 934 |
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
|
935 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
|
936 |
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
|
937 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
|
938 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
939 class Suite: |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
940 def __init__(self, mxDir, primary, load=True): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
941 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
|
942 self.mxDir = mxDir |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
943 self.projects = [] |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
944 self.libs = [] |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
945 self.jreLibs = [] |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
946 self.dists = [] |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
947 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
|
948 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
|
949 self.requiredMxVersion = None |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
950 self.name = _suitename(mxDir) # validated in _load_projects |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
951 if load: |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
952 # just check that there are no imports |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
953 self._load_imports() |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
954 self._load_env() |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
955 self._load_commands() |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
956 _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
|
957 |
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
|
958 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
|
959 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
|
960 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
961 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
|
962 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
|
963 if not exists(suitePyFile): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
964 return |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
965 |
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
|
966 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
|
967 |
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
|
968 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
|
969 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
|
970 |
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
|
971 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
|
972 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
|
973 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
|
974 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
|
975 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
|
976 |
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
|
977 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
|
978 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
|
979 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
|
980 distsMap = suiteDict['distributions'] |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
981 |
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
|
982 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
|
983 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
|
984 if not v: |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
985 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
|
986 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
|
987 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
|
988 return v |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
989 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
990 for name, attrs in sorted(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
|
991 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
|
992 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
|
993 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
|
994 ap = pop_list(attrs, 'annotationProcessors', context) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
995 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
|
996 subDir = attrs.pop('subDir', None) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
997 if subDir is None: |
7509 | 998 d = join(self.dir, name) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
999 else: |
7509 | 1000 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
|
1001 workingSets = attrs.pop('workingSets', None) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
1002 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
|
1003 p.checkstyleProj = attrs.pop('checkstyle', name) |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1004 p.native = attrs.pop('native', '') == 'true' |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1005 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
|
1006 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
|
1007 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
|
1008 p._declaredAnnotationProcessors = ap |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1009 p.__dict__.update(attrs) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1010 self.projects.append(p) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1011 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1012 for name, attrs in sorted(jreLibsMap.iteritems()): |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1013 jar = attrs.pop('jar') |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1014 # JRE libraries are optional by default |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1015 optional = attrs.pop('optional', 'true') != 'false' |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1016 l = JreLibrary(self, name, jar, optional) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1017 self.jreLibs.append(l) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1018 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1019 for name, attrs in sorted(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
|
1020 context = 'library ' + name |
17013
0b2675391d01
mx library: support platform/architecture specific libraries
Bernhard Urban <bernhard.urban@jku.at>
parents:
17012
diff
changeset
|
1021 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
|
1022 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
|
1023 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
|
1024 name, platform, architecture = name.split("|") |
0b2675391d01
mx library: support platform/architecture specific libraries
Bernhard Urban <bernhard.urban@jku.at>
parents:
17012
diff
changeset
|
1025 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
|
1026 continue |
4271
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
1027 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
|
1028 urls = pop_list(attrs, 'urls', context) |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
1029 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
|
1030 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
|
1031 sourceUrls = pop_list(attrs, 'sourceUrls', context) |
14133
d2e4b81fd8f0
mx: support sha1 digest for dependencies
Bernhard Urban <bernhard.urban@jku.at>
parents:
14103
diff
changeset
|
1032 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
|
1033 deps = pop_list(attrs, 'dependencies', context) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1034 # 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
|
1035 optional = False |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1036 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
|
1037 l.__dict__.update(attrs) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1038 self.libs.append(l) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1039 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1040 for name, attrs in sorted(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
|
1041 context = 'distribution ' + name |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1042 path = attrs.pop('path') |
14937
3de340bdb8d3
added support for adding sources to distribution
Doug Simon <doug.simon@oracle.com>
parents:
14918
diff
changeset
|
1043 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
|
1044 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
|
1045 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
|
1046 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
|
1047 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
|
1048 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
|
1049 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
|
1050 d.__dict__.update(attrs) |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1051 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
|
1052 |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1053 # 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
|
1054 for p in self.projects: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1055 annotationProcessors = None |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1056 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
|
1057 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
|
1058 if exists(configFile): |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1059 with open(configFile) as fp: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1060 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
|
1061 if len(annotationProcessors) != 0: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1062 for ap in annotationProcessors: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1063 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
|
1064 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
|
1065 if annotationProcessors: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1066 dname = p.name.replace('.', '_').upper() |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1067 apDir = join(p.dir, 'ap') |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1068 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
|
1069 sourcesPath = None |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1070 deps = [p.name] |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1071 mainClass = None |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1072 exclDeps = [] |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1073 distDeps = [] |
17059
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
1074 javaCompliance = None |
a5dc5513ce85
mx: add check for compliance level of a distribution
Bernhard Urban <bernhard.urban@jku.at>
parents:
17050
diff
changeset
|
1075 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
|
1076 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
|
1077 self.dists.append(d) |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1078 p.definedAnnotationProcessors = annotationProcessors |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1079 p.definedAnnotationProcessorsDist = d |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1080 d.definingProject = p |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1081 |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1082 # 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
|
1083 def _refineAnnotationProcessorServiceConfig(dist): |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1084 aps = dist.definingProject.definedAnnotationProcessors |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1085 apsJar = dist.path |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1086 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
|
1087 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
|
1088 currentAps = zf.read(config).split() |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1089 if currentAps != aps: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1090 logv('[updating ' + config + ' in ' + apsJar + ']') |
18602
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
1091 with Archiver(apsJar) as arc: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
1092 with zipfile.ZipFile(apsJar, 'r') as lp: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
1093 for arcname in lp.namelist(): |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
1094 if arcname == config: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
1095 arc.zf.writestr(arcname, '\n'.join(aps)) |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
1096 else: |
7d8270532cd9
mx: changes towards supporting python 2.6 for call to mx from make/Makefile
Doug Simon <doug.simon@oracle.com>
parents:
18601
diff
changeset
|
1097 arc.zf.writestr(arcname, lp.read(arcname)) |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1098 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
|
1099 self.dists.append(d) |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
1100 |
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
|
1101 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
|
1102 abort('Missing "suite=<name>" in ' + suitePyFile) |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1103 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1104 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
|
1105 return 'mx_' + self.name.replace('-', '_') |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1106 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1107 def _find_commands(self, name): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1108 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
|
1109 if exists(commandsPath): |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1110 return name |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1111 else: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1112 return None |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1113 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1114 def _load_commands(self): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1115 commandsName = self._find_commands(self._commands_name()) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1116 if commandsName is None: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1117 # backwards compatibility |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1118 commandsName = self._find_commands('commands') |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1119 if commandsName is not None: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1120 if commandsName in sys.modules: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1121 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
|
1122 # temporarily extend the Python path |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1123 sys.path.insert(0, self.mxDir) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1124 mod = __import__(commandsName) |
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 self.commands = sys.modules.pop(commandsName) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1127 sys.modules[commandsName] = self.commands |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1128 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1129 # revert the Python path |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1130 del sys.path[0] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1131 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1132 if not hasattr(mod, 'mx_init'): |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1133 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
|
1134 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
|
1135 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
|
1136 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
1137 mod.mx_init(self) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1138 self.commands = mod |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1139 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1140 def _load_imports(self): |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1141 if exists(join(self.mxDir, 'imports')): |
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1142 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
|
1143 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1144 def _load_env(self): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1145 e = join(self.mxDir, 'env') |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1146 if exists(e): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1147 with open(e) as f: |
10585
be8b942f448f
made parsing of mx/env more robust
Doug Simon <doug.simon@oracle.com>
parents:
10576
diff
changeset
|
1148 lineNum = 0 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1149 for line in f: |
10585
be8b942f448f
made parsing of mx/env more robust
Doug Simon <doug.simon@oracle.com>
parents:
10576
diff
changeset
|
1150 lineNum = lineNum + 1 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1151 line = line.strip() |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1152 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
|
1153 if not '=' in line: |
be8b942f448f
made parsing of mx/env more robust
Doug Simon <doug.simon@oracle.com>
parents:
10576
diff
changeset
|
1154 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
|
1155 key, value = line.split('=', 1) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1156 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
|
1157 |
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
|
1158 def _post_init(self, opts): |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1159 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
|
1160 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
|
1161 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
|
1162 elif self.requiredMxVersion > version: |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1163 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
|
1164 # 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
|
1165 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
|
1166 existing = _projects.get(p.name) |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1167 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
|
1168 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
|
1169 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
|
1170 _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
|
1171 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
|
1172 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
|
1173 # 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
|
1174 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
|
1175 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
|
1176 _libs[l.name] = l |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1177 for l in self.jreLibs: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1178 existing = _jreLibs.get(l.name) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1179 # 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
|
1180 if existing is not None and existing != l: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1181 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
|
1182 _jreLibs[l.name] = l |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1183 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
|
1184 existing = _dists.get(d.name) |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1185 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
|
1186 # 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
|
1187 # abort('cannot redefine distribution ' + d.name) |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1188 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
|
1189 d.path = existing.path |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1190 _dists[d.name] = d |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1191 |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1192 # 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
|
1193 # 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
|
1194 # 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
|
1195 # cannot be satisfied by the configured JDKs. |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1196 # |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1197 # Removed projects and libraries are also removed from |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1198 # distributions in they are listed as dependencies. |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1199 for d in sorted_deps(includeLibs=True): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1200 if d.isLibrary(): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1201 if d.optional: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1202 try: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1203 d.optional = False |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1204 path = d.get_path(resolve=True) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1205 except SystemExit: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1206 path = None |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1207 finally: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1208 d.optional = True |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1209 if not path: |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
1210 logv('[omitting optional library {0} as {1} does not exist]'.format(d, d.path)) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1211 del _libs[d.name] |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1212 self.libs.remove(d) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1213 elif d.isProject(): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1214 if java(d.javaCompliance) is None: |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
1215 logv('[omitting project {0} as Java compliance {1} cannot be satisfied by configured JDKs]'.format(d, d.javaCompliance)) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1216 del _projects[d.name] |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1217 self.projects.remove(d) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1218 else: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1219 for name in list(d.deps): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1220 jreLib = _jreLibs.get(name) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1221 if jreLib: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1222 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
|
1223 if jreLib.optional: |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
1224 logv('[omitting project {0} as dependency {1} is missing]'.format(d, name)) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1225 del _projects[d.name] |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1226 self.projects.remove(d) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1227 else: |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
1228 abort('JRE library {0} required by {1} not found'.format(jreLib, d)) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1229 elif not dependency(name, fatalIfMissing=False): |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
1230 logv('[omitting project {0} as dependency {1} is missing]'.format(d, name)) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1231 del _projects[d.name] |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1232 self.projects.remove(d) |
16629
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1233 for dist in _dists.itervalues(): |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1234 for name in list(dist.deps): |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1235 if not dependency(name, fatalIfMissing=False): |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
1236 logv('[omitting {0} from distribution {1}]'.format(name, dist)) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1237 dist.deps.remove(name) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1238 |
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
|
1239 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
|
1240 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
|
1241 |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1242 class XMLElement(xml.dom.minidom.Element): |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1243 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
|
1244 writer.write(indent + "<" + self.tagName) |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1245 |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1246 attrs = self._get_attributes() |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1247 a_names = attrs.keys() |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1248 a_names.sort() |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1249 |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1250 for a_name in a_names: |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1251 writer.write(" %s=\"" % a_name) |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1252 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
|
1253 writer.write("\"") |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1254 if self.childNodes: |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1255 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
|
1256 # 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
|
1257 # 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
|
1258 writer.write(">") |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1259 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
|
1260 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
|
1261 else: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1262 writer.write(">%s" % (newl)) |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1263 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
|
1264 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
|
1265 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
|
1266 else: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1267 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
|
1268 |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1269 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
|
1270 |
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
|
1271 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
|
1272 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
|
1273 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
|
1274 self.padTextNodeWithoutSiblings = False |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
1275 |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1276 def createElement(self, tagName): |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1277 # overwritten to create XMLElement |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1278 e = XMLElement(tagName) |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1279 e.ownerDocument = self |
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
1280 return e |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1281 |
8302
b246434a3e4a
made build-graal.xml be generated by mx
Doug Simon <doug.simon@oracle.com>
parents:
8189
diff
changeset
|
1282 def comment(self, txt): |
b246434a3e4a
made build-graal.xml be generated by mx
Doug Simon <doug.simon@oracle.com>
parents:
8189
diff
changeset
|
1283 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
|
1284 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1285 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
|
1286 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
|
1287 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
|
1288 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
|
1289 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
|
1290 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
|
1291 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
|
1292 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
|
1293 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
|
1294 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
|
1295 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
|
1296 |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
1297 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
|
1298 assert self.current != self |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1299 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
|
1300 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
|
1301 return self |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1302 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1303 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
|
1304 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
|
1305 attributes = {} |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
1306 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
|
1307 |
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
|
1308 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
|
1309 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
|
1310 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
|
1311 if escape: |
13968
6c6d1eacc398
mxtool: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
1312 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
|
1313 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
|
1314 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
|
1315 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
|
1316 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
|
1317 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1318 def get_jython_os(): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1319 from java.lang import System as System |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1320 os_name = System.getProperty('os.name').lower() |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1321 if System.getProperty('isCygwin'): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1322 return 'cygwin' |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1323 elif os_name.startswith('mac'): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1324 return 'darwin' |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1325 elif os_name.startswith('linux'): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1326 return 'linux' |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1327 elif os_name.startswith('sunos'): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1328 return 'solaris' |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1329 elif os_name.startswith('win'): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1330 return 'windows' |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1331 else: |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1332 abort('Unknown operating system ' + os_name) |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1333 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1334 def get_os(): |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1335 """ |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1336 Get a canonical form of sys.platform. |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1337 """ |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1338 if is_jython(): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1339 return get_jython_os() |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1340 elif sys.platform.startswith('darwin'): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1341 return 'darwin' |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1342 elif sys.platform.startswith('linux'): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1343 return 'linux' |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1344 elif sys.platform.startswith('sunos'): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1345 return 'solaris' |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1346 elif sys.platform.startswith('win32'): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1347 return 'windows' |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1348 elif sys.platform.startswith('cygwin'): |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1349 return 'cygwin' |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1350 else: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1351 abort('Unknown operating system ' + sys.platform) |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
1352 |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1353 def _cygpathU2W(p): |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1354 """ |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1355 Translate a path from unix-style to windows-style. |
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1356 This method has no effects on other platforms than cygwin. |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1357 """ |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1358 if p is None or get_os() != "cygwin": |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1359 return p |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1360 return subprocess.check_output(['cygpath', '-a', '-w', p]).strip() |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1361 |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1362 def _cygpathW2U(p): |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1363 """ |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1364 Translate a path from windows-style to unix-style. |
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1365 This method has no effects on other platforms than cygwin. |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1366 """ |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1367 if p is None or get_os() != "cygwin": |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1368 return p |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1369 return subprocess.check_output(['cygpath', '-a', '-u', p]).strip() |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1370 |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1371 def _separatedCygpathU2W(p): |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1372 """ |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1373 Translate a group of paths, separated by a path separator. |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1374 unix-style to windows-style. |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1375 This method has no effects on other platforms than cygwin. |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1376 """ |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1377 if p is None or p == "" or get_os() != "cygwin": |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1378 return p |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1379 return ';'.join(map(_cygpathU2W, p.split(os.pathsep))) |
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1380 |
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1381 def _separatedCygpathW2U(p): |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1382 """ |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1383 Translate a group of paths, separated by a path separator. |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1384 windows-style to unix-style. |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1385 This method has no effects on other platforms than cygwin. |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1386 """ |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1387 if p is None or p == "" or get_os() != "cygwin": |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1388 return p |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
1389 return os.pathsep.join(map(_cygpathW2U, p.split(';'))) |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1390 |
17012
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1391 def get_arch(): |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1392 machine = platform.uname()[4] |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1393 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
|
1394 return 'amd64' |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1395 if machine in ['sun4v', 'sun4u']: |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1396 return 'sparcv9' |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1397 if machine == 'i386' and get_os() == 'darwin': |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1398 try: |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1399 # 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
|
1400 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
|
1401 return 'amd64' |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1402 except OSError: |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1403 # sysctl is not available |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1404 pass |
ad10671d1bbd
mx: move get_arch() to mxtool
Bernhard Urban <bernhard.urban@jku.at>
parents:
16947
diff
changeset
|
1405 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
|
1406 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1407 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
|
1408 """ |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1409 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
|
1410 """ |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1411 for s in _suites.itervalues(): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1412 if s.mxDir == mxDir: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1413 return s |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1414 # create the new suite |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1415 s = Suite(mxDir, primary) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1416 return s |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1417 |
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
|
1418 def suites(opt_limit_to_suite=False): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1419 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1420 Get the list of all loaded suites. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1421 """ |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1422 return _suites.values() |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1423 |
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
|
1424 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
|
1425 """ |
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
|
1426 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
|
1427 """ |
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
|
1428 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
|
1429 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
|
1430 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
|
1431 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
|
1432 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
1433 |
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
|
1434 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
|
1435 """ |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1436 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
|
1437 """ |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1438 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
|
1439 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
|
1440 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
|
1441 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
|
1442 |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1443 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
|
1444 """ |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1445 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
|
1446 """ |
16944
a04d9cbc149f
mx: Make order of projects() deterministic
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16875
diff
changeset
|
1447 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
|
1448 if opt_limit_to_suite: |
16944
a04d9cbc149f
mx: Make order of projects() deterministic
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16875
diff
changeset
|
1449 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
|
1450 else: |
16944
a04d9cbc149f
mx: Make order of projects() deterministic
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16875
diff
changeset
|
1451 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
|
1452 |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1453 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
|
1454 """ |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1455 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
|
1456 """ |
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
|
1457 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
|
1458 |
78e6109ee411
mx refactoring for split-repo suites; should have no effect on existing repos
Mick Jordan <mick.jordan@oracle.com>
parents:
11701
diff
changeset
|
1459 def _projects_opt_limit_to_suites(projects): |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
1460 return projects |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1461 |
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
|
1462 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
|
1463 """ |
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
|
1464 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
|
1465 """ |
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
|
1466 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
|
1467 if _annotationProcessors is None: |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1468 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
|
1469 for p in projects(): |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1470 for ap in p.annotation_processors(): |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1471 if project(ap, False): |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1472 aps.add(ap) |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1473 _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
|
1474 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
|
1475 |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1476 def distribution(name, fatalIfMissing=True): |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1477 """ |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1478 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
|
1479 not exist and 'fatalIfMissing' is true. |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1480 """ |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1481 d = _dists.get(name) |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1482 if d is None and fatalIfMissing: |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1483 abort('distribution named ' + name + ' not found') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1484 return d |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
1485 |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1486 def dependency(name, fatalIfMissing=True): |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1487 """ |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1488 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
|
1489 not exist for 'name' and 'fatalIfMissing' is true. |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1490 """ |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1491 d = _projects.get(name) |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1492 if d is None: |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1493 d = _libs.get(name) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1494 if d is None: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
1495 d = _jreLibs.get(name) |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1496 if d is None and fatalIfMissing: |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1497 if name in _opts.ignored_projects: |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1498 abort('project named ' + name + ' is ignored') |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1499 abort('project or library named ' + name + ' not found') |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1500 return d |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1501 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1502 def project(name, fatalIfMissing=True): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1503 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1504 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
|
1505 not exist and 'fatalIfMissing' is true. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1506 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1507 p = _projects.get(name) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1508 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
|
1509 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
|
1510 abort('project named ' + name + ' is ignored') |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1511 abort('project named ' + name + ' not found') |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1512 return p |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1513 |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1514 def library(name, fatalIfMissing=True): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1515 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1516 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
|
1517 not exist and 'fatalIfMissing' is true. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1518 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1519 l = _libs.get(name) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1520 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
|
1521 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
|
1522 abort(name + ' is a project, not a library') |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1523 abort('library named ' + name + ' not found') |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1524 return l |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1525 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1526 def _as_classpath(deps, resolve): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1527 cp = [] |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1528 if _opts.cp_prefix is not None: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1529 cp = [_opts.cp_prefix] |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1530 for d in deps: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1531 d.append_to_classpath(cp, resolve) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1532 if _opts.cp_suffix is not None: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1533 cp += [_opts.cp_suffix] |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1534 return os.pathsep.join(cp) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1535 |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1536 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
|
1537 """ |
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
|
1538 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
|
1539 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
|
1540 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1541 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
|
1542 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
|
1543 dists = list(_dists.values()) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1544 else: |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1545 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
|
1546 dists = [] |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1547 if isinstance(names, types.StringTypes): |
11374
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1548 names = [names] |
9cdf7a9d3475
Enable library as annotation processor
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11318
diff
changeset
|
1549 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
|
1550 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
|
1551 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
|
1552 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
|
1553 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
|
1554 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
|
1555 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
|
1556 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
|
1557 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
|
1558 |
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
|
1559 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
|
1560 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
|
1561 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
|
1562 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
|
1563 |
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
|
1564 # 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
|
1565 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
|
1566 |
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
|
1567 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
|
1568 |
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
|
1569 # 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
|
1570 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
|
1571 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
|
1572 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
|
1573 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
|
1574 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
|
1575 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
|
1576 |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1577 if includeBootClasspath: |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1578 result = os.pathsep.join([java().bootclasspath(), result]) |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
1579 |
18116
c4f649042a7b
mx/unittest: fix cygwin path issue
Bernhard Urban <bernhard.urban@jku.at>
parents:
17396
diff
changeset
|
1580 return result |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1581 |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1582 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
|
1583 """ |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1584 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
|
1585 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
|
1586 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
|
1587 to the classpath entry. |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1588 """ |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1589 cp = classpath(names, resolve, includeSelf, includeBootClasspath) |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1590 for entry in cp.split(os.pathsep): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1591 if not exists(entry): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1592 continue |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1593 if isdir(entry): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1594 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
|
1595 for d in dirs: |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1596 entryPath = join(root[len(entry) + 1:], d) |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1597 yield entry, entryPath |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1598 for f in files: |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1599 entryPath = join(root[len(entry) + 1:], f) |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1600 yield entry, entryPath |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1601 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
|
1602 with zipfile.ZipFile(entry, 'r') as zf: |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1603 for zi in zf.infolist(): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1604 entryPath = zi.filename |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
1605 yield zf, entryPath |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1606 |
15785
7a6f6a7ef886
Add JRE library support to mx projectgraph.
Josef Eisl <josef.eisl@jku.at>
parents:
15781
diff
changeset
|
1607 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
|
1608 """ |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1609 Gets projects and libraries sorted such that dependencies |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1610 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
|
1611 true, libraries are omitted from the result. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1612 """ |
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
|
1613 projects = projects_from_names(projectNames) |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
1614 |
15785
7a6f6a7ef886
Add JRE library support to mx projectgraph.
Josef Eisl <josef.eisl@jku.at>
parents:
15781
diff
changeset
|
1615 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
|
1616 |
16629
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1617 def sorted_dists(): |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1618 """ |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1619 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
|
1620 any distributions it depends upon. |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1621 """ |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1622 dists = [] |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1623 def add_dist(dist): |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1624 if not dist in dists: |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1625 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
|
1626 add_dist(depDist) |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1627 if not dist in dists: |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1628 dists.append(dist) |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1629 |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1630 for d in _dists.itervalues(): |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1631 add_dist(d) |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1632 return dists |
be59a1d39281
respect dependency order between distributions when building them
Doug Simon <doug.simon@oracle.com>
parents:
16623
diff
changeset
|
1633 |
15785
7a6f6a7ef886
Add JRE library support to mx projectgraph.
Josef Eisl <josef.eisl@jku.at>
parents:
15781
diff
changeset
|
1634 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
|
1635 deps = [] |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1636 for p in projects: |
15785
7a6f6a7ef886
Add JRE library support to mx projectgraph.
Josef Eisl <josef.eisl@jku.at>
parents:
15781
diff
changeset
|
1637 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
|
1638 return deps |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1639 |
18868
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1640 def _handle_lookup_java_home(jdk): |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1641 return _handle_lookup_jdk(jdk, 'JAVA_HOME', '--java-home', False) |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1642 |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1643 def _handle_lookup_extra_java_homes(jdk): |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1644 return _handle_lookup_jdk(jdk, 'EXTRA_JAVA_HOMES', '--extra-java-homes', True) |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1645 |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1646 def _handle_lookup_jdk(jdk, varName, flagName, allowMultiple): |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1647 if jdk != None and jdk != '': |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1648 return jdk |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1649 jdk = os.environ.get(varName) |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1650 if jdk != None and jdk != '': |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1651 return jdk |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1652 |
11301
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1653 if not sys.stdout.isatty(): |
18868
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1654 abort('Could not find bootstrap {0}. Use {1} option or ensure {2} environment variable is set.'.format(varName, flagName, varName)) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1655 |
11301
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1656 candidateJdks = [] |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1657 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
|
1658 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
|
1659 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
|
1660 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
|
1661 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
|
1662 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
|
1663 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
|
1664 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
|
1665 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
|
1666 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
|
1667 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
|
1668 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
|
1669 |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1670 javaHome = None |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1671 if len(candidateJdks) != 0: |
18868
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1672 log('Missing value for {0}.'.format(varName)) |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1673 javaHome = select_items(candidateJdks + ['<other>'], allowMultiple=allowMultiple) |
11301
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1674 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
|
1675 javaHome = None |
18868
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1676 if javaHome != None and allowMultiple: |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1677 javaHome = os.pathsep.join(javaHome) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1678 |
11301
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1679 while javaHome is None: |
18868
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1680 javaHome = raw_input('Enter path of JDK for {0}: '.format(varName)) |
11301
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1681 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
|
1682 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
|
1683 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
|
1684 javaHome = None |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1685 else: |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1686 break |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1687 |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
1688 envPath = join(_primary_suite.mxDir, 'env') |
18868
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1689 if ask_yes_no('Persist this setting by adding "{0}={1}" to {2}'.format(varName, javaHome, 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
|
1690 with open(envPath, 'a') as fp: |
18868
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1691 print >> fp, varName + '=' + javaHome |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1692 |
11301
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1693 return javaHome |
8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
Doug Simon <doug.simon@oracle.com>
parents:
11295
diff
changeset
|
1694 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1695 class ArgParser(ArgumentParser): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1696 # 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
|
1697 def format_help(self): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1698 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
|
1699 |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1700 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1701 def __init__(self): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1702 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
|
1703 # 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
|
1704 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
|
1705 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1706 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
|
1707 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
|
1708 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
|
1709 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
|
1710 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
|
1711 self.add_argument('-d', action='store_const', const=8000, dest='java_dbg_port', help='alias for "-dbg 8000"') |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1712 self.add_argument('--backup-modified', action='store_true', help='backup generated files if they pre-existed and are modified') |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1713 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
|
1714 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
|
1715 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
|
1716 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
|
1717 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
|
1718 self.add_argument('--user-home', help='users home directory', metavar='<path>', default=os.path.expanduser('~')) |
14763 | 1719 self.add_argument('--java-home', help='primary JDK directory (must be JDK 7 or later)', metavar='<path>') |
1720 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
|
1721 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
|
1722 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
|
1723 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
|
1724 # 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
|
1725 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
|
1726 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
|
1727 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1728 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
|
1729 if args is None: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1730 args = sys.argv[1:] |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1731 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1732 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
|
1733 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1734 opts = self.parse_args() |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1735 |
18636
dcf5cd3c6da9
mx: fixed issue with calling abort() before _opts is defined
Doug Simon <doug.simon@oracle.com>
parents:
18635
diff
changeset
|
1736 global _opts |
dcf5cd3c6da9
mx: fixed issue with calling abort() before _opts is defined
Doug Simon <doug.simon@oracle.com>
parents:
18635
diff
changeset
|
1737 _opts = opts |
dcf5cd3c6da9
mx: fixed issue with calling abort() before _opts is defined
Doug Simon <doug.simon@oracle.com>
parents:
18635
diff
changeset
|
1738 |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
1739 # 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
|
1740 opts.__dict__.setdefault('timeout', 0) |
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
1741 opts.__dict__.setdefault('ptimeout', 0) |
4149
cf4de9cc1268
Integrated latest mxtool updates.
Doug Simon <doug.simon@oracle.com>
parents:
4148
diff
changeset
|
1742 |
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
|
1743 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
|
1744 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
|
1745 |
18868
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1746 opts.java_home = _handle_lookup_java_home(opts.java_home) |
c3bb622095f1
Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18861
diff
changeset
|
1747 opts.extra_java_homes = _handle_lookup_extra_java_homes(opts.extra_java_homes) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1748 |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1749 if opts.user_home is None or opts.user_home == '': |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1750 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
|
1751 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1752 os.environ['JAVA_HOME'] = opts.java_home |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1753 os.environ['HOME'] = opts.user_home |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1754 |
5821
0cd337450409
added support to mx for ignoring (broken) projects
Doug Simon <doug.simon@oracle.com>
parents:
5782
diff
changeset
|
1755 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
|
1756 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1757 commandAndArgs = opts.__dict__.pop('commandAndArgs') |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1758 return opts, commandAndArgs |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1759 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
1760 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
|
1761 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
|
1762 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1763 def _format_commands(): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1764 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
|
1765 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
|
1766 c, _ = _commands[cmd][:2] |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1767 doc = c.__doc__ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1768 if doc is None: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1769 doc = '' |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1770 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
|
1771 return msg + '\n' |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1772 |
14763 | 1773 def java(requiredCompliance=None): |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1774 """ |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1775 Get a JavaConfig object containing Java commands launch details. |
14763 | 1776 If requiredCompliance is None, the compliance level specified by --java-home/JAVA_HOME |
1777 is returned. Otherwise, the JavaConfig exactly matching requiredCompliance is returned | |
1778 or None if there is no exact match. | |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1779 """ |
14763 | 1780 assert _java_homes |
1781 if not requiredCompliance: | |
1782 return _java_homes[0] | |
1783 for java in _java_homes: | |
1784 if java.javaCompliance == requiredCompliance: | |
1785 return java | |
1786 return None | |
1787 | |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1788 |
14913
2d1cc640512c
Add possibility to build using error-prone instead of javac.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14907
diff
changeset
|
1789 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
|
1790 if not javaConfig: |
2d1cc640512c
Add possibility to build using error-prone instead of javac.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14907
diff
changeset
|
1791 javaConfig = java() |
2d1cc640512c
Add possibility to build using error-prone instead of javac.
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14907
diff
changeset
|
1792 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
|
1793 |
14153
e328f28f7401
fix for mx, did not compile on Windows
Christian Wirth <christian.wirth@oracle.com>
parents:
14136
diff
changeset
|
1794 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
|
1795 if not sig: |
5454f6bf50bf
fix for mx, did not compile on Windows
Christian Wirth <christian.wirth@oracle.com>
parents:
14136
diff
changeset
|
1796 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
|
1797 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
|
1798 try: |
14134
e71d421370f3
mx: proxy SIGQUIT to child process
Bernhard Urban <bernhard.urban@jku.at>
parents:
14133
diff
changeset
|
1799 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
|
1800 return True |
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1801 except: |
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1802 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
|
1803 return False |
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1804 |
4158
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1805 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
|
1806 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
|
1807 while True: |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1808 try: |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1809 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
|
1810 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
|
1811 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
|
1812 continue |
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1813 raise |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1814 |
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
|
1815 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
|
1816 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
|
1817 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
|
1818 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
|
1819 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
|
1820 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
|
1821 # 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
|
1822 raise RuntimeError("Unknown child exit status!") |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1823 |
4158
f3a50640333b
Added support for specifying a timeout when running an external command.
Doug Simon <doug.simon@oracle.com>
parents:
4150
diff
changeset
|
1824 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
|
1825 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
|
1826 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
|
1827 (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
|
1828 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
|
1829 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
|
1830 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
|
1831 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
|
1832 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
|
1833 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
|
1834 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
|
1835 |
4242
3e25132be4b4
Disabled eager resolution of libraries as they are defined.
Doug Simon <doug.simon@oracle.com>
parents:
4241
diff
changeset
|
1836 # 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
|
1837 # 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
|
1838 # 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
|
1839 _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
|
1840 |
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
|
1841 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
|
1842 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
|
1843 _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
|
1844 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
|
1845 |
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
|
1846 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
|
1847 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
|
1848 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
|
1849 _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
|
1850 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
|
1851 pass |
4241
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1852 |
4660
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1853 def waitOn(p): |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1854 if get_os() == 'windows': |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1855 # 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
|
1856 retcode = None |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1857 while retcode == None: |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1858 retcode = p.poll() |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1859 time.sleep(0.05) |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1860 else: |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1861 retcode = p.wait() |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1862 return retcode |
b06ade6e927c
Fixed Ctrl+C for Windows in mx.py
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
4482
diff
changeset
|
1863 |
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
|
1864 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
|
1865 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1866 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
|
1867 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
|
1868 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
|
1869 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
|
1870 out and err if they are callable objects. |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1871 """ |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1872 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1873 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
|
1874 for arg in args: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1875 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
|
1876 |
9262
0f4ae7bbe062
fixed bug in handling of -V mx option
Doug Simon <doug.simon@oracle.com>
parents:
9193
diff
changeset
|
1877 if env is None: |
18898
d199e643f23b
mx: replaced MX_SUBPROCESS_COMMAND with MX_SUBPROCESS_COMMAND_FILE
Doug Simon <doug.simon@oracle.com>
parents:
18897
diff
changeset
|
1878 env = os.environ.copy() |
d199e643f23b
mx: replaced MX_SUBPROCESS_COMMAND with MX_SUBPROCESS_COMMAND_FILE
Doug Simon <doug.simon@oracle.com>
parents:
18897
diff
changeset
|
1879 |
d199e643f23b
mx: replaced MX_SUBPROCESS_COMMAND with MX_SUBPROCESS_COMMAND_FILE
Doug Simon <doug.simon@oracle.com>
parents:
18897
diff
changeset
|
1880 # Ideally the command line could be communicated directly in an environment |
d199e643f23b
mx: replaced MX_SUBPROCESS_COMMAND with MX_SUBPROCESS_COMMAND_FILE
Doug Simon <doug.simon@oracle.com>
parents:
18897
diff
changeset
|
1881 # variable. However, since environment variables share the same resource |
d199e643f23b
mx: replaced MX_SUBPROCESS_COMMAND with MX_SUBPROCESS_COMMAND_FILE
Doug Simon <doug.simon@oracle.com>
parents:
18897
diff
changeset
|
1882 # space as the command line itself (on Unix at least), this would cause the |
18900 | 1883 # limit to be exceeded too easily. |
18930
9aa1cff041eb
fix in mx.py, MX_SUBPROCESS_COMMAND_FILE opened twice, fails on Windows
Christian Wirth <christian.wirth@oracle.com>
parents:
18900
diff
changeset
|
1884 with tempfile.NamedTemporaryFile(suffix='', prefix='mx_subprocess_command.', mode='w', delete=False) as fp: |
9aa1cff041eb
fix in mx.py, MX_SUBPROCESS_COMMAND_FILE opened twice, fails on Windows
Christian Wirth <christian.wirth@oracle.com>
parents:
18900
diff
changeset
|
1885 subprocessCommandFile = fp.name |
18898
d199e643f23b
mx: replaced MX_SUBPROCESS_COMMAND with MX_SUBPROCESS_COMMAND_FILE
Doug Simon <doug.simon@oracle.com>
parents:
18897
diff
changeset
|
1886 for arg in args: |
d199e643f23b
mx: replaced MX_SUBPROCESS_COMMAND with MX_SUBPROCESS_COMMAND_FILE
Doug Simon <doug.simon@oracle.com>
parents:
18897
diff
changeset
|
1887 # TODO: handle newlines in args once there's a use case |
d199e643f23b
mx: replaced MX_SUBPROCESS_COMMAND with MX_SUBPROCESS_COMMAND_FILE
Doug Simon <doug.simon@oracle.com>
parents:
18897
diff
changeset
|
1888 assert '\n' not in arg |
d199e643f23b
mx: replaced MX_SUBPROCESS_COMMAND with MX_SUBPROCESS_COMMAND_FILE
Doug Simon <doug.simon@oracle.com>
parents:
18897
diff
changeset
|
1889 print >> fp, arg |
d199e643f23b
mx: replaced MX_SUBPROCESS_COMMAND with MX_SUBPROCESS_COMMAND_FILE
Doug Simon <doug.simon@oracle.com>
parents:
18897
diff
changeset
|
1890 env['MX_SUBPROCESS_COMMAND_FILE'] = subprocessCommandFile |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1891 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1892 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
|
1893 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
|
1894 log('Environment variables:') |
9262
0f4ae7bbe062
fixed bug in handling of -V mx option
Doug Simon <doug.simon@oracle.com>
parents:
9193
diff
changeset
|
1895 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
|
1896 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
|
1897 log(' '.join(map(pipes.quote, args))) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1898 |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
1899 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
|
1900 timeout = _opts.ptimeout |
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1901 |
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
|
1902 sub = None |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1903 try: |
4241
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1904 # 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
|
1905 # 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
|
1906 preexec_fn = None |
67e88b7624d5
Removed need for GRAAL environment variable on Windows.
Doug Simon <doug.simon@oracle.com>
parents:
4248
diff
changeset
|
1907 creationflags = 0 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1908 if not is_jython(): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1909 if get_os() == 'windows': |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1910 creationflags = subprocess.CREATE_NEW_PROCESS_GROUP |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1911 else: |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
1912 preexec_fn = os.setsid |
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
|
1913 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
|
1914 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
|
1915 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
|
1916 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
|
1917 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
|
1918 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
|
1919 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
|
1920 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
|
1921 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
|
1922 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
|
1923 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
|
1924 # 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
|
1925 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
|
1926 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
|
1927 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
|
1928 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
|
1929 # 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
|
1930 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
|
1931 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
|
1932 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
|
1933 # 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
|
1934 # 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
|
1935 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
|
1936 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
|
1937 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
|
1938 retcode = waitOn(p) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1939 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
|
1940 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
|
1941 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
|
1942 retcode = _waitWithTimeout(p, args, timeout) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1943 except OSError as e: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1944 log('Error executing \'' + ' '.join(args) + '\': ' + str(e)) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1945 if _opts.verbose: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1946 raise e |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1947 abort(e.errno) |
4242
3e25132be4b4
Disabled eager resolution of libraries as they are defined.
Doug Simon <doug.simon@oracle.com>
parents:
4241
diff
changeset
|
1948 except KeyboardInterrupt: |
3e25132be4b4
Disabled eager resolution of libraries as they are defined.
Doug Simon <doug.simon@oracle.com>
parents:
4241
diff
changeset
|
1949 abort(1) |
4241
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
1950 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
|
1951 _removeSubprocess(sub) |
18898
d199e643f23b
mx: replaced MX_SUBPROCESS_COMMAND with MX_SUBPROCESS_COMMAND_FILE
Doug Simon <doug.simon@oracle.com>
parents:
18897
diff
changeset
|
1952 os.remove(subprocessCommandFile) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1953 |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1954 if retcode and nonZeroIsFatal: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1955 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
|
1956 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
|
1957 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
|
1958 else: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1959 log('[exit code: ' + str(retcode) + ']') |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1960 abort(retcode) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1961 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1962 return retcode |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1963 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1964 def exe_suffix(name): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1965 """ |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
1966 Gets the platform specific suffix for an executable |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1967 """ |
4258
8d2c14f722ac
mx.py: fix OS detection in exe_suffix()
Andreas Woess <andreas.woess@jku.at>
parents:
4257
diff
changeset
|
1968 if get_os() == 'windows': |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1969 return name + '.exe' |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1970 return name |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
1971 |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1972 def add_lib_prefix(name): |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1973 """ |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1974 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
|
1975 """ |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1976 os = get_os() |
11401
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1977 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
|
1978 return 'lib' + name |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1979 return name |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1980 |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1981 def add_lib_suffix(name): |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1982 """ |
2d228d304247
minor improvements/cleanups to mx (CR-1313)
Doug Simon <doug.simon@oracle.com>
parents:
11374
diff
changeset
|
1983 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
|
1984 """ |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
1985 os = get_os() |
4482
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4396
diff
changeset
|
1986 if os == 'windows': |
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4396
diff
changeset
|
1987 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
|
1988 if os == 'linux' or os == 'solaris': |
4482
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4396
diff
changeset
|
1989 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
|
1990 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
|
1991 return name + '.dylib' |
4482
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4396
diff
changeset
|
1992 return name |
7903b6c28f9c
Add hsdis command to mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
4396
diff
changeset
|
1993 |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
1994 """ |
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
|
1995 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
|
1996 """ |
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
|
1997 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
|
1998 """ |
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
|
1999 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
|
2000 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
|
2001 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
|
2002 """ |
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
|
2003 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
|
2004 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
|
2005 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
|
2006 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
|
2007 self.currentFilteredLineCount = 0 |
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
2008 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
|
2009 |
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
|
2010 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
|
2011 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
|
2012 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
|
2013 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
|
2014 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
|
2015 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
|
2016 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
|
2017 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
|
2018 |
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
|
2019 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
|
2020 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
|
2021 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
|
2022 self.currentFilteredLineCount += 1 |
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
2023 if self.currentFilteredTime: |
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
2024 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
|
2025 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
|
2026 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
|
2027 else: |
7c36ec150036
Make the DuplicateSuppressingStream periodically print while it is filtering output
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14156
diff
changeset
|
2028 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
|
2029 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
|
2030 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
|
2031 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
|
2032 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
|
2033 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
|
2034 |
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
|
2035 """ |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2036 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
|
2037 """ |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2038 class JavaCompliance: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2039 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
|
2040 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
|
2041 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
|
2042 self.value = int(m.group(1)) |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2043 |
13968
6c6d1eacc398
mxtool: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
2044 def __str__(self): |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2045 return '1.' + str(self.value) |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2046 |
13968
6c6d1eacc398
mxtool: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
2047 def __cmp__(self, other): |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2048 if isinstance(other, types.StringType): |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2049 other = JavaCompliance(other) |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2050 |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2051 return cmp(self.value, other.value) |
13779 | 2052 |
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
|
2053 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
|
2054 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
|
2055 |
7916
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
2056 """ |
13471
020099961eb4
renamed JavaVersion to VersionSpec
Doug Simon <doug.simon@oracle.com>
parents:
13470
diff
changeset
|
2057 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
|
2058 """ |
13471
020099961eb4
renamed JavaVersion to VersionSpec
Doug Simon <doug.simon@oracle.com>
parents:
13470
diff
changeset
|
2059 class VersionSpec: |
7916
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
2060 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
|
2061 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
|
2062 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
|
2063 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
|
2064 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
|
2065 self.versionString = versionString |
8391
d1d486c03e8a
Fix version parsing in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
8302
diff
changeset
|
2066 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
|
2067 |
7916
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
2068 def __str__(self): |
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
2069 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
|
2070 |
7916
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
2071 def __cmp__(self, other): |
9bff64f43299
Better java version numbers support in mx
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
7787
diff
changeset
|
2072 return cmp(self.parts, other.parts) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2073 |
14940
82971f397b94
mx.JavaConfig: filter non-existant paths from bootclasspath, extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14939
diff
changeset
|
2074 def _filter_non_existant_paths(paths): |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2075 return os.pathsep.join([path for path in _separatedCygpathW2U(paths).split(os.pathsep) if exists(path)]) |
14940
82971f397b94
mx.JavaConfig: filter non-existant paths from bootclasspath, extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14939
diff
changeset
|
2076 |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2077 """ |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2078 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
|
2079 """ |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2080 class JavaConfig: |
14763 | 2081 def __init__(self, java_home, java_dbg_port): |
2082 self.jdk = java_home | |
2083 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
|
2084 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
|
2085 self.java = exe_suffix(join(self.jdk, 'bin', 'java')) |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2086 self.javac = exe_suffix(join(self.jdk, 'bin', 'javac')) |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2087 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
|
2088 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
|
2089 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
|
2090 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
|
2091 self._bootclasspath = None |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
2092 self._extdirs = None |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
2093 self._endorseddirs = None |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2094 |
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
|
2095 if not exists(self.java): |
14763 | 2096 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
|
2097 |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2098 def delAtAndSplit(s): |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2099 return shlex.split(s.lstrip('@')) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2100 |
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
|
2101 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
|
2102 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
|
2103 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
|
2104 |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2105 # 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
|
2106 try: |
4148
bf5efc22fb3f
Replace downloading of JDK 7 with copying of host JDK 7.
Doug Simon <doug.simon@oracle.com>
parents:
4147
diff
changeset
|
2107 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
|
2108 self.java_args = ['-d64'] + self.java_args |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2109 except subprocess.CalledProcessError as e: |
4145
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2110 try: |
4148
bf5efc22fb3f
Replace downloading of JDK 7 with copying of host JDK 7.
Doug Simon <doug.simon@oracle.com>
parents:
4147
diff
changeset
|
2111 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
|
2112 except subprocess.CalledProcessError as e: |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2113 print e.output |
9aee7df31417
Removed 'tests' command.
Doug Simon <doug.simon@oracle.com>
parents:
4144
diff
changeset
|
2114 abort(e.returncode) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2115 |
16534
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2116 def _checkOutput(out): |
16539
cc30bd72a19b
mx: fix in java version parsing
Bernhard Urban <bernhard.urban@jku.at>
parents:
16534
diff
changeset
|
2117 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
|
2118 |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2119 # 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
|
2120 output = output.split('\n') |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2121 version = None |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2122 for o in output: |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2123 if _checkOutput(o): |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2124 assert version is None |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2125 version = o |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2126 |
4aaa97f42b92
mx: be less strict while parsing the jvm version
Bernhard Urban <bernhard.urban@jku.at>
parents:
16455
diff
changeset
|
2127 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
|
2128 self.javaCompliance = JavaCompliance(self.version.versionString) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2129 |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2130 if self.debug_port is not None: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2131 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
|
2132 |
14914
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2133 def _init_classpaths(self): |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2134 myDir = dirname(__file__) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2135 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
|
2136 if not exists(outDir): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2137 os.makedirs(outDir) |
14914
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2138 javaSource = join(myDir, 'ClasspathDump.java') |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2139 if not exists(join(outDir, 'ClasspathDump.class')): |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2140 subprocess.check_call([self.javac, '-d', _cygpathU2W(outDir), _cygpathU2W(javaSource)], stderr=subprocess.PIPE, stdout=subprocess.PIPE) |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
2141 self._bootclasspath, self._extdirs, self._endorseddirs = [x if x != 'null' else None for x in subprocess.check_output([self.java, '-cp', _cygpathU2W(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
|
2142 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
|
2143 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
|
2144 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
|
2145 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
|
2146 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
|
2147 |
18887
19d99eec8876
Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18876
diff
changeset
|
2148 def __repr__(self): |
19d99eec8876
Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18876
diff
changeset
|
2149 return "JavaConfig(" + str(self.jdk) + ", " + str(self.debug_port) + ")" |
19d99eec8876
Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18876
diff
changeset
|
2150 |
19d99eec8876
Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18876
diff
changeset
|
2151 def __str__(self): |
19d99eec8876
Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18876
diff
changeset
|
2152 return "Java " + str(self.version) + " (" + str(self.javaCompliance) + ") from " + str(self.jdk) |
19d99eec8876
Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18876
diff
changeset
|
2153 |
14763 | 2154 def __hash__(self): |
2155 return hash(self.jdk) | |
14764 | 2156 |
14763 | 2157 def __cmp__(self, other): |
2158 if isinstance(other, JavaConfig): | |
18889
4dc7b1f66de3
mx: JavaConfig: compare compilance and version before path
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18887
diff
changeset
|
2159 compilanceCmp = cmp(self.javaCompliance, other.javaCompliance) |
4dc7b1f66de3
mx: JavaConfig: compare compilance and version before path
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18887
diff
changeset
|
2160 if compilanceCmp: |
4dc7b1f66de3
mx: JavaConfig: compare compilance and version before path
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18887
diff
changeset
|
2161 return compilanceCmp |
4dc7b1f66de3
mx: JavaConfig: compare compilance and version before path
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18887
diff
changeset
|
2162 versionCmp = cmp(self.version, other.version) |
4dc7b1f66de3
mx: JavaConfig: compare compilance and version before path
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18887
diff
changeset
|
2163 if versionCmp: |
4dc7b1f66de3
mx: JavaConfig: compare compilance and version before path
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18887
diff
changeset
|
2164 return versionCmp |
18887
19d99eec8876
Fix mx igv: do not use Java < 1.8, handle the case where no JDKs are supported. Give some hints when the igv ant build fails.
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18876
diff
changeset
|
2165 return cmp(self.jdk, other.jdk) |
14763 | 2166 raise TypeError() |
2167 | |
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
|
2168 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
|
2169 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
|
2170 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
|
2171 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
|
2172 return [self.java] + args |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2173 |
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
|
2174 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
|
2175 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
|
2176 |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
2177 def bootclasspath(self): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
2178 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
|
2179 self._init_classpaths() |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2180 return _separatedCygpathU2W(self._bootclasspath) |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
2181 |
14914
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2182 def extdirs(self): |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2183 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
|
2184 self._init_classpaths() |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2185 return _separatedCygpathU2W(self._extdirs) |
14914
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2186 |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2187 def endorseddirs(self): |
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2188 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
|
2189 self._init_classpaths() |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2190 return _separatedCygpathU2W(self._endorseddirs) |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
2191 |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
2192 def containsJar(self, jar): |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
2193 if self._bootclasspath is None: |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
2194 self._init_classpaths() |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
2195 |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
2196 for e in self._bootclasspath.split(os.pathsep): |
17236
9d728eb7fdec
mx: fixed regression in checking whether the JDK contains an optional library
Doug Simon <doug.simon@oracle.com>
parents:
17235
diff
changeset
|
2197 if basename(e) == jar: |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
2198 return True |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
2199 for d in self._extdirs.split(os.pathsep): |
17236
9d728eb7fdec
mx: fixed regression in checking whether the JDK contains an optional library
Doug Simon <doug.simon@oracle.com>
parents:
17235
diff
changeset
|
2200 if len(d) and jar in os.listdir(d): |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
2201 return True |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
2202 for d in self._endorseddirs.split(os.pathsep): |
17236
9d728eb7fdec
mx: fixed regression in checking whether the JDK contains an optional library
Doug Simon <doug.simon@oracle.com>
parents:
17235
diff
changeset
|
2203 if len(d) and jar in os.listdir(d): |
17224
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
2204 return True |
a02c295218aa
mx: add support for cygwin
Bernhard Urban <bernhard.urban@jku.at>
parents:
17186
diff
changeset
|
2205 return False |
14914
a6bd486b1b44
Extend JavaConfig bootclasspath detection to detect extdirs and endorseddirs
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14913
diff
changeset
|
2206 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2207 def check_get_env(key): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2208 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2209 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
|
2210 """ |
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
|
2211 value = get_env(key) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2212 if value is None: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2213 abort('Required environment variable ' + key + ' must be set') |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2214 return value |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2215 |
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
|
2216 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
|
2217 """ |
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
|
2218 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
|
2219 """ |
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
|
2220 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
|
2221 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
|
2222 |
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
|
2223 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
|
2224 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
|
2225 log(msg) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2226 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2227 def log(msg=None): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2228 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2229 Write a message to the console. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2230 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
|
2231 to redirect it. |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2232 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2233 if msg is None: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2234 print |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2235 else: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2236 print msg |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2237 |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2238 def expand_project_in_class_path_arg(cpArg): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2239 cp = [] |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2240 for part in cpArg.split(os.pathsep): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2241 if part.startswith('@'): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2242 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
|
2243 else: |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2244 cp.append(part) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2245 return os.pathsep.join(cp) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2246 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2247 def expand_project_in_args(args): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2248 for i in range(len(args)): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2249 if args[i] == '-cp' or args[i] == '-classpath': |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2250 if i + 1 < len(args): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2251 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
|
2252 return |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2253 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2254 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2255 def gmake_cmd(): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2256 for a in ['make', 'gmake', 'gnumake']: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2257 try: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2258 output = subprocess.check_output([a, '--version']) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2259 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
|
2260 return a |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2261 except: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2262 pass |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2263 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
|
2264 |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2265 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
|
2266 result = expandvars(value) |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2267 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
|
2268 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
|
2269 return result |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2270 |
14135
ee66410c0679
mx: add option to send sigquit before killing child
Bernhard Urban <bernhard.urban@jku.at>
parents:
14134
diff
changeset
|
2271 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
|
2272 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
|
2273 |
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
|
2274 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
|
2275 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
|
2276 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
|
2277 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
|
2278 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
|
2279 |
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
|
2280 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
|
2281 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
|
2282 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
|
2283 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
|
2284 _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
|
2285 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
|
2286 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2287 def abort(codeOrMessage): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2288 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2289 Aborts the program with a SystemExit exception. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2290 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
|
2291 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
|
2292 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
|
2293 """ |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2294 |
18636
dcf5cd3c6da9
mx: fixed issue with calling abort() before _opts is defined
Doug Simon <doug.simon@oracle.com>
parents:
18635
diff
changeset
|
2295 if _opts and _opts.killwithsigquit: |
14135
ee66410c0679
mx: add option to send sigquit before killing child
Bernhard Urban <bernhard.urban@jku.at>
parents:
14134
diff
changeset
|
2296 _send_sigquit() |
ee66410c0679
mx: add option to send sigquit before killing child
Bernhard Urban <bernhard.urban@jku.at>
parents:
14134
diff
changeset
|
2297 |
15823
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2298 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
|
2299 if isinstance(p, subprocess.Popen): |
15845
babe4565c371
mx: fixed incorrect test for subprocess being alive
twisti
parents:
15823
diff
changeset
|
2300 return p.poll() is None |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
2301 assert is_jython() or isinstance(p, multiprocessing.Process), p |
15823
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2302 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
|
2303 |
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
|
2304 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
|
2305 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
|
2306 try: |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2307 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
|
2308 p.terminate() |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2309 else: |
9acad98567dc
mx: fixed more spurious "error while killing subprocess" messages (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15822
diff
changeset
|
2310 _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
|
2311 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
|
2312 if is_alive(p): |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
2313 log('error while killing subprocess {0} "{1}": {2}'.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
|
2314 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
2315 if _opts and _opts.verbose: |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
2316 import traceback |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
2317 traceback.print_stack() |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2318 raise SystemExit(codeOrMessage) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2319 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2320 def download(path, urls, verbose=False): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2321 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2322 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
|
2323 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
|
2324 is written to the file indicated by 'path'. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2325 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2326 d = dirname(path) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2327 if d != '' and not exists(d): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2328 os.makedirs(d) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2329 |
15925
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2330 assert not path.endswith(os.sep) |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2331 |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2332 myDir = dirname(__file__) |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2333 javaSource = join(myDir, 'URLConnectionDownload.java') |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2334 javaClass = join(myDir, 'URLConnectionDownload.class') |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2335 if not exists(javaClass) or getmtime(javaClass) < getmtime(javaSource): |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2336 subprocess.check_call([java().javac, '-d', _cygpathU2W(myDir), _cygpathU2W(javaSource)]) |
15925
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2337 verbose = [] |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2338 if sys.stderr.isatty(): |
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2339 verbose.append("-v") |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2340 if run([java().java, '-cp', _cygpathU2W(myDir), 'URLConnectionDownload', _cygpathU2W(path)] + verbose + urls, nonZeroIsFatal=False) == 0: |
15925
674d4065e9fb
mxtool: remove python downloader
Bernhard Urban <bernhard.urban@jku.at>
parents:
15922
diff
changeset
|
2341 return |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2342 |
4188
148fa38782e8
Downloads are attempted via Java first since it shows a progress counter.
Doug Simon <doug.simon@oracle.com>
parents:
4186
diff
changeset
|
2343 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
|
2344 '\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
|
2345 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2346 def update_file(path, content): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2347 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2348 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
|
2349 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
|
2350 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2351 existed = exists(path) |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2352 try: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2353 old = None |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2354 if existed: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2355 with open(path, 'rb') as f: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2356 old = f.read() |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2357 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2358 if old == content: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2359 return False |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2360 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
2361 if existed and _opts.backup_modified: |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
2362 shutil.move(path, path + '.orig') |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
2363 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2364 with open(path, 'wb') as f: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2365 f.write(content) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2366 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2367 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
|
2368 return True |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2369 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
|
2370 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
|
2371 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2372 # Builtin commands |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2373 |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2374 def _defaultEcjPath(): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2375 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
|
2376 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2377 class JavaCompileTask: |
15496
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2378 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
|
2379 self.proj = proj |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2380 self.reason = reason |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2381 self.javafilelist = javafilelist |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2382 self.deps = deps |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2383 self.jdk = jdk |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2384 self.outputDir = outputDir |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2385 self.done = False |
15496
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2386 self.jdtJar = jdtJar |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2387 self.args = args |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2388 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2389 def __str__(self): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2390 return self.proj.name |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2391 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2392 def logCompilation(self, compiler): |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
2393 log('Compiling Java sources for {0} with {1}... [{2}]'.format(self.proj.name, compiler, self.reason)) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2394 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2395 def execute(self): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2396 argfileName = join(self.proj.dir, 'javafilelist.txt') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2397 argfile = open(argfileName, 'wb') |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2398 argfile.write('\n'.join(map(_cygpathU2W, self.javafilelist))) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2399 argfile.close() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2400 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2401 processorArgs = [] |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2402 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
|
2403 if processorPath: |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2404 genDir = self.proj.source_gen_dir() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2405 if exists(genDir): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2406 shutil.rmtree(genDir) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2407 os.mkdir(genDir) |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2408 processorArgs += ['-processorpath', _separatedCygpathU2W(join(processorPath)), '-s', _cygpathU2W(genDir)] |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2409 else: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2410 processorArgs += ['-proc:none'] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2411 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2412 args = self.args |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2413 jdk = self.jdk |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2414 outputDir = _cygpathU2W(self.outputDir) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2415 compliance = str(jdk.javaCompliance) |
18116
c4f649042a7b
mx/unittest: fix cygwin path issue
Bernhard Urban <bernhard.urban@jku.at>
parents:
17396
diff
changeset
|
2416 cp = _separatedCygpathU2W(classpath(self.proj.name, includeSelf=True)) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2417 toBeDeleted = [argfileName] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2418 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2419 try: |
15496
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2420 if not self.jdtJar: |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2421 mainJava = java() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2422 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
|
2423 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
|
2424 self.logCompilation('javac' if not args.alt_javac else args.alt_javac) |
18710
4836c2abc884
mx: removed hard-coded -Xms setting for the 'build' and 'checkstyle' commands to try and avoid unnecessary swapping on low(er) memory machines
Doug Simon <doug.simon@oracle.com>
parents:
18647
diff
changeset
|
2425 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
|
2426 if jdk.debug_port is not None: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2427 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
|
2428 javacCmd += processorArgs |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2429 javacCmd += ['@' + _cygpathU2W(argfile.name)] |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2430 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2431 if not args.warnAPI: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2432 javacCmd.append('-XDignore.symbol.file') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2433 run(javacCmd) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2434 else: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2435 self.logCompilation('javac (with error-prone)') |
18710
4836c2abc884
mx: removed hard-coded -Xms setting for the 'build' and 'checkstyle' commands to try and avoid unnecessary swapping on low(er) memory machines
Doug Simon <doug.simon@oracle.com>
parents:
18647
diff
changeset
|
2436 javaArgs = ['-Xmx1g'] |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2437 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
|
2438 javacArgs += processorArgs |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2439 javacArgs += ['@' + argfile.name] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2440 if not args.warnAPI: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2441 javacArgs.append('-XDignore.symbol.file') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2442 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
|
2443 else: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2444 self.logCompilation('JDT') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2445 |
18710
4836c2abc884
mx: removed hard-coded -Xms setting for the 'build' and 'checkstyle' commands to try and avoid unnecessary swapping on low(er) memory machines
Doug Simon <doug.simon@oracle.com>
parents:
18647
diff
changeset
|
2446 jdtVmArgs = ['-Xmx1g', '-jar', _cygpathU2W(self.jdtJar)] |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2447 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2448 jdtArgs = ['-' + compliance, |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2449 '-cp', cp, '-g', '-enableJavadoc', |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2450 '-d', outputDir, |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2451 '-bootclasspath', jdk.bootclasspath(), |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2452 '-endorseddirs', jdk.endorseddirs(), |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2453 '-extdirs', jdk.extdirs()] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2454 jdtArgs += processorArgs |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2455 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2456 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
|
2457 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
|
2458 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
|
2459 # 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
|
2460 _eclipseinit_project(self.proj) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2461 if not exists(jdtProperties): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2462 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
|
2463 else: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2464 with open(jdtProperties) as fp: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2465 origContent = fp.read() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2466 content = origContent |
18890
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
2467 if self.proj.uses_annotation_processor_library(): |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
2468 # unfortunately, the command line compiler doesn't let us ignore warnings for generated files only |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
2469 content = content.replace('=warning', '=ignore') |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
2470 elif args.jdt_warning_as_error: |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2471 content = content.replace('=warning', '=error') |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2472 if not args.jdt_show_task_tags: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2473 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
|
2474 if origContent != content: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2475 jdtPropertiesTmp = jdtProperties + '.tmp' |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2476 with open(jdtPropertiesTmp, 'w') as fp: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2477 fp.write(content) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2478 toBeDeleted.append(jdtPropertiesTmp) |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2479 jdtArgs += ['-properties', _cygpathU2W(jdtPropertiesTmp)] |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2480 else: |
17262
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2481 jdtArgs += ['-properties', _cygpathU2W(jdtProperties)] |
b641450c19ce
mx: rename helper functions for cygwin support and update comments
Bernhard Urban <bernhard.urban@jku.at>
parents:
17259
diff
changeset
|
2482 jdtArgs.append('@' + _cygpathU2W(argfile.name)) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2483 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2484 run_java(jdtVmArgs + jdtArgs) |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2485 |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2486 # 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
|
2487 if self.proj.definedAnnotationProcessorsDist: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2488 self.proj.definedAnnotationProcessorsDist.make_archive() |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2489 |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2490 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
|
2491 # 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
|
2492 # 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
|
2493 # 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
|
2494 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
|
2495 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
|
2496 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
|
2497 |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2498 self.done = True |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2499 |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2500 def build(args, parser=None): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2501 """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
|
2502 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2503 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
|
2504 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
|
2505 |
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
|
2506 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
|
2507 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
|
2508 parser = ArgumentParser(prog='mx build') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2509 |
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
|
2510 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
|
2511 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
|
2512 parser.add_argument('-c', action='store_true', dest='clean', help='removes existing build output') |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
2513 parser.add_argument('-p', action='store_true', dest='parallelize', help='parallelizes Java compilation if possible') |
14763 | 2514 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
|
2515 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
|
2516 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
|
2517 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
|
2518 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
|
2519 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
|
2520 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
|
2521 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
|
2522 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
|
2523 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
|
2524 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
|
2525 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
|
2526 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
|
2527 |
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
|
2528 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
|
2529 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
|
2530 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2531 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
|
2532 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
2533 if is_jython(): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
2534 if args.parallelize: |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
2535 logv('[multiprocessing not available in jython]') |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
2536 args.parallelize = False |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
2537 |
15496
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2538 jdtJar = None |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2539 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
|
2540 if not args.jdt.endswith('.jar'): |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2541 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
|
2542 jdtJar = args.jdt |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2543 if not exists(jdtJar): |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2544 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
|
2545 # 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
|
2546 jdtJar = None |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2547 else: |
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2548 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
|
2549 |
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
|
2550 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
|
2551 # 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
|
2552 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
|
2553 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
|
2554 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
|
2555 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
|
2556 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
|
2557 projectNames = None |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
2558 |
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
|
2559 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
|
2560 # 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
|
2561 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
|
2562 |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
2563 if args.java: |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2564 ideinit([], refreshOnly=True, buildProcessorJars=False) |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
2565 |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2566 tasks = {} |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2567 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
|
2568 for p in sortedProjects: |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2569 if p.native: |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2570 if args.native: |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2571 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
|
2572 |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2573 if args.clean: |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2574 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
|
2575 |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2576 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
|
2577 continue |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2578 else: |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2579 if not args.java: |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
2580 continue |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2581 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
|
2582 continue |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2583 |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2584 # skip building this Java project if its Java compliance level is "higher" than the configured JDK |
14763 | 2585 requiredCompliance = p.javaCompliance if p.javaCompliance else JavaCompliance(args.compliance) if args.compliance else None |
2586 jdk = java(requiredCompliance) | |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
2587 assert jdk |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2588 |
18647
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2589 outputDir = p.output_dir() |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2590 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
2591 sourceDirs = p.source_dirs() |
18647
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2592 buildReason = None |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2593 if args.force: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2594 buildReason = 'forced build' |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2595 elif args.clean: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2596 buildReason = 'clean' |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2597 |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2598 taskDeps = [] |
16670
4ae1d1ed5cc1
fixed regression in use of -f option to 'mx build'
Doug Simon <doug.simon@oracle.com>
parents:
16667
diff
changeset
|
2599 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
|
2600 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
|
2601 if taskDep: |
4ae1d1ed5cc1
fixed regression in use of -f option to 'mx build'
Doug Simon <doug.simon@oracle.com>
parents:
16667
diff
changeset
|
2602 if not buildReason: |
4ae1d1ed5cc1
fixed regression in use of -f option to 'mx build'
Doug Simon <doug.simon@oracle.com>
parents:
16667
diff
changeset
|
2603 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
|
2604 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
|
2605 |
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
|
2606 javafilelist = [] |
18647
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2607 nonjavafiletuples = [] |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2608 for sourceDir in sourceDirs: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2609 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
|
2610 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
|
2611 javafilelist += javafiles |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2612 |
18647
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2613 nonjavafiletuples += [(sourceDir, [join(root, name) for name in files if not name.endswith('.java')])] |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2614 |
15386
1439685d06e4
mx: log reason why Java classes are being (re)built
Doug Simon <doug.simon@oracle.com>
parents:
15378
diff
changeset
|
2615 if not buildReason: |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2616 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
|
2617 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
|
2618 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
|
2619 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
|
2620 break |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2621 |
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
|
2622 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
|
2623 if apsOutOfDate: |
15386
1439685d06e4
mx: log reason why Java classes are being (re)built
Doug Simon <doug.simon@oracle.com>
parents:
15378
diff
changeset
|
2624 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
|
2625 |
1439685d06e4
mx: log reason why Java classes are being (re)built
Doug Simon <doug.simon@oracle.com>
parents:
15378
diff
changeset
|
2626 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
|
2627 logv('[all class files for {0} are up to date - skipping]'.format(p.name)) |
18647
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2628 _handleNonJavaFiles(outputDir, p, False, nonjavafiletuples) |
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
|
2629 continue |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2630 |
18647
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2631 _handleNonJavaFiles(outputDir, p, True, nonjavafiletuples) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2632 |
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
|
2633 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
|
2634 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
|
2635 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
|
2636 |
16945
5e5f5073d713
mx: Make java file list order deterministic
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16944
diff
changeset
|
2637 javafilelist = sorted(javafilelist) |
5e5f5073d713
mx: Make java file list order deterministic
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16944
diff
changeset
|
2638 |
15496
f5eba273a4f2
mx: factored out detection of JDT compilation
Doug Simon <doug.simon@oracle.com>
parents:
15490
diff
changeset
|
2639 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
|
2640 if p.definedAnnotationProcessorsDist: |
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
2641 updatedAnnotationProcessorDists.add(p.definedAnnotationProcessorsDist) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2642 |
17050
49b8c8932786
projects must be rebuilt when any of their dependencies are rebuilt
Doug Simon <doug.simon@oracle.com>
parents:
17013
diff
changeset
|
2643 tasks[p.name] = task |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2644 if args.parallelize: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2645 # 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
|
2646 jdk.bootclasspath() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2647 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
|
2648 else: |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2649 task.execute() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2650 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2651 if args.parallelize: |
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 joinTasks(tasks): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2654 failed = [] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2655 for t in tasks: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2656 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
|
2657 _removeSubprocess(t.sub) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2658 if t.proc.exitcode != 0: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2659 failed.append(t) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2660 return failed |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2661 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2662 def checkTasks(tasks): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2663 active = [] |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2664 for t in tasks: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2665 if t.proc.is_alive(): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2666 active.append(t) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2667 else: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2668 if t.proc.exitcode != 0: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2669 return ([], joinTasks(tasks)) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2670 return (active, []) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2671 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2672 def remainingDepsDepth(task): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2673 if task._d is None: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2674 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
|
2675 if len(incompleteDeps) == 0: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2676 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
|
2677 else: |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2678 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
|
2679 return task._d |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2680 |
15490
5d0dd6a6f6b3
mx: improved heuristics for sorting remaining tasks in parallel Java build worklist
Doug Simon <doug.simon@oracle.com>
parents:
15489
diff
changeset
|
2681 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
|
2682 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
|
2683 if d == 0: |
15497
1f28c463e452
mx: slight tweak of parallel Java build heuristics
Doug Simon <doug.simon@oracle.com>
parents:
15496
diff
changeset
|
2684 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
|
2685 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
|
2686 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
|
2687 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
|
2688 |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2689 def sortWorklist(tasks): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2690 for t in tasks: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2691 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
|
2692 return sorted(tasks, compareTasks) |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2693 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
2694 cpus = cpu_count() |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2695 worklist = sortWorklist(tasks.values()) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2696 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
|
2697 failed = [] |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2698 while len(worklist) != 0: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2699 while True: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2700 active, failed = checkTasks(active) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2701 if len(failed) != 0: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2702 assert not active, active |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2703 break |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2704 if len(active) == cpus: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2705 # Sleep for 1 second |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2706 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
|
2707 else: |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2708 break |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2709 |
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
|
2710 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
|
2711 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
|
2712 |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2713 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
|
2714 # 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
|
2715 del _currentSubprocesses[:] |
15460
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2716 task.execute() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2717 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2718 def depsDone(task): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2719 for d in task.deps: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2720 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
|
2721 return False |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2722 return True |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2723 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2724 for task in worklist: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2725 if depsDone(task): |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2726 worklist.remove(task) |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2727 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
|
2728 task.proc.start() |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2729 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
|
2730 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
|
2731 if len(active) == cpus: |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2732 break |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2733 |
7d24ff89dc7d
mx: parallelized Java builds (GRAAL-350)
Doug Simon <doug.simon@oracle.com>
parents:
15457
diff
changeset
|
2734 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
|
2735 |
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
|
2736 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
|
2737 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
|
2738 for t in failed: |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
2739 log('Compiling {0} failed'.format(t.proj.name)) |
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
2740 abort('{0} 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
|
2741 |
16875
73d994651fcd
fixed regression when building original VM without a Java build beforehand
Doug Simon <doug.simon@oracle.com>
parents:
16849
diff
changeset
|
2742 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
|
2743 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
|
2744 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
|
2745 archive(['@' + dist.name]) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
2746 |
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
|
2747 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
|
2748 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
|
2749 return None |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2750 |
18647
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2751 def _handleNonJavaFiles(outputDir, p, clean, nonjavafiletuples): |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2752 if exists(outputDir): |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2753 if clean: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2754 log('Cleaning {0}...'.format(outputDir)) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2755 shutil.rmtree(outputDir) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2756 os.mkdir(outputDir) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2757 else: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2758 os.mkdir(outputDir) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2759 genDir = p.source_gen_dir() |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2760 if genDir != '' and exists(genDir) and clean: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2761 log('Cleaning {0}...'.format(genDir)) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2762 for f in os.listdir(genDir): |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2763 shutil.rmtree(join(genDir, f)) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2764 |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2765 # Copy all non Java resources or assemble Jasmin files |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2766 jasminAvailable = None |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2767 for nonjavafiletuple in nonjavafiletuples: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2768 sourceDir = nonjavafiletuple[0] |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2769 nonjavafilelist = nonjavafiletuple[1] |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2770 |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2771 for src in nonjavafilelist: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2772 if src.endswith('.jasm'): |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2773 className = None |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2774 with open(src) as f: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2775 for line in f: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2776 if line.startswith('.class '): |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2777 className = line.split()[-1] |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2778 break |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2779 |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2780 if className is not None: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2781 jasminOutputDir = p.jasmin_output_dir() |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2782 classFile = join(jasminOutputDir, className.replace('/', os.sep) + '.class') |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2783 if exists(dirname(classFile)) and (not exists(classFile) or os.path.getmtime(classFile) < os.path.getmtime(src)): |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2784 if jasminAvailable is None: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2785 try: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2786 with open(os.devnull) as devnull: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2787 subprocess.call('jasmin', stdout=devnull, stderr=subprocess.STDOUT) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2788 jasminAvailable = True |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2789 except OSError: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2790 jasminAvailable = False |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2791 |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2792 if jasminAvailable: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2793 log('Assembling Jasmin file ' + src) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2794 run(['jasmin', '-d', jasminOutputDir, src]) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2795 else: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2796 log('The jasmin executable could not be found - skipping ' + src) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2797 with file(classFile, 'a'): |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2798 os.utime(classFile, None) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2799 |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2800 else: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2801 log('could not file .class directive in Jasmin source: ' + src) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2802 else: |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2803 dst = join(outputDir, src[len(sourceDir) + 1:]) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2804 if not exists(dirname(dst)): |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2805 os.makedirs(dirname(dst)) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2806 if exists(dirname(dst)) and (not exists(dst) or os.path.getmtime(dst) < os.path.getmtime(src)): |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2807 shutil.copyfile(src, dst) |
beb33138029c
Clean bin directory before compiling to remove stale classfiles
Christian Wimmer <christian.wimmer@oracle.com>
parents:
18636
diff
changeset
|
2808 |
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
|
2809 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
|
2810 """ |
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
|
2811 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
|
2812 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
|
2813 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
|
2814 """ |
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
|
2815 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
|
2816 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
|
2817 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
|
2818 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
|
2819 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
|
2820 # 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
|
2821 # 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
|
2822 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
|
2823 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
|
2824 # 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
|
2825 # 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
|
2826 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
|
2827 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
|
2828 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
|
2829 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
|
2830 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
|
2831 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
|
2832 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
|
2833 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
|
2834 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
|
2835 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
|
2836 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
|
2837 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
|
2838 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
|
2839 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
|
2840 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
|
2841 |
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
|
2842 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
|
2843 """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
|
2844 |
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
|
2845 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
|
2846 |
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
|
2847 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
|
2848 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
|
2849 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
|
2850 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
|
2851 |
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
|
2852 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
|
2853 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
|
2854 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
|
2855 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
|
2856 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
|
2857 |
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
|
2858 # 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
|
2859 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
|
2860 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
|
2861 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
|
2862 |
6fb61ad67962
Fix mx eclipseformat always adds the 'eclipse' suffix
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14539
diff
changeset
|
2863 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
|
2864 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
|
2865 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
|
2866 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
|
2867 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2868 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
|
2869 |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2870 # build list of projects to be processed |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2871 projects = sorted_deps() |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2872 if args.projects is not None: |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2873 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
|
2874 |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2875 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
|
2876 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
|
2877 self.path = join(settingsDir, 'org.eclipse.jdt.core.prefs') |
14763 | 2878 self.javaCompliance = javaCompliance |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2879 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
|
2880 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
|
2881 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
|
2882 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
|
2883 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
|
2884 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
|
2885 |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2886 def settings(self): |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2887 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
|
2888 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
|
2889 |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2890 class FileInfo: |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2891 def __init__(self, path): |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2892 self.path = path |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2893 with open(path) as fp: |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2894 self.content = fp.read() |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2895 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
|
2896 |
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
|
2897 def update(self, removeTrailingWhitespace): |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2898 with open(self.path) as fp: |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2899 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
|
2900 |
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
|
2901 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
|
2902 # 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
|
2903 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
|
2904 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
|
2905 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
|
2906 # 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
|
2907 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
|
2908 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
|
2909 |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2910 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
|
2911 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
|
2912 self.content = content |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2913 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
|
2914 |
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
|
2915 # reset access and modification time of file |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2916 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
|
2917 |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2918 modified = list() |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
2919 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
|
2920 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
|
2921 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
|
2922 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
|
2923 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
|
2924 |
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
|
2925 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
|
2926 |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2927 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
|
2928 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
|
2929 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
|
2930 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
|
2931 |
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
|
2932 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
|
2933 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
|
2934 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
|
2935 batch.javafiles.append(FileInfo(f)) |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2936 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
|
2937 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
|
2938 continue |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2939 |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2940 res = batches.setdefault(batch.settings(), batch) |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2941 if res is not batch: |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2942 res.javafiles = res.javafiles + batch.javafiles |
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2943 |
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
|
2944 log("we have: " + str(len(batches)) + " batches") |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2945 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
|
2946 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
|
2947 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
|
2948 '-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
|
2949 '-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
|
2950 '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
|
2951 '-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
|
2952 '-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
|
2953 + [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
|
2954 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
|
2955 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
|
2956 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
|
2957 |
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
|
2958 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
|
2959 |
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
|
2960 if len(modified) != 0: |
13288
9c3c915b5f56
Log modiffied files during eclipseformat
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13266
diff
changeset
|
2961 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
|
2962 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
|
2963 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
|
2964 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
|
2965 for fi in modified: |
9c3c915b5f56
Log modiffied files during eclipseformat
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13266
diff
changeset
|
2966 name = os.path.relpath(fi.path, arcbase) |
9c3c915b5f56
Log modiffied files during eclipseformat
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13266
diff
changeset
|
2967 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
|
2968 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
|
2969 log(''.join(fi.diff)) |
13288
9c3c915b5f56
Log modiffied files during eclipseformat
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13266
diff
changeset
|
2970 if args.backup: |
9c3c915b5f56
Log modiffied files during eclipseformat
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13266
diff
changeset
|
2971 arcname = name.replace(os.sep, '/') |
7528
4584ca2618d5
made eclipseformat command use batching
Doug Simon <doug.simon@oracle.com>
parents:
7524
diff
changeset
|
2972 zf.writestr(arcname, fi.content) |
13288
9c3c915b5f56
Log modiffied files during eclipseformat
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
13266
diff
changeset
|
2973 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
|
2974 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
|
2975 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
|
2976 return 1 |
7533
29b0768b7ba6
added eclipseformat to the gate
Doug Simon <doug.simon@oracle.com>
parents:
7532
diff
changeset
|
2977 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
|
2978 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2979 def processorjars(): |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2980 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
|
2981 _processorjars_suite(s) |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2982 |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2983 def _processorjars_suite(s): |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2984 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
|
2985 if len(projs) <= 0: |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2986 return [] |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2987 |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
2988 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
|
2989 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
|
2990 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
|
2991 |
11777
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2992 def pylint(args): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2993 """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
|
2994 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2995 parser = ArgumentParser(prog='mx pylint') |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2996 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
|
2997 args = parser.parse_args(args) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2998 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
2999 rcfile = join(dirname(__file__), '.pylintrc') |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3000 if not exists(rcfile): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3001 log('pylint configuration file does not exist: ' + rcfile) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3002 return |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3003 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3004 try: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3005 output = subprocess.check_output(['pylint', '--version'], stderr=subprocess.STDOUT) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3006 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
|
3007 if not m: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3008 log('could not determine pylint version from ' + output) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3009 return |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3010 major, minor, micro = (int(m.group(1)), int(m.group(2)), int(m.group(3))) |
18135 | 3011 if major != 1 or minor != 1: |
3012 log('require pylint version = 1.1.x (got {0}.{1}.{2})'.format(major, minor, micro)) | |
11777
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3013 return |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3014 except BaseException: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3015 log('pylint is not available') |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3016 return |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3017 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3018 def findfiles_by_walk(): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3019 result = [] |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3020 for suite in suites(True): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3021 for root, dirs, files in os.walk(suite.dir): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3022 for f in files: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3023 if f.endswith('.py'): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3024 pyfile = join(root, f) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3025 result.append(pyfile) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3026 if 'bin' in dirs: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3027 dirs.remove('bin') |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3028 if 'lib' in dirs: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3029 # avoids downloaded .py files |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3030 dirs.remove('lib') |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3031 return result |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3032 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3033 def findfiles_by_hg(): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3034 result = [] |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3035 for suite in suites(True): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3036 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
|
3037 for f in versioned: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3038 if f.endswith('.py') and exists(f): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3039 result.append(f) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3040 return result |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3041 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3042 # 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
|
3043 if args.walk: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3044 pyfiles = findfiles_by_walk() |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3045 else: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3046 pyfiles = findfiles_by_hg() |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3047 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3048 env = os.environ.copy() |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3049 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3050 pythonpath = dirname(__file__) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3051 for suite in suites(True): |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3052 pythonpath = os.pathsep.join([pythonpath, suite.mxDir]) |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3053 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3054 env['PYTHONPATH'] = pythonpath |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3055 |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3056 for pyfile in pyfiles: |
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
3057 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
|
3058 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
|
3059 |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3060 """ |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3061 Utility for creating and updating a zip file atomically. |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3062 """ |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3063 class Archiver: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3064 def __init__(self, path): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3065 self.path = path |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3066 |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3067 def __enter__(self): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3068 if self.path: |
16682
63706366f6c5
moved distribution artifacts into build/ sub-directory
Doug Simon <doug.simon@oracle.com>
parents:
16671
diff
changeset
|
3069 if not isdir(dirname(self.path)): |
63706366f6c5
moved distribution artifacts into build/ sub-directory
Doug Simon <doug.simon@oracle.com>
parents:
16671
diff
changeset
|
3070 os.makedirs(dirname(self.path)) |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3071 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
|
3072 self.tmpFd = fd |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3073 self.tmpPath = tmp |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3074 self.zf = zipfile.ZipFile(tmp, 'w') |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3075 else: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3076 self.tmpFd = None |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3077 self.tmpPath = None |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3078 self.zf = None |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3079 return self |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3080 |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3081 def __exit__(self, exc_type, exc_value, traceback): |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3082 if self.zf: |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3083 self.zf.close() |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3084 os.close(self.tmpFd) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3085 # 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
|
3086 os.chmod(self.tmpPath, 0o666 & ~currentUmask) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3087 # Atomic on Unix |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3088 shutil.move(self.tmpPath, self.path) |
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3089 |
15818
718034423138
mxtool: fix archive subcommand such that it will return a successful returncode
Bernhard Urban <bernhard.urban@jku.at>
parents:
15786
diff
changeset
|
3090 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
|
3091 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
|
3092 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
|
3093 |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3094 def archive(args): |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3095 """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
|
3096 parser = ArgumentParser(prog='mx archive') |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3097 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
|
3098 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
|
3099 |
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
|
3100 archives = [] |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3101 for name in args.names: |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3102 if name.startswith('@'): |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3103 dname = name[1:] |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3104 d = distribution(dname) |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3105 d.make_archive() |
14964
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
3106 archives.append(d.path) |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3107 else: |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3108 p = project(name) |
15226
f1c66b738dae
mx: refactored archive command
Doug Simon <doug.simon@oracle.com>
parents:
15149
diff
changeset
|
3109 archives.append(p.make_archive()) |
14964
e1ce6c66f56e
refactored archive command to use "with" statement
Doug Simon <doug.simon@oracle.com>
parents:
14940
diff
changeset
|
3110 |
15818
718034423138
mxtool: fix archive subcommand such that it will return a successful returncode
Bernhard Urban <bernhard.urban@jku.at>
parents:
15786
diff
changeset
|
3111 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
|
3112 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
|
3113 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3114 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
|
3115 """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
|
3116 |
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
|
3117 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
|
3118 |
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
|
3119 nonCanonical = [] |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3120 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
|
3121 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
|
3122 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
|
3123 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
|
3124 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
|
3125 |
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
|
3126 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
|
3127 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
|
3128 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
|
3129 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
|
3130 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
|
3131 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
|
3132 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
|
3133 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
|
3134 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
|
3135 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
|
3136 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
|
3137 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
|
3138 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
|
3139 # 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
|
3140 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
|
3141 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
|
3142 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
|
3143 # 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
|
3144 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
|
3145 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
|
3146 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
|
3147 |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
3148 abort('{0} does not use any packages defined in these projects: {1}\nComputed project dependencies: {2}'.format( |
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
|
3149 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
|
3150 |
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
|
3151 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
|
3152 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
|
3153 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
|
3154 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
|
3155 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
|
3156 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
|
3157 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
|
3158 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
|
3159 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
|
3160 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
|
3161 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
|
3162 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
|
3163 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
|
3164 return len(nonCanonical) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3165 |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3166 class TimeStampFile: |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3167 def __init__(self, path): |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3168 self.path = path |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3169 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
|
3170 |
12524
2583afcd26ee
fixed bug in creation of CreateGRAALDist.launch files
Doug Simon <doug.simon@oracle.com>
parents:
12522
diff
changeset
|
3171 def isOlderThan(self, arg): |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3172 if not self.timestamp: |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3173 return True |
12630
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3174 if isinstance(arg, TimeStampFile): |
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3175 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
|
3176 return False |
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3177 else: |
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3178 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
|
3179 elif isinstance(arg, types.ListType): |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3180 files = arg |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3181 else: |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3182 files = [arg] |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3183 for f in files: |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3184 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
|
3185 return True |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3186 return False |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3187 |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3188 def exists(self): |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3189 return exists(self.path) |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3190 |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3191 def touch(self): |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3192 if exists(self.path): |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3193 os.utime(self.path, None) |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3194 else: |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3195 if not isdir(dirname(self.path)): |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3196 os.makedirs(dirname(self.path)) |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3197 file(self.path, 'a') |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3198 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3199 def checkstyle(args): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3200 """run Checkstyle on the Java sources |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3201 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3202 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
|
3203 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
|
3204 |
10059
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3205 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
|
3206 |
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3207 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
|
3208 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
|
3209 |
10059
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3210 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
|
3211 for p in projects_opt_limit_to_suites(): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3212 if p.native: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3213 continue |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3214 sourceDirs = p.source_dirs() |
14918
31a9c79399c8
disabled current Checkstyle configurations (until Checkstyle supports Java8)
Doug Simon <doug.simon@oracle.com>
parents:
14917
diff
changeset
|
3215 |
18163
c88ab4f1f04a
re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents:
18158
diff
changeset
|
3216 config = join(project(p.checkstyleProj).dir, '.checkstyle_checks.xml') |
c88ab4f1f04a
re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents:
18158
diff
changeset
|
3217 if not exists(config): |
c88ab4f1f04a
re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents:
18158
diff
changeset
|
3218 logv('[No Checkstyle configuration foudn for {0} - skipping]'.format(p)) |
c88ab4f1f04a
re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents:
18158
diff
changeset
|
3219 continue |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3220 |
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
|
3221 # skip checking this Java project if its Java compliance level is "higher" than the configured JDK |
14763 | 3222 jdk = java(p.javaCompliance) |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
3223 assert jdk |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3224 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3225 for sourceDir in sourceDirs: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3226 javafilelist = [] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3227 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
|
3228 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
|
3229 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
|
3230 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
|
3231 continue |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3232 |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3233 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
|
3234 mustCheck = False |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3235 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
|
3236 mustCheck = timestamp.isOlderThan(javafilelist) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3237 else: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3238 mustCheck = True |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3239 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3240 if not mustCheck: |
10059
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3241 if _opts.verbose: |
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3242 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
|
3243 continue |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3244 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3245 exclude = join(p.dir, '.checkstyle.exclude') |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3246 if exists(exclude): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3247 with open(exclude) as f: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3248 # Convert patterns to OS separators |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3249 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
|
3250 def match(name): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3251 for p in patterns: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3252 if p in name: |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3253 if _opts.verbose: |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3254 log('excluding: ' + name) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3255 return True |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3256 return False |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3257 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3258 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
|
3259 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3260 auditfileName = join(p.dir, 'checkstyleOutput.txt') |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3261 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
|
3262 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3263 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
|
3264 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
|
3265 try: |
18710
4836c2abc884
mx: removed hard-coded -Xms setting for the 'build' and 'checkstyle' commands to try and avoid unnecessary swapping on low(er) memory machines
Doug Simon <doug.simon@oracle.com>
parents:
18647
diff
changeset
|
3266 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
|
3267 finally: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3268 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
|
3269 errors = [] |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3270 source = [None] |
9826
cff647969dfa
fixed detection of Checkstyle errors in checkstyle command (GRAAL-293)
Doug Simon <doug.simon@oracle.com>
parents:
9262
diff
changeset
|
3271 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
|
3272 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
|
3273 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
|
3274 elif name == 'error': |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
3275 errors.append('{0}:{1}: {2}'.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
|
3276 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
3277 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
|
3278 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
|
3279 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
|
3280 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
|
3281 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
|
3282 map(log, errors) |
10059
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3283 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
|
3284 else: |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3285 timestamp.touch() |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3286 finally: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3287 if exists(auditfileName): |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3288 os.unlink(auditfileName) |
10059
4dada3ec9c58
mx checkstyle command no longer exits on first error
Doug Simon <doug.simon@oracle.com>
parents:
10058
diff
changeset
|
3289 return totalErrors |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3290 |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3291 def clean(args, parser=None): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3292 """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
|
3293 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3294 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
|
3295 generated images. |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3296 """ |
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
|
3297 |
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
|
3298 suppliedParser = parser is not None |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3299 |
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
|
3300 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
|
3301 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
|
3302 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
|
3303 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
|
3304 |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3305 args = parser.parse_args(args) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3306 |
15579
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3307 def _rmtree(dirPath): |
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3308 path = dirPath |
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3309 if get_os() == 'windows': |
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3310 path = unicode("\\\\?\\" + dirPath) |
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3311 shutil.rmtree(path) |
c3869fe3d917
mx clean: make it more reliable on windows
Bernhard Urban <bernhard.urban@jku.at>
parents:
15577
diff
changeset
|
3312 |
16087
64e172733061
mx clean: delete distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
16086
diff
changeset
|
3313 def _rmIfExists(name): |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
3314 if name and os.path.isfile(name): |
16087
64e172733061
mx clean: delete distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
16086
diff
changeset
|
3315 os.unlink(name) |
64e172733061
mx clean: delete distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
16086
diff
changeset
|
3316 |
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
|
3317 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
|
3318 if p.native: |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3319 if args.native: |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3320 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
|
3321 else: |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3322 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
|
3323 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
|
3324 if genDir != '' and exists(genDir): |
6b540bb82312
Fixed clean should clean also generated source directories.
Christian Humer <christian.humer@gmail.com>
parents:
7681
diff
changeset
|
3325 log('Clearing {0}...'.format(genDir)) |
6b540bb82312
Fixed clean should clean also generated source directories.
Christian Humer <christian.humer@gmail.com>
parents:
7681
diff
changeset
|
3326 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
|
3327 _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
|
3328 |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3329 |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3330 outputDir = p.output_dir() |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3331 if outputDir != '' and exists(outputDir): |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
3332 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
|
3333 _rmtree(outputDir) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3334 |
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
|
3335 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
|
3336 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
|
3337 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
|
3338 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
|
3339 |
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
|
3340 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
|
3341 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
|
3342 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
|
3343 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
|
3344 _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
|
3345 _rmIfExists(distribution(d).sourcesPath) |
16087
64e172733061
mx clean: delete distributions
Bernhard Urban <bernhard.urban@jku.at>
parents:
16086
diff
changeset
|
3346 |
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
|
3347 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
|
3348 return args |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3349 |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3350 def about(args): |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3351 """show the 'man page' for mx""" |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3352 print __doc__ |
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3353 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3354 def help_(args): |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3355 """show help for a given command |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3356 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3357 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
|
3358 |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3359 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
|
3360 if len(args) == 0: |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3361 _argParser.print_help() |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3362 return |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3363 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3364 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
|
3365 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
|
3366 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
|
3367 if len(hits) == 1: |
e952911afd2f
made mx help command accept abbreviations
Doug Simon <doug.simon@oracle.com>
parents:
5876
diff
changeset
|
3368 name = hits[0] |
e952911afd2f
made mx help command accept abbreviations
Doug Simon <doug.simon@oracle.com>
parents:
5876
diff
changeset
|
3369 elif len(hits) == 0: |
e952911afd2f
made mx help command accept abbreviations
Doug Simon <doug.simon@oracle.com>
parents:
5876
diff
changeset
|
3370 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
|
3371 else: |
e952911afd2f
made mx help command accept abbreviations
Doug Simon <doug.simon@oracle.com>
parents:
5876
diff
changeset
|
3372 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
|
3373 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3374 value = _commands[name] |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3375 (func, usage) = value[:2] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3376 doc = func.__doc__ |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3377 if len(value) > 2: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3378 docArgs = value[2:] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3379 fmtArgs = [] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3380 for d in docArgs: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3381 if isinstance(d, Callable): |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
3382 fmtArgs += [d()] |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3383 else: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3384 fmtArgs += [str(d)] |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3385 doc = doc.format(*fmtArgs) |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3386 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
|
3387 |
4301
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3388 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
|
3389 """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
|
3390 |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3391 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
|
3392 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
|
3393 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
|
3394 |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3395 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
|
3396 |
a9f750305a38
added --igv option to "mx projectgraph" command for sending output to IGV instead
Doug Simon <doug.simon@oracle.com>
parents:
12571
diff
changeset
|
3397 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
|
3398 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
|
3399 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
|
3400 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
|
3401 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
|
3402 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
|
3403 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
|
3404 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
|
3405 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
|
3406 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
|
3407 igv.open('nodes') |
15785
7a6f6a7ef886
Add JRE library support to mx projectgraph.
Josef Eisl <josef.eisl@jku.at>
parents:
15781
diff
changeset
|
3408 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
|
3409 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
|
3410 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
|
3411 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
|
3412 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
|
3413 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
|
3414 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
|
3415 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
|
3416 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
|
3417 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
|
3418 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
|
3419 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
|
3420 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
|
3421 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
|
3422 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
|
3423 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
|
3424 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
|
3425 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
|
3426 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
|
3427 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
|
3428 igv.close('graphDocument') |
12630
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3429 |
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
|
3430 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
|
3431 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
|
3432 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
|
3433 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
|
3434 else: |
12630
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3435 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
|
3436 return |
12630
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3437 |
4301
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3438 print 'digraph projects {' |
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3439 print 'rankdir=BT;' |
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3440 print 'node [shape=rect];' |
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3441 for p in projects(): |
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3442 for dep in p.canonical_deps(): |
19094
258b3658845a
mx: Show annotation processor edges in projectgraph
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18930
diff
changeset
|
3443 print '"' + p.name + '"->"' + dep + '";' |
258b3658845a
mx: Show annotation processor edges in projectgraph
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18930
diff
changeset
|
3444 if hasattr(p, '_declaredAnnotationProcessors'): |
258b3658845a
mx: Show annotation processor edges in projectgraph
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18930
diff
changeset
|
3445 for ap in p._declaredAnnotationProcessors: |
258b3658845a
mx: Show annotation processor edges in projectgraph
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
18930
diff
changeset
|
3446 print '"' + p.name + '"->"' + ap + '" [style="dashed"];' |
4301
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
3447 print '}' |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
3448 |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3449 def _source_locator_memento(deps): |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
3450 slm = XMLDoc() |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3451 slm.open('sourceLookupDirector') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3452 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
|
3453 |
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
|
3454 javaCompliance = None |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3455 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
|
3456 if dep.isLibrary(): |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3457 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
|
3458 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
|
3459 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
|
3460 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
|
3461 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
|
3462 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
|
3463 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
|
3464 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
|
3465 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
|
3466 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
|
3467 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
|
3468 |
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
|
3469 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
|
3470 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
|
3471 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
|
3472 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
|
3473 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
|
3474 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
|
3475 |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3476 slm.close('sourceContainers') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3477 slm.close('sourceLookupDirector') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3478 return slm |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3479 |
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
|
3480 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
|
3481 """ |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3482 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
|
3483 """ |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3484 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
|
3485 deps = [] |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3486 slm = _source_locator_memento(deps) |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
3487 launch = XMLDoc() |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3488 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
|
3489 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
|
3490 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
|
3491 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
|
3492 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
|
3493 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
|
3494 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
|
3495 launch.close('mapAttribute') |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3496 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
|
3497 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
|
3498 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
|
3499 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
|
3500 |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3501 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
|
3502 if len(suites()) == 1: |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
3503 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
|
3504 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
|
3505 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
|
3506 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
|
3507 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
|
3508 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
|
3509 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
|
3510 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
|
3511 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
|
3512 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3513 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
|
3514 """ |
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3515 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
|
3516 """ |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3517 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
|
3518 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
|
3519 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
|
3520 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
|
3521 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
|
3522 cp = None |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3523 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
|
3524 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
|
3525 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
|
3526 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
|
3527 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
|
3528 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
|
3529 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
|
3530 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
|
3531 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
|
3532 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
|
3533 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
|
3534 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
|
3535 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
|
3536 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
|
3537 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
|
3538 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
|
3539 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
|
3540 break |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
3541 |
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
|
3542 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
|
3543 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
|
3544 return False |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
3545 |
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
|
3546 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
|
3547 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
|
3548 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
|
3549 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
|
3550 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
|
3551 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
|
3552 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
|
3553 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
|
3554 |
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
|
3555 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
|
3556 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
|
3557 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
|
3558 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
|
3559 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
|
3560 |
5198
887b45f6aa02
improved name of Eclipse launch file created for jar applications
Doug Simon <doug.simon@oracle.com>
parents:
5194
diff
changeset
|
3561 slm = _source_locator_memento(deps) |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
3562 |
5217
70777e50f1e6
replace monkey patch with subclassing instead
Doug Simon <doug.simon@oracle.com>
parents:
5198
diff
changeset
|
3563 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
|
3564 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
|
3565 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
|
3566 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
|
3567 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
|
3568 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
|
3569 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
|
3570 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
|
3571 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
|
3572 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
|
3573 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
|
3574 |
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
|
3575 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
|
3576 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
|
3577 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
|
3578 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
|
3579 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3580 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
|
3581 """(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
|
3582 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
|
3583 _eclipseinit_suite(args, s, buildProcessorJars, refreshOnly) |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
3584 |
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
|
3585 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
|
3586 |
13682
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
3587 def _check_ide_timestamp(suite, configZip, ide): |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
3588 """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
|
3589 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
|
3590 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
|
3591 return False |
12630
aadb188e4258
mxtool: regenerate IDE files when suite imports file changes
Mick Jordan <mick.jordan@oracle.com>
parents:
12620
diff
changeset
|
3592 # 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
|
3593 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
|
3594 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
|
3595 |
13682
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
3596 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
|
3597 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
|
3598 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
|
3599 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
|
3600 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
|
3601 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
|
3602 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
|
3603 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
|
3604 |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3605 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
|
3606 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
|
3607 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3608 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
|
3609 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
|
3610 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3611 out = XMLDoc() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3612 out.open('classpath') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3613 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3614 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
|
3615 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
|
3616 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
|
3617 os.mkdir(srcDir) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3618 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
|
3619 |
18890
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
3620 processorPath = p.annotation_processors_path() |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
3621 if processorPath: |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3622 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
|
3623 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
|
3624 os.mkdir(genDir) |
18890
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
3625 out.open('classpathentry', {'kind' : 'src', 'path' : 'src_gen'}) |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
3626 if p.uses_annotation_processor_library(): |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
3627 # ignore warnings produced by third-party annotation processors |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
3628 out.open('attributes') |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
3629 out.element('attribute', {'name' : 'ignore_optional_problems', 'value' : 'true'}) |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
3630 out.close('attributes') |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
3631 out.close('classpathentry') |
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
3632 |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3633 if files: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3634 files.append(genDir) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3635 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3636 # 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
|
3637 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
|
3638 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3639 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
|
3640 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
|
3641 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3642 containerDeps = set() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3643 libraryDeps = set() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3644 projectDeps = set() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3645 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3646 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
|
3647 if dep == p: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3648 continue |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3649 if dep.isLibrary(): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3650 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
|
3651 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
|
3652 containerDeps.add(container) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3653 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
|
3654 else: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3655 libraryDeps.add(dep) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3656 elif dep.isProject(): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3657 projectDeps.add(dep) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3658 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
3659 for dep in sorted(containerDeps): |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3660 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
|
3661 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
3662 for dep in sorted(libraryDeps): |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3663 path = dep.path |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3664 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
|
3665 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3666 # 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
|
3667 # 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
|
3668 # 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
|
3669 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
|
3670 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3671 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
|
3672 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3673 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
|
3674 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
|
3675 attributes['sourcepath'] = sourcePath |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3676 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
|
3677 if libFiles: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3678 libFiles.append(path) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3679 |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
3680 for dep in sorted(projectDeps): |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3681 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
|
3682 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3683 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
|
3684 out.close('classpath') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3685 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
|
3686 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
|
3687 if files: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3688 files.append(classpathFile) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3689 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3690 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
|
3691 if exists(csConfig): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3692 out = XMLDoc() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3693 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3694 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
|
3695 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
|
3696 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
|
3697 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
|
3698 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
|
3699 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
|
3700 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
|
3701 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
|
3702 out.close('fileset') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3703 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
|
3704 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
|
3705 out.close('filter') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3706 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3707 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
|
3708 if exists(exclude): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3709 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
|
3710 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
|
3711 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
|
3712 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
|
3713 line = line.strip() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3714 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
|
3715 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
|
3716 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
|
3717 out.close('filter') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3718 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3719 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
|
3720 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
|
3721 if files: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3722 files.append(dotCheckstyle) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3723 else: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3724 # 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
|
3725 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
|
3726 if exists(dotCheckstyle): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3727 os.unlink(dotCheckstyle) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3728 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3729 out = XMLDoc() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3730 out.open('projectDescription') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3731 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
|
3732 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
|
3733 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
|
3734 out.open('buildSpec') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3735 out.open('buildCommand') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3736 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
|
3737 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
|
3738 out.close('buildCommand') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3739 if exists(csConfig): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3740 out.open('buildCommand') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3741 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
|
3742 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
|
3743 out.close('buildCommand') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3744 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
|
3745 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
|
3746 out.open('buildCommand') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3747 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
|
3748 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
|
3749 out.close('buildCommand') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3750 |
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
|
3751 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
|
3752 # 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
|
3753 # 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
|
3754 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
|
3755 |
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
|
3756 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
|
3757 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
|
3758 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
|
3759 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
|
3760 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
|
3761 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
|
3762 |
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
|
3763 # 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
|
3764 # 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
|
3765 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
|
3766 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
|
3767 _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
|
3768 |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3769 out.close('buildSpec') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3770 out.open('natures') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3771 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
|
3772 if exists(csConfig): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3773 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
|
3774 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
|
3775 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
|
3776 out.close('natures') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3777 out.close('projectDescription') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3778 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
|
3779 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
|
3780 if files: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3781 files.append(projectFile) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3782 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3783 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
|
3784 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
|
3785 os.mkdir(settingsDir) |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3786 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3787 # 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
|
3788 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
|
3789 esdict = {} |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3790 if exists(defaultEclipseSettingsDir): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3791 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
|
3792 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
|
3793 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
|
3794 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3795 # 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
|
3796 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
|
3797 if exists(eclipseSettingsDir): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3798 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
|
3799 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
|
3800 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
|
3801 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3802 # 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
|
3803 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
|
3804 if exists(projectSettingsDir): |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3805 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
|
3806 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
|
3807 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
|
3808 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3809 # 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
|
3810 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
|
3811 # ignore this file altogether if this project has no annotation processors |
18890
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
3812 if name == "org.eclipse.jdt.apt.core.prefs" and not processorPath: |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3813 continue |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3814 |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3815 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
|
3816 content = f.read() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3817 content = content.replace('${javaCompliance}', str(p.javaCompliance)) |
18890
f5cee3a0496c
mx: support annotation processors in libraries
Roland Schatz <roland.schatz@oracle.com>
parents:
18889
diff
changeset
|
3818 if processorPath: |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3819 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
|
3820 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
|
3821 if files: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3822 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
|
3823 |
16839
7eca83fd5419
generate distributions for projects that define annotation processors
Doug Simon <doug.simon@oracle.com>
parents:
16725
diff
changeset
|
3824 if processorPath: |
16455
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3825 out = XMLDoc() |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3826 out.open('factorypath') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3827 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
|
3828 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
|
3829 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
|
3830 out.close('factorypath') |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3831 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
|
3832 if files: |
59fdea1f9e36
factored out _eclipseinit_project to all per-project Eclipse configuration
Doug Simon <doug.simon@oracle.com>
parents:
16417
diff
changeset
|
3833 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
|
3834 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3835 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
|
3836 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
|
3837 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
|
3838 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
|
3839 return |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3840 |
13682
c4ff08d2aa0d
fixed problem in netbeansinit that generated invalid annotation processor paths for projects
Doug Simon <doug.simon@oracle.com>
parents:
13620
diff
changeset
|
3841 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
|
3842 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
|
3843 return |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
3844 |
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
|
3845 files = [] |
13475
4a3628c79ff9
separated external libs out from zipped up IDE configs
Doug Simon <doug.simon@oracle.com>
parents:
13473
diff
changeset
|
3846 libFiles = [] |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3847 if buildProcessorJars: |
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3848 files += _processorjars_suite(suite) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
3849 |
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
|
3850 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
|
3851 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
|
3852 continue |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3853 _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
|
3854 |
13727
10e6f192631f
added library sources (if available) to generated Eclipse attach launcher
Doug Simon <doug.simon@oracle.com>
parents:
13682
diff
changeset
|
3855 _, 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
|
3856 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
|
3857 |
15899
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3858 # 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
|
3859 # 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
|
3860 # distribution is updated. |
15899
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3861 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
|
3862 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
|
3863 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
|
3864 continue |
15899
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3865 if not exists(projectDir): |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3866 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
|
3867 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
|
3868 relevantResources = [] |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3869 for p in distProjects: |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3870 for srcDir in p.source_dirs(): |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3871 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
|
3872 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
|
3873 out = XMLDoc() |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3874 out.open('projectDescription') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3875 out.element('name', data=dist.name) |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3876 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
|
3877 out.open('projects') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3878 for p in distProjects: |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3879 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
|
3880 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
|
3881 out.element('project', data=d) |
15899
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3882 out.close('projects') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3883 out.open('buildSpec') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3884 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
|
3885 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
|
3886 _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
|
3887 out.close('buildSpec') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3888 out.open('natures') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3889 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
|
3890 out.close('natures') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3891 out.close('projectDescription') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3892 projectFile = join(projectDir, '.project') |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3893 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
|
3894 files.append(projectFile) |
e065b9746246
mx: create Eclipse projects for distributions
Doug Simon <doug.simon@oracle.com>
parents:
15898
diff
changeset
|
3895 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
3896 _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
|
3897 _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
|
3898 |
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
|
3899 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
|
3900 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
|
3901 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
|
3902 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
|
3903 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
|
3904 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
|
3905 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
|
3906 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
|
3907 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
|
3908 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
|
3909 # 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
|
3910 shutil.move(tmp, zipPath) |
14103
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
3911 # 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
|
3912 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
|
3913 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
|
3914 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
|
3915 os.remove(tmp) |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
3916 |
12661
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3917 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
|
3918 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
|
3919 launchOut = XMLDoc() |
8181
989e0582a30f
enabled Eclipse builders to use console logging
Doug Simon <doug.simon@oracle.com>
parents:
8180
diff
changeset
|
3920 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
|
3921 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
|
3922 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
|
3923 launchOut.open('mapAttribute', {'key' : 'org.eclipse.debug.core.environmentVariables'}) |
18861
869ee319c377
mx: Fixed eclipse annotation processor configuration should serialize JAVA_HOME with the original value.
Christian Humer <christian.humer@gmail.com>
parents:
18725
diff
changeset
|
3924 launchOut.element('mapEntry', {'key' : 'JAVA_HOME', 'value' : _opts.java_home}) |
14785
66ac13a2c7a1
pass EXTRA_JAVA_HOMES to eclipse builders
Lukas Stadler <lukas.stadler@oracle.com>
parents:
14781
diff
changeset
|
3925 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
|
3926 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
|
3927 |
7681
f81be78f15a5
Fixed eclipse configuration for annotation processors. Annotation processor jars
Christian Humer <christian.humer@gmail.com>
parents:
7533
diff
changeset
|
3928 if refresh: |
12661
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3929 if refreshFile is None: |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3930 refreshScope = '${project}' |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3931 else: |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3932 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
|
3933 |
ec224fef3012
integrated auto-formatting changes
Doug Simon <doug.simon@oracle.com>
parents:
12662
diff
changeset
|
3934 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
|
3935 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
|
3936 |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3937 if relevantResources is not None: |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3938 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
|
3939 for relevantResource in relevantResources: |
12684
ec224fef3012
integrated auto-formatting changes
Doug Simon <doug.simon@oracle.com>
parents:
12662
diff
changeset
|
3940 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
|
3941 resources += '</resources>}' |
0497d6702cff
mxtool: fixed eclipse builder glitches and rebuild loops.
Christian Humer <christian.humer@gmail.com>
parents:
12640
diff
changeset
|
3942 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
|
3943 |
ec224fef3012
integrated auto-formatting changes
Doug Simon <doug.simon@oracle.com>
parents:
12662
diff
changeset
|
3944 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3945 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
|
3946 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
|
3947 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
|
3948 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
|
3949 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
|
3950 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
|
3951 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3952 # 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
|
3953 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
|
3954 |
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
|
3955 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
|
3956 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
|
3957 cmd = 'mx.cmd' |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3958 cmdPath = join(baseDir, cmd) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3959 if not os.path.exists(cmdPath): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3960 # 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
|
3961 cmdPath = join(dirname(baseDir), cmd) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3962 if not os.path.exists(cmdPath): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3963 abort('cannot locate ' + cmd) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3964 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
3965 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
|
3966 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
|
3967 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
|
3968 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
|
3969 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
|
3970 |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
3971 |
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
|
3972 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
|
3973 |
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
|
3974 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
|
3975 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
|
3976 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
|
3977 |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3978 dotProjectDoc.open('buildCommand') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3979 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
|
3980 dotProjectDoc.element('triggers', data='auto,full,incremental,') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3981 dotProjectDoc.open('arguments') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3982 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
|
3983 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
|
3984 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
|
3985 dotProjectDoc.close('dictionary') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3986 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
|
3987 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
|
3988 dotProjectDoc.element('value', data='true') |
8131
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3989 dotProjectDoc.close('dictionary') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3990 dotProjectDoc.close('arguments') |
83ec1df0a30f
added support for distributions to mx
Doug Simon <doug.simon@oracle.com>
parents:
7925
diff
changeset
|
3991 dotProjectDoc.close('buildCommand') |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3992 |
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
|
3993 def generate_eclipse_workingsets(): |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
3994 """ |
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
|
3995 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
|
3996 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
|
3997 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
|
3998 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
|
3999 """ |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4000 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4001 # 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
|
4002 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
|
4003 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
|
4004 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
|
4005 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
|
4006 else: |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
4007 expected_wsroot = _primary_suite.dir |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
4008 |
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
4009 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
|
4010 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
|
4011 # 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
|
4012 wsroot = expected_wsroot |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
4013 |
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
|
4014 wsdir = join(wsroot, wsloc) |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4015 if not exists(wsdir): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4016 wsdir = wsroot |
13480
6215ff792647
put warning about missing Eclipse metadata directory behind -v option
Doug Simon <doug.simon@oracle.com>
parents:
13475
diff
changeset
|
4017 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
|
4018 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
|
4019 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4020 # 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
|
4021 workingSets = dict() |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4022 for p in projects(): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4023 if p.workingSets is None: |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4024 continue |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4025 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
|
4026 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
|
4027 workingSets[w] = [p.name] |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4028 else: |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4029 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
|
4030 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4031 if exists(wspath): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4032 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
|
4033 else: |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4034 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
|
4035 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4036 update_file(wspath, wsdoc.xml(newl='\n')) |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
4037 |
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
|
4038 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
|
4039 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
|
4040 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
|
4041 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
|
4042 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
|
4043 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
|
4044 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
|
4045 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
|
4046 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
|
4047 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4048 def _make_workingset_xml(workingSets): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4049 wsdoc = XMLDoc() |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4050 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
|
4051 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4052 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
|
4053 _workingset_open(wsdoc, w) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4054 for p in workingSets[w]: |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4055 _workingset_element(wsdoc, p) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4056 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
|
4057 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4058 wsdoc.close('workingSetManager') |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4059 return wsdoc |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4060 |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4061 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
|
4062 target = XMLDoc() |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4063 target.open('workingSetManager') |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4064 |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4065 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
|
4066 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4067 class ParserState(object): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4068 def __init__(self): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4069 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
|
4070 self.current_ws = None |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4071 self.seen_ws = list() |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4072 self.seen_projects = list() |
13824
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4073 self.aggregate_ws = False |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4074 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
|
4075 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4076 ps = ParserState() |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4077 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4078 # parsing logic |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4079 def _ws_start(name, attributes): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4080 if name == 'workingSet': |
13824
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4081 if attributes.has_key('name'): |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4082 ps.current_ws_name = attributes['name'] |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4083 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
|
4084 ps.aggregate_ws = True |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4085 ps.current_ws = None |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4086 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
|
4087 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
|
4088 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
|
4089 ps.seen_projects = list() |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4090 else: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4091 ps.current_ws = None |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4092 target.open(name, attributes) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4093 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
|
4094 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4095 def _ws_end(name): |
13824
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4096 closeAndResetHandler = False |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4097 if name == 'workingSet': |
13824
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4098 if ps.aggregate_ws: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4099 if ps.nested_ws: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4100 ps.nested_ws = False |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4101 else: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4102 ps.aggregate_ws = False |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4103 closeAndResetHandler = True |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4104 else: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4105 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
|
4106 for p in ps.current_ws: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4107 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
|
4108 _workingset_element(target, p) |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4109 closeAndResetHandler = True |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4110 if closeAndResetHandler: |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4111 target.close('workingSet') |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4112 parser.StartElementHandler = _ws_start |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4113 elif name == 'workingSetManager': |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4114 # 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
|
4115 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
|
4116 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
|
4117 _workingset_open(target, w) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4118 for p in workingSets[w]: |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4119 _workingset_element(target, p) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4120 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
|
4121 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4122 def _ws_item(name, attributes): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4123 if name == 'item': |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4124 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
|
4125 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
|
4126 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
|
4127 target.element(name, attributes) |
14937
3de340bdb8d3
added support for adding sources to distribution
Doug Simon <doug.simon@oracle.com>
parents:
14918
diff
changeset
|
4128 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
|
4129 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
|
4130 else: |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4131 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
|
4132 _workingset_element(target, p_name) |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4133 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
|
4134 elif name == 'workingSet': |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4135 ps.nested_ws = True |
96d5cb754b68
address issue in Eclipse working set generation
Michael Haupt <michael.haupt@oracle.com>
parents:
13779
diff
changeset
|
4136 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
|
4137 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4138 # process document |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4139 parser.StartElementHandler = _ws_start |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4140 parser.EndElementHandler = _ws_end |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4141 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
|
4142 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
|
4143 |
10061
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4144 target.close('workingSetManager') |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4145 return target |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4146 |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4147 def _workingset_open(wsdoc, ws): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4148 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
|
4149 |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4150 def _workingset_element(wsdoc, p): |
b6dfe12478ff
[GRAAL-308] pre-defined working sets for Eclipse
Michael Haupt <michael.haupt@oracle.com>
parents:
10060
diff
changeset
|
4151 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
|
4152 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
4153 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
|
4154 """(re)generate NetBeans project configurations""" |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4155 |
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
|
4156 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
|
4157 _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
|
4158 |
18158
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4159 def _netbeansinit_project(p, jdks=None, files=None, libFiles=None): |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4160 if not exists(join(p.dir, 'nbproject')): |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4161 os.makedirs(join(p.dir, 'nbproject')) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4162 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4163 jdk = java(p.javaCompliance) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4164 assert jdk |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4165 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4166 if jdks: |
14763 | 4167 jdks.add(jdk) |
4168 | |
18158
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4169 out = XMLDoc() |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4170 out.open('project', {'name' : p.name, 'default' : 'default', 'basedir' : '.'}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4171 out.element('description', data='Builds, tests, and runs the project ' + p.name + '.') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4172 out.element('import', {'file' : 'nbproject/build-impl.xml'}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4173 out.open('target', {'name' : '-post-compile'}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4174 out.open('exec', {'executable' : sys.executable}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4175 out.element('env', {'key' : 'JAVA_HOME', 'value' : jdk.jdk}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4176 out.element('arg', {'value' : os.path.abspath(__file__)}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4177 out.element('arg', {'value' : 'archive'}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4178 out.element('arg', {'value' : '@GRAAL'}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4179 out.close('exec') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4180 out.close('target') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4181 out.close('project') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4182 update_file(join(p.dir, 'build.xml'), out.xml(indent='\t', newl='\n')) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4183 if files: |
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
|
4184 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
|
4185 |
18158
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4186 out = XMLDoc() |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4187 out.open('project', {'xmlns' : 'http://www.netbeans.org/ns/project/1'}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4188 out.element('type', data='org.netbeans.modules.java.j2seproject') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4189 out.open('configuration') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4190 out.open('data', {'xmlns' : 'http://www.netbeans.org/ns/j2se-project/3'}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4191 out.element('name', data=p.name) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4192 out.element('explicit-platform', {'explicit-source-supported' : 'true'}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4193 out.open('source-roots') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4194 out.element('root', {'id' : 'src.dir'}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4195 if len(p.annotation_processors()) > 0: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4196 out.element('root', {'id' : 'src.ap-source-output.dir', 'name' : 'Generated Packages'}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4197 out.close('source-roots') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4198 out.open('test-roots') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4199 out.close('test-roots') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4200 out.close('data') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4201 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4202 firstDep = True |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4203 for dep in p.all_deps([], includeLibs=False, includeAnnotationProcessors=True): |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4204 if dep == p: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4205 continue |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4206 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4207 if dep.isProject(): |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4208 n = dep.name.replace('.', '_') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4209 if firstDep: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4210 out.open('references', {'xmlns' : 'http://www.netbeans.org/ns/ant-project-references/1'}) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4211 firstDep = False |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4212 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4213 out.open('reference') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4214 out.element('foreign-project', data=n) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4215 out.element('artifact-type', data='jar') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4216 out.element('script', data='build.xml') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4217 out.element('target', data='jar') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4218 out.element('clean-target', data='clean') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4219 out.element('id', data='jar') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4220 out.close('reference') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4221 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4222 if not firstDep: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4223 out.close('references') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4224 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4225 out.close('configuration') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4226 out.close('project') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4227 update_file(join(p.dir, 'nbproject', 'project.xml'), out.xml(indent=' ', newl='\n')) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4228 if files: |
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
|
4229 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
|
4230 |
18158
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4231 out = StringIO.StringIO() |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4232 jdkPlatform = 'JDK_' + str(jdk.version) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4233 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4234 annotationProcessorEnabled = "false" |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4235 annotationProcessorSrcFolder = "" |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4236 if len(p.annotation_processors()) > 0: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4237 annotationProcessorEnabled = "true" |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4238 genSrcDir = p.source_gen_dir() |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4239 if not exists(genSrcDir): |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4240 os.makedirs(genSrcDir) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4241 annotationProcessorSrcFolder = "src.ap-source-output.dir=" + genSrcDir |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4242 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4243 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
|
4244 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
|
4245 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
|
4246 annotation.processing.processors.list= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4247 annotation.processing.run.all.processors=true |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4248 application.title=""" + p.name + """ |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4249 application.vendor=mx |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4250 build.classes.dir=${build.dir} |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4251 build.classes.excludes=**/*.java,**/*.form |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4252 # 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
|
4253 build.dir=bin |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4254 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
|
4255 # 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
|
4256 build.sysclasspath=ignore |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4257 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
|
4258 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
|
4259 # 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
|
4260 #debug.transport=dt_socket |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4261 debug.classpath=\\ |
18158
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4262 ${run.classpath} |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4263 debug.test.classpath=\\ |
18158
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4264 ${run.test.classpath} |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4265 # 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
|
4266 dist.dir=dist |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4267 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
|
4268 dist.javadoc.dir=${dist.dir}/javadoc |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4269 endorsed.classpath= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4270 excludes= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4271 includes=** |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4272 jar.compress=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4273 # 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
|
4274 javac.compilerargs=-XDignore.symbol.file |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4275 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
|
4276 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
|
4277 javac.target=""" + str(p.javaCompliance) + """ |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4278 javac.test.classpath=\\ |
18158
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4279 ${javac.classpath}:\\ |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4280 ${build.classes.dir} |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4281 javadoc.additionalparam= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4282 javadoc.author=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4283 javadoc.encoding=${source.encoding} |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4284 javadoc.noindex=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4285 javadoc.nonavbar=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4286 javadoc.notree=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4287 javadoc.private=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4288 javadoc.splitindex=true |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4289 javadoc.use=true |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4290 javadoc.version=false |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4291 javadoc.windowtitle= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4292 main.class= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4293 manifest.file=manifest.mf |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4294 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
|
4295 mkdist.disabled=false |
14763 | 4296 platforms.""" + jdkPlatform + """.home=""" + jdk.jdk + """ |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4297 platform.active=""" + jdkPlatform + """ |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4298 run.classpath=\\ |
18158
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4299 ${javac.classpath}:\\ |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4300 ${build.classes.dir} |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4301 # 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
|
4302 # (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
|
4303 # 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
|
4304 run.jvmargs= |
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4305 run.test.classpath=\\ |
18158
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4306 ${javac.test.classpath}:\\ |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4307 ${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
|
4308 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
|
4309 """ + annotationProcessorSrcFolder + """ |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
4310 source.encoding=UTF-8""".replace(':', os.pathsep).replace('/', os.sep) |
18158
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4311 print >> out, content |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4312 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4313 mainSrc = True |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4314 for src in p.srcDirs: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4315 srcDir = join(p.dir, src) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4316 if not exists(srcDir): |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4317 os.mkdir(srcDir) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4318 ref = 'file.reference.' + p.name + '-' + src |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4319 print >> out, ref + '=' + src |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4320 if mainSrc: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4321 print >> out, 'src.dir=${' + ref + '}' |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4322 mainSrc = False |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4323 else: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4324 print >> out, 'src.' + src + '.dir=${' + ref + '}' |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4325 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4326 javacClasspath = [] |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4327 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4328 deps = p.all_deps([], True) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4329 annotationProcessorOnlyDeps = [] |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4330 if len(p.annotation_processors()) > 0: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4331 for ap in p.annotation_processors(): |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4332 apDep = dependency(ap) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4333 if not apDep in deps: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4334 deps.append(apDep) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4335 annotationProcessorOnlyDeps.append(apDep) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4336 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4337 annotationProcessorReferences = [] |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4338 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4339 for dep in deps: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4340 if dep == p: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4341 continue |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4342 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4343 if dep.isLibrary(): |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4344 path = dep.get_path(resolve=True) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4345 if path: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4346 if os.sep == '\\': |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4347 path = path.replace('\\', '\\\\') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4348 ref = 'file.reference.' + dep.name + '-bin' |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4349 print >> out, ref + '=' + path |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4350 if libFiles: |
17092
2f64a6c771d5
Backed out changeset: f0b55d0c5d2d
Doug Simon <doug.simon@oracle.com>
parents:
17076
diff
changeset
|
4351 libFiles.append(path) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4352 |
18158
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4353 elif dep.isProject(): |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4354 n = dep.name.replace('.', '_') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4355 relDepPath = os.path.relpath(dep.dir, p.dir).replace(os.sep, '/') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4356 ref = 'reference.' + n + '.jar' |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4357 print >> out, 'project.' + n + '=' + relDepPath |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4358 print >> out, ref + '=${project.' + n + '}/dist/' + dep.name + '.jar' |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4359 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4360 if not dep in annotationProcessorOnlyDeps: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4361 javacClasspath.append('${' + ref + '}') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4362 else: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4363 annotationProcessorReferences.append('${' + ref + '}') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4364 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4365 print >> out, 'javac.classpath=\\\n ' + (os.pathsep + '\\\n ').join(javacClasspath) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4366 print >> out, 'javac.processorpath=' + (os.pathsep + '\\\n ').join(['${javac.classpath}'] + annotationProcessorReferences) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4367 print >> out, 'javac.test.processorpath=' + (os.pathsep + '\\\n ').join(['${javac.test.classpath}'] + annotationProcessorReferences) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4368 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4369 update_file(join(p.dir, 'nbproject', 'project.properties'), out.getvalue()) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4370 out.close() |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4371 if files: |
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
|
4372 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
|
4373 |
18158
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4374 def _netbeansinit_suite(args, suite, refreshOnly=False, buildProcessorJars=True): |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4375 configZip = TimeStampFile(join(suite.mxDir, 'netbeans-config.zip')) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4376 configLibsZip = join(suite.mxDir, 'eclipse-config-libs.zip') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4377 if refreshOnly and not configZip.exists(): |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4378 return |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4379 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4380 if _check_ide_timestamp(suite, configZip, 'netbeans'): |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4381 logv('[NetBeans configurations are up to date - skipping]') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4382 return |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4383 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4384 files = [] |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4385 libFiles = [] |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4386 jdks = set() |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4387 for p in suite.projects: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4388 if p.native: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4389 continue |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4390 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4391 if exists(join(p.dir, 'plugin.xml')): # eclipse plugin project |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4392 continue |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4393 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4394 _netbeansinit_project(p, jdks, files, libFiles) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4395 |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4396 log('If using NetBeans:') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4397 # http://stackoverflow.com/questions/24720665/cant-resolve-jdk-internal-package |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4398 log(' 1. Edit etc/netbeans.conf in your NetBeans installation and modify netbeans_default_options variable to include "-J-DCachingArchiveProvider.disableCtSym=true"') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4399 log(' 2. Ensure that the following platform(s) are defined (Tools -> Java Platforms):') |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4400 for jdk in jdks: |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4401 log(' JDK_' + str(jdk.version)) |
31ad929e1afd
factored out _netbeansinit_project function
Doug Simon <doug.simon@oracle.com>
parents:
18135
diff
changeset
|
4402 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
|
4403 |
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
|
4404 _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
|
4405 _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
|
4406 |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4407 def intellijinit(args, refreshOnly=False): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4408 """(re)generate Intellij project configurations""" |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4409 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4410 for suite in suites(True): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4411 _intellij_suite(args, suite, refreshOnly) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4412 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4413 def _intellij_suite(args, suite, refreshOnly=False): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4414 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4415 libraries = set() |
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 ideaProjectDirectory = join(suite.dir, '.idea') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4418 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4419 if not exists(ideaProjectDirectory): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4420 os.mkdir(ideaProjectDirectory) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4421 nameFile = join(ideaProjectDirectory, '.name') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4422 update_file(nameFile, "Graal") |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4423 modulesXml = XMLDoc() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4424 modulesXml.open('project', attributes={'version': '4'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4425 modulesXml.open('component', attributes={'name': 'ProjectModuleManager'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4426 modulesXml.open('modules') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4427 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4428 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4429 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
|
4430 path = join(p.dir, name) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4431 if exists(path): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4432 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
|
4433 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4434 annotationProcessorProfiles = {} |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4435 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4436 def _complianceToIntellijLanguageLevel(compliance): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4437 return 'JDK_1_' + str(compliance.value) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4438 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4439 # 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
|
4440 for p in suite.projects: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4441 if p.native: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4442 continue |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4443 |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
4444 assert java(p.javaCompliance) |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4445 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4446 if not exists(p.dir): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4447 os.makedirs(p.dir) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4448 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4449 annotationProcessorProfileKey = tuple(p.annotation_processors()) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4450 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4451 if not annotationProcessorProfileKey in annotationProcessorProfiles: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4452 annotationProcessorProfiles[annotationProcessorProfileKey] = [p] |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4453 else: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4454 annotationProcessorProfiles[annotationProcessorProfileKey].append(p) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4455 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4456 intellijLanguageLevel = _complianceToIntellijLanguageLevel(p.javaCompliance) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4457 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4458 moduleXml = XMLDoc() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4459 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
|
4460 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4461 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
|
4462 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
|
4463 moduleXml.element('exclude-output') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4464 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4465 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
|
4466 for src in p.srcDirs: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4467 srcDir = join(p.dir, src) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4468 if not exists(srcDir): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4469 os.mkdir(srcDir) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4470 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
|
4471 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4472 if len(p.annotation_processors()) > 0: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4473 genDir = p.source_gen_dir() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4474 if not exists(genDir): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4475 os.mkdir(genDir) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4476 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
|
4477 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4478 for name in ['.externalToolBuilders', '.settings', 'nbproject']: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4479 _intellij_exclude_if_exists(moduleXml, p, name) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4480 moduleXml.close('content') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4481 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4482 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
|
4483 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
|
4484 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4485 deps = p.all_deps([], True, includeAnnotationProcessors=True) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4486 for dep in deps: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4487 if dep == p: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4488 continue |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4489 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4490 if dep.isLibrary(): |
15662
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
4491 libraries.add(dep) |
50fbda571d99
mx: added jrelibrary dependency type
Doug Simon <doug.simon@oracle.com>
parents:
15638
diff
changeset
|
4492 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
|
4493 elif dep.isProject(): |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4494 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
|
4495 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4496 moduleXml.close('component') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4497 moduleXml.close('module') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4498 moduleFile = join(p.dir, p.name + '.iml') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4499 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
|
4500 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4501 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
|
4502 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
|
4503 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4504 modulesXml.close('modules') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4505 modulesXml.close('component') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4506 modulesXml.close('project') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4507 moduleXmlFile = join(ideaProjectDirectory, 'modules.xml') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4508 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
|
4509 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4510 # TODO What about cross-suite dependencies? |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4511 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4512 librariesDirectory = join(ideaProjectDirectory, 'libraries') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4513 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4514 if not exists(librariesDirectory): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4515 os.mkdir(librariesDirectory) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4516 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4517 # Setup the libraries that were used above |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4518 # 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
|
4519 for library in libraries: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4520 libraryXml = XMLDoc() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4521 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4522 libraryXml.open('component', attributes={'name': 'libraryTable'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4523 libraryXml.open('library', attributes={'name': library.name}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4524 libraryXml.open('CLASSES') |
15134
f0fc09c0845e
Be sure to resolve and download librariesin mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15122
diff
changeset
|
4525 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
|
4526 libraryXml.close('CLASSES') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4527 libraryXml.element('JAVADOC') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4528 if library.sourcePath: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4529 libraryXml.open('SOURCES') |
15134
f0fc09c0845e
Be sure to resolve and download librariesin mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15122
diff
changeset
|
4530 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
|
4531 libraryXml.close('SOURCES') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4532 else: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4533 libraryXml.element('SOURCES') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4534 libraryXml.close('library') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4535 libraryXml.close('component') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4536 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4537 libraryFile = join(librariesDirectory, library.name + '.xml') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4538 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
|
4539 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4540 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4541 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4542 # 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
|
4543 compilerXml = XMLDoc() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4544 compilerXml.open('project', attributes={'version': '4'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4545 compilerXml.open('component', attributes={'name': 'CompilerConfiguration'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4546 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4547 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
|
4548 compilerXml.element('resourceExtensions') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4549 compilerXml.open('wildcardResourcePatterns') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4550 compilerXml.element('entry', attributes={'name': '!?*.java'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4551 compilerXml.close('wildcardResourcePatterns') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4552 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4553 if annotationProcessorProfiles: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4554 compilerXml.open('annotationProcessing') |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
4555 for processors, modules in sorted(annotationProcessorProfiles.iteritems()): |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4556 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
|
4557 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
|
4558 compilerXml.element('outputRelativeToContentRoot', attributes={'value': 'true'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4559 compilerXml.open('processorPath', attributes={'useClasspath': 'false'}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4560 for apName in processors: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4561 pDep = dependency(apName) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4562 for entry in pDep.all_deps([], True): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4563 if entry.isLibrary(): |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4564 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
|
4565 elif entry.isProject(): |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4566 assert entry.isProject() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4567 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
|
4568 compilerXml.close('processorPath') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4569 for module in modules: |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4570 compilerXml.element('module', attributes={'name': module.name}) |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4571 compilerXml.close('profile') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4572 compilerXml.close('annotationProcessing') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4573 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4574 compilerXml.close('component') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4575 compilerXml.close('project') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4576 compilerFile = join(ideaProjectDirectory, 'compiler.xml') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4577 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
|
4578 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4579 # Wite misc.xml for global JDK config |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4580 miscXml = XMLDoc() |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4581 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
|
4582 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
|
4583 miscXml.close('project') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4584 miscFile = join(ideaProjectDirectory, 'misc.xml') |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4585 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
|
4586 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4587 |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4588 # TODO look into copyright settings |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4589 # TODO should add vcs.xml support |
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4590 |
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
|
4591 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
|
4592 """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
|
4593 def rm(path): |
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4594 if exists(path): |
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4595 os.remove(path) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4596 |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
4597 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
|
4598 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
|
4599 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
|
4600 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
|
4601 |
4271
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4602 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
|
4603 if p.native: |
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4604 continue |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
4605 |
4271
311d193de5a2
Fixed regressions and Windows issues in generated IDE project configurations.
Doug Simon <doug.simon@oracle.com>
parents:
4270
diff
changeset
|
4606 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
|
4607 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
|
4608 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
|
4609 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
|
4610 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
|
4611 rm(join(p.dir, '.project')) |
10043
e063474076dd
clean up .factorypath files on "mx ideclean"
Lukas Stadler <lukas.stadler@jku.at>
parents:
9857
diff
changeset
|
4612 rm(join(p.dir, '.factorypath')) |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4613 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
|
4614 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
|
4615 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
|
4616 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
|
4617 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
|
4618 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
|
4619 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
|
4620 |
16845
1fd7bb00a77f
clean up generated IDE content for distributions as part of 'mx ideclean'
Doug Simon <doug.simon@oracle.com>
parents:
16839
diff
changeset
|
4621 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
|
4622 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
|
4623 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
|
4624 |
16846
e3dd75b3c290
revived creation of annotation processor jars by 'mx ideinit'
Doug Simon <doug.simon@oracle.com>
parents:
16845
diff
changeset
|
4625 def ideinit(args, refreshOnly=False, buildProcessorJars=True): |
15378
dea98caac669
Fix help text for ideinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15376
diff
changeset
|
4626 """(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
|
4627 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
|
4628 netbeansinit(args, refreshOnly=refreshOnly, buildProcessorJars=buildProcessorJars) |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
4629 intellijinit(args, refreshOnly=refreshOnly) |
11659
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
4630 if not refreshOnly: |
ec7aad9dfc47
made 'mx build' refresh IDE configs automatically
Doug Simon <doug.simon@oracle.com>
parents:
11620
diff
changeset
|
4631 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
|
4632 |
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
|
4633 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
|
4634 """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
|
4635 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
|
4636 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
|
4637 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
|
4638 if dirpath == suite.dir: |
16269
f5437f2db322
mx fsckprojects: do not traverse lib subdirectory
Andreas Woess <andreas.woess@jku.at>
parents:
16262
diff
changeset
|
4639 # 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
|
4640 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
|
4641 elif dirpath in projectDirs: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4642 # 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
|
4643 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
|
4644 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
|
4645 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
|
4646 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
|
4647 if len(indicators) != 0: |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4648 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
|
4649 shutil.rmtree(dirpath) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4650 log('Deleted ' + dirpath) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
4651 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
4652 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
|
4653 """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
|
4654 |
5701
d0a6e25de770
integrated mxtool changes from Maxine project
Doug Simon <doug.simon@oracle.com>
parents:
5699
diff
changeset
|
4655 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
|
4656 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
|
4657 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
|
4658 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
|
4659 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
|
4660 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
|
4661 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
|
4662 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
|
4663 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
|
4664 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
|
4665 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
|
4666 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4667 args = parser.parse_args(args) |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4668 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4669 # 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
|
4670 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
|
4671 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
|
4672 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
|
4673 candidates = projects_opt_limit_to_suites() |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4674 |
5701
d0a6e25de770
integrated mxtool changes from Maxine project
Doug Simon <doug.simon@oracle.com>
parents:
5699
diff
changeset
|
4675 # optionally restrict packages within a project |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4676 packages = [] |
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4677 if args.packages is not None: |
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4678 packages = [name for name in args.packages.split(',')] |
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4679 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4680 exclude_packages = [] |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4681 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
|
4682 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
|
4683 |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4684 def outDir(p): |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4685 if args.base is None: |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4686 return join(p.dir, docDir) |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4687 return join(args.base, p.name, docDir) |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4688 |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4689 def check_package_list(p): |
5701
d0a6e25de770
integrated mxtool changes from Maxine project
Doug Simon <doug.simon@oracle.com>
parents:
5699
diff
changeset
|
4690 return not exists(join(outDir(p), 'package-list')) |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4691 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4692 def assess_candidate(p, projects): |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4693 if p in projects: |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4694 return False |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4695 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
|
4696 projects.append(p) |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4697 return True |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4698 return False |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4699 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4700 projects = [] |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4701 for p in candidates: |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4702 if not p.native: |
5701
d0a6e25de770
integrated mxtool changes from Maxine project
Doug Simon <doug.simon@oracle.com>
parents:
5699
diff
changeset
|
4703 if includeDeps: |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4704 deps = p.all_deps([], includeLibs=False, includeSelf=False) |
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4705 for d in deps: |
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4706 assess_candidate(d, projects) |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4707 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
|
4708 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
|
4709 |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4710 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4711 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
|
4712 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
|
4713 pkgs = set() |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4714 for sourceDir in sourceDirs: |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4715 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
|
4716 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
|
4717 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
|
4718 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
|
4719 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
|
4720 pkgs.add(pkg) |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4721 return pkgs |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4722 |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4723 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
|
4724 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
|
4725 extraArgs += ['@' + args.argfile] |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4726 memory = '2g' |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4727 if args.memory is not None: |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4728 memory = args.memory |
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4729 memory = '-J-Xmx' + memory |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4730 |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4731 if not args.unified: |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4732 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
|
4733 # 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
|
4734 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
|
4735 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4736 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
|
4737 deps = p.all_deps([], includeLibs=False, includeSelf=False) |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4738 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
|
4739 out = outDir(p) |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4740 for d in deps: |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4741 depOut = outDir(d) |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4742 links.append('-link') |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4743 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
|
4744 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
|
4745 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
|
4746 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
|
4747 delOverviewFile = False |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4748 if not exists(overviewFile): |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4749 with open(overviewFile, 'w') as fp: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4750 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
|
4751 delOverviewFile = True |
5712
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4752 nowarnAPI = [] |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4753 if not args.warnAPI: |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4754 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
|
4755 |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
4756 # 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
|
4757 windowTitle = [] |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
4758 if stdDoclet: |
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
4759 windowTitle = ['-windowtitle', p.name + ' javadoc'] |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4760 try: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4761 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
|
4762 projectJava = java(p.javaCompliance) |
15419
f093fa76e872
made note about workaround for JDK-8041628
Doug Simon <doug.simon@oracle.com>
parents:
15408
diff
changeset
|
4763 |
f093fa76e872
made note about workaround for JDK-8041628
Doug Simon <doug.simon@oracle.com>
parents:
15408
diff
changeset
|
4764 # 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
|
4765 # this should be reverted to: |
f093fa76e872
made note about workaround for JDK-8041628
Doug Simon <doug.simon@oracle.com>
parents:
15408
diff
changeset
|
4766 # javadocExe = java().javadoc |
f093fa76e872
made note about workaround for JDK-8041628
Doug Simon <doug.simon@oracle.com>
parents:
15408
diff
changeset
|
4767 javadocExe = projectJava.javadoc |
f093fa76e872
made note about workaround for JDK-8041628
Doug Simon <doug.simon@oracle.com>
parents:
15408
diff
changeset
|
4768 |
f093fa76e872
made note about workaround for JDK-8041628
Doug Simon <doug.simon@oracle.com>
parents:
15408
diff
changeset
|
4769 run([javadocExe, memory, |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4770 '-XDignore.symbol.file', |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4771 '-classpath', cp, |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4772 '-quiet', |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4773 '-d', out, |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4774 '-overview', overviewFile, |
14916
66e9855f4ae8
Add -source -bootclasspath and -extdirs arguments to javadoc command
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14915
diff
changeset
|
4775 '-sourcepath', sp, |
66e9855f4ae8
Add -source -bootclasspath and -extdirs arguments to javadoc command
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14915
diff
changeset
|
4776 '-source', str(projectJava.javaCompliance), |
66e9855f4ae8
Add -source -bootclasspath and -extdirs arguments to javadoc command
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14915
diff
changeset
|
4777 '-bootclasspath', projectJava.bootclasspath(), |
66e9855f4ae8
Add -source -bootclasspath and -extdirs arguments to javadoc command
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14915
diff
changeset
|
4778 '-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
|
4779 ([] 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
|
4780 links + |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4781 extraArgs + |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4782 nowarnAPI + |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
4783 windowTitle + |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4784 list(pkgs)) |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4785 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
|
4786 finally: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4787 if delOverviewFile: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4788 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
|
4789 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4790 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
|
4791 # 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
|
4792 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
|
4793 |
5171
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4794 pkgs = set() |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4795 sp = [] |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4796 names = [] |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4797 for p in projects: |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4798 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
|
4799 sp += p.source_dirs() |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4800 names.append(p.name) |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4801 |
14763 | 4802 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
|
4803 out = join(_primary_suite.dir, docDir) |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4804 if args.base is not None: |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
4805 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
|
4806 cp = classpath() |
99ad84da5f99
added javadoc command (from Maxine version of mx)
Doug Simon <doug.simon@oracle.com>
parents:
5166
diff
changeset
|
4807 sp = os.pathsep.join(sp) |
5712
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4808 nowarnAPI = [] |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4809 if not args.warnAPI: |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4810 nowarnAPI.append('-XDignore.symbol.file') |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4811 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
|
4812 run([java().javadoc, memory, |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4813 '-classpath', cp, |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4814 '-quiet', |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4815 '-d', out, |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4816 '-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
|
4817 ([] 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
|
4818 links + |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4819 extraArgs + |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4820 nowarnAPI + |
dfcb73ac6ba2
made invalid javadoc cause a JDT error
Doug Simon <doug.simon@oracle.com>
parents:
5710
diff
changeset
|
4821 list(pkgs)) |
5376
bfc9aeb1264c
synchronized mxtool with Maxine
Doug Simon <doug.simon@oracle.com>
parents:
5252
diff
changeset
|
4822 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
|
4823 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4824 def site(args): |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4825 """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
|
4826 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4827 parser = ArgumentParser(prog='site') |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4828 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
|
4829 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
|
4830 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
|
4831 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
|
4832 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
|
4833 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
|
4834 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
|
4835 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
|
4836 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
|
4837 args = parser.parse_args(args) |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4838 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4839 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
|
4840 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
|
4841 unified = join(tmpbase, 'all') |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4842 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4843 exclude_packages_arg = [] |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4844 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
|
4845 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
|
4846 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4847 projects = sorted_deps() |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4848 projects_arg = [] |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4849 if args.projects is not None: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4850 projects_arg = ['--projects', args.projects] |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4851 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
|
4852 |
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
|
4853 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
|
4854 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
|
4855 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
|
4856 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
|
4857 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4858 try: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4859 # 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
|
4860 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
|
4861 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4862 # 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
|
4863 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
|
4864 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
|
4865 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
|
4866 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
|
4867 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
|
4868 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
|
4869 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
|
4870 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
|
4871 <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
|
4872 <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
|
4873 <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
|
4874 <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
|
4875 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
|
4876 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
|
4877 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
|
4878 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
|
4879 |
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
|
4880 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
|
4881 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
|
4882 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4883 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
|
4884 javadoc(['--base', tmpbase, |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4885 '--unified', |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4886 '--arg', '@-windowtitle', '--arg', '@' + title, |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4887 '--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
|
4888 '--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
|
4889 |
ca16edfcecd5
mx: fixed site command by removing brittle post-processing of javadoc output
Doug Simon <doug.simon@oracle.com>
parents:
15403
diff
changeset
|
4890 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
|
4891 shutil.rmtree(unified) |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4892 os.rename(join(tmpbase, 'javadoc'), unified) |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4893 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4894 # Generate dependency graph with Graphviz |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4895 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
|
4896 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
|
4897 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
|
4898 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
|
4899 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
|
4900 except subprocess.CalledProcessError as e: |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
4901 dotErr = 'error calling "dot -V": {0}'.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
|
4902 except OSError as e: |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
4903 dotErr = 'error calling "dot -V": {0}'.format(e) |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4904 |
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
|
4905 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
|
4906 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
|
4907 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4908 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
|
4909 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
|
4910 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
|
4911 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
|
4912 with open(dot, 'w') as fp: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4913 dim = len(projects) |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4914 print >> fp, 'digraph projects {' |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4915 print >> fp, 'rankdir=BT;' |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4916 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
|
4917 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
|
4918 # print >> fp, 'edge [color="green"];' |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4919 for p in projects: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4920 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
|
4921 for dep in p.canonical_deps(): |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4922 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
|
4923 print >> fp, '"' + p.name + '" -> "' + dep + '"' |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4924 depths = dict() |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4925 for p in projects: |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4926 d = p.max_depth() |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4927 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
|
4928 print >> fp, '}' |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
4929 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4930 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
|
4931 |
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
|
4932 # 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
|
4933 # 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
|
4934 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
|
4935 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
|
4936 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
|
4937 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
|
4938 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
|
4939 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
|
4940 |
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
|
4941 # 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
|
4942 with open(html, 'w') as fp: |
18635
a8b46348b79f
mx: converted format strings to be python 2.6 compliant
Doug Simon <doug.simon@oracle.com>
parents:
18620
diff
changeset
|
4943 print >> fp, '<html><body><object data="{0}.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
|
4944 |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4945 if exists(args.base): |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4946 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
|
4947 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
|
4948 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
|
4949 else: |
ca16edfcecd5
mx: fixed site command by removing brittle post-processing of javadoc output
Doug Simon <doug.simon@oracle.com>
parents:
15403
diff
changeset
|
4950 shutil.move(tmpbase, args.base) |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4951 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4952 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
|
4953 |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4954 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
|
4955 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
|
4956 shutil.rmtree(tmpbase) |
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
4957 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4958 def _kwArg(kwargs): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4959 if len(kwargs) > 0: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4960 return kwargs.pop(0) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4961 return None |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
4962 |
16167
1f4955abca9b
mx: add jol command for java object layout introspection
Andreas Woess <andreas.woess@jku.at>
parents:
16087
diff
changeset
|
4963 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
|
4964 """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
|
4965 matches = [] |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4966 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
|
4967 if filename.endswith('.class'): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4968 if isinstance(entry, zipfile.ZipFile): |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4969 classname = filename.replace('/', '.') |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4970 else: |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4971 classname = filename.replace(os.sep, '.') |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4972 classname = classname[:-len('.class')] |
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4973 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
|
4974 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
|
4975 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
|
4976 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
|
4977 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
|
4978 return matches |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
4979 |
11295
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4980 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
|
4981 """ |
11295
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4982 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
|
4983 |
11203
8ab76b7c6ff6
added interactive selection capability to 'mx javap' command
Doug Simon <doug.simon@oracle.com>
parents:
10585
diff
changeset
|
4984 """ |
11318
345bce66c04a
mx: fix for select_items
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11301
diff
changeset
|
4985 if len(items) <= 1: |
345bce66c04a
mx: fix for select_items
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11301
diff
changeset
|
4986 return items |
345bce66c04a
mx: fix for select_items
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11301
diff
changeset
|
4987 else: |
11295
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4988 if allowMultiple: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4989 log('[0] <all>') |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4990 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
|
4991 if descriptions is None: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4992 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
|
4993 else: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4994 assert len(items) == len(descriptions) |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4995 wrapper = textwrap.TextWrapper(subsequent_indent=' ') |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4996 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
|
4997 while True: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4998 if allowMultiple: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
4999 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
|
5000 else: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5001 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
|
5002 try: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5003 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
|
5004 except: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5005 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
|
5006 continue |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5007 |
11295
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5008 if allowMultiple and 0 in s: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5009 return items |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5010 |
11295
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5011 indexes = [] |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5012 for n in s: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5013 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
|
5014 log('Invalid selection: ' + str(n)) |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5015 continue |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5016 else: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5017 indexes.append(n - 1) |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5018 if allowMultiple: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5019 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
|
5020 if len(indexes) == 1: |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5021 return items[indexes[0]] |
bb70a309a7cf
enhanced select_items to support multiple selections
Doug Simon <doug.simon@oracle.com>
parents:
11245
diff
changeset
|
5022 return None |
11203
8ab76b7c6ff6
added interactive selection capability to 'mx javap' command
Doug Simon <doug.simon@oracle.com>
parents:
10585
diff
changeset
|
5023 |
15087
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5024 def exportlibs(args): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5025 """export libraries to an archive file""" |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5026 |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5027 parser = ArgumentParser(prog='exportlibs') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5028 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
|
5029 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
|
5030 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
|
5031 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
|
5032 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
|
5033 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
|
5034 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
|
5035 args = parser.parse_args(args) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5036 |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5037 def createArchive(addMethod): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5038 entries = {} |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5039 def add(path, arcname): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5040 apath = os.path.abspath(path) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5041 if not entries.has_key(arcname): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5042 entries[arcname] = apath |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5043 logv('[adding ' + path + ']') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5044 addMethod(path, arcname=arcname) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5045 elif entries[arcname] != apath: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5046 logv('[warning: ' + apath + ' collides with ' + entries[arcname] + ' as ' + arcname + ']') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5047 else: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5048 logv('[already added ' + path + ']') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5049 |
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
|
5050 libsToExport = set() |
15364
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5051 if args.include_all: |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5052 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
|
5053 libsToExport.add(lib) |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5054 else: |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5055 def isValidLibrary(dep): |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5056 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
|
5057 lib = _libs[dep] |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5058 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
|
5059 return lib |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5060 return None |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5061 |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5062 # 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
|
5063 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
|
5064 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
|
5065 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
|
5066 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
|
5067 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
|
5068 |
15364
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5069 # 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
|
5070 size = 0 |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5071 while size != len(libsToExport): |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5072 size = len(libsToExport) |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5073 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
|
5074 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
|
5075 r = isValidLibrary(dep) |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5076 if r: |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5077 libsToExport.add(r) |
9693513ce95c
mx exportlibs: add option to include all defined libaries
Bernhard Urban <bernhard.urban@jku.at>
parents:
15362
diff
changeset
|
5078 |
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
|
5079 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
|
5080 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
|
5081 if lib.sha1: |
9e7f87dc6395
mx exportlibs: include source dependencies and digest files
Bernhard Urban <bernhard.urban@jku.at>
parents:
15355
diff
changeset
|
5082 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
|
5083 if lib.sourcePath: |
9e7f87dc6395
mx exportlibs: include source dependencies and digest files
Bernhard Urban <bernhard.urban@jku.at>
parents:
15355
diff
changeset
|
5084 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
|
5085 if lib.sourceSha1: |
9e7f87dc6395
mx exportlibs: include source dependencies and digest files
Bernhard Urban <bernhard.urban@jku.at>
parents:
15355
diff
changeset
|
5086 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
|
5087 |
15087
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5088 if args.extras: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5089 for e in args.extras: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5090 if os.path.isdir(e): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5091 for root, _, filenames in os.walk(e): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5092 for name in filenames: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5093 f = join(root, name) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5094 add(f, f) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5095 else: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5096 add(e, e) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5097 |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5098 if args.arc == 'zip': |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5099 path = args.base + '.zip' |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5100 with zipfile.ZipFile(path, 'w') as zf: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5101 createArchive(zf.write) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5102 else: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5103 path = args.base + '.tar' |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5104 mode = 'w' |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5105 if args.arc != 'tar': |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5106 sfx = args.arc[1:] |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5107 mode = mode + ':' + sfx |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5108 path = path + '.' + sfx |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5109 with tarfile.open(path, mode) as tar: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5110 createArchive(tar.add) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5111 log('created ' + path) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5112 |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5113 def digest(enabled, path, factory, suffix): |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5114 if enabled: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5115 d = factory() |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5116 with open(path, 'rb') as f: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5117 while True: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5118 buf = f.read(4096) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5119 if not buf: |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5120 break |
15122
11a591a99515
mx: fixed bug in exportlibs
Doug Simon <doug.simon@oracle.com>
parents:
15118
diff
changeset
|
5121 d.update(buf) |
15087
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5122 with open(path + '.' + suffix, 'w') as fp: |
15122
11a591a99515
mx: fixed bug in exportlibs
Doug Simon <doug.simon@oracle.com>
parents:
15118
diff
changeset
|
5123 print >> fp, d.hexdigest() |
15087
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5124 log('created ' + path + '.' + suffix) |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5125 |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5126 digest(args.sha1, path, hashlib.sha1, 'sha1') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5127 digest(args.md5, path, hashlib.md5, 'md5') |
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5128 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5129 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
|
5130 """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
|
5131 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5132 javapExe = java().javap |
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5133 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
|
5134 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
|
5135 else: |
11203
8ab76b7c6ff6
added interactive selection capability to 'mx javap' command
Doug Simon <doug.simon@oracle.com>
parents:
10585
diff
changeset
|
5136 candidates = findclass(args, logToConsole=False) |
8ab76b7c6ff6
added interactive selection capability to 'mx javap' command
Doug Simon <doug.simon@oracle.com>
parents:
10585
diff
changeset
|
5137 if len(candidates) == 0: |
8ab76b7c6ff6
added interactive selection capability to 'mx javap' command
Doug Simon <doug.simon@oracle.com>
parents:
10585
diff
changeset
|
5138 log('no matches') |
8ab76b7c6ff6
added interactive selection capability to 'mx javap' command
Doug Simon <doug.simon@oracle.com>
parents:
10585
diff
changeset
|
5139 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
|
5140 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
|
5141 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5142 def show_projects(args): |
17184
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5143 """show all projects""" |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5144 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
|
5145 if len(s.projects) != 0: |
17184
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5146 log(join(s.mxDir, 'suite*.py')) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5147 for p in s.projects: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5148 log('\t' + p.name) |
11759
8bcd76c3f23b
mx.py whitespace fixes
Mick Jordan <mick.jordan@oracle.com>
parents:
11756
diff
changeset
|
5149 |
17184
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5150 def show_suites(args): |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5151 """show all suites""" |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5152 def _show_section(name, section): |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5153 if len(section) != 0: |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5154 log(' ' + name + ':') |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5155 for e in section: |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5156 log(' ' + e.name) |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5157 |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5158 for s in suites(): |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5159 log(join(s.mxDir, 'suite*.py')) |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5160 _show_section('libraries', s.libs) |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5161 _show_section('jrelibraries', s.jreLibs) |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5162 _show_section('projects', s.projects) |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5163 _show_section('distributions', s.dists) |
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5164 |
11511
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5165 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
|
5166 """""" |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5167 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
|
5168 if not sys.stdout.isatty(): |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5169 if default: |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5170 return default |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5171 else: |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5172 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
|
5173 questionMark = '? [yn]: ' |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5174 if default: |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5175 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
|
5176 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
|
5177 while not answer: |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5178 answer = raw_input(question + questionMark) |
3110bea9a6b0
mx: add helper method for yes/no question
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
11401
diff
changeset
|
5179 return answer.lower().startswith('y') |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5180 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5181 def add_argument(*args, **kwargs): |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5182 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5183 Define how a single command-line argument. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5184 """ |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5185 assert _argParser is not None |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5186 _argParser.add_argument(*args, **kwargs) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5187 |
11605
3676540f71cf
Allow mxtool suites to be in separate repositories (CR-1367)
Mick Jordan <mick.jordan@oracle.com>
parents:
11597
diff
changeset
|
5188 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
|
5189 for key, value in new_commands.iteritems(): |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5190 if _commands.has_key(key): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5191 warn("redefining command '" + key + "' in suite " + suite.name) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5192 _commands[key] = value |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5193 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5194 def warn(msg): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5195 if _warn: |
13968
6c6d1eacc398
mxtool: fix pylint 1.1.0 warnings
Bernhard Urban <bernhard.urban@jku.at>
parents:
13952
diff
changeset
|
5196 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
|
5197 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5198 # Table of commands in alphabetical order. |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5199 # 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
|
5200 # 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
|
5201 # used in the call to str.format(). |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5202 # 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
|
5203 _commands = { |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5204 'about': [about, ''], |
4226
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
5205 'build': [build, '[options]'], |
e03ff10d4bfc
Made the gate clean the Java projects only.
Doug Simon <doug.simon@oracle.com>
parents:
4225
diff
changeset
|
5206 'checkstyle': [checkstyle, ''], |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5207 'canonicalizeprojects': [canonicalizeprojects, ''], |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5208 'clean': [clean, ''], |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
5209 '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
|
5210 'eclipseformat': [eclipseformat, ''], |
15087
f3e74d317e83
mx: added exportlibs command
Doug Simon <doug.simon@oracle.com>
parents:
15060
diff
changeset
|
5211 'exportlibs': [exportlibs, ''], |
5455
271e83dcfcef
added findclass command to mx tool
Doug Simon <doug.simon@oracle.com>
parents:
5376
diff
changeset
|
5212 '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
|
5213 'fsckprojects': [fsckprojects, ''], |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5214 '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
|
5215 'ideclean': [ideclean, ''], |
4269
ffd5ce8fc736
Moved IDE project configuration into mx.py.
Doug Simon <doug.simon@oracle.com>
parents:
4258
diff
changeset
|
5216 'ideinit': [ideinit, ''], |
15060
858d2b91c1f8
Add a prototype for mx intellijinit
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
14964
diff
changeset
|
5217 '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
|
5218 'archive': [_archive, '[options]'], |
4301
fad6f1ebeb44
mx.py: new projectgraph command
Lukas Stadler <lukas.stadler@jku.at>
parents:
4271
diff
changeset
|
5219 'projectgraph': [projectgraph, ''], |
11777
f3e5cbd1efae
move pylint to mxtool
Mick Jordan <mick.jordan@oracle.com>
parents:
11759
diff
changeset
|
5220 '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
|
5221 '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
|
5222 'javadoc': [javadoc, '[options]'], |
5771
613a3ddb9a71
moved core site functionality into mx.py
Doug Simon <doug.simon@oracle.com>
parents:
5762
diff
changeset
|
5223 'site': [site, '[options]'], |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
5224 'netbeansinit': [netbeansinit, ''], |
17184
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5225 'suites': [show_suites, ''], |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5226 'projects': [show_projects, ''], |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5227 } |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5228 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5229 _argParser = ArgParser() |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5230 |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5231 def _suitename(mxDir): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5232 base = os.path.basename(mxDir) |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5233 parts = base.split('.') |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5234 # temporary workaround until mx.graal exists |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5235 if len(parts) == 1: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5236 return 'graal' |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5237 else: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5238 return parts[1] |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5239 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5240 def _is_suite_dir(d, mxDirName=None): |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5241 """ |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5242 Checks if d contains a suite. |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5243 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
|
5244 """ |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5245 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
|
5246 for f in os.listdir(d): |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5247 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
|
5248 mxDir = join(d, f) |
17184
1cc8b62b4d37
mx: added 'suites' command
Doug Simon <doug.simon@oracle.com>
parents:
17183
diff
changeset
|
5249 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
|
5250 return mxDir |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5251 |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5252 def _check_primary_suite(): |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5253 if _primary_suite is None: |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5254 abort('no primary suite found') |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5255 else: |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5256 return _primary_suite |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5257 |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5258 def _findPrimarySuiteMxDirFrom(d): |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5259 """ 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
|
5260 while d: |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5261 mxDir = _is_suite_dir(d) |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5262 if mxDir is not None: |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5263 return mxDir |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5264 parent = dirname(d) |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5265 if d == parent: |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5266 return None |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5267 d = parent |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5268 |
5699
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
5269 return None |
e9f7d16194a8
added --base argument to javadoc command
Doug Simon <doug.simon@oracle.com>
parents:
5581
diff
changeset
|
5270 |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5271 def _findPrimarySuiteMxDir(): |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5272 # check for explicit setting |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5273 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
|
5274 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
|
5275 if mxDir is not None: |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5276 return mxDir |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5277 else: |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5278 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
|
5279 |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5280 # try current working directory first |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5281 mxDir = _findPrimarySuiteMxDirFrom(os.getcwd()) |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5282 if mxDir is not None: |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5283 return mxDir |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5284 # 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
|
5285 return _findPrimarySuiteMxDirFrom(dirname(__file__)) |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5286 |
4241
8fece0287975
Made command timeout also kill any currently executing subprocess (group).
Doug Simon <doug.simon@oracle.com>
parents:
4239
diff
changeset
|
5287 def main(): |
12477
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5288 primarySuiteMxDir = _findPrimarySuiteMxDir() |
a5d83166dca6
mxtool hg support for suites
Mick Jordan <mick.jordan@oracle.com>
parents:
12455
diff
changeset
|
5289 if primarySuiteMxDir: |
12522
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5290 global _primary_suite |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5291 _primary_suite = _loadSuite(primarySuiteMxDir, True) |
5ccee20550ea
mxtool: fixes (GRAAL-557) and code cleanups
Mick Jordan <mick.jordan@oracle.com>
parents:
12521
diff
changeset
|
5292 else: |
13855
bc32c9f5719b
remove multiple suite/repo support
Mick Jordan <mick.jordan@oracle.com>
parents:
13853
diff
changeset
|
5293 abort('no primary suite found') |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5294 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5295 opts, commandAndArgs = _argParser._parse_cmd_line() |
18636
dcf5cd3c6da9
mx: fixed issue with calling abort() before _opts is defined
Doug Simon <doug.simon@oracle.com>
parents:
18635
diff
changeset
|
5296 assert _opts == opts |
dcf5cd3c6da9
mx: fixed issue with calling abort() before _opts is defined
Doug Simon <doug.simon@oracle.com>
parents:
18635
diff
changeset
|
5297 |
dcf5cd3c6da9
mx: fixed issue with calling abort() before _opts is defined
Doug Simon <doug.simon@oracle.com>
parents:
18635
diff
changeset
|
5298 global _java_homes |
14763 | 5299 defaultJdk = JavaConfig(opts.java_home, opts.java_dbg_port) |
5300 _java_homes = [defaultJdk] | |
5301 if opts.extra_java_homes: | |
5302 for java_home in opts.extra_java_homes.split(os.pathsep): | |
5303 extraJdk = JavaConfig(java_home, opts.java_dbg_port) | |
5304 if extraJdk > defaultJdk: | |
5305 abort('Secondary JDK ' + extraJdk.jdk + ' has higher compliance level than default JDK ' + defaultJdk.jdk) | |
5306 _java_homes.append(extraJdk) | |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5307 |
4148
bf5efc22fb3f
Replace downloading of JDK 7 with copying of host JDK 7.
Doug Simon <doug.simon@oracle.com>
parents:
4147
diff
changeset
|
5308 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
|
5309 s._post_init(opts) |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5310 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5311 if len(commandAndArgs) == 0: |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5312 _argParser.print_help() |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5313 return |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5314 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5315 command = commandAndArgs[0] |
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5316 command_args = commandAndArgs[1:] |
5032
e2de9649f0a9
Integrated mxtool updates from Maxine project.
Doug Simon <doug.simon@oracle.com>
parents:
4664
diff
changeset
|
5317 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5318 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
|
5319 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
|
5320 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
|
5321 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
|
5322 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
|
5323 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
|
5324 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
|
5325 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
|
5326 |
11514
dc3c8df55905
added support for pylint and fixed errors/warnings it found
Doug Simon <doug.simon@oracle.com>
parents:
11511
diff
changeset
|
5327 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
|
5328 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
|
5329 abort(1) |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
5330 if not is_jython(): |
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
5331 signal.signal(signal.SIGTERM, term_handler) |
14134
e71d421370f3
mx: proxy SIGQUIT to child process
Bernhard Urban <bernhard.urban@jku.at>
parents:
14133
diff
changeset
|
5332 |
14135
ee66410c0679
mx: add option to send sigquit before killing child
Bernhard Urban <bernhard.urban@jku.at>
parents:
14134
diff
changeset
|
5333 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
|
5334 _send_sigquit() |
18876
c446d00f2cdf
mx: added support for Jython 2.7b3 and made ordering in generated files more deterministic\nContributed-by: Igor Ignatyev <igor.ignatyev@oracle.com>
Doug Simon <doug.simon@oracle.com>
parents:
18868
diff
changeset
|
5335 if not is_jython() and get_os() != 'windows': |
14153
e328f28f7401
fix for mx, did not compile on Windows
Christian Wirth <christian.wirth@oracle.com>
parents:
14136
diff
changeset
|
5336 signal.signal(signal.SIGQUIT, quit_handler) |
14134
e71d421370f3
mx: proxy SIGQUIT to child process
Bernhard Urban <bernhard.urban@jku.at>
parents:
14133
diff
changeset
|
5337 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5338 try: |
4270
2158e26b50cf
Made generated NetBeans projects use project cross referencing.
Doug Simon <doug.simon@oracle.com>
parents:
4269
diff
changeset
|
5339 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
|
5340 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
|
5341 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
|
5342 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
|
5343 signal.alarm(opts.timeout) |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5344 retcode = c(command_args) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5345 if retcode is not None and retcode != 0: |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5346 abort(retcode) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5347 except KeyboardInterrupt: |
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5348 # 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
|
5349 abort(1) |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5350 |
13471
020099961eb4
renamed JavaVersion to VersionSpec
Doug Simon <doug.simon@oracle.com>
parents:
13470
diff
changeset
|
5351 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
|
5352 |
14103
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
5353 currentUmask = None |
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
5354 |
3723
6c5f528c7aac
Added a copy of the mxtool to repo.
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5355 if __name__ == '__main__': |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5356 # 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
|
5357 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
|
5358 |
14103
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
5359 # 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
|
5360 currentUmask = os.umask(0) |
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
5361 os.umask(currentUmask) |
9d8aaa3200a3
make mx respect umask when making jar files
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
13982
diff
changeset
|
5362 |
4144
34527a24bcf8
Adopted mxtool changes.
Doug Simon <doug.simon@oracle.com>
parents:
3732
diff
changeset
|
5363 main() |