diff options
author | svidyuk <svidyuk@yandex-team.com> | 2025-01-28 09:14:19 +0300 |
---|---|---|
committer | svidyuk <svidyuk@yandex-team.com> | 2025-01-28 09:34:14 +0300 |
commit | 54d7987cb11a25bb9811bba6a01d0d8a6942af59 (patch) | |
tree | b8ec3f9d082e5de800305fcb6e8c10e9c2fefb53 | |
parent | 77d9db7a95c6ae81393fe72ed4b79768346c63f8 (diff) | |
download | ydb-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.conf | 14 | ||||
-rw-r--r-- | build/plugins/java.py | 13 | ||||
-rw-r--r-- | build/scripts/prepare_jar_build.py | 18 | ||||
-rw-r--r-- | build/scripts/resolve_java_srcs.py | 13 |
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:]) |