Browse Source

Merge pull request #3414 from ydb-platform/mergelibs-240403-0851

Library import 240403-0851
AlexSm 11 months ago
parent
commit
8fb01f1666

+ 7 - 7
build/conf/compilers/msvc_compiler.conf

@@ -38,9 +38,9 @@ CFLAGS_DEBUG   = /Od /Ob0 /Oi /D_DEBUG $_FLAGS_DEBUG_RUNTIME
 CFLAGS_RELEASE = /O2 /Ob2 /Oi /DNDEBUG $_FLAGS_RELEASE_RUNTIME
 
 MASMFLAGS=
-_MASM_IO=/nologo /c /Fo${output;suf=${OBJECT_SUF}:SRC} ${input;msvs_source:SRC}
+_MASM_IO=/nologo /c /Fo${output;suf=${OBJECT_SUF}:SRC} ${input:SRC}
 when ($ARCH_ARMV7) {
-    _MASM_IO=-o ${output;suf=${OBJECT_SUF}:SRC} ${input;msvs_source:SRC}
+    _MASM_IO=-o ${output;suf=${OBJECT_SUF}:SRC} ${input:SRC}
 }
 
 OBJ_CROSS_SUF=$OBJ_SUF
@@ -96,10 +96,10 @@ _C_CPP_KV_STYLE_P=p CC
 _C_CPP_KV_STYLE_PC=pc yellow
 
 _SRC_C_NODEPS_CMD=${TOOLCHAIN_ENV} ${CL_WRAPPER} ${C_COMPILER} /c /Fo${OUTFILE} ${SRC} ${EXTRA_C_FLAGS} ${pre=/I :INC} ${CFLAGS} ${hide;kv:"soe"} ${hide;kv:"p CC"} ${hide;kv:"pc yellow"}
-_SRC_CPP_CMD=${TOOLCHAIN_ENV} ${CL_WRAPPER} ${CXX_COMPILER} /c /Fo$_COMPILE_OUTPUTS ${input;msvs_source:SRC} ${EXTRA_C_FLAGS} ${pre=/I :_C__INCLUDE} ${CXXFLAGS} ${SRCFLAGS} ${_LANG_CFLAGS_VALUE} ${hide;kv:"soe"} ${hide;kv:"p CC"} ${hide;kv:"pc yellow"}
-_SRC_CPP_CMD_NEW=${TOOLCHAIN_ENV} ${CL_WRAPPER} ${CXX_COMPILER} /c /Fo$_COMPILE_OUTPUTS ${msvs_source;input:SRC} ${EXTRA_C_FLAGS} ${pre=/I :_C__INCLUDE} ${CXXFLAGS} ${SRCFLAGS} ${_LANG_CFLAGS_VALUE_NEW} ${hide;kv:"soe"} ${hide;kv:_C_CPP_KV_STYLE_P} ${hide;kv:_C_CPP_KV_STYLE_PC}
-_SRC_CPP_CMD_NEW_FORCED=${TOOLCHAIN_ENV} ${CL_WRAPPER} ${CXX_COMPILER} /c /Fo$_COMPILE_OUTPUTS ${msvs_source;input:SRC} ${EXTRA_C_FLAGS} ${pre=/I :_C__INCLUDE} ${CXXFLAGS} $_FORCE_CPP_FLAGS ${SRCFLAGS} ${_LANG_CFLAGS_VALUE_NEW} ${hide;kv:"soe"} ${hide;kv:_C_CPP_KV_STYLE_P} ${hide;kv:_C_CPP_KV_STYLE_PC}
-_SRC_C_CMD=${TOOLCHAIN_ENV} ${CL_WRAPPER} ${C_COMPILER} /c /Fo$_COMPILE_OUTPUTS ${msvs_source;input:SRC} ${EXTRA_C_FLAGS} ${pre=/I :_C__INCLUDE} ${CFLAGS} ${CONLYFLAGS} ${SRCFLAGS} ${hide;kv:"soe"} ${hide;kv:"p CC"} ${hide;kv:"pc yellow"}
-_SRC_C_CMD_NEW=${TOOLCHAIN_ENV} ${CL_WRAPPER} ${C_COMPILER} /c /Fo$_COMPILE_OUTPUTS ${msvs_source;input:SRC} ${EXTRA_C_FLAGS} ${pre=/I :_C__INCLUDE} ${CFLAGS} ${CONLYFLAGS} ${SRCFLAGS} ${hide;kv:"soe"} ${hide;kv:_C_CPP_KV_STYLE_P} ${hide;kv:_C_CPP_KV_STYLE_PC}
+_SRC_CPP_CMD=${TOOLCHAIN_ENV} ${CL_WRAPPER} ${CXX_COMPILER} /c /Fo$_COMPILE_OUTPUTS ${input:SRC} ${EXTRA_C_FLAGS} ${pre=/I :_C__INCLUDE} ${CXXFLAGS} ${SRCFLAGS} ${_LANG_CFLAGS_VALUE} ${hide;kv:"soe"} ${hide;kv:"p CC"} ${hide;kv:"pc yellow"}
+_SRC_CPP_CMD_NEW=${TOOLCHAIN_ENV} ${CL_WRAPPER} ${CXX_COMPILER} /c /Fo$_COMPILE_OUTPUTS ${input:SRC} ${EXTRA_C_FLAGS} ${pre=/I :_C__INCLUDE} ${CXXFLAGS} ${SRCFLAGS} ${_LANG_CFLAGS_VALUE_NEW} ${hide;kv:"soe"} ${hide;kv:_C_CPP_KV_STYLE_P} ${hide;kv:_C_CPP_KV_STYLE_PC}
+_SRC_CPP_CMD_NEW_FORCED=${TOOLCHAIN_ENV} ${CL_WRAPPER} ${CXX_COMPILER} /c /Fo$_COMPILE_OUTPUTS ${input:SRC} ${EXTRA_C_FLAGS} ${pre=/I :_C__INCLUDE} ${CXXFLAGS} $_FORCE_CPP_FLAGS ${SRCFLAGS} ${_LANG_CFLAGS_VALUE_NEW} ${hide;kv:"soe"} ${hide;kv:_C_CPP_KV_STYLE_P} ${hide;kv:_C_CPP_KV_STYLE_PC}
+_SRC_C_CMD=${TOOLCHAIN_ENV} ${CL_WRAPPER} ${C_COMPILER} /c /Fo$_COMPILE_OUTPUTS ${input:SRC} ${EXTRA_C_FLAGS} ${pre=/I :_C__INCLUDE} ${CFLAGS} ${CONLYFLAGS} ${SRCFLAGS} ${hide;kv:"soe"} ${hide;kv:"p CC"} ${hide;kv:"pc yellow"}
+_SRC_C_CMD_NEW=${TOOLCHAIN_ENV} ${CL_WRAPPER} ${C_COMPILER} /c /Fo$_COMPILE_OUTPUTS ${input:SRC} ${EXTRA_C_FLAGS} ${pre=/I :_C__INCLUDE} ${CFLAGS} ${CONLYFLAGS} ${SRCFLAGS} ${hide;kv:"soe"} ${hide;kv:_C_CPP_KV_STYLE_P} ${hide;kv:_C_CPP_KV_STYLE_PC}
 _SRC_M_CMD=$_EMPTY_CMD
 _SRC_MASM_CMD=${cwd:ARCADIA_BUILD_ROOT} ${TOOLCHAIN_ENV} ${ML_WRAPPER} ${MASM_COMPILER} ${MASMFLAGS} ${SRCFLAGS} $_MASM_IO ${kv;hide:"p AS"} ${kv;hide:"pc yellow"}

