diff options
author | miroslav2 <miroslav2@yandex-team.com> | 2024-07-01 09:39:40 +0300 |
---|---|---|
committer | miroslav2 <miroslav2@yandex-team.com> | 2024-07-01 09:56:34 +0300 |
commit | 39d6b4e403f27b6adda124cc1a099f454c3db241 (patch) | |
tree | 7092b8518e206767f8e8271ae6e80eeb0897e96e /build/scripts/build_java_with_error_prone2.py | |
parent | f6e158056ed38be7c4c500adbe132bc0ecf1866a (diff) | |
download | ydb-39d6b4e403f27b6adda124cc1a099f454c3db241.tar.gz |
Simplest improvements for Java build, remove chained 'execv' Python calls
* remove chained 'execv' Python calls for compiling Java with with "javac" and "ErrorProne" - replace with single "run_javac.py" script
84bc60b4e87890e6ceea1ef22a2c0936410ff6bb
Diffstat (limited to 'build/scripts/build_java_with_error_prone2.py')
-rw-r--r-- | build/scripts/build_java_with_error_prone2.py | 81 |
1 files changed, 39 insertions, 42 deletions
diff --git a/build/scripts/build_java_with_error_prone2.py b/build/scripts/build_java_with_error_prone2.py index fa65cf19b9..8d7330db9e 100644 --- a/build/scripts/build_java_with_error_prone2.py +++ b/build/scripts/build_java_with_error_prone2.py @@ -22,21 +22,6 @@ JAVA10_EXPORTS = [ ] -def get_java_version(exe): - p = subprocess.Popen([exe, '-version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) - out, err = p.communicate() - for line in (out or '').strip().split("\n") + (err or '').strip().split("\n"): - m = re.match(r'java version "(.+)"', line) - if m: - parts = m.groups()[0].split(".") - return parts[1] if parts[0] == "1" else parts[0] - m = re.match(r'openjdk version "(\d+).*"', line) - if m: - parts = m.groups()[0].split(".") - return parts[0] - return None - - def get_classpath(cmd): for i, part in enumerate(cmd): if part == '-classpath': @@ -58,35 +43,47 @@ def parse_args(argv): return parsed + [argv[i + 1 :]] +def fix_cmd_line(error_prone_tool, cmd): + if not error_prone_tool: + return cmd + for f in cmd: + if f.startswith('-Xep'): + ERROR_PRONE_FLAGS.append(f) + for f in ERROR_PRONE_FLAGS: + if f in cmd: + cmd.remove(f) + if '-processor' in cmd: + classpath = get_classpath(cmd) + if classpath: + error_prone_tool = error_prone_tool + os.pathsep + classpath + return ( + cmd + + JAVA10_EXPORTS + + ['-processorpath', error_prone_tool, '-XDcompilePolicy=byfile'] + + [(' '.join(['-Xplugin:ErrorProne'] + ERROR_PRONE_FLAGS))] + ) + + +# NOTE: legacy, only for "devtools/ya/jbuild" def just_do_it(argv): java, javac, error_prone_tool, javac_cmd = parse_args(argv) - ver = get_java_version(java) - if not ver: - raise Exception("Can't determine java version") - if int(ver) >= 10: - for f in javac_cmd: - if f.startswith('-Xep'): - ERROR_PRONE_FLAGS.append(f) - for f in ERROR_PRONE_FLAGS: - if f in javac_cmd: - javac_cmd.remove(f) - if '-processor' in javac_cmd: - classpath = get_classpath(javac_cmd) - if classpath: - error_prone_tool = error_prone_tool + os.pathsep + classpath - cmd = ( - [javac] - + JAVA10_EXPORTS - + ['-processorpath', error_prone_tool, '-XDcompilePolicy=byfile'] - + [(' '.join(['-Xplugin:ErrorProne'] + ERROR_PRONE_FLAGS))] - + javac_cmd - ) - else: - cmd = ( - [java, '-Xbootclasspath/p:' + error_prone_tool, 'com.google.errorprone.ErrorProneCompiler'] - + ERROR_PRONE_FLAGS - + javac_cmd - ) + for f in javac_cmd: + if f.startswith('-Xep'): + ERROR_PRONE_FLAGS.append(f) + for f in ERROR_PRONE_FLAGS: + if f in javac_cmd: + javac_cmd.remove(f) + if '-processor' in javac_cmd: + classpath = get_classpath(javac_cmd) + if classpath: + error_prone_tool = error_prone_tool + os.pathsep + classpath + cmd = ( + [javac] + + JAVA10_EXPORTS + + ['-processorpath', error_prone_tool, '-XDcompilePolicy=byfile'] + + [(' '.join(['-Xplugin:ErrorProne'] + ERROR_PRONE_FLAGS))] + + javac_cmd + ) if platform.system() == 'Windows': sys.exit(subprocess.Popen(cmd).wait()) else: |