From 39d6b4e403f27b6adda124cc1a099f454c3db241 Mon Sep 17 00:00:00 2001
From: miroslav2 <miroslav2@yandex-team.com>
Date: Mon, 1 Jul 2024 09:39:40 +0300
Subject: 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
---
 build/scripts/build_java_with_error_prone2.py | 81 +++++++++++++--------------
 1 file changed, 39 insertions(+), 42 deletions(-)

(limited to 'build/scripts/build_java_with_error_prone2.py')

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:
-- 
cgit v1.2.3