Mercurial > hg > truffle
annotate mxtool/mx.py @ 19697:191c55f08ed2
Truffle: add the ability to "tag" Sources with any number of standard or private tags, for example so that Sources might be marked as "FROM_FILE", "LIBRARY", "BUILTIN", or any other distinction that matters to some tools. Those tags can be applied by the language runtime when sources are created, for example when loading builtins. Alternately, you can listen for newly created sources from outside the implementation, where you might tag sources based on pattern matching against file paths or any other meta-information in the Source.
author | Michael Van De Vanter <michael.van.de.vanter@oracle.com> |
---|---|
date | Wed, 04 Mar 2015 16:36:27 -0800 |
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() |