aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsvidyuk <svidyuk@yandex-team.com>2025-01-28 09:14:19 +0300
committersvidyuk <svidyuk@yandex-team.com>2025-01-28 09:34:14 +0300
commit54d7987cb11a25bb9811bba6a01d0d8a6942af59 (patch)
treeb8ec3f9d082e5de800305fcb6e8c10e9c2fefb53
parent77d9db7a95c6ae81393fe72ed4b79768346c63f8 (diff)
downloadydb-54d7987cb11a25bb9811bba6a01d0d8a6942af59.tar.gz
All java sources sorting/preparation in a single python script
NOTE: there is still some kotlin source preparation remains in a separate call for `build/scripts/resolve_java_srcs.py` which is going to be joined into `prepare_jar_build.py` later. commit_hash:239933cba6b1a7090a9327d659bb8be3722db916
-rw-r--r--build/conf/java.conf14
-rw-r--r--build/plugins/java.py13
-rw-r--r--build/scripts/prepare_jar_build.py18
-rw-r--r--build/scripts/resolve_java_srcs.py13
4 files changed, 43 insertions, 15 deletions
diff --git a/build/conf/java.conf b/build/conf/java.conf
index 6403346a1c..f977dfc417 100644
--- a/build/conf/java.conf
+++ b/build/conf/java.conf
@@ -752,7 +752,7 @@ when ($BUILD_TYPE == "DEBUG" && $NO_DEBUGINFO != "yes") {
}
_PREPARE_SRC_JAR=
-_PREPARE_SRC_JAR_IMPL=&& $JAR_GEN_JSRCS && $LINK_JAR_JSOURCES
+_PREPARE_SRC_JAR_IMPL=$LINK_JAR_JSOURCES
_PACK_SRC_JAR_IMPL=&& ${cwd;suf=/src:BINDIR} $JDK_RESOURCE/bin/jar cfvm ${output;pre=${BINDIR}/${MODULE_PREFIX};suf=-sources.jar:REALPRJNAME} $VCS_JAVA .
_PACK_SRC_JAR=
@@ -831,6 +831,7 @@ MAVEN_DEPLOY_CMD=$YMAKE_PYTHON ${input:"build/scripts/stdout2stderr.py"} $MAVEN_
MAVEN_EXPORT_CMD=
# tag:java-specific
+JAR_BUILD_SCRIPT_FLAGS_DELIM=DELIM
JAR_BUILD_SCRIPT_FLAGS=
JAVA_COVERAGE_SRCLIST_FLAG=--coverage ${output;pre=${MODULE_PREFIX};suf=.cpsf:REALPRJNAME} --source-root ${ARCADIA_ROOT}
JAVA_COVERAGE_SRCLIST=
@@ -838,17 +839,20 @@ PREPARE_JAR_BUILD=${cwd:BINDIR} ${YMAKE_PYTHON3} ${input:"build/scripts/prepare_
${JAR_BUILD_SCRIPT_FLAGS} \
--bindir ${BINDIR} --moddir ${CURDIR} \
--java ${BINDIR}/all-java.srclst ${KT_SRSCLIST} ${JAVA_COVERAGE_SRCLIST} \
- --ya-start-command-file ${ext=.gentar:AUTO_INPUT} ${ALL_JAR_SOURCES} ${ext=.java:AUTO_INPUT} ${ext=.kt:AUTO_INPUT} --ya-end-command-file \
+ --ya-start-command-file \
+ ${ext=.gentar:AUTO_INPUT} ${ALL_JAR_SOURCES} ${ext=.java:AUTO_INPUT} ${ext=.kt:AUTO_INPUT} \
+ $JAR_GEN_SRCS $JAR_GEN_JSRCS \
+ --ya-end-command-file \
${hide;input:"build/scripts/process_command_files.py"} \
${hide;input:"build/scripts/java_pack_to_file.py"} \
- ${hide;input:"build/scripts/autotar_gendirs.py"}
+ ${hide;input:"build/scripts/autotar_gendirs.py"} \
+ ${hide;input:"build/scripts/resolve_java_srcs.py"}
COLLECT_CLASSPATH=${WRITER_PY} --file ${BINDIR}/bfg.txt -m --ya-start-command-file ${rootrel:MANAGED_PEERS_CLOSURE} $KT_CLASSPATH_ITEM --ya-end-command-file
LINK_CLASSPATH=${YMAKE_PYTHON} ${input:"build/scripts/make_manifest_from_bf.py"} ${BINDIR}/bfg.txt ${ARCADIA_BUILD_ROOT}/bfg.jar
COMPILE_JAVA_SRCLIST=$_JAVAC_RUN_HELPER($JAVAC_CMD)
PACK_JAR=$_PACK_JAR_HELPER($TARGET)
LINK_JAR=${hide:JAVA_FAKEID} ${hide;kv:"p JV"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"} ${hide;requirements:"cpu:2"} \
&& $PREPARE_JAR_BUILD \
- && $JAR_GEN_SRCS \
&& $_PREPARE_SRC_JAR \
&& $ALL_KT_COMMANDS \
&& $COLLECT_CLASSPATH \
@@ -1065,7 +1069,7 @@ module JAR_LIBRARY: _COMPILABLE_JAR_BASE {
# See for kapt.kotlin.generated: https://github.com/JetBrains/kotlin/blob/master/plugins/kapt3/kapt3-cli/testData/integration/kotlinFileGeneration/build.txt
_KAPT_OPTS=-Xplugin=${tool:"contrib/java/org/jetbrains/kotlin/kotlin-annotation-processing/1.9.24"} $KT_KAPT_PLUGIN_OPTS
_RUN_KAPT=${YMAKE_PYTHON} ${input:"build/scripts/with_kapt_args.py"} ${pre=--ap-classpath :KT_KAPT_AP_CLASSPATH} -- $COMPILE_KT $_KAPT_OPTS
- _APPEND_KAPT_GENERATED_SRCS=$YMAKE_PYTHON ${input:"build/scripts/resolve_java_srcs.py"} -d $KT_KAPT_SOURCES_DIR --include-patterns '**/*.java' '**/*.kt' --resolve-kotlin --append -s ${BINDIR}/all-java.srclst -k $KT_SRCLIST -r ${BINDIR}/not-used.txt
+ _APPEND_KAPT_GENERATED_SRCS=$YMAKE_PYTHON3 ${input:"build/scripts/resolve_java_srcs.py"} -d $KT_KAPT_SOURCES_DIR --include-patterns '**/*.java' '**/*.kt' --resolve-kotlin --append -s ${BINDIR}/all-java.srclst -k $KT_SRCLIST -r ${BINDIR}/not-used.txt
ALL_KT_COMMANDS+=&& $_RUN_KAPT && $_APPEND_KAPT_GENERATED_SRCS
}
diff --git a/build/plugins/java.py b/build/plugins/java.py
index a424b16350..d58b5f9d6c 100644
--- a/build/plugins/java.py
+++ b/build/plugins/java.py
@@ -256,18 +256,19 @@ def on_fill_jar_gen_srcs(unit, *args):
resolved_srcdir = unit.resolve_arc_path(srcdir)
if not resolved_srcdir.startswith('$') or resolved_srcdir.startswith('$S'):
return
+ if jar_type == 'SRC_JAR' and unit.get('SOURCES_JAR') != 'yes':
+ return
+ args_delim = unit.get('JAR_BUILD_SCRIPT_FLAGS_DELIM')
exclude_pos = args.index('EXCLUDE')
- globs = args[7:exclude_pos]
- excludes = args[exclude_pos + 1 :]
+ globs = ' '.join(args[7:exclude_pos])
+ excludes = ' '.join(args[exclude_pos + 1 :])
var = unit.get(varname)
- var += ' && ${{cwd:BINDIR}} $YMAKE_PYTHON ${{input:"build/scripts/resolve_java_srcs.py"}} --append -d {} -s {} -k {} -r {} --include-patterns {}'.format(
- srcdir, java_list, kt_list, res_list, ' '.join(globs)
- )
+ var += f' {args_delim} --append -d {srcdir} -s {java_list} -k {kt_list} -r {res_list} --include-patterns {globs}'
if jar_type == 'SRC_JAR':
var += ' --all-resources'
if len(excludes) > 0:
- var += ' --exclude-patterns {}'.format(' '.join(excludes))
+ var += f' --exclude-patterns {excludes}'
if unit.get('WITH_KOTLIN_VALUE') == 'yes':
var += ' --resolve-kotlin'
unit.set([varname, var])
diff --git a/build/scripts/prepare_jar_build.py b/build/scripts/prepare_jar_build.py
index 17caba727e..7c7a47fab1 100644
--- a/build/scripts/prepare_jar_build.py
+++ b/build/scripts/prepare_jar_build.py
@@ -7,8 +7,10 @@ import argparse
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
import process_command_files as pcf
import java_pack_to_file as jcov
+import resolve_java_srcs as resolve
from autotar_gendirs import unpack_dir
+
def writelines(f, rng):
f.writelines(item + '\n' for item in rng)
@@ -121,8 +123,19 @@ def prepare_build_dirs(bindir, with_sources_jar):
os.makedirs(dir)
+def split_cmd_by_delim(cmd, delim='DELIM'):
+ result = [[]]
+ for arg in cmd:
+ if arg == delim:
+ result.append([])
+ else:
+ result[-1].append(arg)
+ return result[0], result[1:]
+
+
def main():
- args = pcf.get_args(sys.argv[1:])
+ args, resolve_args = split_cmd_by_delim(pcf.get_args(sys.argv[1:]))
+
parser = argparse.ArgumentParser()
parser.add_argument('--with-sources-jar', action='store_true')
parser.add_argument('--moddir')
@@ -157,6 +170,9 @@ def main():
if args.coverage:
jcov.write_coverage_sources(args.coverage, args.source_root, src_consumer.coverage)
+ for rargs in resolve_args:
+ resolve.cli_main(rargs, force_skip_source_jars=not args.with_sources_jar)
+
return 0
diff --git a/build/scripts/resolve_java_srcs.py b/build/scripts/resolve_java_srcs.py
index 446bb55476..4cce49136f 100644
--- a/build/scripts/resolve_java_srcs.py
+++ b/build/scripts/resolve_java_srcs.py
@@ -22,7 +22,7 @@ def pattern_to_regexp(p):
'^'
+ ('/' if not p.startswith('**') else '')
+ re.escape(p)
- .replace(r'\*\*\/', '[_DIR_]')
+ .replace(r'\*\*/', '[_DIR_]')
.replace(r'\*', '[_FILE_]')
.replace('[_DIR_]', '(.*/)?')
.replace('[_FILE_]', '([^/]*)')
@@ -99,7 +99,7 @@ def do_it(
open(kotlin_sources_file, mode).writelines(i + '\n' for i in k + j)
-if __name__ == '__main__':
+def cli_main(argv, force_skip_source_jars=False):
parser = argparse.ArgumentParser()
parser.add_argument('-d', '--directory', required=True)
parser.add_argument('-s', '--sources-file', required=True)
@@ -110,6 +110,13 @@ if __name__ == '__main__':
parser.add_argument('--resolve-kotlin', action='store_true', default=False)
parser.add_argument('--include-patterns', nargs='*', default=[])
parser.add_argument('--exclude-patterns', nargs='*', default=[])
- args = parser.parse_args()
+ args = parser.parse_args(argv)
+
+ if force_skip_source_jars and args.all_resources:
+ return
do_it(**vars(args))
+
+
+if __name__ == '__main__':
+ cli_main(sys.argv[1:])