+ 10 - 3
build/conf/go.conf

@@ -59,8 +59,11 @@ elsewhen ($ARCH_ARM64) {
 GO_HOST_TARG_PARAMS=++host-os $GO_HOST_OS ++host-arch $GO_HOST_ARCH ++targ-os $GO_TARG_OS ++targ-arch $GO_TARG_ARCH
 
 # tag:go-specific
-GOSTD_VERSION=1.21
-when ($GOSTD_VERSION == "1.21") {
+GOSTD_VERSION=1.22
+when ($GOSTD_VERSION == "1.22") {
+    GOSTD=contrib/go/_std_1.22/src
+}
+elsewhen ($GOSTD_VERSION == "1.21") {
     GOSTD=contrib/go/_std_1.21/src
 }
 otherwise {
@@ -211,7 +214,7 @@ macro _GO_COMPILE_SYMABIS(FLAGS[], ASM_FILES...) {
 
 # tag:go-specific
 macro _GO_COMPILE_CGO1(NAME, FLAGS[], FILES...) {
-    .CMD=${hide:_CGO_FAKEID} ${cwd:ARCADIA_ROOT} $YMAKE_PYTHON ${input:"build/scripts/cgo1_wrapper.py"} $_GO_CGO1_WRAPPER_FLAGS --build-root ${ARCADIA_BUILD_ROOT} --source-root ${ARCADIA_ROOT} --cgo1-files ${output;noext:FILES.cgo1.go} --cgo2-files ${output;noauto;noext:FILES.cgo2.c} -- ${GO_TOOLS_ROOT}/pkg/tool/$_GO_TC_PATH/cgo -objdir $BINDIR -importpath $NAME $GO_CGO1_FLAGS_VALUE $FLAGS -- $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} ${CGO_CFLAGS_VALUE} ${input:FILES} ${output;hide:"_cgo_export.h"} ${output;hide:"_cgo_export.c"} ${output;hide:"_cgo_gotypes.go"} ${output;noauto;hide:"_cgo_main.c"} ${output;noauto;hide:"_cgo_flags"} $GO_TOOLCHAIN_ENV ${kv;hide:"p go"} ${kv;hide:"pc light-blue"} ${kv;hide:"show_out"}
+    .CMD=${hide:_CGO_FAKEID} ${cwd:ARCADIA_ROOT} $YMAKE_PYTHON ${input:"build/scripts/cgo1_wrapper.py"} $_GO_CGO1_WRAPPER_FLAGS --build-root ${ARCADIA_BUILD_ROOT} --source-root ${ARCADIA_ROOT} --cgo1-files ${output;noext:FILES.cgo1.go} --cgo2-files ${output;noauto;noext:FILES.cgo2.c} -- ${GO_TOOLS_ROOT}/pkg/tool/$_GO_TC_PATH/cgo -objdir $BINDIR -importpath $NAME $GO_CGO1_FLAGS_VALUE $FLAGS -- $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} ${CGO_CFLAGS_VALUE} ${input:FILES} ${output;hide:"_cgo_export.h"} ${output;hide:"_cgo_export.c"} ${output;hide:"_cgo_gotypes.go"} ${output;noauto;hide:"_cgo_main.c"} $GO_TOOLCHAIN_ENV ${kv;hide:"p go"} ${kv;hide:"pc light-blue"} ${kv;hide:"show_out"}
 }
 
 # tag:go-specific
@@ -856,6 +859,10 @@ module GO_PROGRAM: _GO_BASE_UNIT {
 
     PEERDIR(${GOSTD}/runtime library/go/core/buildinfo)
 
+    when ($CGO_ENABLED == "yes") {
+        PEERDIR += ${GOSTD}/runtime/cgo
+    }
+
     when ($RACE == "yes") {
         PEERDIR += ${GOSTD}/runtime/cgo
         PEERDIR += ${GOSTD}/runtime/race

+ 31 - 4
build/conf/java.conf

@@ -413,13 +413,12 @@ when($JDK_VERSION == "8") {
 }
 
 # tag:java-specific
-JDK_LATEST_VERSION=21
+JDK_LATEST_VERSION=22
 JDK_LATEST_PEERDIR=build/platform/java/jdk/jdk${JDK_LATEST_VERSION}
 
 # tag:java-specific
 # Fill semantic by RUN_JAVA_PROGRAM()
-_SEM_RUN_JAVA_PROGRAM= \
-    && runs-ITEM \
+_SEM_RUN_JAVA_PROGRAM=runs-ITEM \
     && runs-args ${Args} \
     && runs-classpath ${RUN_JAR_PROG_CP_PRE}${tool:CLASSPATH}${RUN_JAR_PROG_CP_SUF} \
     && runs-cwd ${CWD} ${hide;cwd:CWD} \
@@ -784,7 +783,7 @@ macro JAVA_RESOURCE(JAR, SOURCES="") {
 }
 
 # tag:java-specific tag:fbs
-JAVA_FLATBUFFERS_VERSION = 24.3.7
+JAVA_FLATBUFFERS_VERSION = 24.3.25
 
 _KOTLIN_ALLOWED_VERSIONS = contrib/java/org/jetbrains/kotlin/kotlin-allopen/${_KOTLIN_VERSION} \
         contrib/java/org/jetbrains/kotlin/kotlin-allopen-compiler-plugin/${_KOTLIN_VERSION} \
@@ -1058,6 +1057,11 @@ module JAR_LIBRARY: _COMPILABLE_JAR_BASE {
         JAVAC_OPTS+=$ERROR_PRONE_JDK16_ADD_OPENS
     }
 
+    when($ERROR_PRONE_VALUE && $JDK_REAL_VERSION == "22") {
+        JAVAC_FLAGS_VALUE+=$ERROR_PRONE_JDK16_ADD_OPENS
+        JAVAC_OPTS+=$ERROR_PRONE_JDK16_ADD_OPENS
+    }
+
     when($ERROR_PRONE_VALUE && $ERROR_PRONE_VERSION == "2.7.1") {
         JAVAC_FLAGS_VALUE+=$ERROR_PRONE_2_7_1_FORCED_OPTS
         JAVAC_OPTS+=$ERROR_PRONE_2_7_1_FORCED_OPTS
@@ -1191,6 +1195,9 @@ JAVA_SWIG_DELIM=JAVA_SWIG_DELIM
 JDK_REAL_VERSION=
 JDK_VERSION=
 
+when ($JDK_VERSION == "22") {
+    JDK_REAL_VERSION=22
+}
 when ($JDK_VERSION == "21") {
     JDK_REAL_VERSION=21
 }
@@ -1225,6 +1232,9 @@ when ($USE_SYSTEM_JDK) {
     JDK_RESOURCE_PEERDIR=
 }
 otherwise {
+    when ($JDK_REAL_VERSION == "22") {
+        JDK_RESOURCE_PEERDIR=build/platform/java/jdk/jdk22 build/platform/java/jdk/jdk17
+    }
     when ($JDK_REAL_VERSION == "21") {
         JDK_RESOURCE_PEERDIR=build/platform/java/jdk/jdk21 build/platform/java/jdk/jdk17
     }
@@ -1250,6 +1260,9 @@ otherwise {
 }
 
 # tag:java-specific
+when ($JDK_REAL_VERSION == "22") {
+    UBERJAR_RESOURCE_PEERDIR=build/platform/java/uberjar/uberjar22
+}
 when ($JDK_REAL_VERSION == "21") {
     UBERJAR_RESOURCE_PEERDIR=build/platform/java/uberjar/uberjar21
 }
@@ -1278,6 +1291,9 @@ when ($USE_SYSTEM_JDK) {
     JDK_RESOURCE=$USE_SYSTEM_JDK
 }
 otherwise {
+    when ($JDK_REAL_VERSION == "22") {
+        JDK_RESOURCE=$JDK22_RESOURCE_GLOBAL
+    }
     when ($JDK_REAL_VERSION == "21") {
         JDK_RESOURCE=$JDK21_RESOURCE_GLOBAL
     }
@@ -1334,6 +1350,11 @@ when (!$USE_SYSTEM_ERROR_PRONE) {
         ERROR_PRONE_PEERDIR=build/platform/java/error_prone/2.18.0
         ERROR_PRONE_RESOURCE=$ERROR_PRONE_2_18_0_RESOURCE_GLOBAL
     }
+    elsewhen ($JDK_REAL_VERSION == "22") {
+        ERROR_PRONE_VERSION=2.18.0
+        ERROR_PRONE_PEERDIR=build/platform/java/error_prone/2.18.0
+        ERROR_PRONE_RESOURCE=$ERROR_PRONE_2_18_0_RESOURCE_GLOBAL
+    }
     otherwise {
         ERROR_PRONE_VERSION=2.7.1
         ERROR_PRONE_PEERDIR=build/platform/java/error_prone
@@ -1351,6 +1372,9 @@ when ($USE_SYSTEM_UBERJAR) {
     UBERJAR_RESOURCE=$USE_SYSTEM_UBERJAR
 }
 otherwise {
+    when ($JDK_REAL_VERSION == "22") {
+        UBERJAR_RESOURCE=$UBERJAR22_RESOURCE_GLOBAL
+    }
     when ($JDK_REAL_VERSION == "21") {
         UBERJAR_RESOURCE=$UBERJAR21_RESOURCE_GLOBAL
     }
@@ -1375,6 +1399,9 @@ otherwise {
 }
 
 # tag:java-specific
+when ($JDK_REAL_VERSION == "22") {
+    WITH_JDK_RESOURCE=$WITH_JDK22_RESOURCE_GLOBAL
+}
 when ($JDK_REAL_VERSION == "21") {
     WITH_JDK_RESOURCE=$WITH_JDK21_RESOURCE_GLOBAL
 }

+ 3 - 1
build/conf/linkers/msvc_linker.conf

@@ -117,9 +117,11 @@ LINK_EXTRA_OUTPUT=$_LINK_EXTRA_OUTPUT
 LIB_WRAPPER=${FIX_MSVC_OUTPUT} lib
 LINK_WRAPPER=${FIX_MSVC_OUTPUT} link
 when ($_UNDER_WINE_TOOLS == "yes") {
-    LIB_WRAPPER=
     LINK_WRAPPER=
 }
+when ($_UNDER_WINE_LIB == "yes") {
+    LIB_WRAPPER=
+}
 
 LINK_WRAPPER_DYNLIB=${YMAKE_PYTHON} ${input:"build/scripts/link_dyn_lib.py"} --arch WINDOWS --target $TARGET
 

+ 4 - 4
build/conf/proto.conf

@@ -20,7 +20,7 @@ BUILD_PROTO_AS_EVLOG=no
 PROTO_NAMESPACE=
 
 # tag:proto tag:python-specific
-GEN_PY_PROTOS=$YMAKE_PYTHON ${input:"build/scripts/gen_py_protos.py"}
+GEN_PY_PROTOS=$YMAKE_PYTHON ${input:"build/scripts/gen_py_protos.py"} --py_ver ${_PYTHON_VER}
 
 # tag:proto tag:cpp-specific
 PROTO_HEADER_EXTS=.pb.h
@@ -136,7 +136,7 @@ macro _PROTO_PLUGIN_ARGS_BASE(Name, Tool, OutParm...) {
 # tag:proto tag:python-specific
 macro _ADD_PY_PROTO_OUT(Suf) {
     SET_APPEND(PY_PROTO_OUTS \${output;hide;noauto;norel;nopath;noext;suf=$Suf:File})
-    SET_APPEND(PY_PROTO_OUTS_INTERNAL \${output;hide;noauto;norel;nopath;noext;suf=__int__$Suf:File} \${hide;kv:"ext_out_name_for_\${nopath;noext;suf=__int__$Suf:File} \${nopath;noext;suf=$Suf:File}"})
+    SET_APPEND(PY_PROTO_OUTS_INTERNAL \${output;hide;noauto;norel;nopath;noext;suf=__int${_PYTHON_VER}__$Suf:File} \${hide;kv:"ext_out_name_for_\${nopath;noext;suf=__int${_PYTHON_VER}__$Suf:File} \${nopath;noext;suf=$Suf:File}"})
     # XXX fix variable expansion in plugins
     SET(PY_PROTO_SUFFIXES $PY_PROTO_SUFFIXES $Suf)
 }
@@ -441,7 +441,7 @@ macro _PY_PROTO_CMD(File) {
 
 # tag:proto tag:python-specific
 macro _PY_PROTO_CMD_INTERNAL(File) {
-    .CMD=${cwd;rootdir;input:File} $GEN_PY_PROTOS --suffixes $PY_PROTO_SUFFIXES $PY_PROTO_MYPY_SUFFIX --input ${input;rootrel:File} --ns /$PROTO_NAMESPACE -- $_PY_PROTO_CMD_BASE($File __int___pb2.py $PY_PROTO_OPTS $PY_PROTO_OUTS_INTERNAL ${hide;kv:"ext_out_name_for_${nopath;noext;suf=__int___pb2.py:File} ${nopath;noext;suf=_pb2.py:File}"} $PY_PROTO_MYPY_PLUGIN_INTERNAL)
+    .CMD=${cwd;rootdir;input:File} $GEN_PY_PROTOS --suffixes $PY_PROTO_SUFFIXES $PY_PROTO_MYPY_SUFFIX --input ${input;rootrel:File} --ns /$PROTO_NAMESPACE -- $_PY_PROTO_CMD_BASE($File __int${_PYTHON_VER}___pb2.py $PY_PROTO_OPTS $PY_PROTO_OUTS_INTERNAL ${hide;kv:"ext_out_name_for_${nopath;noext;suf=__int${_PYTHON_VER}___pb2.py:File} ${nopath;noext;suf=_pb2.py:File}"} $PY_PROTO_MYPY_PLUGIN_INTERNAL)
 }
 
 # tag:proto tag:java-specific
@@ -512,7 +512,7 @@ macro _PY_EVLOG_CMD(File) {
 
 # tag:python-specific tag:proto
 macro _PY_EVLOG_CMD_INTERNAL(File) {
-    .CMD=${cwd;rootdir;input:File} $GEN_PY_PROTOS --suffixes $PY_EVLOG_SUFFIXES --input ${input;rootrel:File} --ns /$PROTO_NAMESPACE -- $_PY_EVLOG_CMD_BASE($File __int___ev_pb2.py ${hide;kv:"ext_out_name_for_${nopath;noext;suf=__int___ev_pb2.py:File} ${nopath;noext;suf=_ev_pb2.py:File}"})
+    .CMD=${cwd;rootdir;input:File} $GEN_PY_PROTOS --suffixes $PY_EVLOG_SUFFIXES --input ${input;rootrel:File} --ns /$PROTO_NAMESPACE -- $_PY_EVLOG_CMD_BASE($File __int${_PYTHON_VER}___ev_pb2.py ${hide;kv:"ext_out_name_for_${nopath;noext;suf=__int${_PYTHON_VER}___ev_pb2.py:File} ${nopath;noext;suf=_ev_pb2.py:File}"})
 }
 
 # tag:java-specific tag:proto

+ 7 - 2
build/conf/python.conf

@@ -144,6 +144,9 @@ when ($OPENSOURCE) {
 PYTHON2=no
 PYTHON3=no
 
+# tag:python-specific
+_PYTHON_VER=py2
+
 # tag:python-specific
 PYTHON_IMPORT_TRACING=yes
 
@@ -545,7 +548,7 @@ module PY2_LIBRARY: _LIBRARY {
     when ($PY_PROTO_MYPY_ENABLED == "yes") {
         PY_PROTO_MYPY_SUFFIX=_pb2.pyi
         PY_PROTO_MYPY_PLUGIN=$PY_PROTO_MYPY_PLUGIN_BASE ${output;hide;noauto;norel;nopath;noext;suf=_pb2.pyi:File}
-        PY_PROTO_MYPY_PLUGIN_INTERNAL=$PY_PROTO_MYPY_PLUGIN_BASE ${output;hide;noauto;norel;nopath;noext;suf=__int___pb2.pyi:File} ${hide;kv:"ext_out_name_for_${nopath;noext;suf=__int___pb2.pyi:File} ${nopath;noext;suf=_pb2.pyi:File}"})
+        PY_PROTO_MYPY_PLUGIN_INTERNAL=$PY_PROTO_MYPY_PLUGIN_BASE ${output;hide;noauto;norel;nopath;noext;suf=__intpy2___pb2.pyi:File} ${hide;kv:"ext_out_name_for_${nopath;noext;suf=__intpy2___pb2.pyi:File} ${nopath;noext;suf=_pb2.pyi:File}"})
     }
     SET(MODULE_LANG PY2)
     ADD_CLANG_TIDY()
@@ -586,7 +589,7 @@ module PY3_LIBRARY: _LIBRARY {
     when ($PY_PROTO_MYPY_ENABLED == "yes") {
         PY_PROTO_MYPY_SUFFIX=_pb2.pyi
         PY_PROTO_MYPY_PLUGIN=$PY_PROTO_MYPY_PLUGIN_BASE ${output;hide;noauto;norel;nopath;noext;suf=_pb2.pyi:File}
-        PY_PROTO_MYPY_PLUGIN_INTERNAL=$PY_PROTO_MYPY_PLUGIN_BASE ${output;hide;noauto;norel;nopath;noext;suf=__int___pb2.pyi:File} ${hide;kv:"ext_out_name_for_${nopath;noext;suf=__int___pb2.pyi:File} ${nopath;noext;suf=_pb2.pyi:File}"})
+        PY_PROTO_MYPY_PLUGIN_INTERNAL=$PY_PROTO_MYPY_PLUGIN_BASE ${output;hide;noauto;norel;nopath;noext;suf=__intpy3___pb2.pyi:File} ${hide;kv:"ext_out_name_for_${nopath;noext;suf=__intpy3___pb2.pyi:File} ${nopath;noext;suf=_pb2.pyi:File}"})
     }
     SET(MODULE_LANG PY3)
     ADD_CLANG_TIDY()
@@ -768,6 +771,7 @@ macro _ARCADIA_PYTHON_ADDINCL() {
 macro _PYTHON_ADDINCL() {
     SET(PYTHON2 yes)
     SET(PYTHON3 no)
+    SET(_PYTHON_VER py2)
     when ($USE_ARCADIA_PYTHON == "yes") {
         ADDINCL+=GLOBAL contrib/libs/python/Include
         CFLAGS+=-DARCADIA_PYTHON_UNICODE_SIZE=$ARCADIA_PYTHON_UNICODE_SIZE
@@ -817,6 +821,7 @@ macro _ARCADIA_PYTHON3_ADDINCL() {
 macro _PYTHON3_ADDINCL() {
     SET(PYTHON3 yes)
     SET(PYTHON2 no)
+    SET(_PYTHON_VER py3)
     when ($USE_ARCADIA_PYTHON == "yes") {
         CFLAGS+=-DUSE_PYTHON3
         ADDINCL+=GLOBAL contrib/libs/python/Include

+ 3 - 1
build/conf/toolchains/msvc_toolchain.conf

@@ -11,9 +11,11 @@ _WINE_LIB_PREFIX=
 _WINE_MASM_PREFIX=
 when ($_UNDER_WINE_TOOLS == "yes") {
     _WINE_LINK_PREFIX=${_WINE_CMD} link ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}
-    _WINE_LIB_PREFIX=${_WINE_CMD} lib ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}
     _WINE_MASM_PREFIX=${_WINE_CMD} masm ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}
 }
+when ($_UNDER_WINE_LIB == "yes") {
+    _WINE_LIB_PREFIX=${_WINE_CMD} lib ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}
+}
 when ($_UNDER_WINE_COMPILER == "yes") {
     _WINE_C_PREFIX=${_WINE_CMD} c ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}
     _WINE_CXX_PREFIX=${_WINE_CMD} cxx ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}

+ 47 - 0
build/export_generators/hardcoded-cmake/build/scripts/re_replace.py

@@ -0,0 +1,47 @@
+import sys
+from typing import List
+import argparse
+import re
+
+# Usage: re_replace.py --from-re <REGEXP> --to-re <REGEXP_REPLACE> FILE [FILE ...]
+
+
+def patch_line(line: str, from_re: re.Pattern, to_re: str) -> str:
+    return re.sub(from_re, to_re, line)
+
+
+def main(args: List[str]):
+    argparser = argparse.ArgumentParser(allow_abbrev=False)
+    argparser.add_argument('--from-re', required=True)
+    argparser.add_argument('--to-re', required=True)
+    parsed_args, files = argparser.parse_known_args(args=args)
+    from_re = re.compile(parsed_args.from_re)
+    if not files:
+        raise Exception('No input files')
+
+    patched_files = []
+    skipped_files = []
+    for file in files:
+        patched = False
+        with open(file, 'r') as f:
+            lines = f.readlines()
+            for i in range(len(lines)):
+                line = lines[i]
+                patched_line = patch_line(line, from_re, parsed_args.to_re)
+                if patched_line != line:
+                    patched = True
+                    lines[i] = patched_line
+        if patched:
+            with open(file, 'w') as f:
+                f.writelines(lines)
+            patched_files.append(file)
+        else:
+            skipped_files.append(file)
+    if patched_files:
+        print("Patched by re_replace: " + ", ".join(patched_files))
+    if skipped_files:
+        print("Skipped by re_replace: " + ", ".join(skipped_files))
+
+
+if __name__ == '__main__':
+    main(sys.argv[1:])

+ 41 - 50
build/export_generators/hardcoded-cmake/cmake/protobuf.cmake

@@ -21,53 +21,34 @@ function(target_proto_outs Tgt)
   )
 endfunction()
 
-function(target_proto_messages Tgt Scope)
-  get_built_tool_path(protoc_bin protoc_dependency contrib/tools/protoc/bin protoc)
-  get_built_tool_path(cpp_styleguide_bin cpp_styleguide_dependency contrib/tools/protoc/plugins/cpp_styleguide cpp_styleguide)
+function(target_messages Tgt Scope UseStyleguide UseEvent2Cpp)
+  if (vanilla_protobuf STREQUAL "yes")
+    set(protoc_bin ${PROJECT_BINARY_DIR}/bin/protoc${CMAKE_EXECUTABLE_SUFFIX})
+    set(protoc_dependency "")
+    set(UseStyleguide "no")  # cpp_styleguide can't compile with vanilla protobuf
+  else()
+    get_built_tool_path(protoc_bin protoc_dependency "contrib/tools/protoc/bin" "protoc")
+  endif()
 
-  get_property(ProtocExtraOutsSuf TARGET ${Tgt} PROPERTY PROTOC_EXTRA_OUTS)
-  foreach(proto ${ARGN})
-    if(proto MATCHES ${PROJECT_BINARY_DIR})
-      file(RELATIVE_PATH protoRel ${PROJECT_BINARY_DIR} ${proto})
-    elseif (proto MATCHES ${PROJECT_SOURCE_DIR})
-      file(RELATIVE_PATH protoRel ${PROJECT_SOURCE_DIR} ${proto})
-    else()
-      set(protoRel ${proto})
-    endif()
-    get_filename_component(OutputBase ${protoRel} NAME_WLE)
-    get_filename_component(OutputDir ${PROJECT_BINARY_DIR}/${protoRel} DIRECTORY)
-    list(TRANSFORM ProtocExtraOutsSuf PREPEND ${OutputDir}/${OutputBase} OUTPUT_VARIABLE ProtocExtraOuts)
-    add_custom_command(
-        OUTPUT
-          ${OutputDir}/${OutputBase}.pb.cc
-          ${OutputDir}/${OutputBase}.pb.h
-          ${ProtocExtraOuts}
-        COMMAND ${protoc_bin}
-          ${COMMON_PROTOC_FLAGS}
-          "-I$<JOIN:$<TARGET_GENEX_EVAL:${Tgt},$<TARGET_PROPERTY:${Tgt},PROTO_ADDINCL>>,;-I>"
-          "$<JOIN:$<TARGET_GENEX_EVAL:${Tgt},$<TARGET_PROPERTY:${Tgt},PROTO_OUTS>>,;>"
-          --plugin=protoc-gen-cpp_styleguide=${cpp_styleguide_bin}
-          "$<JOIN:$<TARGET_GENEX_EVAL:${Tgt},$<TARGET_PROPERTY:${Tgt},PROTOC_OPTS>>,;>"
-          ${protoRel}
-        DEPENDS
-          ${proto}
-          $<TARGET_PROPERTY:${Tgt},PROTOC_DEPS>
-          ${protoc_dependency}
-          ${cpp_styleguide_dependency}
-        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
-        COMMAND_EXPAND_LISTS
-    )
-    target_sources(${Tgt} ${Scope}
-      ${OutputDir}/${OutputBase}.pb.cc ${OutputDir}/${OutputBase}.pb.h
-      ${ProtocExtraOuts}
-    )
-  endforeach()
-endfunction()
+  if (UseStyleguide STREQUAL "yes")
+    get_built_tool_path(cpp_styleguide_bin cpp_styleguide_dependency "contrib/tools/protoc/plugins/cpp_styleguide" "cpp_styleguide")
+    set(protoc_styleguide_plugin --plugin=protoc-gen-cpp_styleguide=${cpp_styleguide_bin})
+  else()
+    set(protoc_styleguide_plugin "")
+    set(cpp_styleguide_dependency "")
+  endif()
 
-function(target_ev_messages Tgt Scope)
-  get_built_tool_path(protoc_bin protoc_dependency contrib/tools/protoc/bin protoc)
-  get_built_tool_path(cpp_styleguide_bin cpp_styleguide_dependency contrib/tools/protoc/plugins/cpp_styleguide cpp_styleguide)
-  get_built_tool_path(event2cpp_bin event2cpp_dependency tools/event2cpp/bin event2cpp)
+  if (UseEvent2Cpp STREQUAL "yes")
+    get_built_tool_path(event2cpp_bin event2cpp_dependency "tools/event2cpp/bin" "event2cpp")
+    set(protoc_event2cpp_plugin --plugin=protoc-gen-event2cpp=${event2cpp_bin})
+    set(ext_h ".ev.pb.h")
+    set(ext_c ".ev.pb.cc")
+  else()
+    set(protoc_event2cpp_plugin "")
+    set(event2cpp_dependency "")
+    set(ext_h ".pb.h")
+    set(ext_c ".pb.cc")
+  endif()
 
   get_property(ProtocExtraOutsSuf TARGET ${Tgt} PROPERTY PROTOC_EXTRA_OUTS)
   foreach(proto ${ARGN})
@@ -83,29 +64,39 @@ function(target_ev_messages Tgt Scope)
     list(TRANSFORM ProtocExtraOutsSuf PREPEND ${OutputDir}/${OutputBase} OUTPUT_VARIABLE ProtocExtraOuts)
     add_custom_command(
         OUTPUT
-          ${OutputDir}/${OutputBase}.ev.pb.cc
-          ${OutputDir}/${OutputBase}.ev.pb.h
+          ${OutputDir}/${OutputBase}${ext_c}
+          ${OutputDir}/${OutputBase}${ext_h}
           ${ProtocExtraOuts}
         COMMAND ${protoc_bin}
           ${COMMON_PROTOC_FLAGS}
           "-I$<JOIN:$<TARGET_GENEX_EVAL:${Tgt},$<TARGET_PROPERTY:${Tgt},PROTO_ADDINCL>>,;-I>"
           "$<JOIN:$<TARGET_GENEX_EVAL:${Tgt},$<TARGET_PROPERTY:${Tgt},PROTO_OUTS>>,;>"
-          --plugin=protoc-gen-cpp_styleguide=${cpp_styleguide_bin}
-          --plugin=protoc-gen-event2cpp=${event2cpp_bin}
+          ${protoc_styleguide_plugin}
+          ${protoc_event2cpp_plugin}
           "$<JOIN:$<TARGET_GENEX_EVAL:${Tgt},$<TARGET_PROPERTY:${Tgt},PROTOC_OPTS>>,;>"
           ${protoRel}
+        COMMAND Python3::Interpreter ${PROJECT_SOURCE_DIR}/build/scripts/re_replace.py --from-re "\"((?:struct|class)\\s+\\S+\\s+)final\\s*:\"" --to-re "\"\\1:\"" ${OutputDir}/${OutputBase}${ext_c} ${OutputDir}/${OutputBase}${ext_h}
         DEPENDS
           ${proto}
           $<TARGET_PROPERTY:${Tgt},PROTOC_DEPS>
           ${protoc_dependency}
           ${cpp_styleguide_dependency}
           ${event2cpp_dependency}
+          ${PROJECT_SOURCE_DIR}/build/scripts/re_replace.py
         WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
         COMMAND_EXPAND_LISTS
     )
     target_sources(${Tgt} ${Scope}
-      ${OutputDir}/${OutputBase}.ev.pb.cc ${OutputDir}/${OutputBase}.ev.pb.h
+      ${OutputDir}/${OutputBase}${ext_c} ${OutputDir}/${OutputBase}${ext_h}
       ${ProtocExtraOuts}
     )
   endforeach()
 endfunction()
+
+function(target_proto_messages Tgt Scope)
+  target_messages(${Tgt} ${Scope} "yes" "no" ${ARGN})
+endfunction()
+
+function(target_ev_messages Tgt Scope)
+  target_messages(${Tgt} ${Scope} "yes" "yes" ${ARGN})
+endfunction()

+ 1 - 1
build/export_generators/hardcoded-cmake/conanfile.jinja

@@ -17,4 +17,4 @@
 [generators]
 cmake_find_package
 cmake_paths
-{{"\n"}}
+

Some files were not shown because too many files changed in this diff