diff options
author | Alexander Smirnov <alex@ydb.tech> | 2025-02-13 18:38:05 +0000 |
---|---|---|
committer | Alexander Smirnov <alex@ydb.tech> | 2025-02-13 18:38:05 +0000 |
commit | 28180f60aec6dcb2b662b6417c90226553ebe2dc (patch) | |
tree | 9ca4d2b0ea989b075f60d2746159e891c1aa77f7 | |
parent | 09744cf9fbdd1cd31f648b5fabc8a9ed09875e3b (diff) | |
parent | 36161988ade9e56ec69a44ba4ff084ede6e44ee7 (diff) | |
download | ydb-28180f60aec6dcb2b662b6417c90226553ebe2dc.tar.gz |
Merge pull request #14512 from ydb-platform/merge-libs-250213-0050
263 files changed, 4089 insertions, 2352 deletions
diff --git a/build/conf/licenses.json b/build/conf/licenses.json index 792f8e829b..42627fda61 100644 --- a/build/conf/licenses.json +++ b/build/conf/licenses.json @@ -4,7 +4,6 @@ "AFL-2.0", "Amazon-SL", "APSL-1.0", - "Artistic-2.0", "ASM-BSD-3-Clause", "BCL", "Bison-Exception", @@ -39,7 +38,6 @@ "CC-BY-SA-4.0", "CDDL", "CECILL-B", - "ClArtistic", "DSO-1.1", "Elastic-License-2.0", "FSFUL", @@ -159,6 +157,7 @@ "AGPL-3.0-or-later", "Artistic-1.0", "Artistic-1.0-Perl", + "ClArtistic", "confluent-community-1.0", "Moderne-Source-Available-License" ] @@ -180,6 +179,7 @@ "Apache-2.0", "Apache-2.0 WITH LLVM-exception", "APSL-2.0", + "Artistic-2.0", "Beerware", "blessing", "Brian-Gladman-3-Clause", @@ -213,6 +213,7 @@ "Cmu-Computing-Services", "CUP-Parser", "curl", + "Custom-clarified-artistic-proofread", "Custom-eigen", "Custom-fft2d", "Custom-fft4g", diff --git a/build/conf/linkers/ld.conf b/build/conf/linkers/ld.conf index 2aa0f93b60..79006c21ab 100644 --- a/build/conf/linkers/ld.conf +++ b/build/conf/linkers/ld.conf @@ -354,13 +354,6 @@ _LD_LINK_LIB_EXTRA_INPUT= _LD_TAIL_LINK_LIB=$AUTO_INPUT $_LD_LINK_LIB_EXTRA_INPUT ${hide;kv:"p AR"} $TOOLCHAIN_ENV ${hide;kv:"pc light-red"} ${hide;kv:"show_out"} _LD_ARCHIVER=$YMAKE_PYTHON ${input:"build/scripts/link_lib.py"} ${quo:AR_TOOL} $AR_TYPE $_LD_LLVM_AR_FORMAT $ARCADIA_BUILD_ROOT $_LD_AR_PLUGIN -- $_LD_ARCHIVER_KV_PLUGIN -- -when ($MAPSMOBI_BUILD_TARGET == "yes") { - _LD_ARCHIVER+= "no-openssl3" -} -otherwise { - _LD_ARCHIVER+= "enable-openssl3" -} - _LD_LIB_GENERATE_MF=$GENERATE_MF && when ($TIDY == "yes") { _LD_ARCHIVER=$YMAKE_PYTHON ${input:"build/scripts/clang_tidy_arch.py"} --source-root $ARCADIA_ROOT --build-root $ARCADIA_BUILD_ROOT --output-file diff --git a/build/export_generators/cmake/build/scripts/create_recursive_library_for_cmake.py b/build/export_generators/cmake/build/scripts/create_recursive_library_for_cmake.py index 4eb8013a91..001faecaa3 100644 --- a/build/export_generators/cmake/build/scripts/create_recursive_library_for_cmake.py +++ b/build/export_generators/cmake/build/scripts/create_recursive_library_for_cmake.py @@ -145,6 +145,8 @@ class FilesCombiner(object): 'gnu', # llvm_ar_format, used only if arch_type == 'LLVM_AR' opts.parsed_args.project_binary_dir, 'None', # plugin. Unused for now + '--', # for plugins. Unused for now + '--', ] # the remaining archiving cmd args are [output, .. input .. ] diff --git a/build/export_generators/cmake/generator.toml b/build/export_generators/cmake/generator.toml index 9343bd58cb..b25cf88c35 100644 --- a/build/export_generators/cmake/generator.toml +++ b/build/export_generators/cmake/generator.toml @@ -209,12 +209,12 @@ copy=["cmake/FindJNITarget.cmake"] add_values=[{attr="includes", values=["cmake/FindJNITarget.cmake"]}] [[rules]] -attrs=["target_commands-macro=run_antlr"] +attrs=["custom_runs-command=run_antlr"] copy=["cmake/antlr.cmake"] add_values=[{attr="includes", values=["cmake/antlr.cmake"]}] [[rules]] -attrs=["target_commands-macro=run_antlr4"] +attrs=["custom_runs-command=run_antlr4"] copy=["cmake/antlr4.cmake"] add_values=[{attr="includes", values=["cmake/antlr4.cmake"]}] diff --git a/build/export_generators/cmake/target_commands.jinja b/build/export_generators/cmake/target_commands.jinja index ebc1ef6c13..6d28dce80d 100644 --- a/build/export_generators/cmake/target_commands.jinja +++ b/build/export_generators/cmake/target_commands.jinja @@ -21,7 +21,6 @@ {%- if current_target.custom_runs|length -%} {%- for custom_run in current_target.custom_runs %} {%- set first_arg = custom_run.command|first %} -{%- set tail_args = custom_run.command|slice(1, custom_run.command|length - 1) %} {%- if (first_arg == "run_antlr") or (first_arg == "run_antlr4") %} {{ first_arg }}( {%- if custom_run.outputs|length %} @@ -34,14 +33,16 @@ WORKING_DIRECTORY {{ custom_run.cwd }} {%- endif -%} -{%- if tail_args|length %} - ANTLR_ARGS -{%- for tail_arg in tail_args %} - {{ tail_arg }} +{%- if custom_run.command|length > 1 %} + ANTLER_ARGS +{%- for arg in custom_run.command -%} +{%- if not loop.first %} + {{ arg }} +{%- endif -%} {%- endfor -%} -{%- endif -%} +{%- endif %} ) -{%- else %} +{% else %} add_custom_command( {%- if custom_run.outputs|length %} OUTPUT diff --git a/build/mapping.conf.json b/build/mapping.conf.json index f7754c5849..7340df7db4 100644 --- a/build/mapping.conf.json +++ b/build/mapping.conf.json @@ -1,6 +1,7 @@ { "bottles": {}, "resources": { + "8018811524": "https://devtools-registry.s3.yandex.net/8018811524", "6277415836": "https://devtools-registry.s3.yandex.net/6277415836", "2214720943": "https://devtools-registry.s3.yandex.net/2214720943", "2214542408": "https://devtools-registry.s3.yandex.net/2214542408", @@ -1065,8 +1066,11 @@ "7512103615": "https://devtools-registry.s3.yandex.net/7512103615", "7324464594": "https://devtools-registry.s3.yandex.net/7324464594", "7654921682": "https://devtools-registry.s3.yandex.net/7654921682", + "8013116004": "https://devtools-registry.s3.yandex.net/8013116004", + "8013130168": "https://devtools-registry.s3.yandex.net/8013130168", "7487656957": "https://devtools-registry.s3.yandex.net/7487656957", "7458707245": "https://devtools-registry.s3.yandex.net/7458707245", + "8013150302": "https://devtools-registry.s3.yandex.net/8013150302", "7414146467": "https://devtools-registry.s3.yandex.net/7414146467", "7654793679": "https://devtools-registry.s3.yandex.net/7654793679", "7487672728": "https://devtools-registry.s3.yandex.net/7487672728", @@ -1587,6 +1591,7 @@ "5545691160": "devtools/ya/test/programs/test_tool/bin/test_tool for linux", "5559524010": "devtools/ya/test/programs/test_tool/bin/test_tool for linux", "5572005924": "devtools/ya/test/programs/test_tool/bin/test_tool for linux", + "8018811524": "devtools/ya/test/programs/test_tool/bin/test_tool for linux", "5675381622": "devtools/ya/test/programs/test_tool/bin/test_tool for linux", "5683487438": "devtools/ya/test/programs/test_tool/bin/test_tool for linux", "5707396874": "devtools/ya/test/programs/test_tool/bin/test_tool for linux", @@ -2292,8 +2297,11 @@ "7512103615": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/29fcd2aa-e0b5-481e-83c8-b7ff5e0157c9/yfm-docs.tar", "7324464594": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/32cc8c74-decd-44a8-bc8c-f8f0d7edfffe/yfm-docs.tar", "7654921682": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/33b2cf15-eb2e-44b8-a074-0c6f60f97a04/yfm-docs.tar", + "8013116004": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/33d7c3cf-e76f-40cb-9e98-59084b60928c/yfm-docs.tar", + "8013130168": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/47070d89-f0a5-4aed-a017-3bd4f9d1518f/yfm-docs.tar", "7487656957": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/4b747fb6-2d4e-4a7b-bbed-abb9a1e21761/yfm-docs.tar", "7458707245": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/4e7df89f-3762-4eba-ba73-562ccaeae548/yfm-docs.tar", + "8013150302": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/5af5fdb2-854a-4889-8d34-beb85f4a7c30/yfm-docs.tar", "7414146467": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/66167d72-07fa-444c-8493-dea0a39d034e/yfm-docs.tar", "7654793679": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/68b3d50f-8068-40b2-8e3c-96653135fcb5/yfm-docs.tar", "7487672728": "none-none-none-service_resources/TASKLET_EXECUTABLE/backup/68c62602-dfe7-4bea-873f-cae85e13071f/yfm-docs.tar", diff --git a/build/platform/test_tool/host.ya.make.inc b/build/platform/test_tool/host.ya.make.inc index bb9b3abec6..4399fb5d13 100644 --- a/build/platform/test_tool/host.ya.make.inc +++ b/build/platform/test_tool/host.ya.make.inc @@ -1,12 +1,12 @@ IF (HOST_OS_DARWIN AND HOST_ARCH_X86_64) - DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994789266) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018525488) ELSEIF (HOST_OS_DARWIN AND HOST_ARCH_ARM64) - DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994784587) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018523316) ELSEIF (HOST_OS_LINUX AND HOST_ARCH_X86_64) - DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994797288) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018529985) ELSEIF (HOST_OS_LINUX AND HOST_ARCH_AARCH64) - DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994780427) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018521599) ELSEIF (HOST_OS_WINDOWS AND HOST_ARCH_X86_64) - DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994793586) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018527620) ENDIF() diff --git a/build/platform/test_tool/host_os.ya.make.inc b/build/platform/test_tool/host_os.ya.make.inc index a43a6004b0..1b8adbc03a 100644 --- a/build/platform/test_tool/host_os.ya.make.inc +++ b/build/platform/test_tool/host_os.ya.make.inc @@ -1,12 +1,12 @@ IF (HOST_OS_DARWIN AND HOST_ARCH_X86_64) - DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994642530) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018808572) ELSEIF (HOST_OS_DARWIN AND HOST_ARCH_ARM64) - DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994640050) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018807025) ELSEIF (HOST_OS_LINUX AND HOST_ARCH_X86_64) - DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994647367) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018811524) ELSEIF (HOST_OS_LINUX AND HOST_ARCH_AARCH64) - DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994637838) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018805118) ELSEIF (HOST_OS_WINDOWS AND HOST_ARCH_X86_64) - DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:7994644702) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:8018809911) ENDIF() diff --git a/build/plugins/_common.py b/build/plugins/_common.py index 7925543cd2..e116d158f6 100644 --- a/build/plugins/_common.py +++ b/build/plugins/_common.py @@ -1,5 +1,4 @@ import six -import sys import hashlib import base64 @@ -61,15 +60,6 @@ def tobuilddir(fname): return fname -def before(s, ss): - p = s.find(ss) - - if p == -1: - return s - - return s[:p] - - def sort_by_keywords(keywords, args): flat = [] res = {} @@ -115,30 +105,10 @@ def resolve_common_const(path): return path -def resolve_to_abs_path(path, source_root, build_root): - if path.startswith('$S') and source_root is not None: - return path.replace('$S', source_root, 1) - if path.startswith('$B') and build_root is not None: - return path.replace('$B', build_root, 1) - return path - - -def resolve_to_ymake_path(path): - return resolve_to_abs_path(path, '${ARCADIA_ROOT}', '${ARCADIA_BUILD_ROOT}') - - def get(fun, num): return fun()[num][0] -def make_tuples(arg_list): - def tpl(): - for x in arg_list: - yield (x, []) - - return list(tpl()) - - def resolve_includes(unit, src, paths): return unit.resolve_include([src] + paths) if paths else [] @@ -169,13 +139,6 @@ def skip_build_root(x): return x -def get_interpreter_path(): - interpreter_path = [sys.executable] - if 'ymake' in interpreter_path[0]: - interpreter_path.append('--python') - return interpreter_path - - def filter_out_by_keyword(test_data, keyword): def _iterate(): i = 0 diff --git a/build/plugins/nots.py b/build/plugins/nots.py index e3f8ab9f0a..7d7f151ae1 100644 --- a/build/plugins/nots.py +++ b/build/plugins/nots.py @@ -2,6 +2,7 @@ import os from enum import auto, StrEnum from typing import Any, Literal, TYPE_CHECKING + # noinspection PyUnresolvedReferences import ymake diff --git a/build/scripts/link_exe.py b/build/scripts/link_exe.py index 89695f2b98..de5e215ab5 100644 --- a/build/scripts/link_exe.py +++ b/build/scripts/link_exe.py @@ -27,9 +27,6 @@ def get_leaks_suppressions(cmd): return supp, newcmd -MUSL_LIBS = '-lc', '-lcrypt', '-ldl', '-lm', '-lpthread', '-lrt', '-lutil' - - CUDA_LIBRARIES = { '-lcublas_static': '-lcublas', '-lcublasLt_static': '-lcublasLt', @@ -258,14 +255,6 @@ def fix_sanitize_flag(cmd, opts): return flags -def fix_cmd_for_musl(cmd): - flags = [] - for flag in cmd: - if flag not in MUSL_LIBS: - flags.append(flag) - return flags - - def fix_cmd_for_dynamic_cuda(cmd): flags = [] for flag in cmd: @@ -325,7 +314,6 @@ def fix_blas_resolving(cmd): def parse_args(args): parser = optparse.OptionParser() parser.disable_interspersed_args() - parser.add_option('--musl', action='store_true') parser.add_option('--custom-step') parser.add_option('--python') parser.add_option('--source-root') @@ -364,9 +352,6 @@ if __name__ == '__main__': cmd = fix_blas_resolving(args) cmd = fix_py2(cmd) cmd = remove_excessive_flags(cmd) - if opts.musl: - cmd = fix_cmd_for_musl(cmd) - cmd = fix_sanitize_flag(cmd, opts) if opts.dynamic_cuda: diff --git a/build/scripts/link_lib.py b/build/scripts/link_lib.py index b792540fd0..5db51d7c69 100644 --- a/build/scripts/link_lib.py +++ b/build/scripts/link_lib.py @@ -25,9 +25,8 @@ class Opts(object): self.llvm_ar_format = args[2] self.build_root = args[3] self.plugin = args[4] - self.enable_openssl3 = args[5] - self.output = args[6] - auto_input = args[7:] + self.output = args[5] + auto_input = args[6:] self.need_modify = False self.extra_args = [] @@ -66,68 +65,6 @@ def get_opts(args): return Opts(args) -def run(*args): - return subprocess.check_output(list(args), shell=False).strip() - - -def gen_renames_1(d): - for l in d.split('\n'): - l = l.strip() - - if ' ' in l: - yield l.split(' ')[-1] - - -def have_prefix(l, p): - for x in l: - if not x.startswith(p): - return False - - return True - - -def gen_renames_2(p, d): - l = list(gen_renames_1(d)) - a = have_prefix(l, '_') - - for s in l: - if 'asan_globals' in s: - continue - - if s in ['HMAC', 'SHA1', 'SHA256', 'SHA256', 'SHA512', 'RC4', 'MD5', 'SHA384']: - continue - - if a and s[1:] in ['HMAC', 'SHA1', 'SHA256', 'SHA256', 'SHA512', 'RC4', 'MD5', 'SHA384']: - continue - - if a: - yield s + ' _' + p + s[1:] - else: - yield s + ' ' + p + s - - -def gen_renames(p, d): - return '\n'.join(gen_renames_2(p, d)).strip() + '\n' - - -def rename_syms(where, ret): - p = 'v1_' - - # find symbols to rename - syms = run(where + 'llvm-nm', '--extern-only', '--defined-only', '-A', ret) - - # prepare rename plan - renames = gen_renames(p, syms) - tmp = ret + '.syms' - - with open(tmp, 'w') as f: - f.write(renames) - - # rename symbols - run(where + 'llvm-objcopy', '--redefine-syms=' + tmp, ret) - os.unlink(tmp) - - if __name__ == "__main__": opts = get_opts(sys.argv[1:]) @@ -176,8 +113,5 @@ if __name__ == "__main__": if exit_code != 0: raise Exception('{0} returned non-zero exit code {1}. Stop.'.format(' '.join(cmd), exit_code)) - if opts.enable_openssl3 != 'no-openssl3' and os.path.basename(opts.output) in ['libcontrib-libs-openssl.a', 'liblibs-openssl-crypto.a']: - rename_syms(os.path.dirname(opts.archiver) + '/', opts.output) - if opts.ar_plugin: subprocess.check_call([sys.executable, opts.ar_plugin, opts.output, '--'] + sys.argv[1:]) diff --git a/build/sysincl/linux-headers.yml b/build/sysincl/linux-headers.yml index 27a924b0a6..f26a0b2d6e 100644 --- a/build/sysincl/linux-headers.yml +++ b/build/sysincl/linux-headers.yml @@ -857,6 +857,7 @@ - linux/prctl.h - linux/psample.h - linux/psci.h + - linux/psp-dbc.h - linux/psp-sev.h - linux/ptp_clock.h - linux/ptrace.h diff --git a/build/ymake.core.conf b/build/ymake.core.conf index e29b47c469..34a2f5dbb2 100644 --- a/build/ymake.core.conf +++ b/build/ymake.core.conf @@ -770,7 +770,6 @@ module _BASE_UNIT: _BARE_UNIT { when ($MUSL == "yes") { CFLAGS += -D_musl_ LINK_DYN_LIB_FLAGS += --musl - LINK_SCRIPT_EXE_FLAGS += --musl PEERDIR+=contrib/libs/musl/include } @@ -4568,10 +4567,10 @@ macro RUN_PYTHON3(ScriptPath, IN{input}[], IN_NOPARSE{input}[], OUT{output}[], O } # tag:java-specific -macro _RUN_ANTLR_BASE(IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_NOAUTO{output}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], TOOL[], STDOUT="", STDOUT_NOAUTO="", CWD="", JAR[], SEM="run_java", SEM_ARGS_PREFIX="", ENV[], HIDE_OUTPUT?"stderr2stdout":"stdout2stderr", Args...) { +macro _RUN_ANTLR_BASE(IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_NOAUTO{output}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], TOOL[], STDOUT="", STDOUT_NOAUTO="", CWD="", JAR[], SEM="run_java", ENV[], HIDE_OUTPUT?"stderr2stdout":"stdout2stderr", Args...) { PEERDIR(build/platform/java/jdk $JDK_RESOURCE_PEERDIR) .CMD=${cwd:CWD} ${env:ENV} $YMAKE_PYTHON ${input;pre=build/scripts/:HIDE_OUTPUT.py} $JDK_RESOURCE/bin/java $JAR $Args ${hide;tool:TOOL} ${hide;input:IN} ${hide;context=TEXT;input:IN_NOPARSE} ${hide;output_include:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${stdout;output:STDOUT} ${stdout;noauto;output:STDOUT_NOAUTO} ${hide;kv:"p JV"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"} - .SEM=custom_runs-ITEM && custom_runs-depends ${input:IN} && custom_runs-command $SEM $Args && custom_runs-outputs ${output:OUT} ${noauto;output:OUT_NOAUTO} ${pre=&& custom_runs-cwd :CWD} + .SEM=custom_runs-ITEM && custom_runs-depends ${input:IN} && custom_runs-command $SEM && custom_runs-command $Args && custom_runs-outputs ${output:OUT} ${noauto;output:OUT_NOAUTO} ${pre=&& custom_runs-cwd :CWD} } ### @usage: FROM_SANDBOX([FILE] resource_id [AUTOUPDATED script] [RENAME <resource files>] OUT_[NOAUTO] <output files> [EXECUTABLE] [OUTPUT_INCLUDES <include files>] [INDUCED_DEPS $VARs...]) @@ -4930,14 +4929,14 @@ macro ASM_PREINCLUDE(PREINCLUDES...) { ### ### Macro to invoke ANTLR3 generator (general case) macro RUN_ANTLR(IN[], IN_NOPARSE[], OUT[], OUT_NOAUTO[], OUTPUT_INCLUDES[], INDUCED_DEPS[], CWD="", Args...) { - _RUN_ANTLR_BASE($Args IN $IN IN_NOPARSE $IN_NOPARSE OUT $OUT OUT_NOAUTO $OUT_NOAUTO OUTPUT_INCLUDES $OUTPUT_INCLUDES INDUCED_DEPS $INDUCED_DEPS ${pre=CWD :CWD} JAR -jar ${input:"contrib/java/antlr/antlr3/antlr.jar"} SEM run_antlr SEM_ARGS_PREFIX ANTLER_ARGS) + _RUN_ANTLR_BASE($Args IN $IN IN_NOPARSE $IN_NOPARSE OUT $OUT OUT_NOAUTO $OUT_NOAUTO OUTPUT_INCLUDES $OUTPUT_INCLUDES INDUCED_DEPS $INDUCED_DEPS ${pre=CWD :CWD} JAR -jar ${input:"contrib/java/antlr/antlr3/antlr.jar"} SEM run_antlr) } ### @usage: RUN_ANTLR4(Args...) ### ### Macro to invoke ANTLR4 generator (general case) macro RUN_ANTLR4(IN[], IN_NOPARSE[], OUT[], OUT_NOAUTO[], OUTPUT_INCLUDES[], INDUCED_DEPS[], CWD="", Args...) { - _RUN_ANTLR_BASE($Args IN $IN IN_NOPARSE $IN_NOPARSE OUT $OUT OUT_NOAUTO $OUT_NOAUTO OUTPUT_INCLUDES $OUTPUT_INCLUDES INDUCED_DEPS $INDUCED_DEPS ${pre=CWD :CWD} JAR -jar ${input:"contrib/java/antlr/antlr4/antlr.jar"} SEM run_antlr4 SEM_ARGS_PREFIX ANTLER_ARGS) + _RUN_ANTLR_BASE($Args IN $IN IN_NOPARSE $IN_NOPARSE OUT $OUT OUT_NOAUTO $OUT_NOAUTO OUTPUT_INCLUDES $OUTPUT_INCLUDES INDUCED_DEPS $INDUCED_DEPS ${pre=CWD :CWD} JAR -jar ${input:"contrib/java/antlr/antlr4/antlr.jar"} SEM run_antlr4) } _ANTLR4_LISTENER_GRAMMAR=-listener diff --git a/contrib/libs/breakpad/microdump_stackwalk/ya.make b/contrib/libs/breakpad/microdump_stackwalk/ya.make index 6fb8c0572d..f58cbc68f9 100644 --- a/contrib/libs/breakpad/microdump_stackwalk/ya.make +++ b/contrib/libs/breakpad/microdump_stackwalk/ya.make @@ -16,7 +16,7 @@ LICENSE_TEXTS(.yandex_meta/licenses.list.txt) VERSION(2022.07.12) PEERDIR( - contrib/libs/breakpad/src/third_party/libdisasm + contrib/libs/breakpad/src ) ADDINCL( @@ -36,36 +36,7 @@ SRCDIR(contrib/libs/breakpad/src) SRCS( common/path_helper.cc - processor/basic_code_modules.cc - processor/basic_source_line_resolver.cc - processor/call_stack.cc - processor/cfi_frame_info.cc - processor/convert_old_arm64_context.cc - processor/disassembler_x86.cc - processor/dump_context.cc - processor/dump_object.cc - processor/logging.cc - processor/microdump.cc - processor/microdump_processor.cc processor/microdump_stackwalk.cc - processor/pathname_stripper.cc - processor/process_state.cc - processor/simple_symbol_supplier.cc - processor/source_line_resolver_base.cc - processor/stack_frame_cpu.cc - processor/stack_frame_symbolizer.cc - processor/stackwalk_common.cc - processor/stackwalker.cc - processor/stackwalker_address_list.cc - processor/stackwalker_amd64.cc - processor/stackwalker_arm.cc - processor/stackwalker_arm64.cc - processor/stackwalker_mips.cc - processor/stackwalker_ppc.cc - processor/stackwalker_ppc64.cc - processor/stackwalker_sparc.cc - processor/stackwalker_x86.cc - processor/tokenize.cc ) END() diff --git a/contrib/libs/breakpad/minidump_stackwalk/ya.make b/contrib/libs/breakpad/minidump_stackwalk/ya.make index 7a1a334307..60aff38ff9 100644 --- a/contrib/libs/breakpad/minidump_stackwalk/ya.make +++ b/contrib/libs/breakpad/minidump_stackwalk/ya.make @@ -16,7 +16,7 @@ LICENSE_TEXTS(.yandex_meta/licenses.list.txt) VERSION(2022.07.12) PEERDIR( - contrib/libs/breakpad/src/third_party/libdisasm + contrib/libs/breakpad/src ) ADDINCL( @@ -36,41 +36,7 @@ SRCDIR(contrib/libs/breakpad/src) SRCS( common/path_helper.cc - processor/basic_code_modules.cc - processor/basic_source_line_resolver.cc - processor/call_stack.cc - processor/cfi_frame_info.cc - processor/convert_old_arm64_context.cc - processor/disassembler_x86.cc - processor/dump_context.cc - processor/dump_object.cc - processor/exploitability.cc - processor/exploitability_linux.cc - processor/exploitability_win.cc - processor/logging.cc - processor/minidump.cc - processor/minidump_processor.cc processor/minidump_stackwalk.cc - processor/pathname_stripper.cc - processor/proc_maps_linux.cc - processor/process_state.cc - processor/simple_symbol_supplier.cc - processor/source_line_resolver_base.cc - processor/stack_frame_cpu.cc - processor/stack_frame_symbolizer.cc - processor/stackwalk_common.cc - processor/stackwalker.cc - processor/stackwalker_address_list.cc - processor/stackwalker_amd64.cc - processor/stackwalker_arm.cc - processor/stackwalker_arm64.cc - processor/stackwalker_mips.cc - processor/stackwalker_ppc.cc - processor/stackwalker_ppc64.cc - processor/stackwalker_sparc.cc - processor/stackwalker_x86.cc - processor/symbolic_constants_win.cc - processor/tokenize.cc ) END() diff --git a/contrib/libs/breakpad/src/.yandex_meta/licenses.list.txt b/contrib/libs/breakpad/src/.yandex_meta/licenses.list.txt index 384aae6f5d..75fd1567b3 100644 --- a/contrib/libs/breakpad/src/.yandex_meta/licenses.list.txt +++ b/contrib/libs/breakpad/src/.yandex_meta/licenses.list.txt @@ -547,6 +547,146 @@ included version has been heavily modified by Rich Felker in 2012, in the interests of size, simplicity, and namespace cleanliness. +====================Custom-clarified-artistic-proofread==================== + The "Clarified Artistic License" + + Preamble + +The intent of this document is to state the conditions under which a +Package may be copied, such that the Copyright Holder maintains some +semblance of artistic control over the development of the package, +while giving the users of the package the right to use and distribute +the Package in a more-or-less customary fashion, plus the right to make +reasonable modifications. + +Definitions: + + "Package" refers to the collection of files distributed by the + Copyright Holder, and derivatives of that collection of files + created through textual modification. + + "Standard Version" refers to such a Package if it has not been + modified, or has been modified in accordance with the wishes + of the Copyright Holder as specified below. + + "Copyright Holder" is whoever is named in the copyright or + copyrights for the package. + + "You" is you, if you're thinking about copying or distributing + this Package. + + "Distribution fee" is a fee you charge for providing a copy of this + Package to another party. + + "Freely Available" means that no fee is charged for the right to use + the item, though there may be fees involved in handling the item. + +1. You may make and give away verbatim copies of the source form of the +Standard Version of this Package without restriction, provided that you +duplicate all of the original copyright notices and associated disclaimers. + +2. You may apply bug fixes, portability fixes and other modifications +derived from the Public Domain, or those made Freely Available, or from +the Copyright Holder. A Package modified in such a way shall still be +considered the Standard Version. + +3. You may otherwise modify your copy of this Package in any way, provided +that you insert a prominent notice in each changed file stating how and +when you changed that file, and provided that you do at least ONE of the +following: + + a) place your modifications in the Public Domain or otherwise make them + Freely Available, such as by posting said modifications to Usenet or + an equivalent medium, or placing the modifications on a major archive + site allowing unrestricted access to them, or by allowing the Copyright + Holder to include your modifications in the Standard Version of the + Package. + + b) use the modified Package only within your corporation or organization. + + c) rename any non-standard executables so the names do not conflict + with standard executables, which must also be provided, and provide + a separate manual page for each non-standard executable that clearly + documents how it differs from the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + + e) permit and encourge anyone who receives a copy of the modified Package + permission to make your modifications Freely Available in some specific + way. + +4. You may distribute the programs of this Package in object code or +executable form, provided that you do at least ONE of the following: + + a) distribute a Standard Version of the executables and library files, + together with instructions (in the manual page or equivalent) on where + to get the Standard Version. + + b) accompany the distribution with the machine-readable source of + the Package with your modifications. + + c) give non-standard executables non-standard names, and clearly + document the differences in manual pages (or equivalent), together + with instructions on where to get the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + + e) offer the machine-readable source of the Package, with your + modifications, by mail order. + +5. You may charge a distribution fee for any distribution of this Package. +If you offer support for this Package, you may charge any fee you choose +for that support. You may not charge a license fee for the right to use +this Package itself. You may distribute this Package in aggregate with +other (possibly commercial and possibly nonfree) programs as part of a +larger (possibly commercial and possibly nonfree) software distribution, +and charge license fees for other parts of that software distribution, +provided that you do not advertise this Package as a product of your own. +If the Package includes an interpreter, You may embed this Package's +interpreter within an executable of yours (by linking); this shall be +construed as a mere form of aggregation, provided that the complete +Standard Version of the interpreter is so embedded. + +6. The scripts and library files supplied as input to or produced as +output from the programs of this Package do not automatically fall +under the copyright of this Package, but belong to whoever generated +them, and may be sold commercially, and may be aggregated with this +Package. If such scripts or library files are aggregated with this +Package via the so-called "undump" or "unexec" methods of producing a +binary executable image, then distribution of such an image shall +neither be construed as a distribution of this Package nor shall it +fall under the restrictions of Paragraphs 3 and 4, provided that you do +not represent such an executable image as a Standard Version of this +Package. + +7. C subroutines (or comparably compiled subroutines in other +languages) supplied by you and linked into this Package in order to +emulate subroutines and variables of the language defined by this +Package shall not be considered part of this Package, but are the +equivalent of input as in Paragraph 6, provided these subroutines do +not change the language in any way that would cause it to fail the +regression tests for the language. + +8. Aggregation of the Standard Version of the Package with a commercial +distribution is always permitted provided that the use of this Package is +embedded; that is, when no overt attempt is made to make this Package's +interfaces visible to the end user of the commercial distribution. +Such use shall not be construed as a distribution of this Package. + +9. The name of the Copyright Holder may not be used to endorse or promote +products derived from this software without specific prior written permission. + +10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + The End + +====================Custom-clarified-artistic-proofread==================== +License: Clarified-Artistic +License File: LICENSE + + ====================FSFAP==================== Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/contrib/libs/breakpad/src/third_party/libdisasm/.yandex_meta/licenses.list.txt b/contrib/libs/breakpad/src/third_party/libdisasm/.yandex_meta/licenses.list.txt deleted file mode 100644 index a608afd8eb..0000000000 --- a/contrib/libs/breakpad/src/third_party/libdisasm/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,800 +0,0 @@ -====================APSL-2.0==================== -@APPLE_LICENSE_HEADER_START@ - -This file contains Original Code and/or Modifications of Original Code -as defined in and that are subject to the Apple Public Source License -Version 2.0 (the 'License'). You may not use this file except in -compliance with the License. Please obtain a copy of the License at -http://www.opensource.apple.com/apsl/ and read it before using this -file. - -The Original Code and all software distributed under the License are -distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER -EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, -INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. -Please see the License for the specific language governing rights and -limitations under the License. - -@APPLE_LICENSE_HEADER_END@ - - -====================BSD-3-Clause==================== -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -====================BSD-3-Clause==================== -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -====================BSD-4-Clause-UC==================== -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. All advertising materials mentioning features or use of this software - must display the following acknowledgement: - This product includes software developed by the University of - California, Berkeley and its contributors. -4. Neither the name of the University nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. - -====================COPYRIGHT==================== - Copyright (C) 2008 Google, Inc - Contributed by Paul Pluzhnikov <ppluzhnikov@google.com> - Copyright (C) 2010 Konstantin Belousov <kib@freebsd.org> - - -====================COPYRIGHT==================== -# Copyright 2010 Google Inc. All rights reserved. - - -====================COPYRIGHT==================== -Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, -Inc. - - -====================COPYRIGHT==================== -Copyright (c) 1989, 1993 -The Regents of the University of California. All rights reserved. - - -====================COPYRIGHT==================== -Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - - -====================COPYRIGHT==================== -Copyright (c) 2006, Google Inc. -All rights reserved. - - -====================COPYRIGHT==================== -Copyright 2001-2004 Unicode, Inc. - - -====================ClArtistic==================== - The "Clarified Artistic License" - - Preamble - -The intent of this document is to state the conditions under which a -Package may be copied, such that the Copyright Holder maintains some -semblance of artistic control over the development of the package, -while giving the users of the package the right to use and distribute -the Package in a more-or-less customary fashion, plus the right to make -reasonable modifications. - -Definitions: - - "Package" refers to the collection of files distributed by the - Copyright Holder, and derivatives of that collection of files - created through textual modification. - - "Standard Version" refers to such a Package if it has not been - modified, or has been modified in accordance with the wishes - of the Copyright Holder as specified below. - - "Copyright Holder" is whoever is named in the copyright or - copyrights for the package. - - "You" is you, if you're thinking about copying or distributing - this Package. - - "Distribution fee" is a fee you charge for providing a copy of this - Package to another party. - - "Freely Available" means that no fee is charged for the right to use - the item, though there may be fees involved in handling the item. - -1. You may make and give away verbatim copies of the source form of the -Standard Version of this Package without restriction, provided that you -duplicate all of the original copyright notices and associated disclaimers. - -2. You may apply bug fixes, portability fixes and other modifications -derived from the Public Domain, or those made Freely Available, or from -the Copyright Holder. A Package modified in such a way shall still be -considered the Standard Version. - -3. You may otherwise modify your copy of this Package in any way, provided -that you insert a prominent notice in each changed file stating how and -when you changed that file, and provided that you do at least ONE of the -following: - - a) place your modifications in the Public Domain or otherwise make them - Freely Available, such as by posting said modifications to Usenet or - an equivalent medium, or placing the modifications on a major archive - site allowing unrestricted access to them, or by allowing the Copyright - Holder to include your modifications in the Standard Version of the - Package. - - b) use the modified Package only within your corporation or organization. - - c) rename any non-standard executables so the names do not conflict - with standard executables, which must also be provided, and provide - a separate manual page for each non-standard executable that clearly - documents how it differs from the Standard Version. - - d) make other distribution arrangements with the Copyright Holder. - - e) permit and encourge anyone who receives a copy of the modified Package - permission to make your modifications Freely Available in some specific - way. - -4. You may distribute the programs of this Package in object code or -executable form, provided that you do at least ONE of the following: - - a) distribute a Standard Version of the executables and library files, - together with instructions (in the manual page or equivalent) on where - to get the Standard Version. - - b) accompany the distribution with the machine-readable source of - the Package with your modifications. - - c) give non-standard executables non-standard names, and clearly - document the differences in manual pages (or equivalent), together - with instructions on where to get the Standard Version. - - d) make other distribution arrangements with the Copyright Holder. - - e) offer the machine-readable source of the Package, with your - modifications, by mail order. - -5. You may charge a distribution fee for any distribution of this Package. -If you offer support for this Package, you may charge any fee you choose -for that support. You may not charge a license fee for the right to use -this Package itself. You may distribute this Package in aggregate with -other (possibly commercial and possibly nonfree) programs as part of a -larger (possibly commercial and possibly nonfree) software distribution, -and charge license fees for other parts of that software distribution, -provided that you do not advertise this Package as a product of your own. -If the Package includes an interpreter, You may embed this Package's -interpreter within an executable of yours (by linking); this shall be -construed as a mere form of aggregation, provided that the complete -Standard Version of the interpreter is so embedded. - -6. The scripts and library files supplied as input to or produced as -output from the programs of this Package do not automatically fall -under the copyright of this Package, but belong to whoever generated -them, and may be sold commercially, and may be aggregated with this -Package. If such scripts or library files are aggregated with this -Package via the so-called "undump" or "unexec" methods of producing a -binary executable image, then distribution of such an image shall -neither be construed as a distribution of this Package nor shall it -fall under the restrictions of Paragraphs 3 and 4, provided that you do -not represent such an executable image as a Standard Version of this -Package. - -7. C subroutines (or comparably compiled subroutines in other -languages) supplied by you and linked into this Package in order to -emulate subroutines and variables of the language defined by this -Package shall not be considered part of this Package, but are the -equivalent of input as in Paragraph 6, provided these subroutines do -not change the language in any way that would cause it to fail the -regression tests for the language. - -8. Aggregation of the Standard Version of the Package with a commercial -distribution is always permitted provided that the use of this Package is -embedded; that is, when no overt attempt is made to make this Package's -interfaces visible to the end user of the commercial distribution. -Such use shall not be construed as a distribution of this Package. - -9. The name of the Copyright Holder may not be used to endorse or promote -products derived from this software without specific prior written permission. - -10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED -WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - - The End - -====================ClArtistic==================== -License: Clarified-Artistic -License File: LICENSE - - -====================FSFAP==================== - Copying and distribution of this file, with or without modification, -are permitted in any medium without royalty provided the copyright -notice and this notice are preserved. This file is offered as-is, -without warranty of any kind. - - -====================File: AUTHORS==================== -opensource@google.com - - -====================File: LICENSE==================== -Copyright (c) 2006, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------- - -Copyright 2001-2004 Unicode, Inc. - -Disclaimer - -This source code is provided as is by Unicode, Inc. No claims are -made as to fitness for any particular purpose. No warranties of any -kind are expressed or implied. The recipient agrees to determine -applicability of information provided. If this file has been -purchased on magnetic or optical media from Unicode, Inc., the -sole remedy for any claim will be exchange of defective media -within 90 days of receipt. - -Limitations on Rights to Redistribute This Code - -Unicode, Inc. hereby grants the right to freely use the information -supplied in this file in the creation of products supporting the -Unicode Standard, and to make copies of this file in any form -for internal or external distribution as long as this notice -remains attached. - --------------------------------------------------------------------- - -libunwind - a platform-independent unwind library - Copyright (C) 2008 Google, Inc - Contributed by Paul Pluzhnikov <ppluzhnikov@google.com> - Copyright (C) 2010 Konstantin Belousov <kib@freebsd.org> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - --------------------------------------------------------------------- - -Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - -@APPLE_LICENSE_HEADER_START@ - -This file contains Original Code and/or Modifications of Original Code -as defined in and that are subject to the Apple Public Source License -Version 2.0 (the 'License'). You may not use this file except in -compliance with the License. Please obtain a copy of the License at -http://www.opensource.apple.com/apsl/ and read it before using this -file. - -The Original Code and all software distributed under the License are -distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER -EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, -INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. -Please see the License for the specific language governing rights and -limitations under the License. - -@APPLE_LICENSE_HEADER_END@ - --------------------------------------------------------------------- - -Copyright (c) 1989, 1993 -The Regents of the University of California. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. All advertising materials mentioning features or use of this software - must display the following acknowledgement: - This product includes software developed by the University of - California, Berkeley and its contributors. -4. Neither the name of the University nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. - - -====================File: src/third_party/libdisasm/LICENSE==================== - - - - - The "Clarified Artistic License" - - Preamble - -The intent of this document is to state the conditions under which a -Package may be copied, such that the Copyright Holder maintains some -semblance of artistic control over the development of the package, -while giving the users of the package the right to use and distribute -the Package in a more-or-less customary fashion, plus the right to make -reasonable modifications. - -Definitions: - - "Package" refers to the collection of files distributed by the - Copyright Holder, and derivatives of that collection of files - created through textual modification. - - "Standard Version" refers to such a Package if it has not been - modified, or has been modified in accordance with the wishes - of the Copyright Holder as specified below. - - "Copyright Holder" is whoever is named in the copyright or - copyrights for the package. - - "You" is you, if you're thinking about copying or distributing - this Package. - - "Distribution fee" is a fee you charge for providing a copy of this - Package to another party. - - "Freely Available" means that no fee is charged for the right to use - the item, though there may be fees involved in handling the item. - -1. You may make and give away verbatim copies of the source form of the -Standard Version of this Package without restriction, provided that you -duplicate all of the original copyright notices and associated disclaimers. - -2. You may apply bug fixes, portability fixes and other modifications -derived from the Public Domain, or those made Freely Available, or from -the Copyright Holder. A Package modified in such a way shall still be -considered the Standard Version. - -3. You may otherwise modify your copy of this Package in any way, provided -that you insert a prominent notice in each changed file stating how and -when you changed that file, and provided that you do at least ONE of the -following: - - a) place your modifications in the Public Domain or otherwise make them - Freely Available, such as by posting said modifications to Usenet or - an equivalent medium, or placing the modifications on a major archive - site allowing unrestricted access to them, or by allowing the Copyright - Holder to include your modifications in the Standard Version of the - Package. - - b) use the modified Package only within your corporation or organization. - - c) rename any non-standard executables so the names do not conflict - with standard executables, which must also be provided, and provide - a separate manual page for each non-standard executable that clearly - documents how it differs from the Standard Version. - - d) make other distribution arrangements with the Copyright Holder. - - e) permit and encourge anyone who receives a copy of the modified Package - permission to make your modifications Freely Available in some specific - way. - -4. You may distribute the programs of this Package in object code or -executable form, provided that you do at least ONE of the following: - - a) distribute a Standard Version of the executables and library files, - together with instructions (in the manual page or equivalent) on where - to get the Standard Version. - - b) accompany the distribution with the machine-readable source of - the Package with your modifications. - - c) give non-standard executables non-standard names, and clearly - document the differences in manual pages (or equivalent), together - with instructions on where to get the Standard Version. - - d) make other distribution arrangements with the Copyright Holder. - - e) offer the machine-readable source of the Package, with your - modifications, by mail order. - -5. You may charge a distribution fee for any distribution of this Package. -If you offer support for this Package, you may charge any fee you choose -for that support. You may not charge a license fee for the right to use -this Package itself. You may distribute this Package in aggregate with -other (possibly commercial and possibly nonfree) programs as part of a -larger (possibly commercial and possibly nonfree) software distribution, -and charge license fees for other parts of that software distribution, -provided that you do not advertise this Package as a product of your own. -If the Package includes an interpreter, You may embed this Package's -interpreter within an executable of yours (by linking); this shall be -construed as a mere form of aggregation, provided that the complete -Standard Version of the interpreter is so embedded. - -6. The scripts and library files supplied as input to or produced as -output from the programs of this Package do not automatically fall -under the copyright of this Package, but belong to whoever generated -them, and may be sold commercially, and may be aggregated with this -Package. If such scripts or library files are aggregated with this -Package via the so-called "undump" or "unexec" methods of producing a -binary executable image, then distribution of such an image shall -neither be construed as a distribution of this Package nor shall it -fall under the restrictions of Paragraphs 3 and 4, provided that you do -not represent such an executable image as a Standard Version of this -Package. - -7. C subroutines (or comparably compiled subroutines in other -languages) supplied by you and linked into this Package in order to -emulate subroutines and variables of the language defined by this -Package shall not be considered part of this Package, but are the -equivalent of input as in Paragraph 6, provided these subroutines do -not change the language in any way that would cause it to fail the -regression tests for the language. - -8. Aggregation of the Standard Version of the Package with a commercial -distribution is always permitted provided that the use of this Package is -embedded; that is, when no overt attempt is made to make this Package's -interfaces visible to the end user of the commercial distribution. -Such use shall not be construed as a distribution of this Package. - -9. The name of the Copyright Holder may not be used to endorse or promote -products derived from this software without specific prior written permission. - -10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED -WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - - The End - - -====================File: src/third_party/lss/LICENSE==================== -Copyright 2005-2011 Google LLC - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - Neither the name of Google LLC nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -====================File: src/third_party/musl/COPYRIGHT==================== -musl as a whole is licensed under the following standard MIT license: - ----------------------------------------------------------------------- -Copyright © 2005-2014 Rich Felker, et al. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- - -Authors/contributors include: - -Alex Dowad -Alexander Monakov -Anthony G. Basile -Arvid Picciani -Bobby Bingham -Boris Brezillon -Brent Cook -Chris Spiegel -Clément Vasseur -Daniel Micay -Denys Vlasenko -Emil Renner Berthing -Felix Fietkau -Felix Janda -Gianluca Anzolin -Hauke Mehrtens -Hiltjo Posthuma -Isaac Dunham -Jaydeep Patil -Jens Gustedt -Jeremy Huntwork -Jo-Philipp Wich -Joakim Sindholt -John Spencer -Josiah Worcester -Justin Cormack -Khem Raj -Kylie McClain -Luca Barbato -Luka Perkov -M Farkas-Dyck (Strake) -Mahesh Bodapati -Michael Forney -Natanael Copa -Nicholas J. Kain -orc -Pascal Cuoq -Petr Hosek -Pierre Carrier -Rich Felker -Richard Pennington -Shiz -sin -Solar Designer -Stefan Kristiansson -Szabolcs Nagy -Timo Teräs -Trutz Behn -Valentin Ochs -William Haddon - -Portions of this software are derived from third-party works licensed -under terms compatible with the above MIT license: - -The TRE regular expression implementation (src/regex/reg* and -src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed -under a 2-clause BSD license (license text in the source files). The -included version has been heavily modified by Rich Felker in 2012, in -the interests of size, simplicity, and namespace cleanliness. - -Much of the math library code (src/math/* and src/complex/*) is -Copyright © 1993,2004 Sun Microsystems or -Copyright © 2003-2011 David Schultz or -Copyright © 2003-2009 Steven G. Kargl or -Copyright © 2003-2009 Bruce D. Evans or -Copyright © 2008 Stephen L. Moshier -and labelled as such in comments in the individual source files. All -have been licensed under extremely permissive terms. - -The ARM memcpy code (src/string/arm/memcpy_el.S) is Copyright © 2008 -The Android Open Source Project and is licensed under a two-clause BSD -license. It was taken from Bionic libc, used on Android. - -The implementation of DES for crypt (src/crypt/crypt_des.c) is -Copyright © 1994 David Burren. It is licensed under a BSD license. - -The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was -originally written by Solar Designer and placed into the public -domain. The code also comes with a fallback permissive license for use -in jurisdictions that may not recognize the public domain. - -The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011 -Valentin Ochs and is licensed under an MIT-style license. - -The BSD PRNG implementation (src/prng/random.c) and XSI search API -(src/search/*.c) functions are Copyright © 2011 Szabolcs Nagy and -licensed under following terms: "Permission to use, copy, modify, -and/or distribute this code for any purpose with or without fee is -hereby granted. There is no warranty." - -The x86_64 port was written by Nicholas J. Kain and is licensed under -the standard MIT terms. - -The mips and microblaze ports were originally written by Richard -Pennington for use in the ellcc project. The original code was adapted -by Rich Felker for build system and code conventions during upstream -integration. It is licensed under the standard MIT terms. - -The mips64 port was contributed by Imagination Technologies and is -licensed under the standard MIT terms. - -The powerpc port was also originally written by Richard Pennington, -and later supplemented and integrated by John Spencer. It is licensed -under the standard MIT terms. - -All other files which have no copyright comments are original works -produced specifically for use as part of this library, written either -by Rich Felker, the main author of the library, or by one or more -contibutors listed above. Details on authorship of individual files -can be found in the git version control history of the project. The -omission of copyright and license comments in each file is in the -interest of source tree size. - -In addition, permission is hereby granted for all public header files -(include/* and arch/*/bits/*) and crt files intended to be linked into -applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit -the copyright notice and permission notice otherwise required by the -license, and to use these files without any requirement of -attribution. These files include substantial contributions from: - -Bobby Bingham -John Spencer -Nicholas J. Kain -Rich Felker -Richard Pennington -Stefan Kristiansson -Szabolcs Nagy - -all of whom have explicitly granted such permission. - -This file previously contained text expressing a belief that most of -the files covered by the above exception were sufficiently trivial not -to be subject to copyright, resulting in confusion over whether it -negated the permissions granted in the license. In the spirit of -permissive licensing, and of not having licensing issues being an -obstacle to adoption, that text has been removed. - - -====================MIT==================== -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - - -====================Unicode-Mappings==================== -Disclaimer - -This source code is provided as is by Unicode, Inc. No claims are -made as to fitness for any particular purpose. No warranties of any -kind are expressed or implied. The recipient agrees to determine -applicability of information provided. If this file has been -purchased on magnetic or optical media from Unicode, Inc., the -sole remedy for any claim will be exchange of defective media -within 90 days of receipt. - -Limitations on Rights to Redistribute This Code - -Unicode, Inc. hereby grants the right to freely use the information -supplied in this file in the creation of products supporting the -Unicode Standard, and to make copies of this file in any form -for internal or external distribution as long as this notice -remains attached. diff --git a/contrib/libs/breakpad/src/third_party/libdisasm/ya.make b/contrib/libs/breakpad/src/third_party/libdisasm/ya.make deleted file mode 100644 index a6fe00d161..0000000000 --- a/contrib/libs/breakpad/src/third_party/libdisasm/ya.make +++ /dev/null @@ -1,49 +0,0 @@ -# Generated by devtools/yamaker. - -LIBRARY() - -LICENSE( - APSL-2.0 AND - BSD-3-Clause AND - BSD-4-Clause-UC AND - ClArtistic AND - FSFAP AND - MIT AND - Unicode-Mappings -) - -LICENSE_TEXTS(.yandex_meta/licenses.list.txt) - -VERSION(2022.07.12) - -ADDINCL( - contrib/libs/breakpad - contrib/libs/breakpad/src -) - -NO_COMPILER_WARNINGS() - -NO_RUNTIME() - -CFLAGS( - -DHAVE_CONFIG_H -) - -SRCS( - ia32_implicit.c - ia32_insn.c - ia32_invariant.c - ia32_modrm.c - ia32_opcode_tables.c - ia32_operand.c - ia32_reg.c - ia32_settings.c - x86_disasm.c - x86_format.c - x86_imm.c - x86_insn.c - x86_misc.c - x86_operand_list.c -) - -END() diff --git a/contrib/libs/breakpad/src/ya.make b/contrib/libs/breakpad/src/ya.make index 1c683a0576..2611d5f447 100644 --- a/contrib/libs/breakpad/src/ya.make +++ b/contrib/libs/breakpad/src/ya.make @@ -7,6 +7,7 @@ LICENSE( BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause-UC AND + Custom-clarified-artistic-proofread AND FSFAP AND GPL-2.0-only AND LicenseRef-scancode-other-permissive AND @@ -77,6 +78,20 @@ SRCS( processor/stackwalker_x86.cc processor/symbolic_constants_win.cc processor/tokenize.cc + third_party/libdisasm/ia32_implicit.c + third_party/libdisasm/ia32_insn.c + third_party/libdisasm/ia32_invariant.c + third_party/libdisasm/ia32_modrm.c + third_party/libdisasm/ia32_opcode_tables.c + third_party/libdisasm/ia32_operand.c + third_party/libdisasm/ia32_reg.c + third_party/libdisasm/ia32_settings.c + third_party/libdisasm/x86_disasm.c + third_party/libdisasm/x86_format.c + third_party/libdisasm/x86_imm.c + third_party/libdisasm/x86_insn.c + third_party/libdisasm/x86_misc.c + third_party/libdisasm/x86_operand_list.c ) END() diff --git a/contrib/libs/breakpad/ya.make b/contrib/libs/breakpad/ya.make index c73ea50ed0..b4e9494ec8 100644 --- a/contrib/libs/breakpad/ya.make +++ b/contrib/libs/breakpad/ya.make @@ -15,7 +15,6 @@ IF (NOT OS_ANDROID) minidump_stackwalk minidump_upload src - src/third_party/libdisasm src/tools/linux/core2md src/tools/linux/dump_syms src/tools/linux/md2core diff --git a/contrib/libs/linux-headers/.yandex_meta/devtools.copyrights.report b/contrib/libs/linux-headers/.yandex_meta/devtools.copyrights.report index 4ef93db9b0..2a901f7eaf 100644 --- a/contrib/libs/linux-headers/.yandex_meta/devtools.copyrights.report +++ b/contrib/libs/linux-headers/.yandex_meta/devtools.copyrights.report @@ -2832,6 +2832,17 @@ BELONGS ya.make Files with this license: scsi/scsi_bsg_ufs.h [5:6] +KEEP COPYRIGHT_SERVICE_LABEL 8999aed970320ca8558f44732e40779b +BELONGS ya.make + License text: + * Copyright (C) 2023 Advanced Micro Devices, Inc. + Scancode info: + Original SPDX id: COPYRIGHT_SERVICE_LABEL + Score : 100.00 + Match type : COPYRIGHT + Files with this license: + linux/psp-dbc.h [5:5] + KEEP COPYRIGHT_SERVICE_LABEL 89d5fc8805673ffdbe4fc447403720b9 BELONGS ya.make License text: diff --git a/contrib/libs/linux-headers/.yandex_meta/devtools.licenses.report b/contrib/libs/linux-headers/.yandex_meta/devtools.licenses.report index 5a687a56a6..3fee52688f 100644 --- a/contrib/libs/linux-headers/.yandex_meta/devtools.licenses.report +++ b/contrib/libs/linux-headers/.yandex_meta/devtools.licenses.report @@ -2622,7 +2622,7 @@ BELONGS ya.make Match type : REFERENCE Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-copyleft.LICENSE Files with this license: - linux/bpf.h [6330:6330] + linux/bpf.h [6410:6410] KEEP GPL-2.0-or-later WITH Linux-syscall-note 534ccb3153742b07bce86782a49733fc BELONGS ya.make @@ -3494,7 +3494,7 @@ FILE_INCLUDE LICENSES/exceptions/Linux-syscall-note found in files: linux/rxrpc. KEEP GPL-2.0-only WITH Linux-syscall-note 8f065979effd897c5008afa60beda79d BELONGS ya.make -FILE_INCLUDE LICENSES/exceptions/Linux-syscall-note found in files: drm/ivpu_accel.h at line 1, linux/amt.h at line 1, linux/can/j1939.h at line 1, linux/can/netlink.h at line 1, linux/can/vxcan.h at line 1, linux/ccs.h at line 1, linux/dw100.h at line 1, linux/ethtool_netlink.h at line 1, linux/gpio.h at line 1, linux/input-event-codes.h at line 1, linux/netfilter/xt_IDLETIMER.h at line 1, linux/psp-sev.h at line 1, linux/remoteproc_cdev.h at line 1, linux/sev-guest.h at line 1, linux/wmi.h at line 1, linux/wwan.h at line 1 +FILE_INCLUDE LICENSES/exceptions/Linux-syscall-note found in files: drm/ivpu_accel.h at line 1, linux/amt.h at line 1, linux/can/j1939.h at line 1, linux/can/netlink.h at line 1, linux/can/vxcan.h at line 1, linux/ccs.h at line 1, linux/dw100.h at line 1, linux/ethtool_netlink.h at line 1, linux/gpio.h at line 1, linux/input-event-codes.h at line 1, linux/netfilter/xt_IDLETIMER.h at line 1, linux/psp-dbc.h at line 1, linux/psp-sev.h at line 1, linux/remoteproc_cdev.h at line 1, linux/sev-guest.h at line 1, linux/wmi.h at line 1, linux/wwan.h at line 1 License text: /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ Scancode info: @@ -3514,6 +3514,7 @@ FILE_INCLUDE LICENSES/exceptions/Linux-syscall-note found in files: drm/ivpu_acc linux/gpio.h [1:1] linux/input-event-codes.h [1:1] linux/netfilter/xt_IDLETIMER.h [1:1] + linux/psp-dbc.h [1:1] linux/psp-sev.h [1:1] linux/remoteproc_cdev.h [1:1] linux/sev-guest.h [1:1] @@ -3536,6 +3537,7 @@ FILE_INCLUDE LICENSES/exceptions/Linux-syscall-note found in files: drm/ivpu_acc linux/gpio.h [1:1] linux/input-event-codes.h [1:1] linux/netfilter/xt_IDLETIMER.h [1:1] + linux/psp-dbc.h [1:1] linux/psp-sev.h [1:1] linux/remoteproc_cdev.h [1:1] linux/sev-guest.h [1:1] @@ -4172,7 +4174,7 @@ BELONGS ya.make Match type : REFERENCE Links : http://www.opensource.org/licenses/BSD-3-Clause, https://spdx.org/licenses/BSD-3-Clause Files with this license: - linux/fuse.h [336:336] + linux/fuse.h [374:374] KEEP GPL-2.0-or-later WITH Linux-syscall-note c196f33d1f74889d4f98f65f6f70ea8f BELONGS ya.make diff --git a/contrib/libs/linux-headers/.yandex_meta/licenses.list.txt b/contrib/libs/linux-headers/.yandex_meta/licenses.list.txt index 922010a71f..bb6679c278 100644 --- a/contrib/libs/linux-headers/.yandex_meta/licenses.list.txt +++ b/contrib/libs/linux-headers/.yandex_meta/licenses.list.txt @@ -2020,6 +2020,10 @@ ====================COPYRIGHT==================== + * Copyright (C) 2023 Advanced Micro Devices, Inc. + + +====================COPYRIGHT==================== * Copyright (C) 2023 BayLibre Incorporated - https://www.baylibre.com/ diff --git a/contrib/libs/linux-headers/asm-generic/siginfo.h b/contrib/libs/linux-headers/asm-generic/siginfo.h index 568e11a8d6..af51be7025 100644 --- a/contrib/libs/linux-headers/asm-generic/siginfo.h +++ b/contrib/libs/linux-headers/asm-generic/siginfo.h @@ -242,7 +242,8 @@ typedef struct siginfo { #define SEGV_ADIPERR 7 /* Precise MCD exception */ #define SEGV_MTEAERR 8 /* Asynchronous ARM MTE error */ #define SEGV_MTESERR 9 /* Synchronous ARM MTE exception */ -#define NSIGSEGV 9 +#define SEGV_CPERR 10 /* Control protection fault */ +#define NSIGSEGV 10 /* * SIGBUS si_codes diff --git a/contrib/libs/linux-headers/asm-generic/unistd.h b/contrib/libs/linux-headers/asm-generic/unistd.h index fd6c1cb585..abe087c53b 100644 --- a/contrib/libs/linux-headers/asm-generic/unistd.h +++ b/contrib/libs/linux-headers/asm-generic/unistd.h @@ -820,8 +820,11 @@ __SYSCALL(__NR_set_mempolicy_home_node, sys_set_mempolicy_home_node) #define __NR_cachestat 451 __SYSCALL(__NR_cachestat, sys_cachestat) +#define __NR_fchmodat2 452 +__SYSCALL(__NR_fchmodat2, sys_fchmodat2) + #undef __NR_syscalls -#define __NR_syscalls 452 +#define __NR_syscalls 453 /* * 32 bit systems traditionally used different diff --git a/contrib/libs/linux-headers/asm/mman_x86.h b/contrib/libs/linux-headers/asm/mman_x86.h index 775dbd3aff..46cdc941f9 100644 --- a/contrib/libs/linux-headers/asm/mman_x86.h +++ b/contrib/libs/linux-headers/asm/mman_x86.h @@ -3,14 +3,10 @@ #define _ASM_X86_MMAN_H #define MAP_32BIT 0x40 /* only give out 32bit addresses */ +#define MAP_ABOVE4G 0x80 /* only map above 4GB */ -#ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS -#define arch_calc_vm_prot_bits(prot, key) ( \ - ((key) & 0x1 ? VM_PKEY_BIT0 : 0) | \ - ((key) & 0x2 ? VM_PKEY_BIT1 : 0) | \ - ((key) & 0x4 ? VM_PKEY_BIT2 : 0) | \ - ((key) & 0x8 ? VM_PKEY_BIT3 : 0)) -#endif +/* Flags for map_shadow_stack(2) */ +#define SHADOW_STACK_SET_TOKEN (1ULL << 0) /* Set up a restore token in the shadow stack */ #include <asm-generic/mman.h> diff --git a/contrib/libs/linux-headers/asm/prctl_x86.h b/contrib/libs/linux-headers/asm/prctl_x86.h index e8d7ebbca1..384e2cc6ac 100644 --- a/contrib/libs/linux-headers/asm/prctl_x86.h +++ b/contrib/libs/linux-headers/asm/prctl_x86.h @@ -23,9 +23,21 @@ #define ARCH_MAP_VDSO_32 0x2002 #define ARCH_MAP_VDSO_64 0x2003 +/* Don't use 0x3001-0x3004 because of old glibcs */ + #define ARCH_GET_UNTAG_MASK 0x4001 #define ARCH_ENABLE_TAGGED_ADDR 0x4002 #define ARCH_GET_MAX_TAG_BITS 0x4003 #define ARCH_FORCE_TAGGED_SVA 0x4004 +#define ARCH_SHSTK_ENABLE 0x5001 +#define ARCH_SHSTK_DISABLE 0x5002 +#define ARCH_SHSTK_LOCK 0x5003 +#define ARCH_SHSTK_UNLOCK 0x5004 +#define ARCH_SHSTK_STATUS 0x5005 + +/* ARCH_SHSTK_ features bits */ +#define ARCH_SHSTK_SHSTK (1ULL << 0) +#define ARCH_SHSTK_WRSS (1ULL << 1) + #endif /* _ASM_X86_PRCTL_H */ diff --git a/contrib/libs/linux-headers/asm/unistd-eabi_arm.h b/contrib/libs/linux-headers/asm/unistd-eabi_arm.h index de7a6f7dd9..9c2e7aebc3 100644 --- a/contrib/libs/linux-headers/asm/unistd-eabi_arm.h +++ b/contrib/libs/linux-headers/asm/unistd-eabi_arm.h @@ -405,5 +405,6 @@ #define __NR_futex_waitv (__NR_SYSCALL_BASE + 449) #define __NR_set_mempolicy_home_node (__NR_SYSCALL_BASE + 450) #define __NR_cachestat (__NR_SYSCALL_BASE + 451) +#define __NR_fchmodat2 (__NR_SYSCALL_BASE + 452) #endif /* _ASM_UNISTD_EABI_H */ diff --git a/contrib/libs/linux-headers/asm/unistd-oabi_arm.h b/contrib/libs/linux-headers/asm/unistd-oabi_arm.h index c99c445653..a35a910132 100644 --- a/contrib/libs/linux-headers/asm/unistd-oabi_arm.h +++ b/contrib/libs/linux-headers/asm/unistd-oabi_arm.h @@ -417,5 +417,6 @@ #define __NR_futex_waitv (__NR_SYSCALL_BASE + 449) #define __NR_set_mempolicy_home_node (__NR_SYSCALL_BASE + 450) #define __NR_cachestat (__NR_SYSCALL_BASE + 451) +#define __NR_fchmodat2 (__NR_SYSCALL_BASE + 452) #endif /* _ASM_UNISTD_OABI_H */ diff --git a/contrib/libs/linux-headers/asm/unistd_32_powerpc.h b/contrib/libs/linux-headers/asm/unistd_32_powerpc.h index 8206758691..8ef94bbac1 100644 --- a/contrib/libs/linux-headers/asm/unistd_32_powerpc.h +++ b/contrib/libs/linux-headers/asm/unistd_32_powerpc.h @@ -433,6 +433,7 @@ #define __NR_futex_waitv 449 #define __NR_set_mempolicy_home_node 450 #define __NR_cachestat 451 +#define __NR_fchmodat2 452 #endif /* _ASM_UNISTD_32_H */ diff --git a/contrib/libs/linux-headers/asm/unistd_32_x86.h b/contrib/libs/linux-headers/asm/unistd_32_x86.h index 37b32d8139..d749ad1c24 100644 --- a/contrib/libs/linux-headers/asm/unistd_32_x86.h +++ b/contrib/libs/linux-headers/asm/unistd_32_x86.h @@ -442,6 +442,7 @@ #define __NR_futex_waitv 449 #define __NR_set_mempolicy_home_node 450 #define __NR_cachestat 451 +#define __NR_fchmodat2 452 #endif /* _ASM_UNISTD_32_H */ diff --git a/contrib/libs/linux-headers/asm/unistd_64_powerpc.h b/contrib/libs/linux-headers/asm/unistd_64_powerpc.h index 7be98c15f0..0e7ee43e88 100644 --- a/contrib/libs/linux-headers/asm/unistd_64_powerpc.h +++ b/contrib/libs/linux-headers/asm/unistd_64_powerpc.h @@ -405,6 +405,7 @@ #define __NR_futex_waitv 449 #define __NR_set_mempolicy_home_node 450 #define __NR_cachestat 451 +#define __NR_fchmodat2 452 #endif /* _ASM_UNISTD_64_H */ diff --git a/contrib/libs/linux-headers/asm/unistd_64_x86.h b/contrib/libs/linux-headers/asm/unistd_64_x86.h index 5b55d6729a..cea67282eb 100644 --- a/contrib/libs/linux-headers/asm/unistd_64_x86.h +++ b/contrib/libs/linux-headers/asm/unistd_64_x86.h @@ -364,6 +364,8 @@ #define __NR_futex_waitv 449 #define __NR_set_mempolicy_home_node 450 #define __NR_cachestat 451 +#define __NR_fchmodat2 452 +#define __NR_map_shadow_stack 453 #endif /* _ASM_UNISTD_64_H */ diff --git a/contrib/libs/linux-headers/asm/unistd_x32_x86.h b/contrib/libs/linux-headers/asm/unistd_x32_x86.h index e8a007543d..5b2e79bf4c 100644 --- a/contrib/libs/linux-headers/asm/unistd_x32_x86.h +++ b/contrib/libs/linux-headers/asm/unistd_x32_x86.h @@ -317,6 +317,7 @@ #define __NR_futex_waitv (__X32_SYSCALL_BIT + 449) #define __NR_set_mempolicy_home_node (__X32_SYSCALL_BIT + 450) #define __NR_cachestat (__X32_SYSCALL_BIT + 451) +#define __NR_fchmodat2 (__X32_SYSCALL_BIT + 452) #define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512) #define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513) #define __NR_ioctl (__X32_SYSCALL_BIT + 514) diff --git a/contrib/libs/linux-headers/drm/amdgpu_drm.h b/contrib/libs/linux-headers/drm/amdgpu_drm.h index 79b14828d5..f477eda6a2 100644 --- a/contrib/libs/linux-headers/drm/amdgpu_drm.h +++ b/contrib/libs/linux-headers/drm/amdgpu_drm.h @@ -94,6 +94,9 @@ extern "C" { * * %AMDGPU_GEM_DOMAIN_OA Ordered append, used by 3D or Compute engines * for appending data. + * + * %AMDGPU_GEM_DOMAIN_DOORBELL Doorbell. It is an MMIO region for + * signalling user mode queues. */ #define AMDGPU_GEM_DOMAIN_CPU 0x1 #define AMDGPU_GEM_DOMAIN_GTT 0x2 @@ -101,12 +104,14 @@ extern "C" { #define AMDGPU_GEM_DOMAIN_GDS 0x8 #define AMDGPU_GEM_DOMAIN_GWS 0x10 #define AMDGPU_GEM_DOMAIN_OA 0x20 +#define AMDGPU_GEM_DOMAIN_DOORBELL 0x40 #define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | \ AMDGPU_GEM_DOMAIN_GTT | \ AMDGPU_GEM_DOMAIN_VRAM | \ AMDGPU_GEM_DOMAIN_GDS | \ AMDGPU_GEM_DOMAIN_GWS | \ - AMDGPU_GEM_DOMAIN_OA) + AMDGPU_GEM_DOMAIN_OA | \ + AMDGPU_GEM_DOMAIN_DOORBELL) /* Flag that CPU access will be required for the case of VRAM domain */ #define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0) diff --git a/contrib/libs/linux-headers/drm/drm.h b/contrib/libs/linux-headers/drm/drm.h index 581a7f6301..02540248de 100644 --- a/contrib/libs/linux-headers/drm/drm.h +++ b/contrib/libs/linux-headers/drm/drm.h @@ -667,8 +667,11 @@ struct drm_gem_open { * Bitfield of supported PRIME sharing capabilities. See &DRM_PRIME_CAP_IMPORT * and &DRM_PRIME_CAP_EXPORT. * - * PRIME buffers are exposed as dma-buf file descriptors. See - * Documentation/gpu/drm-mm.rst, section "PRIME Buffer Sharing". + * Starting from kernel version 6.6, both &DRM_PRIME_CAP_IMPORT and + * &DRM_PRIME_CAP_EXPORT are always advertised. + * + * PRIME buffers are exposed as dma-buf file descriptors. + * See :ref:`prime_buffer_sharing`. */ #define DRM_CAP_PRIME 0x5 /** @@ -676,6 +679,8 @@ struct drm_gem_open { * * If this bit is set in &DRM_CAP_PRIME, the driver supports importing PRIME * buffers via the &DRM_IOCTL_PRIME_FD_TO_HANDLE ioctl. + * + * Starting from kernel version 6.6, this bit is always set in &DRM_CAP_PRIME. */ #define DRM_PRIME_CAP_IMPORT 0x1 /** @@ -683,6 +688,8 @@ struct drm_gem_open { * * If this bit is set in &DRM_CAP_PRIME, the driver supports exporting PRIME * buffers via the &DRM_IOCTL_PRIME_HANDLE_TO_FD ioctl. + * + * Starting from kernel version 6.6, this bit is always set in &DRM_CAP_PRIME. */ #define DRM_PRIME_CAP_EXPORT 0x2 /** @@ -750,15 +757,14 @@ struct drm_gem_open { /** * DRM_CAP_SYNCOBJ * - * If set to 1, the driver supports sync objects. See - * Documentation/gpu/drm-mm.rst, section "DRM Sync Objects". + * If set to 1, the driver supports sync objects. See :ref:`drm_sync_objects`. */ #define DRM_CAP_SYNCOBJ 0x13 /** * DRM_CAP_SYNCOBJ_TIMELINE * * If set to 1, the driver supports timeline operations on sync objects. See - * Documentation/gpu/drm-mm.rst, section "DRM Sync Objects". + * :ref:`drm_sync_objects`. */ #define DRM_CAP_SYNCOBJ_TIMELINE 0x14 @@ -903,6 +909,27 @@ struct drm_syncobj_timeline_wait { __u32 pad; }; +/** + * struct drm_syncobj_eventfd + * @handle: syncobj handle. + * @flags: Zero to wait for the point to be signalled, or + * &DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE to wait for a fence to be + * available for the point. + * @point: syncobj timeline point (set to zero for binary syncobjs). + * @fd: Existing eventfd to sent events to. + * @pad: Must be zero. + * + * Register an eventfd to be signalled by a syncobj. The eventfd counter will + * be incremented by one. + */ +struct drm_syncobj_eventfd { + __u32 handle; + __u32 flags; + __u64 point; + __s32 fd; + __u32 pad; +}; + struct drm_syncobj_array { __u64 handles; @@ -1163,6 +1190,8 @@ extern "C" { */ #define DRM_IOCTL_MODE_GETFB2 DRM_IOWR(0xCE, struct drm_mode_fb_cmd2) +#define DRM_IOCTL_SYNCOBJ_EVENTFD DRM_IOWR(0xCF, struct drm_syncobj_eventfd) + /* * Device specific ioctls should only be in their respective headers * The device specific ioctl range is from 0x40 to 0x9f. @@ -1174,25 +1203,50 @@ extern "C" { #define DRM_COMMAND_BASE 0x40 #define DRM_COMMAND_END 0xA0 -/* - * Header for events written back to userspace on the drm fd. The - * type defines the type of event, the length specifies the total - * length of the event (including the header), and user_data is - * typically a 64 bit value passed with the ioctl that triggered the - * event. A read on the drm fd will always only return complete - * events, that is, if for example the read buffer is 100 bytes, and - * there are two 64 byte events pending, only one will be returned. +/** + * struct drm_event - Header for DRM events + * @type: event type. + * @length: total number of payload bytes (including header). * - * Event types 0 - 0x7fffffff are generic drm events, 0x80000000 and - * up are chipset specific. + * This struct is a header for events written back to user-space on the DRM FD. + * A read on the DRM FD will always only return complete events: e.g. if the + * read buffer is 100 bytes large and there are two 64 byte events pending, + * only one will be returned. + * + * Event types 0 - 0x7fffffff are generic DRM events, 0x80000000 and + * up are chipset specific. Generic DRM events include &DRM_EVENT_VBLANK, + * &DRM_EVENT_FLIP_COMPLETE and &DRM_EVENT_CRTC_SEQUENCE. */ struct drm_event { __u32 type; __u32 length; }; +/** + * DRM_EVENT_VBLANK - vertical blanking event + * + * This event is sent in response to &DRM_IOCTL_WAIT_VBLANK with the + * &_DRM_VBLANK_EVENT flag set. + * + * The event payload is a struct drm_event_vblank. + */ #define DRM_EVENT_VBLANK 0x01 +/** + * DRM_EVENT_FLIP_COMPLETE - page-flip completion event + * + * This event is sent in response to an atomic commit or legacy page-flip with + * the &DRM_MODE_PAGE_FLIP_EVENT flag set. + * + * The event payload is a struct drm_event_vblank. + */ #define DRM_EVENT_FLIP_COMPLETE 0x02 +/** + * DRM_EVENT_CRTC_SEQUENCE - CRTC sequence event + * + * This event is sent in response to &DRM_IOCTL_CRTC_QUEUE_SEQUENCE. + * + * The event payload is a struct drm_event_crtc_sequence. + */ #define DRM_EVENT_CRTC_SEQUENCE 0x03 struct drm_event_vblank { diff --git a/contrib/libs/linux-headers/drm/drm_mode.h b/contrib/libs/linux-headers/drm/drm_mode.h index 43691058d2..ea1b639bcb 100644 --- a/contrib/libs/linux-headers/drm/drm_mode.h +++ b/contrib/libs/linux-headers/drm/drm_mode.h @@ -488,6 +488,9 @@ struct drm_mode_get_connector { * This is not an object ID. This is a per-type connector number. Each * (type, type_id) combination is unique across all connectors of a DRM * device. + * + * The (type, type_id) combination is not a stable identifier: the + * type_id can change depending on the driver probe order. */ __u32 connector_type_id; @@ -883,7 +886,7 @@ struct hdr_metadata_infoframe { */ struct { __u16 x, y; - } display_primaries[3]; + } display_primaries[3]; /** * @white_point: White Point of Colorspace Data. * These are coded as unsigned 16-bit values in units of @@ -894,7 +897,7 @@ struct hdr_metadata_infoframe { */ struct { __u16 x, y; - } white_point; + } white_point; /** * @max_display_mastering_luminance: Max Mastering Display Luminance. * This value is coded as an unsigned 16-bit value in units of 1 cd/m2, diff --git a/contrib/libs/linux-headers/drm/ivpu_accel.h b/contrib/libs/linux-headers/drm/ivpu_accel.h index 839820aed8..a58a14c9f2 100644 --- a/contrib/libs/linux-headers/drm/ivpu_accel.h +++ b/contrib/libs/linux-headers/drm/ivpu_accel.h @@ -60,6 +60,7 @@ extern "C" { #define DRM_IVPU_PARAM_UNIQUE_INFERENCE_ID 10 #define DRM_IVPU_PARAM_TILE_CONFIG 11 #define DRM_IVPU_PARAM_SKU 12 +#define DRM_IVPU_PARAM_CAPABILITIES 13 #define DRM_IVPU_PLATFORM_TYPE_SILICON 0 @@ -68,6 +69,9 @@ extern "C" { #define DRM_IVPU_CONTEXT_PRIORITY_FOCUS 2 #define DRM_IVPU_CONTEXT_PRIORITY_REALTIME 3 +#define DRM_IVPU_CAP_METRIC_STREAMER 1 +#define DRM_IVPU_CAP_DMA_MEMORY_RANGE 2 + /** * struct drm_ivpu_param - Get/Set VPU parameters */ @@ -129,8 +133,10 @@ struct drm_ivpu_param { __u64 value; }; -#define DRM_IVPU_BO_HIGH_MEM 0x00000001 +#define DRM_IVPU_BO_SHAVE_MEM 0x00000001 +#define DRM_IVPU_BO_HIGH_MEM DRM_IVPU_BO_SHAVE_MEM #define DRM_IVPU_BO_MAPPABLE 0x00000002 +#define DRM_IVPU_BO_DMA_MEM 0x00000004 #define DRM_IVPU_BO_CACHED 0x00000000 #define DRM_IVPU_BO_UNCACHED 0x00010000 @@ -140,6 +146,7 @@ struct drm_ivpu_param { #define DRM_IVPU_BO_FLAGS \ (DRM_IVPU_BO_HIGH_MEM | \ DRM_IVPU_BO_MAPPABLE | \ + DRM_IVPU_BO_DMA_MEM | \ DRM_IVPU_BO_CACHE_MASK) /** diff --git a/contrib/libs/linux-headers/drm/nouveau_drm.h b/contrib/libs/linux-headers/drm/nouveau_drm.h index 853a327433..0bade1592f 100644 --- a/contrib/libs/linux-headers/drm/nouveau_drm.h +++ b/contrib/libs/linux-headers/drm/nouveau_drm.h @@ -33,11 +33,61 @@ extern "C" { #endif +#define NOUVEAU_GETPARAM_PCI_VENDOR 3 +#define NOUVEAU_GETPARAM_PCI_DEVICE 4 +#define NOUVEAU_GETPARAM_BUS_TYPE 5 +#define NOUVEAU_GETPARAM_FB_SIZE 8 +#define NOUVEAU_GETPARAM_AGP_SIZE 9 +#define NOUVEAU_GETPARAM_CHIPSET_ID 11 +#define NOUVEAU_GETPARAM_VM_VRAM_BASE 12 +#define NOUVEAU_GETPARAM_GRAPH_UNITS 13 +#define NOUVEAU_GETPARAM_PTIMER_TIME 14 +#define NOUVEAU_GETPARAM_HAS_BO_USAGE 15 +#define NOUVEAU_GETPARAM_HAS_PAGEFLIP 16 + +/* + * NOUVEAU_GETPARAM_EXEC_PUSH_MAX - query max pushes through getparam + * + * Query the maximum amount of IBs that can be pushed through a single + * &drm_nouveau_exec structure and hence a single &DRM_IOCTL_NOUVEAU_EXEC + * ioctl(). + */ +#define NOUVEAU_GETPARAM_EXEC_PUSH_MAX 17 + +struct drm_nouveau_getparam { + __u64 param; + __u64 value; +}; + +struct drm_nouveau_channel_alloc { + __u32 fb_ctxdma_handle; + __u32 tt_ctxdma_handle; + + __s32 channel; + __u32 pushbuf_domains; + + /* Notifier memory */ + __u32 notifier_handle; + + /* DRM-enforced subchannel assignments */ + struct { + __u32 handle; + __u32 grclass; + } subchan[8]; + __u32 nr_subchan; +}; + +struct drm_nouveau_channel_free { + __s32 channel; +}; + #define NOUVEAU_GEM_DOMAIN_CPU (1 << 0) #define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1) #define NOUVEAU_GEM_DOMAIN_GART (1 << 2) #define NOUVEAU_GEM_DOMAIN_MAPPABLE (1 << 3) #define NOUVEAU_GEM_DOMAIN_COHERENT (1 << 4) +/* The BO will never be shared via import or export. */ +#define NOUVEAU_GEM_DOMAIN_NO_SHARE (1 << 5) #define NOUVEAU_GEM_TILE_COMP 0x00030000 /* nv50-only */ #define NOUVEAU_GEM_TILE_LAYOUT_MASK 0x0000ff00 @@ -98,6 +148,7 @@ struct drm_nouveau_gem_pushbuf_push { __u32 pad; __u64 offset; __u64 length; +#define NOUVEAU_GEM_PUSHBUF_NO_PREFETCH (1 << 23) }; struct drm_nouveau_gem_pushbuf { @@ -126,16 +177,233 @@ struct drm_nouveau_gem_cpu_fini { __u32 handle; }; -#define DRM_NOUVEAU_GETPARAM 0x00 /* deprecated */ +/** + * struct drm_nouveau_sync - sync object + * + * This structure serves as synchronization mechanism for (potentially) + * asynchronous operations such as EXEC or VM_BIND. + */ +struct drm_nouveau_sync { + /** + * @flags: the flags for a sync object + * + * The first 8 bits are used to determine the type of the sync object. + */ + __u32 flags; +#define DRM_NOUVEAU_SYNC_SYNCOBJ 0x0 +#define DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ 0x1 +#define DRM_NOUVEAU_SYNC_TYPE_MASK 0xf + /** + * @handle: the handle of the sync object + */ + __u32 handle; + /** + * @timeline_value: + * + * The timeline point of the sync object in case the syncobj is of + * type DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ. + */ + __u64 timeline_value; +}; + +/** + * struct drm_nouveau_vm_init - GPU VA space init structure + * + * Used to initialize the GPU's VA space for a user client, telling the kernel + * which portion of the VA space is managed by the UMD and kernel respectively. + * + * For the UMD to use the VM_BIND uAPI, this must be called before any BOs or + * channels are created; if called afterwards DRM_IOCTL_NOUVEAU_VM_INIT fails + * with -ENOSYS. + */ +struct drm_nouveau_vm_init { + /** + * @kernel_managed_addr: start address of the kernel managed VA space + * region + */ + __u64 kernel_managed_addr; + /** + * @kernel_managed_size: size of the kernel managed VA space region in + * bytes + */ + __u64 kernel_managed_size; +}; + +/** + * struct drm_nouveau_vm_bind_op - VM_BIND operation + * + * This structure represents a single VM_BIND operation. UMDs should pass + * an array of this structure via struct drm_nouveau_vm_bind's &op_ptr field. + */ +struct drm_nouveau_vm_bind_op { + /** + * @op: the operation type + */ + __u32 op; +/** + * @DRM_NOUVEAU_VM_BIND_OP_MAP: + * + * Map a GEM object to the GPU's VA space. Optionally, the + * &DRM_NOUVEAU_VM_BIND_SPARSE flag can be passed to instruct the kernel to + * create sparse mappings for the given range. + */ +#define DRM_NOUVEAU_VM_BIND_OP_MAP 0x0 +/** + * @DRM_NOUVEAU_VM_BIND_OP_UNMAP: + * + * Unmap an existing mapping in the GPU's VA space. If the region the mapping + * is located in is a sparse region, new sparse mappings are created where the + * unmapped (memory backed) mapping was mapped previously. To remove a sparse + * region the &DRM_NOUVEAU_VM_BIND_SPARSE must be set. + */ +#define DRM_NOUVEAU_VM_BIND_OP_UNMAP 0x1 + /** + * @flags: the flags for a &drm_nouveau_vm_bind_op + */ + __u32 flags; +/** + * @DRM_NOUVEAU_VM_BIND_SPARSE: + * + * Indicates that an allocated VA space region should be sparse. + */ +#define DRM_NOUVEAU_VM_BIND_SPARSE (1 << 8) + /** + * @handle: the handle of the DRM GEM object to map + */ + __u32 handle; + /** + * @pad: 32 bit padding, should be 0 + */ + __u32 pad; + /** + * @addr: + * + * the address the VA space region or (memory backed) mapping should be mapped to + */ + __u64 addr; + /** + * @bo_offset: the offset within the BO backing the mapping + */ + __u64 bo_offset; + /** + * @range: the size of the requested mapping in bytes + */ + __u64 range; +}; + +/** + * struct drm_nouveau_vm_bind - structure for DRM_IOCTL_NOUVEAU_VM_BIND + */ +struct drm_nouveau_vm_bind { + /** + * @op_count: the number of &drm_nouveau_vm_bind_op + */ + __u32 op_count; + /** + * @flags: the flags for a &drm_nouveau_vm_bind ioctl + */ + __u32 flags; +/** + * @DRM_NOUVEAU_VM_BIND_RUN_ASYNC: + * + * Indicates that the given VM_BIND operation should be executed asynchronously + * by the kernel. + * + * If this flag is not supplied the kernel executes the associated operations + * synchronously and doesn't accept any &drm_nouveau_sync objects. + */ +#define DRM_NOUVEAU_VM_BIND_RUN_ASYNC 0x1 + /** + * @wait_count: the number of wait &drm_nouveau_syncs + */ + __u32 wait_count; + /** + * @sig_count: the number of &drm_nouveau_syncs to signal when finished + */ + __u32 sig_count; + /** + * @wait_ptr: pointer to &drm_nouveau_syncs to wait for + */ + __u64 wait_ptr; + /** + * @sig_ptr: pointer to &drm_nouveau_syncs to signal when finished + */ + __u64 sig_ptr; + /** + * @op_ptr: pointer to the &drm_nouveau_vm_bind_ops to execute + */ + __u64 op_ptr; +}; + +/** + * struct drm_nouveau_exec_push - EXEC push operation + * + * This structure represents a single EXEC push operation. UMDs should pass an + * array of this structure via struct drm_nouveau_exec's &push_ptr field. + */ +struct drm_nouveau_exec_push { + /** + * @va: the virtual address of the push buffer mapping + */ + __u64 va; + /** + * @va_len: the length of the push buffer mapping + */ + __u32 va_len; + /** + * @flags: the flags for this push buffer mapping + */ + __u32 flags; +#define DRM_NOUVEAU_EXEC_PUSH_NO_PREFETCH 0x1 +}; + +/** + * struct drm_nouveau_exec - structure for DRM_IOCTL_NOUVEAU_EXEC + */ +struct drm_nouveau_exec { + /** + * @channel: the channel to execute the push buffer in + */ + __u32 channel; + /** + * @push_count: the number of &drm_nouveau_exec_push ops + */ + __u32 push_count; + /** + * @wait_count: the number of wait &drm_nouveau_syncs + */ + __u32 wait_count; + /** + * @sig_count: the number of &drm_nouveau_syncs to signal when finished + */ + __u32 sig_count; + /** + * @wait_ptr: pointer to &drm_nouveau_syncs to wait for + */ + __u64 wait_ptr; + /** + * @sig_ptr: pointer to &drm_nouveau_syncs to signal when finished + */ + __u64 sig_ptr; + /** + * @push_ptr: pointer to &drm_nouveau_exec_push ops + */ + __u64 push_ptr; +}; + +#define DRM_NOUVEAU_GETPARAM 0x00 #define DRM_NOUVEAU_SETPARAM 0x01 /* deprecated */ -#define DRM_NOUVEAU_CHANNEL_ALLOC 0x02 /* deprecated */ -#define DRM_NOUVEAU_CHANNEL_FREE 0x03 /* deprecated */ +#define DRM_NOUVEAU_CHANNEL_ALLOC 0x02 +#define DRM_NOUVEAU_CHANNEL_FREE 0x03 #define DRM_NOUVEAU_GROBJ_ALLOC 0x04 /* deprecated */ #define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC 0x05 /* deprecated */ #define DRM_NOUVEAU_GPUOBJ_FREE 0x06 /* deprecated */ #define DRM_NOUVEAU_NVIF 0x07 #define DRM_NOUVEAU_SVM_INIT 0x08 #define DRM_NOUVEAU_SVM_BIND 0x09 +#define DRM_NOUVEAU_VM_INIT 0x10 +#define DRM_NOUVEAU_VM_BIND 0x11 +#define DRM_NOUVEAU_EXEC 0x12 #define DRM_NOUVEAU_GEM_NEW 0x40 #define DRM_NOUVEAU_GEM_PUSHBUF 0x41 #define DRM_NOUVEAU_GEM_CPU_PREP 0x42 @@ -188,6 +456,10 @@ struct drm_nouveau_svm_bind { #define NOUVEAU_SVM_BIND_TARGET__GPU_VRAM (1UL << 31) +#define DRM_IOCTL_NOUVEAU_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GETPARAM, struct drm_nouveau_getparam) +#define DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_ALLOC, struct drm_nouveau_channel_alloc) +#define DRM_IOCTL_NOUVEAU_CHANNEL_FREE DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_FREE, struct drm_nouveau_channel_free) + #define DRM_IOCTL_NOUVEAU_SVM_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_INIT, struct drm_nouveau_svm_init) #define DRM_IOCTL_NOUVEAU_SVM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_BIND, struct drm_nouveau_svm_bind) @@ -197,6 +469,9 @@ struct drm_nouveau_svm_bind { #define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini) #define DRM_IOCTL_NOUVEAU_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_INFO, struct drm_nouveau_gem_info) +#define DRM_IOCTL_NOUVEAU_VM_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_VM_INIT, struct drm_nouveau_vm_init) +#define DRM_IOCTL_NOUVEAU_VM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_VM_BIND, struct drm_nouveau_vm_bind) +#define DRM_IOCTL_NOUVEAU_EXEC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_EXEC, struct drm_nouveau_exec) #if defined(__cplusplus) } #endif diff --git a/contrib/libs/linux-headers/drm/virtgpu_drm.h b/contrib/libs/linux-headers/drm/virtgpu_drm.h index 7b158fcb02..b1d0e56565 100644 --- a/contrib/libs/linux-headers/drm/virtgpu_drm.h +++ b/contrib/libs/linux-headers/drm/virtgpu_drm.h @@ -64,6 +64,16 @@ struct drm_virtgpu_map { __u32 pad; }; +#define VIRTGPU_EXECBUF_SYNCOBJ_RESET 0x01 +#define VIRTGPU_EXECBUF_SYNCOBJ_FLAGS ( \ + VIRTGPU_EXECBUF_SYNCOBJ_RESET | \ + 0) +struct drm_virtgpu_execbuffer_syncobj { + __u32 handle; + __u32 flags; + __u64 point; +}; + /* fence_fd is modified on success if VIRTGPU_EXECBUF_FENCE_FD_OUT flag is set. */ struct drm_virtgpu_execbuffer { __u32 flags; @@ -73,7 +83,11 @@ struct drm_virtgpu_execbuffer { __u32 num_bo_handles; __s32 fence_fd; /* in/out fence fd (see VIRTGPU_EXECBUF_FENCE_FD_IN/OUT) */ __u32 ring_idx; /* command ring index (see VIRTGPU_EXECBUF_RING_IDX) */ - __u32 pad; + __u32 syncobj_stride; /* size of @drm_virtgpu_execbuffer_syncobj */ + __u32 num_in_syncobjs; + __u32 num_out_syncobjs; + __u64 in_syncobjs; + __u64 out_syncobjs; }; #define VIRTGPU_PARAM_3D_FEATURES 1 /* do we have 3D features in the hw */ diff --git a/contrib/libs/linux-headers/linux/bpf.h b/contrib/libs/linux-headers/linux/bpf.h index 14674d2fe9..f6f4347b75 100644 --- a/contrib/libs/linux-headers/linux/bpf.h +++ b/contrib/libs/linux-headers/linux/bpf.h @@ -19,6 +19,7 @@ /* ld/ldx fields */ #define BPF_DW 0x18 /* double word (64-bit) */ +#define BPF_MEMSX 0x80 /* load with sign extension */ #define BPF_ATOMIC 0xc0 /* atomic memory ops - op type in immediate */ #define BPF_XADD 0xc0 /* exclusive add - legacy name */ @@ -1036,6 +1037,9 @@ enum bpf_attach_type { BPF_LSM_CGROUP, BPF_STRUCT_OPS, BPF_NETFILTER, + BPF_TCX_INGRESS, + BPF_TCX_EGRESS, + BPF_TRACE_UPROBE_MULTI, __MAX_BPF_ATTACH_TYPE }; @@ -1053,10 +1057,21 @@ enum bpf_link_type { BPF_LINK_TYPE_KPROBE_MULTI = 8, BPF_LINK_TYPE_STRUCT_OPS = 9, BPF_LINK_TYPE_NETFILTER = 10, - + BPF_LINK_TYPE_TCX = 11, + BPF_LINK_TYPE_UPROBE_MULTI = 12, MAX_BPF_LINK_TYPE, }; +enum bpf_perf_event_type { + BPF_PERF_EVENT_UNSPEC = 0, + BPF_PERF_EVENT_UPROBE = 1, + BPF_PERF_EVENT_URETPROBE = 2, + BPF_PERF_EVENT_KPROBE = 3, + BPF_PERF_EVENT_KRETPROBE = 4, + BPF_PERF_EVENT_TRACEPOINT = 5, + BPF_PERF_EVENT_EVENT = 6, +}; + /* cgroup-bpf attach flags used in BPF_PROG_ATTACH command * * NONE(default): No further bpf programs allowed in the subtree. @@ -1103,7 +1118,12 @@ enum bpf_link_type { */ #define BPF_F_ALLOW_OVERRIDE (1U << 0) #define BPF_F_ALLOW_MULTI (1U << 1) +/* Generic attachment flags. */ #define BPF_F_REPLACE (1U << 2) +#define BPF_F_BEFORE (1U << 3) +#define BPF_F_AFTER (1U << 4) +#define BPF_F_ID (1U << 5) +#define BPF_F_LINK BPF_F_LINK /* 1 << 13 */ /* If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the * verifier will perform strict alignment checking as if the kernel @@ -1168,7 +1188,21 @@ enum bpf_link_type { /* link_create.kprobe_multi.flags used in LINK_CREATE command for * BPF_TRACE_KPROBE_MULTI attach type to create return probe. */ -#define BPF_F_KPROBE_MULTI_RETURN (1U << 0) +enum { + BPF_F_KPROBE_MULTI_RETURN = (1U << 0) +}; + +/* link_create.uprobe_multi.flags used in LINK_CREATE command for + * BPF_TRACE_UPROBE_MULTI attach type to create return probe. + */ +enum { + BPF_F_UPROBE_MULTI_RETURN = (1U << 0) +}; + +/* link_create.netfilter.flags used in LINK_CREATE command for + * BPF_PROG_TYPE_NETFILTER to enable IP packet defragmentation. + */ +#define BPF_F_NETFILTER_IP_DEFRAG (1U << 0) /* When BPF ldimm64's insn[0].src_reg != 0 then this can have * the following extensions: @@ -1434,14 +1468,19 @@ union bpf_attr { }; struct { /* anonymous struct used by BPF_PROG_ATTACH/DETACH commands */ - __u32 target_fd; /* container object to attach to */ - __u32 attach_bpf_fd; /* eBPF program to attach */ + union { + __u32 target_fd; /* target object to attach to or ... */ + __u32 target_ifindex; /* target ifindex */ + }; + __u32 attach_bpf_fd; __u32 attach_type; __u32 attach_flags; - __u32 replace_bpf_fd; /* previously attached eBPF - * program to replace if - * BPF_F_REPLACE is used - */ + __u32 replace_bpf_fd; + union { + __u32 relative_fd; + __u32 relative_id; + }; + __u64 expected_revision; }; struct { /* anonymous struct used by BPF_PROG_TEST_RUN command */ @@ -1487,16 +1526,26 @@ union bpf_attr { } info; struct { /* anonymous struct used by BPF_PROG_QUERY command */ - __u32 target_fd; /* container object to query */ + union { + __u32 target_fd; /* target object to query or ... */ + __u32 target_ifindex; /* target ifindex */ + }; __u32 attach_type; __u32 query_flags; __u32 attach_flags; __aligned_u64 prog_ids; - __u32 prog_cnt; + union { + __u32 prog_cnt; + __u32 count; + }; + __u32 :32; /* output: per-program attach_flags. * not allowed to be set during effective query. */ __aligned_u64 prog_attach_flags; + __aligned_u64 link_ids; + __aligned_u64 link_attach_flags; + __u64 revision; } query; struct { /* anonymous struct used by BPF_RAW_TRACEPOINT_OPEN command */ @@ -1539,13 +1588,13 @@ union bpf_attr { __u32 map_fd; /* struct_ops to attach */ }; union { - __u32 target_fd; /* object to attach to */ - __u32 target_ifindex; /* target ifindex */ + __u32 target_fd; /* target object to attach to or ... */ + __u32 target_ifindex; /* target ifindex */ }; __u32 attach_type; /* attach type */ __u32 flags; /* extra flags */ union { - __u32 target_btf_id; /* btf_id of target to attach to */ + __u32 target_btf_id; /* btf_id of target to attach to */ struct { __aligned_u64 iter_info; /* extra bpf_iter_link_info */ __u32 iter_info_len; /* iter_info length */ @@ -1579,6 +1628,22 @@ union bpf_attr { __s32 priority; __u32 flags; } netfilter; + struct { + union { + __u32 relative_fd; + __u32 relative_id; + }; + __u64 expected_revision; + } tcx; + struct { + __aligned_u64 path; + __aligned_u64 offsets; + __aligned_u64 ref_ctr_offsets; + __aligned_u64 cookies; + __u32 cnt; + __u32 flags; + __u32 pid; + } uprobe_multi; }; } link_create; @@ -4161,9 +4226,6 @@ union bpf_attr { * **-EOPNOTSUPP** if the operation is not supported, for example * a call from outside of TC ingress. * - * **-ESOCKTNOSUPPORT** if the socket type is not supported - * (reuseport). - * * long bpf_sk_assign(struct bpf_sk_lookup *ctx, struct bpf_sock *sk, u64 flags) * Description * Helper is overloaded depending on BPF program type. This @@ -5046,9 +5108,14 @@ union bpf_attr { * u64 bpf_get_func_ip(void *ctx) * Description * Get address of the traced function (for tracing and kprobe programs). + * + * When called for kprobe program attached as uprobe it returns + * probe address for both entry and return uprobe. + * * Return - * Address of the traced function. + * Address of the traced function for kprobe. * 0 for kprobes placed within the function (not at the entry). + * Address of the probe for uprobe and return uprobe. * * u64 bpf_get_attach_cookie(void *ctx) * Description @@ -6189,6 +6256,19 @@ struct bpf_sock_tuple { }; }; +/* (Simplified) user return codes for tcx prog type. + * A valid tcx program must return one of these defined values. All other + * return codes are reserved for future use. Must remain compatible with + * their TC_ACT_* counter-parts. For compatibility in behavior, unknown + * return codes are mapped to TCX_NEXT. + */ +enum tcx_action_base { + TCX_NEXT = -1, + TCX_PASS = 0, + TCX_DROP = 2, + TCX_REDIRECT = 7, +}; + struct bpf_xdp_sock { __u32 queue_id; }; @@ -6441,6 +6521,40 @@ struct bpf_link_info { __s32 priority; __u32 flags; } netfilter; + struct { + __aligned_u64 addrs; + __u32 count; /* in/out: kprobe_multi function count */ + __u32 flags; + } kprobe_multi; + struct { + __u32 type; /* enum bpf_perf_event_type */ + __u32 :32; + union { + struct { + __aligned_u64 file_name; /* in/out */ + __u32 name_len; + __u32 offset; /* offset from file_name */ + } uprobe; /* BPF_PERF_EVENT_UPROBE, BPF_PERF_EVENT_URETPROBE */ + struct { + __aligned_u64 func_name; /* in/out */ + __u32 name_len; + __u32 offset; /* offset from func_name */ + __u64 addr; + } kprobe; /* BPF_PERF_EVENT_KPROBE, BPF_PERF_EVENT_KRETPROBE */ + struct { + __aligned_u64 tp_name; /* in/out */ + __u32 name_len; + } tracepoint; /* BPF_PERF_EVENT_TRACEPOINT */ + struct { + __u64 config; + __u32 type; + } event; /* BPF_PERF_EVENT_EVENT */ + }; + } perf_event; + struct { + __u32 ifindex; + __u32 attach_type; + } tcx; }; } __attribute__((aligned(8))); @@ -7014,6 +7128,7 @@ struct bpf_list_head { struct bpf_list_node { __u64 :64; __u64 :64; + __u64 :64; } __attribute__((aligned(8))); struct bpf_rb_root { @@ -7025,6 +7140,7 @@ struct bpf_rb_node { __u64 :64; __u64 :64; __u64 :64; + __u64 :64; } __attribute__((aligned(8))); struct bpf_refcount { diff --git a/contrib/libs/linux-headers/linux/btrfs_tree.h b/contrib/libs/linux-headers/linux/btrfs_tree.h index 3466e1670b..46b40848ac 100644 --- a/contrib/libs/linux-headers/linux/btrfs_tree.h +++ b/contrib/libs/linux-headers/linux/btrfs_tree.h @@ -216,7 +216,11 @@ #define BTRFS_EXTENT_DATA_REF_KEY 178 -#define BTRFS_EXTENT_REF_V0_KEY 180 +/* + * Obsolete key. Defintion removed in 6.6, value may be reused in the future. + * + * #define BTRFS_EXTENT_REF_V0_KEY 180 + */ #define BTRFS_SHARED_BLOCK_REF_KEY 182 diff --git a/contrib/libs/linux-headers/linux/cgroupstats.h b/contrib/libs/linux-headers/linux/cgroupstats.h index aa306e4cd6..80b2c85944 100644 --- a/contrib/libs/linux-headers/linux/cgroupstats.h +++ b/contrib/libs/linux-headers/linux/cgroupstats.h @@ -24,8 +24,6 @@ * basis. This data is shared using taskstats. * * Most of these states are derived by looking at the task->state value - * For the nr_io_wait state, a flag in the delay accounting structure - * indicates that the task is waiting on IO * * Each member is aligned to a 8 byte boundary. */ diff --git a/contrib/libs/linux-headers/linux/cn_proc.h b/contrib/libs/linux-headers/linux/cn_proc.h index 46fe054d31..85a79b58a2 100644 --- a/contrib/libs/linux-headers/linux/cn_proc.h +++ b/contrib/libs/linux-headers/linux/cn_proc.h @@ -30,6 +30,49 @@ enum proc_cn_mcast_op { PROC_CN_MCAST_IGNORE = 2 }; +#define PROC_EVENT_ALL (PROC_EVENT_FORK | PROC_EVENT_EXEC | PROC_EVENT_UID | \ + PROC_EVENT_GID | PROC_EVENT_SID | PROC_EVENT_PTRACE | \ + PROC_EVENT_COMM | PROC_EVENT_NONZERO_EXIT | \ + PROC_EVENT_COREDUMP | PROC_EVENT_EXIT) + +/* + * If you add an entry in proc_cn_event, make sure you add it in + * PROC_EVENT_ALL above as well. + */ +enum proc_cn_event { + /* Use successive bits so the enums can be used to record + * sets of events as well + */ + PROC_EVENT_NONE = 0x00000000, + PROC_EVENT_FORK = 0x00000001, + PROC_EVENT_EXEC = 0x00000002, + PROC_EVENT_UID = 0x00000004, + PROC_EVENT_GID = 0x00000040, + PROC_EVENT_SID = 0x00000080, + PROC_EVENT_PTRACE = 0x00000100, + PROC_EVENT_COMM = 0x00000200, + /* "next" should be 0x00000400 */ + /* "last" is the last process event: exit, + * while "next to last" is coredumping event + * before that is report only if process dies + * with non-zero exit status + */ + PROC_EVENT_NONZERO_EXIT = 0x20000000, + PROC_EVENT_COREDUMP = 0x40000000, + PROC_EVENT_EXIT = 0x80000000 +}; + +struct proc_input { + enum proc_cn_mcast_op mcast_op; + enum proc_cn_event event_type; +}; + +static __inline__ enum proc_cn_event valid_event(enum proc_cn_event ev_type) +{ + ev_type &= PROC_EVENT_ALL; + return ev_type; +} + /* * From the user's point of view, the process * ID is the thread group ID and thread ID is the internal @@ -44,24 +87,7 @@ enum proc_cn_mcast_op { */ struct proc_event { - enum what { - /* Use successive bits so the enums can be used to record - * sets of events as well - */ - PROC_EVENT_NONE = 0x00000000, - PROC_EVENT_FORK = 0x00000001, - PROC_EVENT_EXEC = 0x00000002, - PROC_EVENT_UID = 0x00000004, - PROC_EVENT_GID = 0x00000040, - PROC_EVENT_SID = 0x00000080, - PROC_EVENT_PTRACE = 0x00000100, - PROC_EVENT_COMM = 0x00000200, - /* "next" should be 0x00000400 */ - /* "last" is the last process event: exit, - * while "next to last" is coredumping event */ - PROC_EVENT_COREDUMP = 0x40000000, - PROC_EVENT_EXIT = 0x80000000 - } what; + enum proc_cn_event what; __u32 cpu; __u64 __attribute__((aligned(8))) timestamp_ns; /* Number of nano seconds since system boot */ diff --git a/contrib/libs/linux-headers/linux/devlink.h b/contrib/libs/linux-headers/linux/devlink.h index 45d110254e..8b9b98e750 100644 --- a/contrib/libs/linux-headers/linux/devlink.h +++ b/contrib/libs/linux-headers/linux/devlink.h @@ -661,6 +661,8 @@ enum devlink_resource_unit { enum devlink_port_fn_attr_cap { DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT, DEVLINK_PORT_FN_ATTR_CAP_MIGRATABLE_BIT, + DEVLINK_PORT_FN_ATTR_CAP_IPSEC_CRYPTO_BIT, + DEVLINK_PORT_FN_ATTR_CAP_IPSEC_PACKET_BIT, /* Add new caps above */ __DEVLINK_PORT_FN_ATTR_CAPS_MAX, @@ -669,6 +671,8 @@ enum devlink_port_fn_attr_cap { #define DEVLINK_PORT_FN_CAP_ROCE _BITUL(DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT) #define DEVLINK_PORT_FN_CAP_MIGRATABLE \ _BITUL(DEVLINK_PORT_FN_ATTR_CAP_MIGRATABLE_BIT) +#define DEVLINK_PORT_FN_CAP_IPSEC_CRYPTO _BITUL(DEVLINK_PORT_FN_ATTR_CAP_IPSEC_CRYPTO_BIT) +#define DEVLINK_PORT_FN_CAP_IPSEC_PACKET _BITUL(DEVLINK_PORT_FN_ATTR_CAP_IPSEC_PACKET_BIT) enum devlink_port_function_attr { DEVLINK_PORT_FUNCTION_ATTR_UNSPEC, diff --git a/contrib/libs/linux-headers/linux/dlm_plock.h b/contrib/libs/linux-headers/linux/dlm_plock.h index 577af304b9..637b604bff 100644 --- a/contrib/libs/linux-headers/linux/dlm_plock.h +++ b/contrib/libs/linux-headers/linux/dlm_plock.h @@ -22,6 +22,7 @@ enum { DLM_PLOCK_OP_LOCK = 1, DLM_PLOCK_OP_UNLOCK, DLM_PLOCK_OP_GET, + DLM_PLOCK_OP_CANCEL, }; #define DLM_PLOCK_FL_CLOSE 1 diff --git a/contrib/libs/linux-headers/linux/elf-fdpic.h b/contrib/libs/linux-headers/linux/elf-fdpic.h index d78419dcf0..6c0df5121a 100644 --- a/contrib/libs/linux-headers/linux/elf-fdpic.h +++ b/contrib/libs/linux-headers/linux/elf-fdpic.h @@ -32,4 +32,19 @@ struct elf32_fdpic_loadmap { #define ELF32_FDPIC_LOADMAP_VERSION 0x0000 +/* segment mappings for ELF FDPIC libraries/executables/interpreters */ +struct elf64_fdpic_loadseg { + Elf64_Addr addr; /* core address to which mapped */ + Elf64_Addr p_vaddr; /* VMA recorded in file */ + Elf64_Word p_memsz; /* allocation size recorded in file */ +}; + +struct elf64_fdpic_loadmap { + Elf64_Half version; /* version of these structures, just in case... */ + Elf64_Half nsegs; /* number of segments */ + struct elf64_fdpic_loadseg segs[]; +}; + +#define ELF64_FDPIC_LOADMAP_VERSION 0x0000 + #endif /* _LINUX_ELF_FDPIC_H */ diff --git a/contrib/libs/linux-headers/linux/elf.h b/contrib/libs/linux-headers/linux/elf.h index 0b23445430..2992ee4797 100644 --- a/contrib/libs/linux-headers/linux/elf.h +++ b/contrib/libs/linux-headers/linux/elf.h @@ -409,6 +409,8 @@ typedef struct elf64_shdr { #define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */ #define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */ #define NT_X86_XSTATE 0x202 /* x86 extended state using xsave */ +/* Old binutils treats 0x203 as a CET state */ +#define NT_X86_SHSTK 0x204 /* x86 SHSTK state */ #define NT_S390_HIGH_GPRS 0x300 /* s390 upper register halves */ #define NT_S390_TIMER 0x301 /* s390 timer register */ #define NT_S390_TODCMP 0x302 /* s390 TOD clock comparator register */ diff --git a/contrib/libs/linux-headers/linux/fsi.h b/contrib/libs/linux-headers/linux/fsi.h index 021f08aa15..6e7184c235 100644 --- a/contrib/libs/linux-headers/linux/fsi.h +++ b/contrib/libs/linux-headers/linux/fsi.h @@ -60,6 +60,16 @@ struct scom_access { */ /** + * FSI_SBEFIFO_CMD_TIMEOUT sets the timeout for writing data to the SBEFIFO. + * + * The command timeout is specified in seconds. The minimum value of command + * timeout is 1 seconds (default) and the maximum value of command timeout is + * 120 seconds. A command timeout of 0 will reset the value to the default of + * 1 seconds. + */ +#define FSI_SBEFIFO_CMD_TIMEOUT_SECONDS _IOW('s', 0x01, __u32) + +/** * FSI_SBEFIFO_READ_TIMEOUT sets the read timeout for response from SBE. * * The read timeout is specified in seconds. The minimum value of read diff --git a/contrib/libs/linux-headers/linux/fuse.h b/contrib/libs/linux-headers/linux/fuse.h index 2c8b8de9c2..6b9793842c 100644 --- a/contrib/libs/linux-headers/linux/fuse.h +++ b/contrib/libs/linux-headers/linux/fuse.h @@ -207,6 +207,10 @@ * - add FUSE_EXT_GROUPS * - add FUSE_CREATE_SUPP_GROUP * - add FUSE_HAS_EXPIRE_ONLY + * + * 7.39 + * - add FUSE_DIRECT_IO_RELAX + * - add FUSE_STATX and related structures */ #ifndef _LINUX_FUSE_H @@ -238,7 +242,7 @@ #define FUSE_KERNEL_VERSION 7 /** Minor version number of this interface */ -#define FUSE_KERNEL_MINOR_VERSION 38 +#define FUSE_KERNEL_MINOR_VERSION 39 /** The node ID of the root inode */ #define FUSE_ROOT_ID 1 @@ -265,6 +269,40 @@ struct fuse_attr { uint32_t flags; }; +/* + * The following structures are bit-for-bit compatible with the statx(2) ABI in + * Linux. + */ +struct fuse_sx_time { + int64_t tv_sec; + uint32_t tv_nsec; + int32_t __reserved; +}; + +struct fuse_statx { + uint32_t mask; + uint32_t blksize; + uint64_t attributes; + uint32_t nlink; + uint32_t uid; + uint32_t gid; + uint16_t mode; + uint16_t __spare0[1]; + uint64_t ino; + uint64_t size; + uint64_t blocks; + uint64_t attributes_mask; + struct fuse_sx_time atime; + struct fuse_sx_time btime; + struct fuse_sx_time ctime; + struct fuse_sx_time mtime; + uint32_t rdev_major; + uint32_t rdev_minor; + uint32_t dev_major; + uint32_t dev_minor; + uint64_t __spare2[14]; +}; + struct fuse_kstatfs { uint64_t blocks; uint64_t bfree; @@ -367,6 +405,8 @@ struct fuse_file_lock { * FUSE_CREATE_SUPP_GROUP: add supplementary group info to create, mkdir, * symlink and mknod (single group that matches parent) * FUSE_HAS_EXPIRE_ONLY: kernel supports expiry-only entry invalidation + * FUSE_DIRECT_IO_RELAX: relax restrictions in FOPEN_DIRECT_IO mode, for now + * allow shared mmap */ #define FUSE_ASYNC_READ (1 << 0) #define FUSE_POSIX_LOCKS (1 << 1) @@ -405,6 +445,7 @@ struct fuse_file_lock { #define FUSE_HAS_INODE_DAX (1ULL << 33) #define FUSE_CREATE_SUPP_GROUP (1ULL << 34) #define FUSE_HAS_EXPIRE_ONLY (1ULL << 35) +#define FUSE_DIRECT_IO_RELAX (1ULL << 36) /** * CUSE INIT request/reply flags @@ -571,6 +612,7 @@ enum fuse_opcode { FUSE_REMOVEMAPPING = 49, FUSE_SYNCFS = 50, FUSE_TMPFILE = 51, + FUSE_STATX = 52, /* CUSE specific operations */ CUSE_INIT = 4096, @@ -635,6 +677,22 @@ struct fuse_attr_out { struct fuse_attr attr; }; +struct fuse_statx_in { + uint32_t getattr_flags; + uint32_t reserved; + uint64_t fh; + uint32_t sx_flags; + uint32_t sx_mask; +}; + +struct fuse_statx_out { + uint64_t attr_valid; /* Cache timeout for the attributes */ + uint32_t attr_valid_nsec; + uint32_t flags; + uint64_t spare[2]; + struct fuse_statx stat; +}; + #define FUSE_COMPAT_MKNOD_IN_SIZE 8 struct fuse_mknod_in { diff --git a/contrib/libs/linux-headers/linux/gsmmux.h b/contrib/libs/linux-headers/linux/gsmmux.h index eb67884e5f..4c878d84db 100644 --- a/contrib/libs/linux-headers/linux/gsmmux.h +++ b/contrib/libs/linux-headers/linux/gsmmux.h @@ -2,10 +2,45 @@ #ifndef _LINUX_GSMMUX_H #define _LINUX_GSMMUX_H +#include <linux/const.h> #include <linux/if.h> #include <linux/ioctl.h> #include <linux/types.h> +/* + * flags definition for n_gsm + * + * Used by: + * struct gsm_config_ext.flags + * struct gsm_dlci_config.flags + */ +/* Forces a DLCI reset if set. Otherwise, a DLCI reset is only done if + * incompatible settings were provided. Always cleared on retrieval. + */ +#define GSM_FL_RESTART _BITUL(0) + +/** + * struct gsm_config - n_gsm basic configuration parameters + * + * This structure is used in combination with GSMIOC_GETCONF and GSMIOC_SETCONF + * to retrieve and set the basic parameters of an n_gsm ldisc. + * struct gsm_config_ext can be used to configure extended ldisc parameters. + * + * All timers are in units of 1/100th of a second. + * + * @adaption: Convergence layer type + * @encapsulation: Framing (0 = basic option, 1 = advanced option) + * @initiator: Initiator or responder + * @t1: Acknowledgment timer + * @t2: Response timer for multiplexer control channel + * @t3: Response timer for wake-up procedure + * @n2: Maximum number of retransmissions + * @mru: Maximum incoming frame payload size + * @mtu: Maximum outgoing frame payload size + * @k: Window size + * @i: Frame type (1 = UIH, 2 = UI) + * @unused: Can not be used + */ struct gsm_config { unsigned int adaption; @@ -19,18 +54,32 @@ struct gsm_config unsigned int mtu; unsigned int k; unsigned int i; - unsigned int unused[8]; /* Can not be used */ + unsigned int unused[8]; }; #define GSMIOC_GETCONF _IOR('G', 0, struct gsm_config) #define GSMIOC_SETCONF _IOW('G', 1, struct gsm_config) +/** + * struct gsm_netconfig - n_gsm network configuration parameters + * + * This structure is used in combination with GSMIOC_ENABLE_NET and + * GSMIOC_DISABLE_NET to enable or disable a network data connection + * over a mux virtual tty channel. This is for modems that support + * data connections with raw IP frames instead of PPP. + * + * @adaption: Adaption to use in network mode. + * @protocol: Protocol to use - only ETH_P_IP supported. + * @unused2: Can not be used. + * @if_name: Interface name format string. + * @unused: Can not be used. + */ struct gsm_netconfig { - unsigned int adaption; /* Adaption to use in network mode */ - unsigned short protocol;/* Protocol to use - only ETH_P_IP supported */ - unsigned short unused2; /* Can not be used */ - char if_name[IFNAMSIZ]; /* interface name format string */ - __u8 unused[28]; /* Can not be used */ + unsigned int adaption; + unsigned short protocol; + unsigned short unused2; + char if_name[IFNAMSIZ]; + __u8 unused[28]; }; #define GSMIOC_ENABLE_NET _IOW('G', 2, struct gsm_netconfig) @@ -39,26 +88,57 @@ struct gsm_netconfig { /* get the base tty number for a configured gsmmux tty */ #define GSMIOC_GETFIRST _IOR('G', 4, __u32) +/** + * struct gsm_config_ext - n_gsm extended configuration parameters + * + * This structure is used in combination with GSMIOC_GETCONF_EXT and + * GSMIOC_SETCONF_EXT to retrieve and set the extended parameters of an + * n_gsm ldisc. + * + * All timers are in units of 1/100th of a second. + * + * @keep_alive: Control channel keep-alive in 1/100th of a second (0 to disable). + * @wait_config: Wait for DLCI config before opening virtual link? + * @flags: Mux specific flags. + * @reserved: For future use, must be initialized to zero. + */ struct gsm_config_ext { - __u32 keep_alive; /* Control channel keep-alive in 1/100th of a - * second (0 to disable) - */ - __u32 wait_config; /* Wait for DLCI config before opening virtual link? */ - __u32 reserved[6]; /* For future use, must be initialized to zero */ + __u32 keep_alive; + __u32 wait_config; + __u32 flags; + __u32 reserved[5]; }; #define GSMIOC_GETCONF_EXT _IOR('G', 5, struct gsm_config_ext) #define GSMIOC_SETCONF_EXT _IOW('G', 6, struct gsm_config_ext) -/* Set channel accordingly before calling GSMIOC_GETCONF_DLCI. */ +/** + * struct gsm_dlci_config - n_gsm channel configuration parameters + * + * This structure is used in combination with GSMIOC_GETCONF_DLCI and + * GSMIOC_SETCONF_DLCI to retrieve and set the channel specific parameters + * of an n_gsm ldisc. + * + * Set the channel accordingly before calling GSMIOC_GETCONF_DLCI. + * + * @channel: DLCI (0 for the associated DLCI). + * @adaption: Convergence layer type. + * @mtu: Maximum transfer unit. + * @priority: Priority (0 for default value). + * @i: Frame type (1 = UIH, 2 = UI). + * @k: Window size (0 for default value). + * @flags: DLCI specific flags. + * @reserved: For future use, must be initialized to zero. + */ struct gsm_dlci_config { - __u32 channel; /* DLCI (0 for the associated DLCI) */ - __u32 adaption; /* Convergence layer type */ - __u32 mtu; /* Maximum transfer unit */ - __u32 priority; /* Priority (0 for default value) */ - __u32 i; /* Frame type (1 = UIH, 2 = UI) */ - __u32 k; /* Window size (0 for default value) */ - __u32 reserved[8]; /* For future use, must be initialized to zero */ + __u32 channel; + __u32 adaption; + __u32 mtu; + __u32 priority; + __u32 i; + __u32 k; + __u32 flags; + __u32 reserved[7]; }; #define GSMIOC_GETCONF_DLCI _IOWR('G', 7, struct gsm_dlci_config) diff --git a/contrib/libs/linux-headers/linux/gtp.h b/contrib/libs/linux-headers/linux/gtp.h index d6875e2070..7c1a57024b 100644 --- a/contrib/libs/linux-headers/linux/gtp.h +++ b/contrib/libs/linux-headers/linux/gtp.h @@ -33,6 +33,6 @@ enum gtp_attrs { GTPA_PAD, __GTPA_MAX, }; -#define GTPA_MAX (__GTPA_MAX + 1) +#define GTPA_MAX (__GTPA_MAX - 1) #endif /* _LINUX_GTP_H_ */ diff --git a/contrib/libs/linux-headers/linux/if_link.h b/contrib/libs/linux-headers/linux/if_link.h index 02af33ceb3..c2ca7a6add 100644 --- a/contrib/libs/linux-headers/linux/if_link.h +++ b/contrib/libs/linux-headers/linux/if_link.h @@ -568,6 +568,7 @@ enum { IFLA_BRPORT_MCAST_N_GROUPS, IFLA_BRPORT_MCAST_MAX_GROUPS, IFLA_BRPORT_NEIGH_VLAN_SUPPRESS, + IFLA_BRPORT_BACKUP_NHID, __IFLA_BRPORT_MAX }; #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1) diff --git a/contrib/libs/linux-headers/linux/if_xdp.h b/contrib/libs/linux-headers/linux/if_xdp.h index a78a8096f4..8d48863472 100644 --- a/contrib/libs/linux-headers/linux/if_xdp.h +++ b/contrib/libs/linux-headers/linux/if_xdp.h @@ -25,6 +25,12 @@ * application. */ #define XDP_USE_NEED_WAKEUP (1 << 3) +/* By setting this option, userspace application indicates that it can + * handle multiple descriptors per packet thus enabling AF_XDP to split + * multi-buffer XDP frames into multiple Rx descriptors. Without this set + * such frames will be dropped. + */ +#define XDP_USE_SG (1 << 4) /* Flags for xsk_umem_config flags */ #define XDP_UMEM_UNALIGNED_CHUNK_FLAG (1 << 0) @@ -108,4 +114,11 @@ struct xdp_desc { /* UMEM descriptor is __u64 */ +/* Flag indicating that the packet continues with the buffer pointed out by the + * next frame in the ring. The end of the packet is signalled by setting this + * bit to zero. For single buffer packets, every descriptor has 'options' set + * to 0 and this maintains backward compatibility. + */ +#define XDP_PKT_CONTD (1 << 0) + #endif /* _LINUX_IF_XDP_H */ diff --git a/contrib/libs/linux-headers/linux/io_uring.h b/contrib/libs/linux-headers/linux/io_uring.h index 08720c7bd9..8e61f8b7c2 100644 --- a/contrib/libs/linux-headers/linux/io_uring.h +++ b/contrib/libs/linux-headers/linux/io_uring.h @@ -185,6 +185,11 @@ enum { */ #define IORING_SETUP_REGISTERED_FD_ONLY (1U << 15) +/* + * Removes indirection through the SQ index array. + */ +#define IORING_SETUP_NO_SQARRAY (1U << 16) + enum io_uring_op { IORING_OP_NOP, IORING_OP_READV, @@ -299,11 +304,15 @@ enum io_uring_op { * request 'user_data' * IORING_ASYNC_CANCEL_ANY Match any request * IORING_ASYNC_CANCEL_FD_FIXED 'fd' passed in is a fixed descriptor + * IORING_ASYNC_CANCEL_USERDATA Match on user_data, default for no other key + * IORING_ASYNC_CANCEL_OP Match request based on opcode */ #define IORING_ASYNC_CANCEL_ALL (1U << 0) #define IORING_ASYNC_CANCEL_FD (1U << 1) #define IORING_ASYNC_CANCEL_ANY (1U << 2) #define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3) +#define IORING_ASYNC_CANCEL_USERDATA (1U << 4) +#define IORING_ASYNC_CANCEL_OP (1U << 5) /* * send/sendmsg and recv/recvmsg flags (sqe->ioprio) @@ -697,7 +706,9 @@ struct io_uring_sync_cancel_reg { __s32 fd; __u32 flags; struct __kernel_timespec timeout; - __u64 pad[4]; + __u8 opcode; + __u8 pad[7]; + __u64 pad2[3]; }; /* @@ -717,6 +728,14 @@ struct io_uring_recvmsg_out { __u32 flags; }; +/* + * Argument for IORING_OP_URING_CMD when file is a socket + */ +enum { + SOCKET_URING_OP_SIOCINQ = 0, + SOCKET_URING_OP_SIOCOUTQ, +}; + #ifdef __cplusplus } #endif diff --git a/contrib/libs/linux-headers/linux/iommufd.h b/contrib/libs/linux-headers/linux/iommufd.h index 396ee7fe01..218bf7ac98 100644 --- a/contrib/libs/linux-headers/linux/iommufd.h +++ b/contrib/libs/linux-headers/linux/iommufd.h @@ -45,6 +45,8 @@ enum { IOMMUFD_CMD_IOAS_UNMAP, IOMMUFD_CMD_OPTION, IOMMUFD_CMD_VFIO_IOAS, + IOMMUFD_CMD_HWPT_ALLOC, + IOMMUFD_CMD_GET_HW_INFO, }; /** @@ -344,4 +346,99 @@ struct iommu_vfio_ioas { __u16 __reserved; }; #define IOMMU_VFIO_IOAS _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VFIO_IOAS) + +/** + * struct iommu_hwpt_alloc - ioctl(IOMMU_HWPT_ALLOC) + * @size: sizeof(struct iommu_hwpt_alloc) + * @flags: Must be 0 + * @dev_id: The device to allocate this HWPT for + * @pt_id: The IOAS to connect this HWPT to + * @out_hwpt_id: The ID of the new HWPT + * @__reserved: Must be 0 + * + * Explicitly allocate a hardware page table object. This is the same object + * type that is returned by iommufd_device_attach() and represents the + * underlying iommu driver's iommu_domain kernel object. + * + * A HWPT will be created with the IOVA mappings from the given IOAS. + */ +struct iommu_hwpt_alloc { + __u32 size; + __u32 flags; + __u32 dev_id; + __u32 pt_id; + __u32 out_hwpt_id; + __u32 __reserved; +}; +#define IOMMU_HWPT_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_HWPT_ALLOC) + +/** + * struct iommu_hw_info_vtd - Intel VT-d hardware information + * + * @flags: Must be 0 + * @__reserved: Must be 0 + * + * @cap_reg: Value of Intel VT-d capability register defined in VT-d spec + * section 11.4.2 Capability Register. + * @ecap_reg: Value of Intel VT-d capability register defined in VT-d spec + * section 11.4.3 Extended Capability Register. + * + * User needs to understand the Intel VT-d specification to decode the + * register value. + */ +struct iommu_hw_info_vtd { + __u32 flags; + __u32 __reserved; + __aligned_u64 cap_reg; + __aligned_u64 ecap_reg; +}; + +/** + * enum iommu_hw_info_type - IOMMU Hardware Info Types + * @IOMMU_HW_INFO_TYPE_NONE: Used by the drivers that do not report hardware + * info + * @IOMMU_HW_INFO_TYPE_INTEL_VTD: Intel VT-d iommu info type + */ +enum iommu_hw_info_type { + IOMMU_HW_INFO_TYPE_NONE, + IOMMU_HW_INFO_TYPE_INTEL_VTD, +}; + +/** + * struct iommu_hw_info - ioctl(IOMMU_GET_HW_INFO) + * @size: sizeof(struct iommu_hw_info) + * @flags: Must be 0 + * @dev_id: The device bound to the iommufd + * @data_len: Input the length of a user buffer in bytes. Output the length of + * data that kernel supports + * @data_uptr: User pointer to a user-space buffer used by the kernel to fill + * the iommu type specific hardware information data + * @out_data_type: Output the iommu hardware info type as defined in the enum + * iommu_hw_info_type. + * @__reserved: Must be 0 + * + * Query an iommu type specific hardware information data from an iommu behind + * a given device that has been bound to iommufd. This hardware info data will + * be used to sync capabilities between the virtual iommu and the physical + * iommu, e.g. a nested translation setup needs to check the hardware info, so + * a guest stage-1 page table can be compatible with the physical iommu. + * + * To capture an iommu type specific hardware information data, @data_uptr and + * its length @data_len must be provided. Trailing bytes will be zeroed if the + * user buffer is larger than the data that kernel has. Otherwise, kernel only + * fills the buffer using the given length in @data_len. If the ioctl succeeds, + * @data_len will be updated to the length that kernel actually supports, + * @out_data_type will be filled to decode the data filled in the buffer + * pointed by @data_uptr. Input @data_len == zero is allowed. + */ +struct iommu_hw_info { + __u32 size; + __u32 flags; + __u32 dev_id; + __u32 data_len; + __aligned_u64 data_uptr; + __u32 out_data_type; + __u32 __reserved; +}; +#define IOMMU_GET_HW_INFO _IO(IOMMUFD_TYPE, IOMMUFD_CMD_GET_HW_INFO) #endif diff --git a/contrib/libs/linux-headers/linux/kexec.h b/contrib/libs/linux-headers/linux/kexec.h index 9e2ae64134..d0a571c0f7 100644 --- a/contrib/libs/linux-headers/linux/kexec.h +++ b/contrib/libs/linux-headers/linux/kexec.h @@ -12,6 +12,7 @@ /* kexec flags for different usage scenarios */ #define KEXEC_ON_CRASH 0x00000001 #define KEXEC_PRESERVE_CONTEXT 0x00000002 +#define KEXEC_UPDATE_ELFCOREHDR 0x00000004 #define KEXEC_ARCH_MASK 0xffff0000 /* diff --git a/contrib/libs/linux-headers/linux/kvm_arm64.h b/contrib/libs/linux-headers/linux/kvm_arm64.h index 1f3f3333a4..0d74ee999a 100644 --- a/contrib/libs/linux-headers/linux/kvm_arm64.h +++ b/contrib/libs/linux-headers/linux/kvm_arm64.h @@ -1414,9 +1414,16 @@ struct kvm_device_attr { __u64 addr; /* userspace address of attr data */ }; -#define KVM_DEV_VFIO_GROUP 1 -#define KVM_DEV_VFIO_GROUP_ADD 1 -#define KVM_DEV_VFIO_GROUP_DEL 2 +#define KVM_DEV_VFIO_FILE 1 + +#define KVM_DEV_VFIO_FILE_ADD 1 +#define KVM_DEV_VFIO_FILE_DEL 2 + +/* KVM_DEV_VFIO_GROUP aliases are for compile time uapi compatibility */ +#define KVM_DEV_VFIO_GROUP KVM_DEV_VFIO_FILE + +#define KVM_DEV_VFIO_GROUP_ADD KVM_DEV_VFIO_FILE_ADD +#define KVM_DEV_VFIO_GROUP_DEL KVM_DEV_VFIO_FILE_DEL #define KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE 3 enum kvm_device_type { diff --git a/contrib/libs/linux-headers/linux/kvm_powerpc.h b/contrib/libs/linux-headers/linux/kvm_powerpc.h index 1f3f3333a4..0d74ee999a 100644 --- a/contrib/libs/linux-headers/linux/kvm_powerpc.h +++ b/contrib/libs/linux-headers/linux/kvm_powerpc.h @@ -1414,9 +1414,16 @@ struct kvm_device_attr { __u64 addr; /* userspace address of attr data */ }; -#define KVM_DEV_VFIO_GROUP 1 -#define KVM_DEV_VFIO_GROUP_ADD 1 -#define KVM_DEV_VFIO_GROUP_DEL 2 +#define KVM_DEV_VFIO_FILE 1 + +#define KVM_DEV_VFIO_FILE_ADD 1 +#define KVM_DEV_VFIO_FILE_DEL 2 + +/* KVM_DEV_VFIO_GROUP aliases are for compile time uapi compatibility */ +#define KVM_DEV_VFIO_GROUP KVM_DEV_VFIO_FILE + +#define KVM_DEV_VFIO_GROUP_ADD KVM_DEV_VFIO_FILE_ADD +#define KVM_DEV_VFIO_GROUP_DEL KVM_DEV_VFIO_FILE_DEL #define KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE 3 enum kvm_device_type { diff --git a/contrib/libs/linux-headers/linux/kvm_x86.h b/contrib/libs/linux-headers/linux/kvm_x86.h index 1f3f3333a4..0d74ee999a 100644 --- a/contrib/libs/linux-headers/linux/kvm_x86.h +++ b/contrib/libs/linux-headers/linux/kvm_x86.h @@ -1414,9 +1414,16 @@ struct kvm_device_attr { __u64 addr; /* userspace address of attr data */ }; -#define KVM_DEV_VFIO_GROUP 1 -#define KVM_DEV_VFIO_GROUP_ADD 1 -#define KVM_DEV_VFIO_GROUP_DEL 2 +#define KVM_DEV_VFIO_FILE 1 + +#define KVM_DEV_VFIO_FILE_ADD 1 +#define KVM_DEV_VFIO_FILE_DEL 2 + +/* KVM_DEV_VFIO_GROUP aliases are for compile time uapi compatibility */ +#define KVM_DEV_VFIO_GROUP KVM_DEV_VFIO_FILE + +#define KVM_DEV_VFIO_GROUP_ADD KVM_DEV_VFIO_FILE_ADD +#define KVM_DEV_VFIO_GROUP_DEL KVM_DEV_VFIO_FILE_DEL #define KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE 3 enum kvm_device_type { diff --git a/contrib/libs/linux-headers/linux/mdio.h b/contrib/libs/linux-headers/linux/mdio.h index 1178e90635..d7c7bd0634 100644 --- a/contrib/libs/linux-headers/linux/mdio.h +++ b/contrib/libs/linux-headers/linux/mdio.h @@ -82,6 +82,8 @@ #define MDIO_AN_10BT1_AN_CTRL 526 /* 10BASE-T1 AN control register */ #define MDIO_AN_10BT1_AN_STAT 527 /* 10BASE-T1 AN status register */ #define MDIO_PMA_PMD_BT1_CTRL 2100 /* BASE-T1 PMA/PMD control register */ +#define MDIO_PCS_1000BT1_CTRL 2304 /* 1000BASE-T1 PCS control register */ +#define MDIO_PCS_1000BT1_STAT 2305 /* 1000BASE-T1 PCS status register */ /* LASI (Link Alarm Status Interrupt) registers, defined by XENPAK MSA. */ #define MDIO_PMA_LASI_RXCTRL 0x9000 /* RX_ALARM control */ @@ -332,6 +334,8 @@ #define MDIO_PCS_10T1L_CTRL_RESET 0x8000 /* PCS reset */ /* BASE-T1 PMA/PMD extended ability register. */ +#define MDIO_PMA_PMD_BT1_B100_ABLE 0x0001 /* 100BASE-T1 Ability */ +#define MDIO_PMA_PMD_BT1_B1000_ABLE 0x0002 /* 1000BASE-T1 Ability */ #define MDIO_PMA_PMD_BT1_B10L_ABLE 0x0004 /* 10BASE-T1L Ability */ /* BASE-T1 auto-negotiation advertisement register [15:0] */ @@ -373,7 +377,19 @@ #define MDIO_AN_10BT1_AN_STAT_LPA_EEE_T1L 0x4000 /* 10BASE-T1L LP EEE ability advertisement */ /* BASE-T1 PMA/PMD control register */ -#define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000 /* MASTER-SLAVE config value */ +#define MDIO_PMA_PMD_BT1_CTRL_STRAP 0x000F /* Type selection (Strap) */ +#define MDIO_PMA_PMD_BT1_CTRL_STRAP_B1000 0x0001 /* Select 1000BASE-T1 */ +#define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000 /* MASTER-SLAVE config value */ + +/* 1000BASE-T1 PCS control register */ +#define MDIO_PCS_1000BT1_CTRL_LOW_POWER 0x0800 /* Low power mode */ +#define MDIO_PCS_1000BT1_CTRL_DISABLE_TX 0x4000 /* Global PMA transmit disable */ +#define MDIO_PCS_1000BT1_CTRL_RESET 0x8000 /* Software reset value */ + +/* 1000BASE-T1 PCS status register */ +#define MDIO_PCS_1000BT1_STAT_LINK 0x0004 /* PCS Link is up */ +#define MDIO_PCS_1000BT1_STAT_FAULT 0x0080 /* There is a fault condition */ + /* EEE Supported/Advertisement/LP Advertisement registers. * diff --git a/contrib/libs/linux-headers/linux/mount.h b/contrib/libs/linux-headers/linux/mount.h index 56062aaa15..12e85706ba 100644 --- a/contrib/libs/linux-headers/linux/mount.h +++ b/contrib/libs/linux-headers/linux/mount.h @@ -100,8 +100,9 @@ enum fsconfig_command { FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by path */ FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an object by (empty) path */ FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by fd */ - FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */ + FSCONFIG_CMD_CREATE = 6, /* Create new or reuse existing superblock */ FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */ + FSCONFIG_CMD_CREATE_EXCL = 8, /* Create new superblock, fail if reusing existing superblock */ }; /* diff --git a/contrib/libs/linux-headers/linux/netdev.h b/contrib/libs/linux-headers/linux/netdev.h index 85463a2840..e94668bd58 100644 --- a/contrib/libs/linux-headers/linux/netdev.h +++ b/contrib/libs/linux-headers/linux/netdev.h @@ -11,7 +11,7 @@ /** * enum netdev_xdp_act - * @NETDEV_XDP_ACT_BASIC: XDP feautues set supported by all drivers + * @NETDEV_XDP_ACT_BASIC: XDP features set supported by all drivers * (XDP_ABORTED, XDP_DROP, XDP_PASS, XDP_TX) * @NETDEV_XDP_ACT_REDIRECT: The netdev supports XDP_REDIRECT * @NETDEV_XDP_ACT_NDO_XMIT: This feature informs if netdev implements @@ -34,6 +34,7 @@ enum netdev_xdp_act { NETDEV_XDP_ACT_RX_SG = 32, NETDEV_XDP_ACT_NDO_XMIT_SG = 64, + /* private: */ NETDEV_XDP_ACT_MASK = 127, }; @@ -41,6 +42,7 @@ enum { NETDEV_A_DEV_IFINDEX = 1, NETDEV_A_DEV_PAD, NETDEV_A_DEV_XDP_FEATURES, + NETDEV_A_DEV_XDP_ZC_MAX_SEGS, __NETDEV_A_DEV_MAX, NETDEV_A_DEV_MAX = (__NETDEV_A_DEV_MAX - 1) diff --git a/contrib/libs/linux-headers/linux/netfilter/nf_tables.h b/contrib/libs/linux-headers/linux/netfilter/nf_tables.h index 8466c2a993..ca30232b7b 100644 --- a/contrib/libs/linux-headers/linux/netfilter/nf_tables.h +++ b/contrib/libs/linux-headers/linux/netfilter/nf_tables.h @@ -263,6 +263,7 @@ enum nft_chain_attributes { * @NFTA_RULE_USERDATA: user data (NLA_BINARY, NFT_USERDATA_MAXLEN) * @NFTA_RULE_ID: uniquely identifies a rule in a transaction (NLA_U32) * @NFTA_RULE_POSITION_ID: transaction unique identifier of the previous rule (NLA_U32) + * @NFTA_RULE_CHAIN_ID: add the rule to chain by ID, alternative to @NFTA_RULE_CHAIN (NLA_U32) */ enum nft_rule_attributes { NFTA_RULE_UNSPEC, diff --git a/contrib/libs/linux-headers/linux/netfilter_bridge/ebtables.h b/contrib/libs/linux-headers/linux/netfilter_bridge/ebtables.h index 1e3545de44..287e49a20e 100644 --- a/contrib/libs/linux-headers/linux/netfilter_bridge/ebtables.h +++ b/contrib/libs/linux-headers/linux/netfilter_bridge/ebtables.h @@ -87,7 +87,7 @@ struct ebt_entries { /* nr. of entries */ unsigned int nentries; /* entry list */ - char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); + char data[] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); }; /* used for the bitmask of struct ebt_entry */ @@ -129,7 +129,7 @@ struct ebt_entry_match { } u; /* size of data */ unsigned int match_size; - unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); + unsigned char data[] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); }; struct ebt_entry_watcher { @@ -142,7 +142,7 @@ struct ebt_entry_watcher { } u; /* size of data */ unsigned int watcher_size; - unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); + unsigned char data[] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); }; struct ebt_entry_target { @@ -190,7 +190,7 @@ struct ebt_entry { /* sizeof ebt_entry + matches + watchers + target */ unsigned int next_offset; ); - unsigned char elems[0] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); + unsigned char elems[] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); }; static __inline__ struct ebt_entry_target * diff --git a/contrib/libs/linux-headers/linux/openvswitch.h b/contrib/libs/linux-headers/linux/openvswitch.h index 72f3aac935..fa1d08453f 100644 --- a/contrib/libs/linux-headers/linux/openvswitch.h +++ b/contrib/libs/linux-headers/linux/openvswitch.h @@ -937,6 +937,7 @@ enum ovs_check_pkt_len_attr { * start of the packet or at the start of the l3 header depending on the value * of l3 tunnel flag in the tun_flags field of OVS_ACTION_ATTR_ADD_MPLS * argument. + * @OVS_ACTION_ATTR_DROP: Explicit drop action. * * Only a single header can be set with a single %OVS_ACTION_ATTR_SET. Not all * fields within a header are modifiable, e.g. the IPv4 protocol and fragment @@ -974,6 +975,7 @@ enum ovs_action_attr { OVS_ACTION_ATTR_CHECK_PKT_LEN, /* Nested OVS_CHECK_PKT_LEN_ATTR_*. */ OVS_ACTION_ATTR_ADD_MPLS, /* struct ovs_action_add_mpls. */ OVS_ACTION_ATTR_DEC_TTL, /* Nested OVS_DEC_TTL_ATTR_*. */ + OVS_ACTION_ATTR_DROP, /* u32 error code. */ __OVS_ACTION_ATTR_MAX, /* Nothing past this will be accepted * from userspace. */ diff --git a/contrib/libs/linux-headers/linux/perf_event.h b/contrib/libs/linux-headers/linux/perf_event.h index 93d5c3f59e..0afbb1bf16 100644 --- a/contrib/libs/linux-headers/linux/perf_event.h +++ b/contrib/libs/linux-headers/linux/perf_event.h @@ -1339,7 +1339,8 @@ union perf_mem_data_src { #define PERF_MEM_LVLNUM_L2 0x02 /* L2 */ #define PERF_MEM_LVLNUM_L3 0x03 /* L3 */ #define PERF_MEM_LVLNUM_L4 0x04 /* L4 */ -/* 5-0x8 available */ +/* 5-0x7 available */ +#define PERF_MEM_LVLNUM_UNC 0x08 /* Uncached */ #define PERF_MEM_LVLNUM_CXL 0x09 /* CXL */ #define PERF_MEM_LVLNUM_IO 0x0a /* I/O */ #define PERF_MEM_LVLNUM_ANY_CACHE 0x0b /* Any cache */ diff --git a/contrib/libs/linux-headers/linux/pkt_cls.h b/contrib/libs/linux-headers/linux/pkt_cls.h index 4f3932bb71..c7082cc60d 100644 --- a/contrib/libs/linux-headers/linux/pkt_cls.h +++ b/contrib/libs/linux-headers/linux/pkt_cls.h @@ -598,6 +598,9 @@ enum { TCA_FLOWER_KEY_CFM, /* nested */ + TCA_FLOWER_KEY_SPI, /* be32 */ + TCA_FLOWER_KEY_SPI_MASK, /* be32 */ + __TCA_FLOWER_MAX, }; diff --git a/contrib/libs/linux-headers/linux/pkt_sched.h b/contrib/libs/linux-headers/linux/pkt_sched.h index 00f6ff0aff..3f85ae5780 100644 --- a/contrib/libs/linux-headers/linux/pkt_sched.h +++ b/contrib/libs/linux-headers/linux/pkt_sched.h @@ -603,6 +603,7 @@ enum { TCA_NETEM_JITTER64, TCA_NETEM_SLOT, TCA_NETEM_SLOT_DIST, + TCA_NETEM_PRNG_SEED, __TCA_NETEM_MAX, }; diff --git a/contrib/libs/linux-headers/linux/prctl.h b/contrib/libs/linux-headers/linux/prctl.h index 3c36aeade9..370ed14b1a 100644 --- a/contrib/libs/linux-headers/linux/prctl.h +++ b/contrib/libs/linux-headers/linux/prctl.h @@ -283,7 +283,8 @@ struct prctl_mm_map { /* Memory deny write / execute */ #define PR_SET_MDWE 65 -# define PR_MDWE_REFUSE_EXEC_GAIN 1 +# define PR_MDWE_REFUSE_EXEC_GAIN (1UL << 0) +# define PR_MDWE_NO_INHERIT (1UL << 1) #define PR_GET_MDWE 66 diff --git a/contrib/libs/linux-headers/linux/psp-dbc.h b/contrib/libs/linux-headers/linux/psp-dbc.h new file mode 100644 index 0000000000..9b7b82bd74 --- /dev/null +++ b/contrib/libs/linux-headers/linux/psp-dbc.h @@ -0,0 +1,147 @@ +/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ +/* + * Userspace interface for AMD Dynamic Boost Control (DBC) + * + * Copyright (C) 2023 Advanced Micro Devices, Inc. + * + * Author: Mario Limonciello <mario.limonciello@amd.com> + */ + +#ifndef __PSP_DBC_USER_H__ +#define __PSP_DBC_USER_H__ + +#include <linux/types.h> + +/** + * DOC: AMD Dynamic Boost Control (DBC) interface + */ + +#define DBC_NONCE_SIZE 16 +#define DBC_SIG_SIZE 32 +#define DBC_UID_SIZE 16 + +/** + * struct dbc_user_nonce - Nonce exchange structure (input/output). + * @auth_needed: Whether the PSP should authenticate this request (input). + * 0: no authentication, PSP will return single use nonce. + * 1: authentication: PSP will return multi-use nonce. + * @nonce: 8 byte value used for future authentication (output). + * @signature: Optional 32 byte signature created by software using a + * previous nonce (input). + */ +struct dbc_user_nonce { + __u32 auth_needed; + __u8 nonce[DBC_NONCE_SIZE]; + __u8 signature[DBC_SIG_SIZE]; +} __attribute__((packed)); + +/** + * struct dbc_user_setuid - UID exchange structure (input). + * @uid: 16 byte value representing software identity + * @signature: 32 byte signature created by software using a previous nonce + */ +struct dbc_user_setuid { + __u8 uid[DBC_UID_SIZE]; + __u8 signature[DBC_SIG_SIZE]; +} __attribute__((packed)); + +/** + * struct dbc_user_param - Parameter exchange structure (input/output). + * @msg_index: Message indicating what parameter to set or get (input) + * @param: 4 byte parameter, units are message specific. (input/output) + * @signature: 32 byte signature. + * - When sending a message this is to be created by software + * using a previous nonce (input) + * - For interpreting results, this signature is updated by the + * PSP to allow software to validate the authenticity of the + * results. + */ +struct dbc_user_param { + __u32 msg_index; + __u32 param; + __u8 signature[DBC_SIG_SIZE]; +} __attribute__((packed)); + +/** + * Dynamic Boost Control (DBC) IOC + * + * possible return codes for all DBC IOCTLs: + * 0: success + * -EINVAL: invalid input + * -E2BIG: excess data passed + * -EFAULT: failed to copy to/from userspace + * -EBUSY: mailbox in recovery or in use + * -ENODEV: driver not bound with PSP device + * -EACCES: request isn't authorized + * -EINVAL: invalid parameter + * -ETIMEDOUT: request timed out + * -EAGAIN: invalid request for state machine + * -ENOENT: not implemented + * -ENFILE: overflow + * -EPERM: invalid signature + * -EIO: unknown error + */ +#define DBC_IOC_TYPE 'D' + +/** + * DBCIOCNONCE - Fetch a nonce from the PSP for authenticating commands. + * If a nonce is fetched without authentication it can only + * be utilized for one command. + * If a nonce is fetched with authentication it can be used + * for multiple requests. + */ +#define DBCIOCNONCE _IOWR(DBC_IOC_TYPE, 0x1, struct dbc_user_nonce) + +/** + * DBCIOCUID - Set the user ID (UID) of a calling process. + * The user ID is 8 bytes long. It must be programmed using a + * 32 byte signature built using the nonce fetched from + * DBCIOCNONCE. + * The UID can only be set once until the system is rebooted. + */ +#define DBCIOCUID _IOW(DBC_IOC_TYPE, 0x2, struct dbc_user_setuid) + +/** + * DBCIOCPARAM - Set or get a parameter from the PSP. + * This request will only work after DBCIOCUID has successfully + * set the UID of the calling process. + * Whether the parameter is set or get is controlled by the + * message ID in the request. + * This command must be sent using a 32 byte signature built + * using the nonce fetched from DBCIOCNONCE. + * When the command succeeds, the 32 byte signature will be + * updated by the PSP for software to authenticate the results. + */ +#define DBCIOCPARAM _IOWR(DBC_IOC_TYPE, 0x3, struct dbc_user_param) + +/** + * enum dbc_cmd_msg - Messages utilized by DBCIOCPARAM + * @PARAM_GET_FMAX_CAP: Get frequency cap (MHz) + * @PARAM_SET_FMAX_CAP: Set frequency cap (MHz) + * @PARAM_GET_PWR_CAP: Get socket power cap (mW) + * @PARAM_SET_PWR_CAP: Set socket power cap (mW) + * @PARAM_GET_GFX_MODE: Get graphics mode (0/1) + * @PARAM_SET_GFX_MODE: Set graphics mode (0/1) + * @PARAM_GET_CURR_TEMP: Get current temperature (degrees C) + * @PARAM_GET_FMAX_MAX: Get maximum allowed value for frequency (MHz) + * @PARAM_GET_FMAX_MIN: Get minimum allowed value for frequency (MHz) + * @PARAM_GET_SOC_PWR_MAX: Get maximum allowed value for SoC power (mw) + * @PARAM_GET_SOC_PWR_MIN: Get minimum allowed value for SoC power (mw) + * @PARAM_GET_SOC_PWR_CUR: Get current value for SoC Power (mW) + */ +enum dbc_cmd_msg { + PARAM_GET_FMAX_CAP = 0x3, + PARAM_SET_FMAX_CAP = 0x4, + PARAM_GET_PWR_CAP = 0x5, + PARAM_SET_PWR_CAP = 0x6, + PARAM_GET_GFX_MODE = 0x7, + PARAM_SET_GFX_MODE = 0x8, + PARAM_GET_CURR_TEMP = 0x9, + PARAM_GET_FMAX_MAX = 0xA, + PARAM_GET_FMAX_MIN = 0xB, + PARAM_GET_SOC_PWR_MAX = 0xC, + PARAM_GET_SOC_PWR_MIN = 0xD, + PARAM_GET_SOC_PWR_CUR = 0xE, +}; + +#endif /* __PSP_DBC_USER_H__ */ diff --git a/contrib/libs/linux-headers/linux/quota.h b/contrib/libs/linux-headers/linux/quota.h index 1305380d6c..193872508e 100644 --- a/contrib/libs/linux-headers/linux/quota.h +++ b/contrib/libs/linux-headers/linux/quota.h @@ -77,6 +77,7 @@ #define QFMT_VFS_V0 2 #define QFMT_OCFS2 3 #define QFMT_VFS_V1 4 +#define QFMT_SHMEM 5 /* Size of block in which space limits are passed through the quota * interface */ diff --git a/contrib/libs/linux-headers/linux/rpmsg.h b/contrib/libs/linux-headers/linux/rpmsg.h index 03d724ed80..b0dd3d2196 100644 --- a/contrib/libs/linux-headers/linux/rpmsg.h +++ b/contrib/libs/linux-headers/linux/rpmsg.h @@ -43,4 +43,14 @@ struct rpmsg_endpoint_info { */ #define RPMSG_RELEASE_DEV_IOCTL _IOW(0xb5, 0x4, struct rpmsg_endpoint_info) +/** + * Get the flow control state of the remote rpmsg char device. + */ +#define RPMSG_GET_OUTGOING_FLOWCONTROL _IOR(0xb5, 0x5, int) + +/** + * Set the flow control state of the local rpmsg char device. + */ +#define RPMSG_SET_INCOMING_FLOWCONTROL _IOR(0xb5, 0x6, int) + #endif diff --git a/contrib/libs/linux-headers/linux/seccomp.h b/contrib/libs/linux-headers/linux/seccomp.h index 0595945a7d..cce909572d 100644 --- a/contrib/libs/linux-headers/linux/seccomp.h +++ b/contrib/libs/linux-headers/linux/seccomp.h @@ -115,6 +115,8 @@ struct seccomp_notif_resp { __u32 flags; }; +#define SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP (1UL << 0) + /* valid flags for seccomp_notif_addfd */ #define SECCOMP_ADDFD_FLAG_SETFD (1UL << 0) /* Specify remote fd */ #define SECCOMP_ADDFD_FLAG_SEND (1UL << 1) /* Addfd and return it, atomically */ @@ -150,4 +152,6 @@ struct seccomp_notif_addfd { #define SECCOMP_IOCTL_NOTIF_ADDFD SECCOMP_IOW(3, \ struct seccomp_notif_addfd) +#define SECCOMP_IOCTL_NOTIF_SET_FLAGS SECCOMP_IOW(4, __u64) + #endif /* _LINUX_SECCOMP_H */ diff --git a/contrib/libs/linux-headers/linux/sed-opal.h b/contrib/libs/linux-headers/linux/sed-opal.h index cd85d8795e..27c433a69b 100644 --- a/contrib/libs/linux-headers/linux/sed-opal.h +++ b/contrib/libs/linux-headers/linux/sed-opal.h @@ -49,13 +49,23 @@ enum opal_lock_flags { OPAL_SAVE_FOR_LOCK = 0x01, }; +enum opal_key_type { + OPAL_INCLUDED = 0, /* key[] is the key */ + OPAL_KEYRING, /* key is in keyring */ +}; + struct opal_key { __u8 lr; __u8 key_len; - __u8 __align[6]; + __u8 key_type; + __u8 __align[5]; __u8 key[OPAL_KEY_MAX]; }; +enum opal_revert_lsp_opts { + OPAL_PRESERVE = 0x01, +}; + struct opal_lr_act { struct opal_key key; __u32 sum; @@ -173,6 +183,17 @@ struct opal_geometry { __u8 __align[3]; }; +struct opal_discovery { + __u64 data; + __u64 size; +}; + +struct opal_revert_lsp { + struct opal_key key; + __u32 options; + __u32 __pad; +}; + #define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock) #define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock) #define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key) @@ -192,5 +213,7 @@ struct opal_geometry { #define IOC_OPAL_GET_STATUS _IOR('p', 236, struct opal_status) #define IOC_OPAL_GET_LR_STATUS _IOW('p', 237, struct opal_lr_status) #define IOC_OPAL_GET_GEOMETRY _IOR('p', 238, struct opal_geometry) +#define IOC_OPAL_DISCOVERY _IOW('p', 239, struct opal_discovery) +#define IOC_OPAL_REVERT_LSP _IOW('p', 240, struct opal_revert_lsp) #endif /* _SED_OPAL_H */ diff --git a/contrib/libs/linux-headers/linux/serial_core.h b/contrib/libs/linux-headers/linux/serial_core.h index 2297b18b1c..e57895f65c 100644 --- a/contrib/libs/linux-headers/linux/serial_core.h +++ b/contrib/libs/linux-headers/linux/serial_core.h @@ -25,6 +25,8 @@ /* * The type definitions. These are from Ted Ts'o's serial.h + * By historical reasons the values from 0 to 13 are defined + * in the include/uapi/linux/serial.h, do not define them here. */ #define PORT_NS16550A 14 #define PORT_XSCALE 15 @@ -94,15 +96,9 @@ #define PORT_SCIF 53 #define PORT_IRDA 54 -/* Samsung S3C2410 SoC and derivatives thereof */ -#define PORT_S3C2410 55 - /* SGI IP22 aka Indy / Challenge S / Indigo 2 */ #define PORT_IP22ZILOG 56 -/* Sharp LH7a40x -- an ARM9 SoC series */ -#define PORT_LH7A40X 57 - /* PPC CPM type number */ #define PORT_CPM 58 @@ -112,37 +108,23 @@ /* IBM icom */ #define PORT_ICOM 60 -/* Samsung S3C2440 SoC */ -#define PORT_S3C2440 61 - /* Motorola i.MX SoC */ #define PORT_IMX 62 -/* Marvell MPSC (obsolete unused) */ -#define PORT_MPSC 63 - /* TXX9 type number */ #define PORT_TXX9 64 -/* Samsung S3C2400 SoC */ -#define PORT_S3C2400 67 - -/* M32R SIO */ -#define PORT_M32R_SIO 68 - /*Digi jsm */ #define PORT_JSM 69 /* SUN4V Hypervisor Console */ #define PORT_SUNHV 72 -#define PORT_S3C2412 73 - /* Xilinx uartlite */ #define PORT_UARTLITE 74 -/* Blackfin bf5xx */ -#define PORT_BFIN 75 +/* Broadcom BCM7271 UART */ +#define PORT_BCM7271 76 /* Broadcom SB1250, etc. SOC */ #define PORT_SB1250_DUART 77 @@ -150,13 +132,6 @@ /* Freescale ColdFire */ #define PORT_MCF 78 -/* Blackfin SPORT */ -#define PORT_BFIN_SPORT 79 - -/* MN10300 on-chip UART numbers */ -#define PORT_MN10300 80 -#define PORT_MN10300_CTS 81 - #define PORT_SC26XX 82 /* SH-SCI */ @@ -164,9 +139,6 @@ #define PORT_S3C6400 84 -/* NWPSERIAL, now removed */ -#define PORT_NWPSERIAL 85 - /* MAX3100 */ #define PORT_MAX3100 86 @@ -225,13 +197,10 @@ /* ST ASC type numbers */ #define PORT_ASC 105 -/* Tilera TILE-Gx UART */ -#define PORT_TILEGX 106 - /* MEN 16z135 UART */ #define PORT_MEN_Z135 107 -/* SC16IS74xx */ +/* SC16IS7xx */ #define PORT_SC16IS7XX 108 /* MESON */ @@ -243,9 +212,6 @@ /* SPRD SERIAL */ #define PORT_SPRD 111 -/* Cris v10 / v32 SoC */ -#define PORT_CRIS 112 - /* STM32 USART */ #define PORT_STM32 113 diff --git a/contrib/libs/linux-headers/linux/smc.h b/contrib/libs/linux-headers/linux/smc.h index ff057d5390..d2546bb814 100644 --- a/contrib/libs/linux-headers/linux/smc.h +++ b/contrib/libs/linux-headers/linux/smc.h @@ -107,6 +107,8 @@ enum { enum { SMC_NLA_LGR_R_V2_UNSPEC, SMC_NLA_LGR_R_V2_DIRECT, /* u8 */ + SMC_NLA_LGR_R_V2_MAX_CONNS, /* u8 */ + SMC_NLA_LGR_R_V2_MAX_LINKS, /* u8 */ __SMC_NLA_LGR_R_V2_MAX, SMC_NLA_LGR_R_V2_MAX = __SMC_NLA_LGR_R_V2_MAX - 1 }; diff --git a/contrib/libs/linux-headers/linux/stddef.h b/contrib/libs/linux-headers/linux/stddef.h index b3d4a9c170..bf9749dd14 100644 --- a/contrib/libs/linux-headers/linux/stddef.h +++ b/contrib/libs/linux-headers/linux/stddef.h @@ -27,7 +27,7 @@ union { \ struct { MEMBERS } ATTRS; \ struct TAG { MEMBERS } ATTRS NAME; \ - } + } ATTRS #ifdef __cplusplus /* sizeof(struct{}) is 1 in C++, not 0, can't use C version of the macro. */ diff --git a/contrib/libs/linux-headers/linux/ublk_cmd.h b/contrib/libs/linux-headers/linux/ublk_cmd.h index f11097744e..4643fc5630 100644 --- a/contrib/libs/linux-headers/linux/ublk_cmd.h +++ b/contrib/libs/linux-headers/linux/ublk_cmd.h @@ -176,6 +176,12 @@ /* Copy between request and user buffer by pread()/pwrite() */ #define UBLK_F_USER_COPY (1UL << 7) +/* + * User space sets this flag when setting up the device to request zoned storage support. Kernel may + * deny the request by returning an error. + */ +#define UBLK_F_ZONED (1ULL << 8) + /* device state */ #define UBLK_S_DEV_DEAD 0 #define UBLK_S_DEV_LIVE 1 @@ -232,9 +238,27 @@ struct ublksrv_ctrl_dev_info { #define UBLK_IO_OP_READ 0 #define UBLK_IO_OP_WRITE 1 #define UBLK_IO_OP_FLUSH 2 -#define UBLK_IO_OP_DISCARD 3 -#define UBLK_IO_OP_WRITE_SAME 4 -#define UBLK_IO_OP_WRITE_ZEROES 5 +#define UBLK_IO_OP_DISCARD 3 +#define UBLK_IO_OP_WRITE_SAME 4 +#define UBLK_IO_OP_WRITE_ZEROES 5 +#define UBLK_IO_OP_ZONE_OPEN 10 +#define UBLK_IO_OP_ZONE_CLOSE 11 +#define UBLK_IO_OP_ZONE_FINISH 12 +#define UBLK_IO_OP_ZONE_APPEND 13 +#define UBLK_IO_OP_ZONE_RESET_ALL 14 +#define UBLK_IO_OP_ZONE_RESET 15 +/* + * Construct a zone report. The report request is carried in `struct + * ublksrv_io_desc`. The `start_sector` field must be the first sector of a zone + * and shall indicate the first zone of the report. The `nr_zones` shall + * indicate how many zones should be reported at most. The report shall be + * delivered as a `struct blk_zone` array. To report fewer zones than requested, + * zero the last entry of the returned array. + * + * Related definitions(blk_zone, blk_zone_cond, blk_zone_type, ...) in + * include/uapi/linux/blkzoned.h are part of ublk UAPI. + */ +#define UBLK_IO_OP_REPORT_ZONES 18 #define UBLK_IO_F_FAILFAST_DEV (1U << 8) #define UBLK_IO_F_FAILFAST_TRANSPORT (1U << 9) @@ -255,7 +279,10 @@ struct ublksrv_io_desc { /* op: bit 0-7, flags: bit 8-31 */ __u32 op_flags; - __u32 nr_sectors; + union { + __u32 nr_sectors; + __u32 nr_zones; /* for UBLK_IO_OP_REPORT_ZONES */ + }; /* start sector for this io */ __u64 start_sector; @@ -284,11 +311,21 @@ struct ublksrv_io_cmd { /* io result, it is valid for COMMIT* command only */ __s32 result; - /* - * userspace buffer address in ublksrv daemon process, valid for - * FETCH* command only - */ - __u64 addr; + union { + /* + * userspace buffer address in ublksrv daemon process, valid for + * FETCH* command only + * + * `addr` should not be used when UBLK_F_USER_COPY is enabled, + * because userspace handles data copy by pread()/pwrite() over + * /dev/ublkcN. But in case of UBLK_F_ZONED, this union is + * re-used to pass back the allocated LBA for + * UBLK_IO_OP_ZONE_APPEND which actually depends on + * UBLK_F_USER_COPY + */ + __u64 addr; + __u64 zone_append_lba; + }; }; struct ublk_param_basic { @@ -331,6 +368,13 @@ struct ublk_param_devt { __u32 disk_minor; }; +struct ublk_param_zoned { + __u32 max_open_zones; + __u32 max_active_zones; + __u32 max_zone_append_sectors; + __u8 reserved[20]; +}; + struct ublk_params { /* * Total length of parameters, userspace has to set 'len' for both @@ -342,11 +386,13 @@ struct ublk_params { #define UBLK_PARAM_TYPE_BASIC (1 << 0) #define UBLK_PARAM_TYPE_DISCARD (1 << 1) #define UBLK_PARAM_TYPE_DEVT (1 << 2) +#define UBLK_PARAM_TYPE_ZONED (1 << 3) __u32 types; /* types of parameter included */ struct ublk_param_basic basic; struct ublk_param_discard discard; struct ublk_param_devt devt; + struct ublk_param_zoned zoned; }; #endif diff --git a/contrib/libs/linux-headers/linux/usb/ch11.h b/contrib/libs/linux-headers/linux/usb/ch11.h index fb0cd24c39..ce4c83f2e6 100644 --- a/contrib/libs/linux-headers/linux/usb/ch11.h +++ b/contrib/libs/linux-headers/linux/usb/ch11.h @@ -15,10 +15,8 @@ /* This is arbitrary. * From USB 2.0 spec Table 11-13, offset 7, a hub can * have up to 255 ports. The most yet reported is 10. - * - * Current Wireless USB host hardware (Intel i1480 for example) allows - * up to 22 devices to connect. Upcoming hardware might raise that - * limit. Because the arrays need to add a bit for hub status data, we + * Upcoming hardware might raise that limit. + * Because the arrays need to add a bit for hub status data, we * use 31, so plus one evens out to four bytes. */ #define USB_MAXCHILDREN 31 diff --git a/contrib/libs/linux-headers/linux/usb/ch9.h b/contrib/libs/linux-headers/linux/usb/ch9.h index 6e3e07142a..bd6124cc0d 100644 --- a/contrib/libs/linux-headers/linux/usb/ch9.h +++ b/contrib/libs/linux-headers/linux/usb/ch9.h @@ -3,7 +3,7 @@ * This file holds USB constants and structures that are needed for * USB device APIs. These are used by the USB device model, which is * defined in chapter 9 of the USB 2.0 specification and in the - * Wireless USB 1.0 (spread around). Linux has several APIs in C that + * Wireless USB 1.0 spec (now defunct). Linux has several APIs in C that * need these: * * - the master/host side Linux-USB kernel driver API; @@ -14,9 +14,6 @@ * act either as a USB master/host or as a USB slave/device. That means * the master and slave side APIs benefit from working well together. * - * There's also "Wireless USB", using low power short range radios for - * peripheral interconnection but otherwise building on the USB framework. - * * Note all descriptors are declared '__attribute__((packed))' so that: * * [a] they never get padded, either internally (USB spec writers diff --git a/contrib/libs/linux-headers/linux/userfaultfd.h b/contrib/libs/linux-headers/linux/userfaultfd.h index 14e402263a..59978fbaae 100644 --- a/contrib/libs/linux-headers/linux/userfaultfd.h +++ b/contrib/libs/linux-headers/linux/userfaultfd.h @@ -39,7 +39,8 @@ UFFD_FEATURE_MINOR_SHMEM | \ UFFD_FEATURE_EXACT_ADDRESS | \ UFFD_FEATURE_WP_HUGETLBFS_SHMEM | \ - UFFD_FEATURE_WP_UNPOPULATED) + UFFD_FEATURE_WP_UNPOPULATED | \ + UFFD_FEATURE_POISON) #define UFFD_API_IOCTLS \ ((__u64)1 << _UFFDIO_REGISTER | \ (__u64)1 << _UFFDIO_UNREGISTER | \ @@ -49,12 +50,14 @@ (__u64)1 << _UFFDIO_COPY | \ (__u64)1 << _UFFDIO_ZEROPAGE | \ (__u64)1 << _UFFDIO_WRITEPROTECT | \ - (__u64)1 << _UFFDIO_CONTINUE) + (__u64)1 << _UFFDIO_CONTINUE | \ + (__u64)1 << _UFFDIO_POISON) #define UFFD_API_RANGE_IOCTLS_BASIC \ ((__u64)1 << _UFFDIO_WAKE | \ (__u64)1 << _UFFDIO_COPY | \ + (__u64)1 << _UFFDIO_WRITEPROTECT | \ (__u64)1 << _UFFDIO_CONTINUE | \ - (__u64)1 << _UFFDIO_WRITEPROTECT) + (__u64)1 << _UFFDIO_POISON) /* * Valid ioctl command number range with this API is from 0x00 to @@ -71,6 +74,7 @@ #define _UFFDIO_ZEROPAGE (0x04) #define _UFFDIO_WRITEPROTECT (0x06) #define _UFFDIO_CONTINUE (0x07) +#define _UFFDIO_POISON (0x08) #define _UFFDIO_API (0x3F) /* userfaultfd ioctl ids */ @@ -91,6 +95,8 @@ struct uffdio_writeprotect) #define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, \ struct uffdio_continue) +#define UFFDIO_POISON _IOWR(UFFDIO, _UFFDIO_POISON, \ + struct uffdio_poison) /* read() structure */ struct uffd_msg { @@ -225,6 +231,7 @@ struct uffdio_api { #define UFFD_FEATURE_EXACT_ADDRESS (1<<11) #define UFFD_FEATURE_WP_HUGETLBFS_SHMEM (1<<12) #define UFFD_FEATURE_WP_UNPOPULATED (1<<13) +#define UFFD_FEATURE_POISON (1<<14) __u64 features; __u64 ioctls; @@ -321,6 +328,18 @@ struct uffdio_continue { __s64 mapped; }; +struct uffdio_poison { + struct uffdio_range range; +#define UFFDIO_POISON_MODE_DONTWAKE ((__u64)1<<0) + __u64 mode; + + /* + * Fields below here are written by the ioctl and must be at the end: + * the copy_from_user will not read past here. + */ + __s64 updated; +}; + /* * Flags for the userfaultfd(2) system call itself. */ diff --git a/contrib/libs/linux-headers/linux/v4l2-subdev.h b/contrib/libs/linux-headers/linux/v4l2-subdev.h index 4a195b68f2..b383c2fe0c 100644 --- a/contrib/libs/linux-headers/linux/v4l2-subdev.h +++ b/contrib/libs/linux-headers/linux/v4l2-subdev.h @@ -239,7 +239,7 @@ struct v4l2_subdev_routing { * set (which is the default), the 'stream' fields will be forced to 0 by the * kernel. */ - #define V4L2_SUBDEV_CLIENT_CAP_STREAMS (1U << 0) + #define V4L2_SUBDEV_CLIENT_CAP_STREAMS (1ULL << 0) /** * struct v4l2_subdev_client_capability - Capabilities of the client accessing diff --git a/contrib/libs/linux-headers/linux/version.h b/contrib/libs/linux-headers/linux/version.h index 23253fbb7c..d4fc15cdd3 100644 --- a/contrib/libs/linux-headers/linux/version.h +++ b/contrib/libs/linux-headers/linux/version.h @@ -1,5 +1,5 @@ -#define LINUX_VERSION_CODE 394505 +#define LINUX_VERSION_CODE 394759 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c))) #define LINUX_VERSION_MAJOR 6 -#define LINUX_VERSION_PATCHLEVEL 5 -#define LINUX_VERSION_SUBLEVEL 9 +#define LINUX_VERSION_PATCHLEVEL 6 +#define LINUX_VERSION_SUBLEVEL 7 diff --git a/contrib/libs/linux-headers/linux/vfio.h b/contrib/libs/linux-headers/linux/vfio.h index 16db89071e..acf72b4999 100644 --- a/contrib/libs/linux-headers/linux/vfio.h +++ b/contrib/libs/linux-headers/linux/vfio.h @@ -217,6 +217,7 @@ struct vfio_device_info { __u32 num_regions; /* Max region index + 1 */ __u32 num_irqs; /* Max IRQ index + 1 */ __u32 cap_offset; /* Offset within info struct of first cap */ + __u32 pad; }; #define VFIO_DEVICE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 7) @@ -677,11 +678,60 @@ enum { * VFIO_DEVICE_GET_PCI_HOT_RESET_INFO - _IOWR(VFIO_TYPE, VFIO_BASE + 12, * struct vfio_pci_hot_reset_info) * + * This command is used to query the affected devices in the hot reset for + * a given device. + * + * This command always reports the segment, bus, and devfn information for + * each affected device, and selectively reports the group_id or devid per + * the way how the calling device is opened. + * + * - If the calling device is opened via the traditional group/container + * API, group_id is reported. User should check if it has owned all + * the affected devices and provides a set of group fds to prove the + * ownership in VFIO_DEVICE_PCI_HOT_RESET ioctl. + * + * - If the calling device is opened as a cdev, devid is reported. + * Flag VFIO_PCI_HOT_RESET_FLAG_DEV_ID is set to indicate this + * data type. All the affected devices should be represented in + * the dev_set, ex. bound to a vfio driver, and also be owned by + * this interface which is determined by the following conditions: + * 1) Has a valid devid within the iommufd_ctx of the calling device. + * Ownership cannot be determined across separate iommufd_ctx and + * the cdev calling conventions do not support a proof-of-ownership + * model as provided in the legacy group interface. In this case + * valid devid with value greater than zero is provided in the return + * structure. + * 2) Does not have a valid devid within the iommufd_ctx of the calling + * device, but belongs to the same IOMMU group as the calling device + * or another opened device that has a valid devid within the + * iommufd_ctx of the calling device. This provides implicit ownership + * for devices within the same DMA isolation context. In this case + * the devid value of VFIO_PCI_DEVID_OWNED is provided in the return + * structure. + * + * A devid value of VFIO_PCI_DEVID_NOT_OWNED is provided in the return + * structure for affected devices where device is NOT represented in the + * dev_set or ownership is not available. Such devices prevent the use + * of VFIO_DEVICE_PCI_HOT_RESET ioctl outside of the proof-of-ownership + * calling conventions (ie. via legacy group accessed devices). Flag + * VFIO_PCI_HOT_RESET_FLAG_DEV_ID_OWNED would be set when all the + * affected devices are represented in the dev_set and also owned by + * the user. This flag is available only when + * flag VFIO_PCI_HOT_RESET_FLAG_DEV_ID is set, otherwise reserved. + * When set, user could invoke VFIO_DEVICE_PCI_HOT_RESET with a zero + * length fd array on the calling device as the ownership is validated + * by iommufd_ctx. + * * Return: 0 on success, -errno on failure: * -enospc = insufficient buffer, -enodev = unsupported for device. */ struct vfio_pci_dependent_device { - __u32 group_id; + union { + __u32 group_id; + __u32 devid; +#define VFIO_PCI_DEVID_OWNED 0 +#define VFIO_PCI_DEVID_NOT_OWNED -1 + }; __u16 segment; __u8 bus; __u8 devfn; /* Use PCI_SLOT/PCI_FUNC */ @@ -690,6 +740,8 @@ struct vfio_pci_dependent_device { struct vfio_pci_hot_reset_info { __u32 argsz; __u32 flags; +#define VFIO_PCI_HOT_RESET_FLAG_DEV_ID (1 << 0) +#define VFIO_PCI_HOT_RESET_FLAG_DEV_ID_OWNED (1 << 1) __u32 count; struct vfio_pci_dependent_device devices[]; }; @@ -700,6 +752,24 @@ struct vfio_pci_hot_reset_info { * VFIO_DEVICE_PCI_HOT_RESET - _IOW(VFIO_TYPE, VFIO_BASE + 13, * struct vfio_pci_hot_reset) * + * A PCI hot reset results in either a bus or slot reset which may affect + * other devices sharing the bus/slot. The calling user must have + * ownership of the full set of affected devices as determined by the + * VFIO_DEVICE_GET_PCI_HOT_RESET_INFO ioctl. + * + * When called on a device file descriptor acquired through the vfio + * group interface, the user is required to provide proof of ownership + * of those affected devices via the group_fds array in struct + * vfio_pci_hot_reset. + * + * When called on a direct cdev opened vfio device, the flags field of + * struct vfio_pci_hot_reset_info reports the ownership status of the + * affected devices and this ioctl must be called with an empty group_fds + * array. See above INFO ioctl definition for ownership requirements. + * + * Mixed usage of legacy groups and cdevs across the set of affected + * devices is not supported. + * * Return: 0 on success, -errno on failure. */ struct vfio_pci_hot_reset { @@ -829,6 +899,83 @@ struct vfio_device_feature { #define VFIO_DEVICE_FEATURE _IO(VFIO_TYPE, VFIO_BASE + 17) /* + * VFIO_DEVICE_BIND_IOMMUFD - _IOR(VFIO_TYPE, VFIO_BASE + 18, + * struct vfio_device_bind_iommufd) + * @argsz: User filled size of this data. + * @flags: Must be 0. + * @iommufd: iommufd to bind. + * @out_devid: The device id generated by this bind. devid is a handle for + * this device/iommufd bond and can be used in IOMMUFD commands. + * + * Bind a vfio_device to the specified iommufd. + * + * User is restricted from accessing the device before the binding operation + * is completed. Only allowed on cdev fds. + * + * Unbind is automatically conducted when device fd is closed. + * + * Return: 0 on success, -errno on failure. + */ +struct vfio_device_bind_iommufd { + __u32 argsz; + __u32 flags; + __s32 iommufd; + __u32 out_devid; +}; + +#define VFIO_DEVICE_BIND_IOMMUFD _IO(VFIO_TYPE, VFIO_BASE + 18) + +/* + * VFIO_DEVICE_ATTACH_IOMMUFD_PT - _IOW(VFIO_TYPE, VFIO_BASE + 19, + * struct vfio_device_attach_iommufd_pt) + * @argsz: User filled size of this data. + * @flags: Must be 0. + * @pt_id: Input the target id which can represent an ioas or a hwpt + * allocated via iommufd subsystem. + * Output the input ioas id or the attached hwpt id which could + * be the specified hwpt itself or a hwpt automatically created + * for the specified ioas by kernel during the attachment. + * + * Associate the device with an address space within the bound iommufd. + * Undo by VFIO_DEVICE_DETACH_IOMMUFD_PT or device fd close. This is only + * allowed on cdev fds. + * + * If a vfio device is currently attached to a valid hw_pagetable, without doing + * a VFIO_DEVICE_DETACH_IOMMUFD_PT, a second VFIO_DEVICE_ATTACH_IOMMUFD_PT ioctl + * passing in another hw_pagetable (hwpt) id is allowed. This action, also known + * as a hw_pagetable replacement, will replace the device's currently attached + * hw_pagetable with a new hw_pagetable corresponding to the given pt_id. + * + * Return: 0 on success, -errno on failure. + */ +struct vfio_device_attach_iommufd_pt { + __u32 argsz; + __u32 flags; + __u32 pt_id; +}; + +#define VFIO_DEVICE_ATTACH_IOMMUFD_PT _IO(VFIO_TYPE, VFIO_BASE + 19) + +/* + * VFIO_DEVICE_DETACH_IOMMUFD_PT - _IOW(VFIO_TYPE, VFIO_BASE + 20, + * struct vfio_device_detach_iommufd_pt) + * @argsz: User filled size of this data. + * @flags: Must be 0. + * + * Remove the association of the device and its current associated address + * space. After it, the device should be in a blocking DMA state. This is only + * allowed on cdev fds. + * + * Return: 0 on success, -errno on failure. + */ +struct vfio_device_detach_iommufd_pt { + __u32 argsz; + __u32 flags; +}; + +#define VFIO_DEVICE_DETACH_IOMMUFD_PT _IO(VFIO_TYPE, VFIO_BASE + 20) + +/* * Provide support for setting a PCI VF Token, which is used as a shared * secret between PF and VF drivers. This feature may only be set on a * PCI SR-IOV PF when SR-IOV is enabled on the PF and there are no existing @@ -1304,6 +1451,7 @@ struct vfio_iommu_type1_info { #define VFIO_IOMMU_INFO_CAPS (1 << 1) /* Info supports caps */ __u64 iova_pgsizes; /* Bitmap of supported page sizes */ __u32 cap_offset; /* Offset within info struct of first cap */ + __u32 pad; }; /* diff --git a/contrib/libs/linux-headers/linux/vhost_types.h b/contrib/libs/linux-headers/linux/vhost_types.h index 157db48379..637ab7e1bd 100644 --- a/contrib/libs/linux-headers/linux/vhost_types.h +++ b/contrib/libs/linux-headers/linux/vhost_types.h @@ -181,5 +181,9 @@ struct vhost_vdpa_iova_range { #define VHOST_BACKEND_F_SUSPEND 0x4 /* Device can be resumed */ #define VHOST_BACKEND_F_RESUME 0x5 +/* Device supports the driver enabling virtqueues both before and after + * DRIVER_OK + */ +#define VHOST_BACKEND_F_ENABLE_AFTER_DRIVER_OK 0x6 #endif diff --git a/contrib/libs/linux-headers/linux/videodev2.h b/contrib/libs/linux-headers/linux/videodev2.h index d4044ea9d7..47dbd68d43 100644 --- a/contrib/libs/linux-headers/linux/videodev2.h +++ b/contrib/libs/linux-headers/linux/videodev2.h @@ -769,6 +769,8 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */ #define V4L2_PIX_FMT_MM21 v4l2_fourcc('M', 'M', '2', '1') /* Mediatek 8-bit block mode, two non-contiguous planes */ +#define V4L2_PIX_FMT_MT2110T v4l2_fourcc('M', 'T', '2', 'T') /* Mediatek 10-bit block tile mode */ +#define V4L2_PIX_FMT_MT2110R v4l2_fourcc('M', 'T', '2', 'R') /* Mediatek 10-bit block raster mode */ #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */ #define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */ #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */ diff --git a/contrib/libs/linux-headers/linux/virtio_net.h b/contrib/libs/linux-headers/linux/virtio_net.h index 8b9bc4fdc1..5775077dc6 100644 --- a/contrib/libs/linux-headers/linux/virtio_net.h +++ b/contrib/libs/linux-headers/linux/virtio_net.h @@ -56,6 +56,7 @@ #define VIRTIO_NET_F_MQ 22 /* Device supports Receive Flow * Steering */ #define VIRTIO_NET_F_CTRL_MAC_ADDR 23 /* Set MAC address */ +#define VIRTIO_NET_F_VQ_NOTF_COAL 52 /* Device supports virtqueue notification coalescing */ #define VIRTIO_NET_F_NOTF_COAL 53 /* Device supports notifications coalescing */ #define VIRTIO_NET_F_GUEST_USO4 54 /* Guest can handle USOv4 in. */ #define VIRTIO_NET_F_GUEST_USO6 55 /* Guest can handle USOv6 in. */ @@ -391,5 +392,18 @@ struct virtio_net_ctrl_coal_rx { }; #define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1 +#define VIRTIO_NET_CTRL_NOTF_COAL_VQ_SET 2 +#define VIRTIO_NET_CTRL_NOTF_COAL_VQ_GET 3 + +struct virtio_net_ctrl_coal { + __le32 max_packets; + __le32 max_usecs; +}; + +struct virtio_net_ctrl_coal_vq { + __le16 vqn; + __le16 reserved; + struct virtio_net_ctrl_coal coal; +}; #endif /* _LINUX_VIRTIO_NET_H */ diff --git a/contrib/libs/linux-headers/linux/vm_sockets.h b/contrib/libs/linux-headers/linux/vm_sockets.h index 3692d4391e..aa3ec6516c 100644 --- a/contrib/libs/linux-headers/linux/vm_sockets.h +++ b/contrib/libs/linux-headers/linux/vm_sockets.h @@ -189,4 +189,21 @@ struct sockaddr_vm { #define IOCTL_VM_SOCKETS_GET_LOCAL_CID _IO(7, 0xb9) +/* MSG_ZEROCOPY notifications are encoded in the standard error format, + * sock_extended_err. See Documentation/networking/msg_zerocopy.rst in + * kernel source tree for more details. + */ + +/* 'cmsg_level' field value of 'struct cmsghdr' for notification parsing + * when MSG_ZEROCOPY flag is used on transmissions. + */ + +#define SOL_VSOCK 287 + +/* 'cmsg_type' field value of 'struct cmsghdr' for notification parsing + * when MSG_ZEROCOPY flag is used on transmissions. + */ + +#define VSOCK_RECVERR 1 + #endif /* _VM_SOCKETS_H */ diff --git a/contrib/libs/linux-headers/rdma/bnxt_re-abi.h b/contrib/libs/linux-headers/rdma/bnxt_re-abi.h index 8a2a1d4f6b..6e7c67a0cc 100644 --- a/contrib/libs/linux-headers/rdma/bnxt_re-abi.h +++ b/contrib/libs/linux-headers/rdma/bnxt_re-abi.h @@ -53,6 +53,7 @@ enum { BNXT_RE_UCNTX_CMASK_HAVE_CCTX = 0x1ULL, BNXT_RE_UCNTX_CMASK_HAVE_MODE = 0x02ULL, BNXT_RE_UCNTX_CMASK_WC_DPI_ENABLED = 0x04ULL, + BNXT_RE_UCNTX_CMASK_DBR_PACING_ENABLED = 0x08ULL, }; enum bnxt_re_wqe_mode { @@ -131,10 +132,13 @@ enum bnxt_re_shpg_offt { enum bnxt_re_objects { BNXT_RE_OBJECT_ALLOC_PAGE = (1U << UVERBS_ID_NS_SHIFT), + BNXT_RE_OBJECT_NOTIFY_DRV, }; enum bnxt_re_alloc_page_type { BNXT_RE_ALLOC_WC_PAGE = 0, + BNXT_RE_ALLOC_DBR_BAR_PAGE, + BNXT_RE_ALLOC_DBR_PAGE, }; enum bnxt_re_var_alloc_page_attrs { @@ -154,4 +158,7 @@ enum bnxt_re_alloc_page_methods { BNXT_RE_METHOD_DESTROY_PAGE, }; +enum bnxt_re_notify_drv_methods { + BNXT_RE_METHOD_NOTIFY_DRV = (1U << UVERBS_ID_NS_SHIFT), +}; #endif /* __BNXT_RE_UVERBS_ABI_H__*/ diff --git a/contrib/libs/linux-headers/rdma/irdma-abi.h b/contrib/libs/linux-headers/rdma/irdma-abi.h index a7085e092d..bb18f15489 100644 --- a/contrib/libs/linux-headers/rdma/irdma-abi.h +++ b/contrib/libs/linux-headers/rdma/irdma-abi.h @@ -22,10 +22,16 @@ enum irdma_memreg_type { IRDMA_MEMREG_TYPE_CQ = 2, }; +enum { + IRDMA_ALLOC_UCTX_USE_RAW_ATTR = 1 << 0, + IRDMA_ALLOC_UCTX_MIN_HW_WQ_SIZE = 1 << 1, +}; + struct irdma_alloc_ucontext_req { __u32 rsvd32; __u8 userspace_ver; __u8 rsvd8[3]; + __aligned_u64 comp_mask; }; struct irdma_alloc_ucontext_resp { @@ -46,6 +52,9 @@ struct irdma_alloc_ucontext_resp { __u16 max_hw_sq_chunk; __u8 hw_rev; __u8 rsvd2; + __aligned_u64 comp_mask; + __u16 min_hw_wq_size; + __u8 rsvd3[6]; }; struct irdma_alloc_pd_resp { diff --git a/contrib/libs/linux-headers/scsi/scsi_bsg_ufs.h b/contrib/libs/linux-headers/scsi/scsi_bsg_ufs.h index fd3f9e5ee2..03f2beadf2 100644 --- a/contrib/libs/linux-headers/scsi/scsi_bsg_ufs.h +++ b/contrib/libs/linux-headers/scsi/scsi_bsg_ufs.h @@ -8,6 +8,7 @@ #ifndef SCSI_BSG_UFS_H #define SCSI_BSG_UFS_H +#include <asm/byteorder.h> #include <linux/types.h> /* * This file intended to be included by both kernel and user space @@ -40,11 +41,56 @@ enum ufs_rpmb_op_type { * @dword_0: UPIU header DW-0 * @dword_1: UPIU header DW-1 * @dword_2: UPIU header DW-2 + * + * @transaction_code: Type of request or response. See also enum + * upiu_request_transaction and enum upiu_response_transaction. + * @flags: UPIU flags. The meaning of individual flags depends on the + * transaction code. + * @lun: Logical unit number. + * @task_tag: Task tag. + * @iid: Initiator ID. + * @command_set_type: 0 for SCSI command set; 1 for UFS specific. + * @tm_function: Task management function in case of a task management request + * UPIU. + * @query_function: Query function in case of a query request UPIU. + * @response: 0 for success; 1 for failure. + * @status: SCSI status if this is the header of a response to a SCSI command. + * @ehs_length: EHS length in units of 32 bytes. + * @device_information: + * @data_segment_length: data segment length. */ struct utp_upiu_header { - __be32 dword_0; - __be32 dword_1; - __be32 dword_2; + union { + struct { + __be32 dword_0; + __be32 dword_1; + __be32 dword_2; + }; + struct { + __u8 transaction_code; + __u8 flags; + __u8 lun; + __u8 task_tag; +#if defined(__BIG_ENDIAN) + __u8 iid: 4; + __u8 command_set_type: 4; +#elif defined(__LITTLE_ENDIAN) + __u8 command_set_type: 4; + __u8 iid: 4; +#else +#error +#endif + union { + __u8 tm_function; + __u8 query_function; + } __attribute__((packed)); + __u8 response; + __u8 status; + __u8 ehs_length; + __u8 device_information; + __be16 data_segment_length; + }; + }; }; /** diff --git a/contrib/libs/linux-headers/sound/sof/tokens.h b/contrib/libs/linux-headers/sound/sof/tokens.h index e9ec7e4eb9..453cab2a12 100644 --- a/contrib/libs/linux-headers/sound/sof/tokens.h +++ b/contrib/libs/linux-headers/sound/sof/tokens.h @@ -99,7 +99,11 @@ #define SOF_TKN_COMP_OUTPUT_PIN_BINDING_WNAME 414 #define SOF_TKN_COMP_NUM_INPUT_AUDIO_FORMATS 415 #define SOF_TKN_COMP_NUM_OUTPUT_AUDIO_FORMATS 416 - +/* + * The token value is copied to the dapm_widget's + * no_wname_in_kcontrol_name. + */ +#define SOF_TKN_COMP_NO_WNAME_IN_KCONTROL_NAME 417 /* SSP */ #define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500 diff --git a/contrib/libs/linux-headers/xen/privcmd.h b/contrib/libs/linux-headers/xen/privcmd.h index b1024f1d56..3dfa732b3c 100644 --- a/contrib/libs/linux-headers/xen/privcmd.h +++ b/contrib/libs/linux-headers/xen/privcmd.h @@ -98,6 +98,18 @@ struct privcmd_mmap_resource { __u64 addr; }; +/* For privcmd_irqfd::flags */ +#define PRIVCMD_IRQFD_FLAG_DEASSIGN (1 << 0) + +struct privcmd_irqfd { + __u64 dm_op; + __u32 size; /* Size of structure pointed by dm_op */ + __u32 fd; + __u32 flags; + domid_t dom; + __u8 pad[2]; +}; + /* * @cmd: IOCTL_PRIVCMD_HYPERCALL * @arg: &privcmd_hypercall_t @@ -125,5 +137,7 @@ struct privcmd_mmap_resource { _IOC(_IOC_NONE, 'P', 6, sizeof(domid_t)) #define IOCTL_PRIVCMD_MMAP_RESOURCE \ _IOC(_IOC_NONE, 'P', 7, sizeof(struct privcmd_mmap_resource)) +#define IOCTL_PRIVCMD_IRQFD \ + _IOW('P', 8, struct privcmd_irqfd) #endif /* __LINUX_PUBLIC_PRIVCMD_H__ */ diff --git a/contrib/libs/linux-headers/ya.make b/contrib/libs/linux-headers/ya.make index 8d06604701..fe35a884e0 100644 --- a/contrib/libs/linux-headers/ya.make +++ b/contrib/libs/linux-headers/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() @@ -26,9 +26,9 @@ LICENSE( LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(6.5.9) +VERSION(6.6.7) -ORIGINAL_SOURCE(mirror://kernel/linux/kernel/v6.x/linux-6.5.9.tar.xz) +ORIGINAL_SOURCE(mirror://kernel/linux/kernel/v6.x/linux-6.6.7.tar.xz) IF (OPENSOURCE_REPLACE_LINUX_HEADERS AND EXPORT_CMAKE) OPENSOURCE_EXPORT_REPLACEMENT_BY_OS( diff --git a/contrib/libs/openssl/ar.pyplugin b/contrib/libs/openssl/ar.pyplugin new file mode 100644 index 0000000000..29d7e55c30 --- /dev/null +++ b/contrib/libs/openssl/ar.pyplugin @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 + +from __future__ import print_function + +import os +import sys +import subprocess + + +def run(*args): + return subprocess.check_output(list(args), shell=False).strip() + + +def gen_renames_1(d): + for l in d.split('\n'): + l = l.strip() + + if ' ' in l: + yield l.split(' ')[-1] + + +def have_prefix(l, p): + for x in l: + if not x.startswith(p): + return False + + return True + + +def gen_renames_2(p, d): + l = list(gen_renames_1(d)) + a = have_prefix(l, '_') + + for s in l: + if 'asan_globals' in s: + continue + + if s in ['HMAC', 'SHA1', 'SHA256', 'SHA256', 'SHA512', 'RC4', 'MD5', 'SHA384']: + continue + + if a and s[1:] in ['HMAC', 'SHA1', 'SHA256', 'SHA256', 'SHA512', 'RC4', 'MD5', 'SHA384']: + continue + + if a: + yield s + ' _' + p + s[1:] + else: + yield s + ' ' + p + s + + +def gen_renames(p, d): + return '\n'.join(gen_renames_2(p, d)).strip() + '\n' + + +def rename_syms(where, ret): + p = 'v1_' + + # find symbols to rename + syms = run(where + 'llvm-nm', '--extern-only', '--defined-only', '-A', ret) + + # prepare rename plan + renames = gen_renames(p, syms) + tmp = ret + '.syms' + + with open(tmp, 'w') as f: + f.write(renames) + + # rename symbols + run(where + 'llvm-objcopy', '--redefine-syms=' + tmp, ret) + os.unlink(tmp) + + +if __name__ == '__main__': + rename_syms(os.path.dirname(sys.argv[3]) + '/', sys.argv[1]) diff --git a/contrib/libs/openssl/redef.h b/contrib/libs/openssl/redef.h index 2044bcacf0..259b2124fd 100644 --- a/contrib/libs/openssl/redef.h +++ b/contrib/libs/openssl/redef.h @@ -1,6 +1,6 @@ #pragma once -#if !defined(OPENSSL_BUILD) && !defined(_MSC_VER) && !defined(OPENSSL_DONT_ADD_VERSION_PREFIX) +#if !defined(OPENSSL_BUILD) && defined(OPENSSL_RENAME_SYMBOLS) #define a2d_ASN1_OBJECT v1_a2d_ASN1_OBJECT #define a2i_ASN1_ENUMERATED v1_a2i_ASN1_ENUMERATED #define a2i_ASN1_INTEGER v1_a2i_ASN1_INTEGER diff --git a/contrib/libs/openssl/ya.make b/contrib/libs/openssl/ya.make index 7d8ecf86fb..70c95e4732 100644 --- a/contrib/libs/openssl/ya.make +++ b/contrib/libs/openssl/ya.make @@ -48,12 +48,11 @@ ADDINCL( CFLAGS(-DOPENSSL_BUILD=1) -IF (EXPORT_CMAKE) - CFLAGS(GLOBAL -DOPENSSL_DONT_ADD_VERSION_PREFIX) -ENDIF() - -IF (MAPSMOBI_BUILD_TARGET) - CFLAGS(GLOBAL -DOPENSSL_DONT_ADD_VERSION_PREFIX) +IF (EXPORT_CMAKE OR OS_WINDOWS OR MAPSMOBI_BUILD_TARGET) + # DO NOT RENAME +ELSE() + AR_PLUGIN(ar) + CFLAGS(GLOBAL -DOPENSSL_RENAME_SYMBOLS=1) ENDIF() IF (NOT EXPORT_CMAKE OR NOT OPENSOURCE_REPLACE_OPENSSL) diff --git a/contrib/libs/simdjson/.yandex_meta/devtools.licenses.report b/contrib/libs/simdjson/.yandex_meta/devtools.licenses.report index 5ddc509f18..2aad6abcfa 100644 --- a/contrib/libs/simdjson/.yandex_meta/devtools.licenses.report +++ b/contrib/libs/simdjson/.yandex_meta/devtools.licenses.report @@ -42,7 +42,7 @@ BELONGS ya.make Match type : REFERENCE Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0 Files with this license: - README.md [233:233] + README.md [235:235] KEEP MIT 0a00f0d66f4f37595306dd8c6a25c63c BELONGS ya.make @@ -54,7 +54,7 @@ BELONGS ya.make Match type : NOTICE Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT Files with this license: - README.md [229:229] + README.md [231:231] SKIP LicenseRef-scancode-unknown-license-reference 0d48e0b09865a98a90db20ea37b36bb8 BELONGS ya.make @@ -66,7 +66,7 @@ BELONGS ya.make Match type : INTRO Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE Files with this license: - README.md [237:237] + README.md [239:239] KEEP Apache-2.0 13ec3cccf3036f38df47d2051a825972 BELONGS ya.make @@ -102,7 +102,7 @@ BELONGS ya.make Match type : REFERENCE Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0 Files with this license: - README.md [213:213] + README.md [215:215] SKIP BSL-1.0 2a9212d785cde4078c2f6803e544de21 BELONGS ya.make @@ -113,7 +113,7 @@ BELONGS ya.make Match type : REFERENCE Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0 Files with this license: - README.md [233:233] + README.md [235:235] KEEP MIT 3e1ede6948a97e7ee3d75e0204a567f3 BELONGS ya.make @@ -125,7 +125,7 @@ BELONGS ya.make Match type : TAG Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT Files with this license: - README.md [217:217] + README.md [219:219] SKIP Apache-2.0 500a503129337bb5adf5977ce11879cd BELONGS ya.make @@ -137,7 +137,7 @@ BELONGS ya.make Match type : NOTICE Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0 Files with this license: - README.md [229:229] + README.md [231:231] SKIP BSL-1.0 77dd56e30840a227692d435b4aecdb95 BELONGS ya.make @@ -148,11 +148,11 @@ BELONGS ya.make Match type : REFERENCE Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0 Files with this license: - README.md [233:233] + README.md [235:235] KEEP MIT 7f0bdbc0a0545831259b66259ac6b604 BELONGS ya.make -FILE_INCLUDE LICENSE-MIT found in files: README.md at line 216 +FILE_INCLUDE LICENSE-MIT found in files: README.md at line 218 License text: [licensemit]: LICENSE-MIT Scancode info: @@ -161,7 +161,7 @@ FILE_INCLUDE LICENSE-MIT found in files: README.md at line 216 Match type : TAG Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT Files with this license: - README.md [216:216] + README.md [218:218] KEEP Apache-2.0 82e76bbc1841bd5886297e795c72bfa5 BELONGS ya.make @@ -173,7 +173,7 @@ BELONGS ya.make Match type : REFERENCE Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0 Files with this license: - README.md [229:229] + README.md [231:231] KEEP MIT a6e9f2d79eb73e6e422759b53da6152a BELONGS ya.make @@ -208,7 +208,7 @@ BELONGS ya.make Match type : NOTICE Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT Files with this license: - README.md [235:235] + README.md [237:237] SKIP Apache-2.0 c23a044f4165feb9568f486ca3b30fc8 BELONGS ya.make @@ -219,7 +219,7 @@ BELONGS ya.make Match type : NOTICE Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0 Files with this license: - README.md [233:233] + README.md [235:235] SKIP BSD-3-Clause d77bd60dc7ee5f9c3b221f6edd94bbac BELONGS ya.make @@ -231,7 +231,7 @@ BELONGS ya.make Match type : REFERENCE Links : http://www.opensource.org/licenses/BSD-3-Clause, https://spdx.org/licenses/BSD-3-Clause Files with this license: - README.md [237:237] + README.md [239:239] SKIP MIT dd09705e3ec59af63c705c8f5f3eadb2 BELONGS ya.make @@ -243,7 +243,7 @@ BELONGS ya.make Match type : REFERENCE Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT Files with this license: - README.md [231:231] + README.md [233:233] KEEP MIT f0fe4686586f118327c3bc63fe4027de BELONGS ya.make diff --git a/contrib/libs/simdjson/.yandex_meta/override.nix b/contrib/libs/simdjson/.yandex_meta/override.nix index 3dc9e380ec..386e6cc798 100644 --- a/contrib/libs/simdjson/.yandex_meta/override.nix +++ b/contrib/libs/simdjson/.yandex_meta/override.nix @@ -1,11 +1,11 @@ pkgs: attrs: with pkgs; rec { - version = "3.12.0"; + version = "3.12.1"; src = fetchFromGitHub { owner = "simdjson"; repo = "simdjson"; rev = "v${version}"; - hash = "sha256-F5yqhDBDoWgB4YkFOYUFEczdu24aBdbsTly4LcFZqDQ="; + hash = "sha256-ujeG3yidZJZV6x4RQQYXwbslQcRx3HaqjzgaU2A4cQU="; }; cmakeFlags = attrs.cmakeFlags ++ [ diff --git a/contrib/libs/simdjson/README.md b/contrib/libs/simdjson/README.md index a0c4a109c9..d0cae0caa4 100644 --- a/contrib/libs/simdjson/README.md +++ b/contrib/libs/simdjson/README.md @@ -63,6 +63,8 @@ Real-world usage - [ada-url](https://github.com/ada-url/ada) - [fastgron](https://github.com/adamritter/fastgron) - [WasmEdge](https://wasmedge.org) +- [RonDB](https://github.com/logicalclocks/rondb) + If you are planning to use simdjson in a product, please work from one of our releases. diff --git a/contrib/libs/simdjson/include/simdjson/simdjson_version.h b/contrib/libs/simdjson/include/simdjson/simdjson_version.h index dd6bfbe073..ae27901639 100644 --- a/contrib/libs/simdjson/include/simdjson/simdjson_version.h +++ b/contrib/libs/simdjson/include/simdjson/simdjson_version.h @@ -4,7 +4,7 @@ #define SIMDJSON_SIMDJSON_VERSION_H /** The version of simdjson being used (major.minor.revision) */ -#define SIMDJSON_VERSION "3.12.0" +#define SIMDJSON_VERSION "3.12.1" namespace simdjson { enum { @@ -19,7 +19,7 @@ enum { /** * The revision (major.minor.REVISION) of simdjson being used. */ - SIMDJSON_VERSION_REVISION = 0 + SIMDJSON_VERSION_REVISION = 1 }; } // namespace simdjson diff --git a/contrib/libs/simdjson/ya.make b/contrib/libs/simdjson/ya.make index d774b26cfb..b4c95dae92 100644 --- a/contrib/libs/simdjson/ya.make +++ b/contrib/libs/simdjson/ya.make @@ -10,9 +10,9 @@ LICENSE( LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(3.12.0) +VERSION(3.12.1) -ORIGINAL_SOURCE(https://github.com/simdjson/simdjson/archive/v3.12.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/simdjson/simdjson/archive/v3.12.1.tar.gz) ADDINCL( GLOBAL contrib/libs/simdjson/include diff --git a/contrib/restricted/boost/algorithm/ya.make b/contrib/restricted/boost/algorithm/ya.make index d938d03b88..0ed2855a8e 100644 --- a/contrib/restricted/boost/algorithm/ya.make +++ b/contrib/restricted/boost/algorithm/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/align/ya.make b/contrib/restricted/boost/align/ya.make index 9c31c8be12..da48278a2a 100644 --- a/contrib/restricted/boost/align/ya.make +++ b/contrib/restricted/boost/align/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/any/ya.make b/contrib/restricted/boost/any/ya.make index af2ca98549..82f0107ef4 100644 --- a/contrib/restricted/boost/any/ya.make +++ b/contrib/restricted/boost/any/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/array/ya.make b/contrib/restricted/boost/array/ya.make index 88d2e9a1f6..36c56a138b 100644 --- a/contrib/restricted/boost/array/ya.make +++ b/contrib/restricted/boost/array/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/asio/ya.make b/contrib/restricted/boost/asio/ya.make index f5f8e8c766..8999bcbf41 100644 --- a/contrib/restricted/boost/asio/ya.make +++ b/contrib/restricted/boost/asio/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/assert/ya.make b/contrib/restricted/boost/assert/ya.make index 00e873ef77..2ce68b77e5 100644 --- a/contrib/restricted/boost/assert/ya.make +++ b/contrib/restricted/boost/assert/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/atomic/ya.make b/contrib/restricted/boost/atomic/ya.make index 9cf20d6826..116e53a811 100644 --- a/contrib/restricted/boost/atomic/ya.make +++ b/contrib/restricted/boost/atomic/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/bimap/ya.make b/contrib/restricted/boost/bimap/ya.make index 267377cb61..f20f745904 100644 --- a/contrib/restricted/boost/bimap/ya.make +++ b/contrib/restricted/boost/bimap/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/bind/ya.make b/contrib/restricted/boost/bind/ya.make index e5f8ce459e..c5a2900630 100644 --- a/contrib/restricted/boost/bind/ya.make +++ b/contrib/restricted/boost/bind/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/chrono/ya.make b/contrib/restricted/boost/chrono/ya.make index a7ac5ae30e..b2067cd12a 100644 --- a/contrib/restricted/boost/chrono/ya.make +++ b/contrib/restricted/boost/chrono/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/concept_check/ya.make b/contrib/restricted/boost/concept_check/ya.make index 0d6bfef4a2..94e8ad8b18 100644 --- a/contrib/restricted/boost/concept_check/ya.make +++ b/contrib/restricted/boost/concept_check/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/config/ya.make b/contrib/restricted/boost/config/ya.make index 775599d7d0..e120bacd8d 100644 --- a/contrib/restricted/boost/config/ya.make +++ b/contrib/restricted/boost/config/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/container/ya.make b/contrib/restricted/boost/container/ya.make index ea45272059..e03654a405 100644 --- a/contrib/restricted/boost/container/ya.make +++ b/contrib/restricted/boost/container/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/container_hash/ya.make b/contrib/restricted/boost/container_hash/ya.make index 999e5fa26f..e36c0a5f8a 100644 --- a/contrib/restricted/boost/container_hash/ya.make +++ b/contrib/restricted/boost/container_hash/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/context/ya.make b/contrib/restricted/boost/context/ya.make index f70cdc034c..8a147731c3 100644 --- a/contrib/restricted/boost/context/ya.make +++ b/contrib/restricted/boost/context/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/conversion/ya.make b/contrib/restricted/boost/conversion/ya.make index 4a0ecde166..ad542c166a 100644 --- a/contrib/restricted/boost/conversion/ya.make +++ b/contrib/restricted/boost/conversion/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/core/ya.make b/contrib/restricted/boost/core/ya.make index 14f29f742f..9c25aca222 100644 --- a/contrib/restricted/boost/core/ya.make +++ b/contrib/restricted/boost/core/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/coroutine/ya.make b/contrib/restricted/boost/coroutine/ya.make index ffe47ab248..9df407fcfb 100644 --- a/contrib/restricted/boost/coroutine/ya.make +++ b/contrib/restricted/boost/coroutine/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/crc/ya.make b/contrib/restricted/boost/crc/ya.make index 7c5e2a4d70..9feb7e69bf 100644 --- a/contrib/restricted/boost/crc/ya.make +++ b/contrib/restricted/boost/crc/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/date_time/ya.make b/contrib/restricted/boost/date_time/ya.make index 39c6b85077..37d7c50248 100644 --- a/contrib/restricted/boost/date_time/ya.make +++ b/contrib/restricted/boost/date_time/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/describe/ya.make b/contrib/restricted/boost/describe/ya.make index ae00966485..4fe135f389 100644 --- a/contrib/restricted/boost/describe/ya.make +++ b/contrib/restricted/boost/describe/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/detail/ya.make b/contrib/restricted/boost/detail/ya.make index 51e3024b64..154259f44d 100644 --- a/contrib/restricted/boost/detail/ya.make +++ b/contrib/restricted/boost/detail/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/dynamic_bitset/ya.make b/contrib/restricted/boost/dynamic_bitset/ya.make index 4205dbfb1e..6590530e54 100644 --- a/contrib/restricted/boost/dynamic_bitset/ya.make +++ b/contrib/restricted/boost/dynamic_bitset/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/endian/ya.make b/contrib/restricted/boost/endian/ya.make index 0253e965f6..a8ef1e0929 100644 --- a/contrib/restricted/boost/endian/ya.make +++ b/contrib/restricted/boost/endian/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/exception/ya.make b/contrib/restricted/boost/exception/ya.make index f5dd8d5a15..0a4f37eb4d 100644 --- a/contrib/restricted/boost/exception/ya.make +++ b/contrib/restricted/boost/exception/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/filesystem/ya.make b/contrib/restricted/boost/filesystem/ya.make index b576f8c67f..77f703684e 100644 --- a/contrib/restricted/boost/filesystem/ya.make +++ b/contrib/restricted/boost/filesystem/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/foreach/ya.make b/contrib/restricted/boost/foreach/ya.make index b2a7f73673..1d2a46c157 100644 --- a/contrib/restricted/boost/foreach/ya.make +++ b/contrib/restricted/boost/foreach/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/format/ya.make b/contrib/restricted/boost/format/ya.make index 1fa36671f8..e6a379ac2d 100644 --- a/contrib/restricted/boost/format/ya.make +++ b/contrib/restricted/boost/format/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/function/ya.make b/contrib/restricted/boost/function/ya.make index 6b4f5f501e..8f4408c4e6 100644 --- a/contrib/restricted/boost/function/ya.make +++ b/contrib/restricted/boost/function/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/function_types/ya.make b/contrib/restricted/boost/function_types/ya.make index a21355f70f..ea984dcf0a 100644 --- a/contrib/restricted/boost/function_types/ya.make +++ b/contrib/restricted/boost/function_types/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/functional/ya.make b/contrib/restricted/boost/functional/ya.make index fd94c7e4f8..3eafe1d62a 100644 --- a/contrib/restricted/boost/functional/ya.make +++ b/contrib/restricted/boost/functional/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/fusion/ya.make b/contrib/restricted/boost/fusion/ya.make index b040d1b354..76f1891d2c 100644 --- a/contrib/restricted/boost/fusion/ya.make +++ b/contrib/restricted/boost/fusion/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/graph/ya.make b/contrib/restricted/boost/graph/ya.make index 0d094e599f..fcf8a46af1 100644 --- a/contrib/restricted/boost/graph/ya.make +++ b/contrib/restricted/boost/graph/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/icl/ya.make b/contrib/restricted/boost/icl/ya.make index b35a6498aa..e3947c9cd9 100644 --- a/contrib/restricted/boost/icl/ya.make +++ b/contrib/restricted/boost/icl/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/integer/ya.make b/contrib/restricted/boost/integer/ya.make index 73fb20e082..d968252ea5 100644 --- a/contrib/restricted/boost/integer/ya.make +++ b/contrib/restricted/boost/integer/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/interprocess/ya.make b/contrib/restricted/boost/interprocess/ya.make index f80c8214e5..c358bb72df 100644 --- a/contrib/restricted/boost/interprocess/ya.make +++ b/contrib/restricted/boost/interprocess/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/intrusive/ya.make b/contrib/restricted/boost/intrusive/ya.make index c4277755b1..618728e554 100644 --- a/contrib/restricted/boost/intrusive/ya.make +++ b/contrib/restricted/boost/intrusive/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/io/ya.make b/contrib/restricted/boost/io/ya.make index c2aaf8fd2b..b3462f4776 100644 --- a/contrib/restricted/boost/io/ya.make +++ b/contrib/restricted/boost/io/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/iostreams/ya.make b/contrib/restricted/boost/iostreams/ya.make index 7ca9e63c2d..b16e94cb2d 100644 --- a/contrib/restricted/boost/iostreams/ya.make +++ b/contrib/restricted/boost/iostreams/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/iterator/ya.make b/contrib/restricted/boost/iterator/ya.make index fb90d32045..420fc86cb1 100644 --- a/contrib/restricted/boost/iterator/ya.make +++ b/contrib/restricted/boost/iterator/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/lambda/ya.make b/contrib/restricted/boost/lambda/ya.make index 18a1d6da60..f07eb7a44a 100644 --- a/contrib/restricted/boost/lambda/ya.make +++ b/contrib/restricted/boost/lambda/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/lexical_cast/ya.make b/contrib/restricted/boost/lexical_cast/ya.make index 5661727518..4f664aa61f 100644 --- a/contrib/restricted/boost/lexical_cast/ya.make +++ b/contrib/restricted/boost/lexical_cast/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/locale/ya.make b/contrib/restricted/boost/locale/ya.make index c219d30267..9576428064 100644 --- a/contrib/restricted/boost/locale/ya.make +++ b/contrib/restricted/boost/locale/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/math/ya.make b/contrib/restricted/boost/math/ya.make index 6a6432f8a5..988076c995 100644 --- a/contrib/restricted/boost/math/ya.make +++ b/contrib/restricted/boost/math/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/move/ya.make b/contrib/restricted/boost/move/ya.make index 5475939966..5cb906e47e 100644 --- a/contrib/restricted/boost/move/ya.make +++ b/contrib/restricted/boost/move/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/mp11/ya.make b/contrib/restricted/boost/mp11/ya.make index e8c641ac18..bced8c301e 100644 --- a/contrib/restricted/boost/mp11/ya.make +++ b/contrib/restricted/boost/mp11/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/mpl/ya.make b/contrib/restricted/boost/mpl/ya.make index 554a312980..3fedf8a239 100644 --- a/contrib/restricted/boost/mpl/ya.make +++ b/contrib/restricted/boost/mpl/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/multi_array/ya.make b/contrib/restricted/boost/multi_array/ya.make index 42944d86f6..200878edc2 100644 --- a/contrib/restricted/boost/multi_array/ya.make +++ b/contrib/restricted/boost/multi_array/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/multi_index/ya.make b/contrib/restricted/boost/multi_index/ya.make index b36b0131e5..7935b94c2b 100644 --- a/contrib/restricted/boost/multi_index/ya.make +++ b/contrib/restricted/boost/multi_index/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/numeric_conversion/ya.make b/contrib/restricted/boost/numeric_conversion/ya.make index b8a1b502bf..1e7fd5d076 100644 --- a/contrib/restricted/boost/numeric_conversion/ya.make +++ b/contrib/restricted/boost/numeric_conversion/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/optional/ya.make b/contrib/restricted/boost/optional/ya.make index f5fc86fbef..1c6124ec49 100644 --- a/contrib/restricted/boost/optional/ya.make +++ b/contrib/restricted/boost/optional/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/parameter/ya.make b/contrib/restricted/boost/parameter/ya.make index 251c719150..99e187dd21 100644 --- a/contrib/restricted/boost/parameter/ya.make +++ b/contrib/restricted/boost/parameter/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/phoenix/ya.make b/contrib/restricted/boost/phoenix/ya.make index a16955ff0b..c612414a7c 100644 --- a/contrib/restricted/boost/phoenix/ya.make +++ b/contrib/restricted/boost/phoenix/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/pool/ya.make b/contrib/restricted/boost/pool/ya.make index 8773925a7d..ccf63a4237 100644 --- a/contrib/restricted/boost/pool/ya.make +++ b/contrib/restricted/boost/pool/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/predef/ya.make b/contrib/restricted/boost/predef/ya.make index e908e6f857..650be04dbc 100644 --- a/contrib/restricted/boost/predef/ya.make +++ b/contrib/restricted/boost/predef/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/preprocessor/ya.make b/contrib/restricted/boost/preprocessor/ya.make index 3336f4e751..c7f3766b01 100644 --- a/contrib/restricted/boost/preprocessor/ya.make +++ b/contrib/restricted/boost/preprocessor/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/program_options/ya.make b/contrib/restricted/boost/program_options/ya.make index 9bc4c91359..bccf24334b 100644 --- a/contrib/restricted/boost/program_options/ya.make +++ b/contrib/restricted/boost/program_options/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/property_map/ya.make b/contrib/restricted/boost/property_map/ya.make index 42f1e30c66..eedeb664ad 100644 --- a/contrib/restricted/boost/property_map/ya.make +++ b/contrib/restricted/boost/property_map/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/property_tree/ya.make b/contrib/restricted/boost/property_tree/ya.make index 7f4f4f03b1..6782368368 100644 --- a/contrib/restricted/boost/property_tree/ya.make +++ b/contrib/restricted/boost/property_tree/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/proto/ya.make b/contrib/restricted/boost/proto/ya.make index da12ddaf7c..208f5c6903 100644 --- a/contrib/restricted/boost/proto/ya.make +++ b/contrib/restricted/boost/proto/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/random/ya.make b/contrib/restricted/boost/random/ya.make index 2a660f2d87..6f4eccc45d 100644 --- a/contrib/restricted/boost/random/ya.make +++ b/contrib/restricted/boost/random/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/range/ya.make b/contrib/restricted/boost/range/ya.make index a29289b9a6..e7159eda62 100644 --- a/contrib/restricted/boost/range/ya.make +++ b/contrib/restricted/boost/range/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/ratio/ya.make b/contrib/restricted/boost/ratio/ya.make index 3424873861..55402e3254 100644 --- a/contrib/restricted/boost/ratio/ya.make +++ b/contrib/restricted/boost/ratio/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/rational/ya.make b/contrib/restricted/boost/rational/ya.make index 21718f3aa4..3bd018e203 100644 --- a/contrib/restricted/boost/rational/ya.make +++ b/contrib/restricted/boost/rational/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/regex/ya.make b/contrib/restricted/boost/regex/ya.make index 956cc1dd53..7d0c8cfa6c 100644 --- a/contrib/restricted/boost/regex/ya.make +++ b/contrib/restricted/boost/regex/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/scope/ya.make b/contrib/restricted/boost/scope/ya.make index caf5dec21b..1292244470 100644 --- a/contrib/restricted/boost/scope/ya.make +++ b/contrib/restricted/boost/scope/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/scope_exit/ya.make b/contrib/restricted/boost/scope_exit/ya.make index 0619777d69..4c20428b51 100644 --- a/contrib/restricted/boost/scope_exit/ya.make +++ b/contrib/restricted/boost/scope_exit/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/serialization/ya.make b/contrib/restricted/boost/serialization/ya.make index b677edd692..bd3bc43d3f 100644 --- a/contrib/restricted/boost/serialization/ya.make +++ b/contrib/restricted/boost/serialization/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/smart_ptr/ya.make b/contrib/restricted/boost/smart_ptr/ya.make index b3779839c4..626ff3804f 100644 --- a/contrib/restricted/boost/smart_ptr/ya.make +++ b/contrib/restricted/boost/smart_ptr/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/spirit/ya.make b/contrib/restricted/boost/spirit/ya.make index ccb51f5ad6..f108f95a4b 100644 --- a/contrib/restricted/boost/spirit/ya.make +++ b/contrib/restricted/boost/spirit/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/static_assert/ya.make b/contrib/restricted/boost/static_assert/ya.make index 5aea070712..3681832672 100644 --- a/contrib/restricted/boost/static_assert/ya.make +++ b/contrib/restricted/boost/static_assert/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/system/ya.make b/contrib/restricted/boost/system/ya.make index deb146a20a..0bc1a155a5 100644 --- a/contrib/restricted/boost/system/ya.make +++ b/contrib/restricted/boost/system/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/thread/ya.make b/contrib/restricted/boost/thread/ya.make index 1549e1d453..5c328bdbba 100644 --- a/contrib/restricted/boost/thread/ya.make +++ b/contrib/restricted/boost/thread/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/throw_exception/ya.make b/contrib/restricted/boost/throw_exception/ya.make index 7c8f7c2e90..c9476383fe 100644 --- a/contrib/restricted/boost/throw_exception/ya.make +++ b/contrib/restricted/boost/throw_exception/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/tokenizer/ya.make b/contrib/restricted/boost/tokenizer/ya.make index 5c88e62772..55943e10b2 100644 --- a/contrib/restricted/boost/tokenizer/ya.make +++ b/contrib/restricted/boost/tokenizer/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/tti/ya.make b/contrib/restricted/boost/tti/ya.make index eb7e76e043..a02ee9d5c0 100644 --- a/contrib/restricted/boost/tti/ya.make +++ b/contrib/restricted/boost/tti/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/tuple/ya.make b/contrib/restricted/boost/tuple/ya.make index 497e852c0d..484b69a1ab 100644 --- a/contrib/restricted/boost/tuple/ya.make +++ b/contrib/restricted/boost/tuple/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/type_index/ya.make b/contrib/restricted/boost/type_index/ya.make index eb00dc5376..0e9e1b871f 100644 --- a/contrib/restricted/boost/type_index/ya.make +++ b/contrib/restricted/boost/type_index/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/type_traits/ya.make b/contrib/restricted/boost/type_traits/ya.make index 5ff75a31b6..443a9f8985 100644 --- a/contrib/restricted/boost/type_traits/ya.make +++ b/contrib/restricted/boost/type_traits/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/typeof/ya.make b/contrib/restricted/boost/typeof/ya.make index 482792fb88..e025e2f873 100644 --- a/contrib/restricted/boost/typeof/ya.make +++ b/contrib/restricted/boost/typeof/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/utility/ya.make b/contrib/restricted/boost/utility/ya.make index 9e7e870902..2114d7a8f9 100644 --- a/contrib/restricted/boost/utility/ya.make +++ b/contrib/restricted/boost/utility/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/variant/ya.make b/contrib/restricted/boost/variant/ya.make index e3e8f50ff3..649b2ae5e7 100644 --- a/contrib/restricted/boost/variant/ya.make +++ b/contrib/restricted/boost/variant/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/variant2/ya.make b/contrib/restricted/boost/variant2/ya.make index 4259d6b6cf..e717d77b7c 100644 --- a/contrib/restricted/boost/variant2/ya.make +++ b/contrib/restricted/boost/variant2/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/winapi/ya.make b/contrib/restricted/boost/winapi/ya.make index 1ee9d12893..47d480123b 100644 --- a/contrib/restricted/boost/winapi/ya.make +++ b/contrib/restricted/boost/winapi/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() diff --git a/contrib/restricted/boost/xpressive/ya.make b/contrib/restricted/boost/xpressive/ya.make index 081bb754fd..d25ab32505 100644 --- a/contrib/restricted/boost/xpressive/ya.make +++ b/contrib/restricted/boost/xpressive/ya.make @@ -1,4 +1,4 @@ -# Generated by devtools/yamaker from nixpkgs 22.11. +# Generated by devtools/yamaker from nixpkgs 24.05. LIBRARY() @@ -39,33 +39,33 @@ REGISTRY_ENDPOINT = os.environ.get("YA_REGISTRY_ENDPOINT", "https://devtools-reg PLATFORM_MAP = { "data": { "darwin": { - "md5": "f5d7587900e420cf0489b1a998568820", + "md5": "72d97f4b5e3f6d679e8c80ba990a07c0", "urls": [ - f"{REGISTRY_ENDPOINT}/7994703512" + f"{REGISTRY_ENDPOINT}/8018530253" ] }, "darwin-arm64": { - "md5": "695ef9955c52485751ee3c487be10aef", + "md5": "ed328a769385939c5a3239fb820525a8", "urls": [ - f"{REGISTRY_ENDPOINT}/7994699557" + f"{REGISTRY_ENDPOINT}/8018528420" ] }, "linux-aarch64": { - "md5": "241b2c29298739037664179c59bdda0e", + "md5": "c2b9717969cfa225f00f6b53a68e5b87", "urls": [ - f"{REGISTRY_ENDPOINT}/7994696137" + f"{REGISTRY_ENDPOINT}/8018526676" ] }, "win32-clang-cl": { - "md5": "9ed331d25ebefeb17e4a2723540cd86f", + "md5": "7ec6b941b0d54a9ddbb4407ba8d59104", "urls": [ - f"{REGISTRY_ENDPOINT}/7994706777" + f"{REGISTRY_ENDPOINT}/8018531973" ] }, "linux": { - "md5": "93d5a312e3cb039820fe50512e2587c9", + "md5": "3cc47f9b19480b745b2837524b9eb139", "urls": [ - f"{REGISTRY_ENDPOINT}/7994711408" + f"{REGISTRY_ENDPOINT}/8018534052" ] } } diff --git a/ydb/ci/rightlib.txt b/ydb/ci/rightlib.txt index e2f16955ac..5a8eef6282 100644 --- a/ydb/ci/rightlib.txt +++ b/ydb/ci/rightlib.txt @@ -1 +1 @@ -47a420488a36ef5d1a8bae46259c0085c5a27fdb +0d53cb646786cb840d4a1c95925466c6c2d75334 diff --git a/yql/essentials/docs/scripts/doc_upgrade_arc.sh b/yql/essentials/docs/scripts/doc_upgrade_arc.sh index a1403408ed..92b6232c71 100755 --- a/yql/essentials/docs/scripts/doc_upgrade_arc.sh +++ b/yql/essentials/docs/scripts/doc_upgrade_arc.sh @@ -1,7 +1,7 @@ #!/bin/bash set -eu -TARGET_INFO_FILE="$(realpath $1)" +TARGET_INFO_FILE="$1" if [ ! -f $TARGET_INFO_FILE ]; then echo "File $TARGET_INFO_FILE doesn't exist. Creating new one" @@ -26,6 +26,7 @@ if [ ! -f $TARGET_INFO_FILE ]; then exit fi +TARGET_INFO_FILE="$(realpath $TARGET_INFO_FILE)" IFS=';' read -r BASE_REV ARC_FROM < "$TARGET_INFO_FILE" TO=$(dirname $(realpath "$TARGET_INFO_FILE")) HEAD_REV=$(cd $TO; arc rev-parse HEAD) diff --git a/yql/essentials/docs/scripts/doc_upgrade_git.sh b/yql/essentials/docs/scripts/doc_upgrade_git.sh index 86ab33bcb9..c4acd03671 100755 --- a/yql/essentials/docs/scripts/doc_upgrade_git.sh +++ b/yql/essentials/docs/scripts/doc_upgrade_git.sh @@ -1,7 +1,7 @@ #!/bin/bash set -eu -TARGET_INFO_FILE="$(realpath $1)" +TARGET_INFO_FILE="$1" if [ ! -f $TARGET_INFO_FILE ]; then echo "File $TARGET_INFO_FILE doesn't exist. Creating new one" @@ -26,6 +26,7 @@ if [ ! -f $TARGET_INFO_FILE ]; then exit fi +TARGET_INFO_FILE="$(realpath $TARGET_INFO_FILE)" IFS=';' read -r BASE_REV GIT_FROM < "$TARGET_INFO_FILE" TO=$(dirname $(realpath "$TARGET_INFO_FILE")) HEAD_REV=$(cd $TO; git rev-parse HEAD) diff --git a/yql/essentials/tests/sql/minirun/part1/canondata/result.json b/yql/essentials/tests/sql/minirun/part1/canondata/result.json index bd0f9512c7..cb5503d6f3 100644 --- a/yql/essentials/tests/sql/minirun/part1/canondata/result.json +++ b/yql/essentials/tests/sql/minirun/part1/canondata/result.json @@ -837,9 +837,9 @@ ], "test.test[params-primitives--Debug]": [ { - "checksum": "e232122561df92b9658b6e0e81770672", - "size": 4184, - "uri": "https://{canondata_backend}/1847551/378b3bd63cdb48c05228707db1486e34df62729c/resource.tar.gz#test.test_params-primitives--Debug_/opt.yql" + "checksum": "fc3e867d5a88ffa4e9b513f55347f2e4", + "size": 4214, + "uri": "https://{canondata_backend}/1936997/7e6197348eba6c6070acf6ee875cc5f6dc62f616/resource.tar.gz#test.test_params-primitives--Debug_/opt.yql" } ], "test.test[params-primitives--Results]": [ diff --git a/yql/essentials/udfs/common/unicode_base/lib/unicode_base_udf.h b/yql/essentials/udfs/common/unicode_base/lib/unicode_base_udf.h index a16582fb4e..6982dbe162 100644 --- a/yql/essentials/udfs/common/unicode_base/lib/unicode_base_udf.h +++ b/yql/essentials/udfs/common/unicode_base/lib/unicode_base_udf.h @@ -45,19 +45,42 @@ namespace { template <typename TDerived> struct TScalarOperationMixin { - static TUnboxedValue DoExecute(const IValueBuilder* builder, const TUnboxedValuePod* args) { + static TUnboxedValue DoExecute(const IValueBuilder* builder, const TUnboxedValuePod* args) + requires requires { TDerived::Execute(TStringRef()); } + { Y_DEBUG_ABORT_UNLESS(IsUtf8(args[0].AsStringRef())); - auto&& executeResult = TDerived::Execute(args[0].AsStringRef()); + auto executeResult = TDerived::Execute(args[0].AsStringRef()); + return ProcessResult(builder, std::move(executeResult), args); + } + + static TUnboxedValue DoExecute(const IValueBuilder* builder, const TUnboxedValuePod* args) + requires requires { TDerived::Execute(TStringRef(), TStringRef()); } + { + auto executeResult = TDerived::Execute(args[0].AsStringRef(), args[1].AsStringRef()); + return ProcessResult(builder, std::move(executeResult), args); + } + + static TUnboxedValue DoExecute(const IValueBuilder* builder, const TUnboxedValuePod* args) + requires requires { TDerived::Execute(TStringRef(), TStringRef(), TStringRef()); } + { + auto executeResult = TDerived::Execute(args[0].AsStringRef(), args[1].AsStringRef(), args[2].AsStringRef()); + return ProcessResult(builder, std::move(executeResult), args); + } + + static TUnboxedValue DoExecute(const IValueBuilder* builder, const TUnboxedValuePod* args) + requires requires { TDerived::Execute(TStringRef(), TStringRef(), TMaybe<ui64>()); } + { + auto executeResult = TDerived::Execute(args[0].AsStringRef(), args[1].AsStringRef(), args[2] ? TMaybe<ui64>(args[2].Get<ui64>()) : Nothing()); return ProcessResult(builder, std::move(executeResult), args); } private: - static TUnboxedValue ProcessResult(const IValueBuilder* builder, TString&& newString, const TUnboxedValuePod*) { - return builder->NewString(std::move(newString)); + static TUnboxedValue ProcessResult(const IValueBuilder* builder, const TString& newString, const TUnboxedValuePod*) { + return builder->NewString(newString); } template <typename T> - static TUnboxedValue ProcessResult(const IValueBuilder* builder, std::variant<TNoChangesTag, T> newValue, const TUnboxedValuePod* initialArg) { + static TUnboxedValue ProcessResult(const IValueBuilder* builder, const std::variant<TNoChangesTag, T>& newValue, const TUnboxedValuePod* initialArg) { if (std::holds_alternative<T>(newValue)) { return ProcessResult(builder, std::move(std::get<T>(newValue)), initialArg); } else { @@ -65,7 +88,17 @@ namespace { } } - static TUnboxedValue ProcessResult(const IValueBuilder* builder, bool result, const TUnboxedValuePod*) { + template <typename T> + static TUnboxedValue ProcessResult(const IValueBuilder* builder, const TMaybe<T>& newValue, const TUnboxedValuePod* initialArg) { + if (newValue.Defined()) { + return ProcessResult(builder, *newValue, initialArg); + } else { + return TUnboxedValuePod(); + } + } + + template <typename T, typename = std::enable_if_t<TPrimitiveDataType<T>::Result>> + static TUnboxedValue ProcessResult(const IValueBuilder* builder, T result, const TUnboxedValuePod*) { Y_UNUSED(builder); return TUnboxedValuePod(result); } @@ -73,18 +106,61 @@ namespace { template <typename TDerived> struct TBlockOperationMixin { - template <typename Sync> - static void DoExecute(const TBlockItem arg, const Sync& sync) { + template <typename TSink> + static void BlockDoExecute(const TBlockItem arg, const TSink& sink) + requires requires { TDerived::Execute(TStringRef()); } + { Y_DEBUG_ABORT_UNLESS(IsUtf8(arg.AsStringRef())); - auto&& executeResult = TDerived::Execute(arg.AsStringRef()); - TBlockItem boxedValue = ProcessResult(std::move(executeResult), arg); - sync(boxedValue); + auto executeResult = TDerived::Execute(arg.AsStringRef()); + TBlockItem boxedValue = ProcessResult(executeResult, arg); + sink(boxedValue); + } + + template <typename TSink> + static void BlockDoExecute(const TBlockItem arg1, const TBlockItem arg2, const TSink& sink) + requires requires { TDerived::Execute(TStringRef(), TStringRef()); } + { + auto executeResult = TDerived::Execute(arg1.AsStringRef(), + arg2.AsStringRef()); + TBlockItem boxedValue = ProcessResult(executeResult, arg1); + sink(boxedValue); + } + + template <typename TSink> + static void BlockDoExecute(const TBlockItem args, const TSink& sink) + requires(requires { TDerived::Execute(TStringRef(), TStringRef(), TStringRef()); }) + { + auto executeResult = TDerived::Execute(args.GetElement(0).AsStringRef(), + args.GetElement(1).AsStringRef(), + args.GetElement(2).AsStringRef()); + TBlockItem boxedValue = ProcessResult(executeResult, args.GetElement(0)); + sink(boxedValue); + } + + template <typename TSink> + static void BlockDoExecute(const TBlockItem args, const TSink& sink) + requires(requires { TDerived::Execute(TStringRef(), TStringRef(), TMaybe<ui64>(0ULL)); }) + { + auto executeResult = TDerived::Execute(args.GetElement(0).AsStringRef(), + args.GetElement(1).AsStringRef(), + (args.GetElement(2) ? TMaybe<ui64>(args.GetElement(2).Get<ui64>()) : Nothing())); + TBlockItem boxedValue = ProcessResult(executeResult, args.GetElement(0)); + sink(boxedValue); } private: static TBlockItem ProcessResult(const TString& newString, const TBlockItem arg) { Y_UNUSED(arg); - return TBlockItem(std::move(newString)); + return TBlockItem(newString); + } + + template <typename T> + static TBlockItem ProcessResult(const TMaybe<T>& newValue, const TBlockItem arg) { + if (newValue.Defined()) { + return ProcessResult(*newValue, arg); + } else { + return TBlockItem(); + } } template <typename T> @@ -96,17 +172,15 @@ namespace { } } - static TBlockItem ProcessResult(bool result, const TBlockItem arg) { + template <typename T, typename = std::enable_if_t<TPrimitiveDataType<T>::Result>> + static TBlockItem ProcessResult(T result, const TBlockItem arg) { Y_UNUSED(arg); return TBlockItem(result); } }; template <typename TDerived> - struct TOperationMixin: public TBlockOperationMixin<TDerived>, public TScalarOperationMixin<TDerived> { - using TBlockOperationMixin<TDerived>::DoExecute; - using TScalarOperationMixin<TDerived>::DoExecute; - }; + struct TOperationMixin: public TBlockOperationMixin<TDerived>, public TScalarOperationMixin<TDerived> {}; template <auto mode> struct TNormalizeUTF8: public TOperationMixin<TNormalizeUTF8<mode>> { @@ -145,8 +219,210 @@ namespace { } }; -#define DEFINE_UTF8_OPERATION(udfName, Executor, signature) \ - BEGIN_SIMPLE_STRICT_ARROW_UDF(T##udfName, signature) { \ + struct TLengthGetter: public TOperationMixin<TLengthGetter> { + static ui64 Execute(TStringRef inputRef) { + size_t result; + GetNumberOfUTF8Chars(inputRef.Data(), inputRef.Size(), result); + return static_cast<ui64>(result); + } + }; + + struct TReverser: public TOperationMixin<TReverser> { + static TString Execute(TStringRef inputRef) { + auto wide = UTF8ToWide(inputRef); + ReverseInPlace(wide); + return WideToUTF8(wide); + } + }; + + struct TStripper: public TOperationMixin<TStripper> { + static TString Execute(TStringRef inputRef) { + const TUtf32String input = UTF8ToUTF32<true>(inputRef); + const auto& result = StripString(input, IsUnicodeSpaceAdapter(input.begin())); + return WideToUTF8(result); + } + }; + + struct TAllRemover: public TOperationMixin<TAllRemover> { + static std::variant<TNoChangesTag, TString> Execute(TStringRef inputRef, TStringRef removeRef) { + TUtf32String input = UTF8ToUTF32<true>(inputRef); + const TUtf32String remove = UTF8ToUTF32<true>(removeRef); + const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend()); + size_t tpos = 0; + for (const wchar32 c : input) { + if (!chars.contains(c)) { + input[tpos++] = c; + } + } + if (tpos != input.size()) { + input.resize(tpos); + return WideToUTF8(input); + } + return TNoChangesTag{}; + } + }; + + struct TFirstRemover: public TOperationMixin<TFirstRemover> { + static std::variant<TNoChangesTag, TString> Execute(TStringRef inputRef, TStringRef removeRef) { + TUtf32String input = UTF8ToUTF32<true>(inputRef); + const auto remove = UTF8ToUTF32<true>(removeRef); + const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend()); + for (auto it = input.cbegin(); it != input.cend(); ++it) { + if (chars.contains(*it)) { + input.erase(it); + return WideToUTF8(input); + } + } + return TNoChangesTag{}; + } + }; + + struct TUnicodeSetMatcher: public TOperationMixin<TUnicodeSetMatcher> { + static bool Execute(TStringRef inputRef, TStringRef customCategoryRef) { + const TStringBuf input(inputRef); + const TUtf16String& customCategory = UTF8ToWide(customCategoryRef); + TUnicodeSet unicodeSet; + try { + unicodeSet.Parse(customCategory); + } catch (...) { + UdfTerminate((TStringBuilder() << "Failed to parse unicode set: " << CurrentExceptionMessage()).c_str()); + } + wchar32 rune; + const unsigned char* cur = reinterpret_cast<const unsigned char*>(input.begin()); + const unsigned char* last = reinterpret_cast<const unsigned char*>(input.end()); + while (cur != last) { + ReadUTF8CharAndAdvance(rune, cur, last); + if (!unicodeSet.Has(rune)) { + return false; + } + } + return true; + } + }; + + struct TLevensteinDistanceFinder: public TOperationMixin<TLevensteinDistanceFinder> { + static ui64 Execute(TStringRef leftRef, TStringRef rightRef) { + const TStringBuf left(leftRef); + const TStringBuf right(rightRef); + const auto& leftUtf32 = UTF8ToUTF32<true>(left); + const auto& rightUtf32 = UTF8ToUTF32<true>(right); + return NLevenshtein::Distance(leftUtf32, rightUtf32); + } + }; + + struct TLastRemoval: public TOperationMixin<TLastRemoval> { + static std::variant<TNoChangesTag, TString> Execute(TStringRef inputRef, TStringRef removeRef) { + TUtf32String input = UTF8ToUTF32<true>(inputRef); + const TUtf32String remove = UTF8ToUTF32<true>(removeRef); + const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend()); + for (auto it = input.crbegin(); it != input.crend(); ++it) { + if (chars.contains(*it)) { + input.erase(input.crend() - it - 1, 1); + return WideToUTF8(input); + } + } + return TNoChangesTag{}; + } + }; + + struct TAllReplacer: public TOperationMixin<TAllReplacer> { + static std::variant<TNoChangesTag, TString> Execute(TStringRef inputRef, TStringRef whatReplace, TStringRef toReplace) { + if (TString result(inputRef); SubstGlobal(result, whatReplace, toReplace)) { + return result; + } else { + return TNoChangesTag{}; + } + } + // Disable implict casts for arguments. + template <typename... Args> + static auto Execute(Args&&... args) = delete; + }; + + struct TFirstReplacer: public TOperationMixin<TFirstReplacer> { + static std::variant<TNoChangesTag, TString> Execute(TStringRef inputRef, TStringRef whatReplace, TStringRef toReplace) { + std::string result(inputRef); + const std::string_view what(whatReplace); + if (const auto index = result.find(what); index != std::string::npos) { + result.replace(index, what.size(), std::string_view(toReplace)); + return result; + } + return TNoChangesTag{}; + } + // Disable implict casts for arguments. + template <typename... Args> + static auto Execute(Args&&... args) = delete; + }; + + struct TLastReplacer: public TOperationMixin<TLastReplacer> { + static std::variant<TNoChangesTag, TString> Execute(TStringRef inputRef, TStringRef whatReplace, TStringRef toReplace) { + std::string result(inputRef); + const std::string_view what(whatReplace); + if (const auto index = result.rfind(what); index != std::string::npos) { + result.replace(index, what.size(), std::string_view(toReplace)); + return result; + } + return TNoChangesTag{}; + } + // Disable implict casts for arguments. + template <typename... Args> + static auto Execute(Args&&... args) = delete; + }; + + struct TFinder: public TOperationMixin<TFinder> { + static TMaybe<ui64> Execute(TStringRef inputRef, TStringRef whatFind, TMaybe<ui64> whereFind) { + const std::string_view string(inputRef); + const std::string_view needle(whatFind); + std::string_view::size_type pos = 0U; + + if (auto p = whereFind.GetOrElse(0ULL)) { + for (auto ptr = string.data(); p && pos < string.size(); --p) { + const auto width = WideCharSize(*ptr); + pos += width; + ptr += width; + } + } + + if (const auto find = string.find(needle, pos); std::string_view::npos != find) { + size_t result; + GetNumberOfUTF8Chars(string.data(), find, result); + return static_cast<ui64>(result); + } + return Nothing(); + } + // Disable implict casts for arguments. + template <typename... Args> + static auto Execute(Args&&... args) = delete; + }; + + struct TRFinder: public TOperationMixin<TRFinder> { + static TMaybe<ui64> Execute(TStringRef inputRef, TStringRef whatFind, TMaybe<ui64> whereFind) { + const std::string_view string(inputRef); + const std::string_view needle(whatFind); + std::string_view::size_type pos = std::string_view::npos; + + if (auto p = whereFind.GetOrElse(std::string_view::npos); std::string_view::npos != p) { + pos = 0ULL; + for (auto ptr = string.data(); p && pos < string.size(); --p) { + const auto width = WideCharSize(*ptr); + pos += width; + ptr += width; + } + } + + if (const auto find = string.rfind(needle, pos); std::string_view::npos != find) { + size_t result; + GetNumberOfUTF8Chars(string.data(), find, result); + return static_cast<ui64>(result); + } + return Nothing(); + } + // Disable implict casts for arguments. + template <typename... Args> + static auto Execute(Args&&... args) = delete; + }; + +#define DEFINE_UTF8_OPERATION_STRICT(udfName, Executor, signature, optArgs) \ + BEGIN_SIMPLE_STRICT_ARROW_UDF_WITH_OPTIONAL_ARGS(T##udfName, signature, optArgs) { \ return Executor::DoExecute(valueBuilder, args); \ } \ \ @@ -155,30 +431,86 @@ namespace { template <typename TSink> \ static void Process(const IValueBuilder* valueBuilder, TBlockItem arg1, const TSink& sink) { \ Y_UNUSED(valueBuilder); \ - Executor::DoExecute(arg1, sink); \ + Executor::BlockDoExecute(arg1, sink); \ + } \ + }; \ + \ + END_SIMPLE_ARROW_UDF(T##udfName, T##udfName##KernelExec::Do) + +#define DEFINE_UTF8_OPERATION_BIN_BASE(macro, udfName, Executor, signature, optArgs) \ + macro(T##udfName, signature, optArgs) { \ + return Executor::DoExecute(valueBuilder, args); \ + } \ + \ + struct T##udfName##KernelExec \ + : public TBinaryKernelExec<T##udfName##KernelExec> { \ + template <typename TSink> \ + static void Process(const IValueBuilder* valueBuilder, TBlockItem arg1, TBlockItem arg2, const TSink& sink) { \ + Y_UNUSED(valueBuilder); \ + Executor::BlockDoExecute(arg1, arg2, sink); \ + } \ + }; \ + \ + END_SIMPLE_ARROW_UDF(T##udfName, T##udfName##KernelExec::Do) + +#define DEFINE_UTF8_OPERATION_BIN_STRICT(udfName, Executor, signature, optArgs) \ + DEFINE_UTF8_OPERATION_BIN_BASE(BEGIN_SIMPLE_STRICT_ARROW_UDF_WITH_OPTIONAL_ARGS, udfName, Executor, signature, optArgs) + +#define DEFINE_UTF8_OPERATION_BIN_NOT_STRICT(udfName, Executor, signature, optArgs) \ + DEFINE_UTF8_OPERATION_BIN_BASE(BEGIN_SIMPLE_ARROW_UDF_WITH_OPTIONAL_ARGS, udfName, Executor, signature, optArgs) + +#define DEFINE_UTF8_OPERATION_MANY_STRICT(udfName, Executor, signature, argsCount, optArgsCount) \ + BEGIN_SIMPLE_STRICT_ARROW_UDF_WITH_OPTIONAL_ARGS(T##udfName, signature, optArgsCount) { \ + return Executor::DoExecute(valueBuilder, args); \ + } \ + \ + struct T##udfName##KernelExec \ + : public TGenericKernelExec<T##udfName##KernelExec, argsCount> { \ + template <typename TSink> \ + static void Process(const IValueBuilder* valueBuilder, TBlockItem args, const TSink& sink) { \ + Y_UNUSED(valueBuilder); \ + Executor::BlockDoExecute(args, sink); \ } \ }; \ \ END_SIMPLE_ARROW_UDF(T##udfName, T##udfName##KernelExec::Do) - DEFINE_UTF8_OPERATION(Normalize, TNormalizeUTF8<NFC>, TUtf8(TAutoMap<TUtf8>)); - DEFINE_UTF8_OPERATION(NormalizeNFD, TNormalizeUTF8<NFD>, TUtf8(TAutoMap<TUtf8>)); - DEFINE_UTF8_OPERATION(NormalizeNFC, TNormalizeUTF8<NFC>, TUtf8(TAutoMap<TUtf8>)); - DEFINE_UTF8_OPERATION(NormalizeNFKD, TNormalizeUTF8<NFKD>, TUtf8(TAutoMap<TUtf8>)); - DEFINE_UTF8_OPERATION(NormalizeNFKC, TNormalizeUTF8<NFKC>, TUtf8(TAutoMap<TUtf8>)); - - DEFINE_UTF8_OPERATION(IsAscii, TCheckAllChars<IsAscii>, bool(TAutoMap<TUtf8>)); - DEFINE_UTF8_OPERATION(IsSpace, TCheckAllChars<IsSpace>, bool(TAutoMap<TUtf8>)); - DEFINE_UTF8_OPERATION(IsUpper, TCheckAllChars<IsUpper>, bool(TAutoMap<TUtf8>)); - DEFINE_UTF8_OPERATION(IsLower, TCheckAllChars<IsLower>, bool(TAutoMap<TUtf8>)); - DEFINE_UTF8_OPERATION(IsDigit, TCheckAllChars<IsDigit>, bool(TAutoMap<TUtf8>)); - DEFINE_UTF8_OPERATION(IsAlpha, TCheckAllChars<IsAlpha>, bool(TAutoMap<TUtf8>)); - DEFINE_UTF8_OPERATION(IsAlnum, TCheckAllChars<IsAlnum>, bool(TAutoMap<TUtf8>)); - DEFINE_UTF8_OPERATION(IsHex, TCheckAllChars<IsHexdigit>, bool(TAutoMap<TUtf8>)); - - DEFINE_UTF8_OPERATION(ToTitle, TStringToStringMapper<ToTitle>, TUtf8(TAutoMap<TUtf8>)); - DEFINE_UTF8_OPERATION(ToUpper, TStringToStringMapper<ToUpper>, TUtf8(TAutoMap<TUtf8>)); - DEFINE_UTF8_OPERATION(ToLower, TStringToStringMapper<ToLower>, TUtf8(TAutoMap<TUtf8>)); + DEFINE_UTF8_OPERATION_STRICT(Normalize, TNormalizeUTF8<NFC>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(NormalizeNFD, TNormalizeUTF8<NFD>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(NormalizeNFC, TNormalizeUTF8<NFC>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(NormalizeNFKD, TNormalizeUTF8<NFKD>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(NormalizeNFKC, TNormalizeUTF8<NFKC>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0); + + DEFINE_UTF8_OPERATION_STRICT(IsAscii, TCheckAllChars<IsAscii>, bool(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(IsSpace, TCheckAllChars<IsSpace>, bool(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(IsUpper, TCheckAllChars<IsUpper>, bool(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(IsLower, TCheckAllChars<IsLower>, bool(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(IsDigit, TCheckAllChars<IsDigit>, bool(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(IsAlpha, TCheckAllChars<IsAlpha>, bool(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(IsAlnum, TCheckAllChars<IsAlnum>, bool(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(IsHex, TCheckAllChars<IsHexdigit>, bool(TAutoMap<TUtf8>), /*optArgs=*/0); + + DEFINE_UTF8_OPERATION_STRICT(ToTitle, TStringToStringMapper<ToTitle>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(ToUpper, TStringToStringMapper<ToUpper>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(ToLower, TStringToStringMapper<ToLower>, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0); + + DEFINE_UTF8_OPERATION_STRICT(GetLength, TLengthGetter, ui64(TAutoMap<TUtf8>), /*optArgs=*/0); + + DEFINE_UTF8_OPERATION_STRICT(Reverse, TReverser, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_STRICT(Strip, TStripper, TUtf8(TAutoMap<TUtf8>), /*optArgs=*/0); + + DEFINE_UTF8_OPERATION_BIN_STRICT(RemoveAll, TAllRemover, TUtf8(TAutoMap<TUtf8>, TUtf8), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_BIN_STRICT(RemoveFirst, TFirstRemover, TUtf8(TAutoMap<TUtf8>, TUtf8), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_BIN_NOT_STRICT(IsUnicodeSet, TUnicodeSetMatcher, bool(TAutoMap<TUtf8>, TUtf8), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_BIN_STRICT(LevensteinDistance, TLevensteinDistanceFinder, ui64(TAutoMap<TUtf8>, TAutoMap<TUtf8>), /*optArgs=*/0); + DEFINE_UTF8_OPERATION_BIN_STRICT(RemoveLast, TLastRemoval, TUtf8(TAutoMap<TUtf8>, TUtf8), /*optArgs=*/0); + + DEFINE_UTF8_OPERATION_MANY_STRICT(ReplaceAll, TAllReplacer, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8), /*argsCount=*/3, /*optionalArgs=*/0); + DEFINE_UTF8_OPERATION_MANY_STRICT(ReplaceFirst, TFirstReplacer, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8), /*argsCount=*/3, /*optionalArgs=*/0); + DEFINE_UTF8_OPERATION_MANY_STRICT(ReplaceLast, TLastReplacer, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8), /*argsCount=*/3, /*optionalArgs=*/0); + + DEFINE_UTF8_OPERATION_MANY_STRICT(Find, TFinder, TOptional<ui64>(TAutoMap<TUtf8>, TUtf8, TOptional<ui64>), /*argsCount=*/3, /*optionalArgs=*/1); + DEFINE_UTF8_OPERATION_MANY_STRICT(RFind, TRFinder, TOptional<ui64>(TAutoMap<TUtf8>, TUtf8, TOptional<ui64>), /*argsCount=*/3, /*optionalArgs=*/1); SIMPLE_UDF(TIsUtf, bool(TOptional<char*>)) { Y_UNUSED(valueBuilder); @@ -189,14 +521,6 @@ namespace { } } - SIMPLE_UDF(TGetLength, ui64(TAutoMap<TUtf8>)) { - Y_UNUSED(valueBuilder); - const auto& inputRef = args[0].AsStringRef(); - size_t result; - GetNumberOfUTF8Chars(inputRef.Data(), inputRef.Size(), result); - return TUnboxedValuePod(static_cast<ui64>(result)); - } - SIMPLE_UDF_WITH_OPTIONAL_ARGS(TToUint64, ui64(TAutoMap<TUtf8>, TOptional<ui16>), 1) { Y_UNUSED(valueBuilder); const TString inputStr(args[0].AsStringRef()); @@ -252,51 +576,6 @@ namespace { return valueBuilder->NewString(SubstrUTF8(input, from, len)); } - SIMPLE_UDF_WITH_OPTIONAL_ARGS(TFind, TOptional<ui64>(TAutoMap<TUtf8>, TUtf8, TOptional<ui64>), 1) { - Y_UNUSED(valueBuilder); - const std::string_view string(args[0].AsStringRef()); - const std::string_view needle(args[1].AsStringRef()); - std::string_view::size_type pos = 0U; - - if (auto p = args[2].GetOrDefault<ui64>(0ULL)) { - for (auto ptr = string.data(); p && pos < string.size(); --p) { - const auto width = WideCharSize(*ptr); - pos += width; - ptr += width; - } - } - - if (const auto find = string.find(needle, pos); std::string_view::npos != find) { - size_t result; - GetNumberOfUTF8Chars(string.data(), find, result); - return TUnboxedValuePod(static_cast<ui64>(result)); - } - return TUnboxedValuePod(); - } - - SIMPLE_UDF_WITH_OPTIONAL_ARGS(TRFind, TOptional<ui64>(TAutoMap<TUtf8>, TUtf8, TOptional<ui64>), 1) { - Y_UNUSED(valueBuilder); - const std::string_view string(args[0].AsStringRef()); - const std::string_view needle(args[1].AsStringRef()); - std::string_view::size_type pos = std::string_view::npos; - - if (auto p = args[2].GetOrDefault<ui64>(std::string_view::npos); std::string_view::npos != p) { - pos = 0ULL; - for (auto ptr = string.data(); p && pos < string.size(); --p) { - const auto width = WideCharSize(*ptr); - pos += width; - ptr += width; - } - } - - if (const auto find = string.rfind(needle, pos); std::string_view::npos != find) { - size_t result; - GetNumberOfUTF8Chars(string.data(), find, result); - return TUnboxedValuePod(static_cast<ui64>(result)); - } - return TUnboxedValuePod(); - } - using TTmpVector = TSmallVec<TUnboxedValue, TUnboxedValue::TAllocator>; template <typename TIt> @@ -406,86 +685,6 @@ namespace { return valueBuilder->NewString(JoinSeq(delimeter, items)); } - SIMPLE_UDF(TLevensteinDistance, ui64(TAutoMap<TUtf8>, TAutoMap<TUtf8>)) { - Y_UNUSED(valueBuilder); - const TStringBuf left(args[0].AsStringRef()); - const TStringBuf right(args[1].AsStringRef()); - const auto& leftUtf32 = UTF8ToUTF32<true>(left); - const auto& rightUtf32 = UTF8ToUTF32<true>(right); - const ui64 result = NLevenshtein::Distance(leftUtf32, rightUtf32); - return TUnboxedValuePod(result); - } - - SIMPLE_UDF(TReplaceAll, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8)) { - if (TString result(args[0].AsStringRef()); SubstGlobal(result, args[1].AsStringRef(), args[2].AsStringRef())) - return valueBuilder->NewString(result); - else - return args[0]; - } - - SIMPLE_UDF(TReplaceFirst, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8)) { - std::string result(args[0].AsStringRef()); - const std::string_view what(args[1].AsStringRef()); - if (const auto index = result.find(what); index != std::string::npos) { - result.replace(index, what.size(), std::string_view(args[2].AsStringRef())); - return valueBuilder->NewString(result); - } - return args[0]; - } - - SIMPLE_UDF(TReplaceLast, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8)) { - std::string result(args[0].AsStringRef()); - const std::string_view what(args[1].AsStringRef()); - if (const auto index = result.rfind(what); index != std::string::npos) { - result.replace(index, what.size(), std::string_view(args[2].AsStringRef())); - return valueBuilder->NewString(result); - } - return args[0]; - } - - SIMPLE_UDF(TRemoveAll, TUtf8(TAutoMap<TUtf8>, TUtf8)) { - TUtf32String input = UTF8ToUTF32<true>(args[0].AsStringRef()); - const TUtf32String remove = UTF8ToUTF32<true>(args[1].AsStringRef()); - const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend()); - size_t tpos = 0; - for (const wchar32 c : input) { - if (!chars.contains(c)) { - input[tpos++] = c; - } - } - if (tpos != input.size()) { - input.resize(tpos); - return valueBuilder->NewString(WideToUTF8(input)); - } - return args[0]; - } - - SIMPLE_UDF(TRemoveFirst, TUtf8(TAutoMap<TUtf8>, TUtf8)) { - TUtf32String input = UTF8ToUTF32<true>(args[0].AsStringRef()); - const TUtf32String remove = UTF8ToUTF32<true>(args[1].AsStringRef()); - const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend()); - for (auto it = input.cbegin(); it != input.cend(); ++it) { - if (chars.contains(*it)) { - input.erase(it); - return valueBuilder->NewString(WideToUTF8(input)); - } - } - return args[0]; - } - - SIMPLE_UDF(TRemoveLast, TUtf8(TAutoMap<TUtf8>, TUtf8)) { - TUtf32String input = UTF8ToUTF32<true>(args[0].AsStringRef()); - const TUtf32String remove = UTF8ToUTF32<true>(args[1].AsStringRef()); - const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend()); - for (auto it = input.crbegin(); it != input.crend(); ++it) { - if (chars.contains(*it)) { - input.erase(input.crend() - it - 1, 1); - return valueBuilder->NewString(WideToUTF8(input)); - } - } - return args[0]; - } - SIMPLE_UDF(TToCodePointList, TListType<ui32>(TAutoMap<TUtf8>)) { size_t codePointCount = 0; const auto& inputRef = args[0].AsStringRef(); @@ -552,42 +751,6 @@ namespace { return valueBuilder->NewString(TStringRef(buffer.data(), buffer.size())); } - SIMPLE_UDF(TReverse, TUtf8(TAutoMap<TUtf8>)) { - auto wide = UTF8ToWide(args[0].AsStringRef()); - ReverseInPlace(wide); - return valueBuilder->NewString(WideToUTF8(wide)); - } - - SIMPLE_UDF(TStrip, TUtf8(TAutoMap<TUtf8>)) { - const TUtf32String input = UTF8ToUTF32<true>(args[0].AsStringRef()); - const auto& result = StripString(input, IsUnicodeSpaceAdapter(input.begin())); - return valueBuilder->NewString(WideToUTF8(result)); - } - - SIMPLE_UDF(TIsUnicodeSet, bool(TAutoMap<TUtf8>, TUtf8)) { - Y_UNUSED(valueBuilder); - const TStringBuf input(args[0].AsStringRef()); - const TUtf16String& customCategory = UTF8ToWide(args[1].AsStringRef()); - TUnicodeSet unicodeSet; - try { - unicodeSet.Parse(customCategory); - } catch (...) { - UdfTerminate((TStringBuilder() << "Failed to parse unicode set: " << CurrentExceptionMessage()).c_str()); - } - bool result = true; - wchar32 rune; - const unsigned char* cur = reinterpret_cast<const unsigned char*>(input.begin()); - const unsigned char* last = reinterpret_cast<const unsigned char*>(input.end()); - while (cur != last) { - ReadUTF8CharAndAdvance(rune, cur, last); - if (!unicodeSet.Has(rune)) { - result = false; - break; - } - } - return TUnboxedValuePod(result); - } - #define EXPORTED_UNICODE_BASE_UDF \ TIsUtf, \ TGetLength, \ diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/result.json b/yql/essentials/udfs/common/unicode_base/test/canondata/result.json index 8189dd16e0..bac6e1ebc4 100644 --- a/yql/essentials/udfs/common/unicode_base/test/canondata/result.json +++ b/yql/essentials/udfs/common/unicode_base/test/canondata/result.json @@ -1,4 +1,9 @@ { + "test.test[BlockFind]": [ + { + "uri": "file://test.test_BlockFind_/results.txt" + } + ], "test.test[BlockIsCategory]": [ { "uri": "file://test.test_BlockIsCategory_/results.txt" @@ -9,11 +14,31 @@ "uri": "file://test.test_BlockNormalize_/results.txt" } ], + "test.test[BlockRemove]": [ + { + "uri": "file://test.test_BlockRemove_/results.txt" + } + ], + "test.test[BlockReplace]": [ + { + "uri": "file://test.test_BlockReplace_/results.txt" + } + ], + "test.test[BlockStrip]": [ + { + "uri": "file://test.test_BlockStrip_/results.txt" + } + ], "test.test[BlockTo]": [ { "uri": "file://test.test_BlockTo_/results.txt" } ], + "test.test[BlockUnicode]": [ + { + "uri": "file://test.test_BlockUnicode_/results.txt" + } + ], "test.test[Find]": [ { "uri": "file://test.test_Find_/results.txt" @@ -94,6 +119,11 @@ "uri": "file://test.test_TryToUint64_/results.txt" } ], + "test.test[UnicodeCodePoint]": [ + { + "uri": "file://test.test_UnicodeCodePoint_/results.txt" + } + ], "test.test[Unicode]": [ { "uri": "file://test.test_Unicode_/results.txt" diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockFind_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockFind_/results.txt new file mode 100644 index 0000000000..4ee0b05ad2 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockFind_/results.txt @@ -0,0 +1,134 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "l\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm\xC3\xA4\xC3\x9Fig" + ]; + [ + "\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm" + ]; + [ + "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m" + ]; + [ + "\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, " + ]; + [ + "\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k" + ]; + [ + "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m" + ]; + [ + "\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r" + ] + ]; + [ + [ + "l\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm\xC3\xA4\xC3\x9Fig" + ]; + [ + "\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm" + ]; + [ + "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m" + ]; + [ + "\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, " + ]; + [ + "\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k" + ]; + [ + "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m" + ]; + [ + "\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockRemove_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockRemove_/results.txt new file mode 100644 index 0000000000..4004c75199 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockRemove_/results.txt @@ -0,0 +1,100 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "all"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "first"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "last"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "first2"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "last2"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2"; + "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"; + "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" + ]; + [ + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB2\xD1\x8B\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2"; + "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"; + "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x8B" + ]; + [ + ""; + ""; + ""; + ""; + ""; + "" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockReplace_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockReplace_/results.txt new file mode 100644 index 0000000000..bdb61e7f5c --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockReplace_/results.txt @@ -0,0 +1,124 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "all"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "first"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "last"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "first2"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "last2"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "first3"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "last3"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2z\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z"; + "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"; + "\xD1\x8B\xD0\xB2zzz\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fz\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0z\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fzzz\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0zzz\xD1\x87\xD1\x8B" + ]; + [ + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "z\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z"; + "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"; + "zzz\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2z\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0z\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2zzz\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x84\xD1\x8B" + ]; + [ + ""; + ""; + ""; + ""; + ""; + ""; + ""; + "" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockStrip_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockStrip_/results.txt new file mode 100644 index 0000000000..22df398114 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockStrip_/results.txt @@ -0,0 +1,56 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0 \xD0\xB1\xD0\xB5\xD0\xB7 \xD0\xB2\xD0\xBD\xD0\xB5\xD1\x88\xD0\xBD\xD0\xB8\xD1\x85 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2"; + "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0 \xD0\xB1\xD0\xB5\xD0\xB7 \xD0\xB2\xD0\xBD\xD0\xB5\xD1\x88\xD0\xBD\xD0\xB8\xD1\x85 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2" + ]; + [ + " \xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBB\xD0\xB5\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB"; + "\xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBB\xD0\xB5\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB" + ]; + [ + "\xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBF\xD1\x80\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB "; + "\xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBF\xD1\x80\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB" + ]; + [ + "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0_\xD1\x81\xD0\xBE\xD0\xB2\xD1\x81\xD0\xB5\xD0\xBC_\xD0\xB1\xD0\xB5\xD0\xB7_\xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2"; + "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0_\xD1\x81\xD0\xBE\xD0\xB2\xD1\x81\xD0\xB5\xD0\xBC_\xD0\xB1\xD0\xB5\xD0\xB7_\xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2" + ]; + [ + "\xE2\x80\x89\xD1\x8E\xD0\xBD\xD0\xB8\xD0\xBA\xD0\xBE\xD0\xB4+\xD0\xBF\xD0\xB5\xD1\x80\xD0\xB5\xD0\xB2\xD0\xBE\xD0\xB4 \xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB8\n"; + "\xD1\x8E\xD0\xBD\xD0\xB8\xD0\xBA\xD0\xBE\xD0\xB4+\xD0\xBF\xD0\xB5\xD1\x80\xD0\xB5\xD0\xB2\xD0\xBE\xD0\xB4 \xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB8" + ]; + [ + ""; + "" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockUnicode_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockUnicode_/results.txt new file mode 100644 index 0000000000..76cdb42446 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_BlockUnicode_/results.txt @@ -0,0 +1,220 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "is"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "length"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "one_end_substring"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "two_end_substring"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "remove_all"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "levenstein"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "reverse"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "find"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "rfind"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "find_from"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "rfind_from"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "Eyl\xC3\xBCl"; + %true; + "5"; + "yl\xC3\xBCl"; + "Ey"; + "Eyl\xC3\xBCl"; + "5"; + "l\xC3\xBClyE"; + #; + #; + #; + # + ]; + [ + "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"; + %true; + "6"; + "\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"; + "\xD0\xB6\xD0\xBD"; + "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"; + "5"; + "\xD1\x8F\xD0\xBD\xD1\x9E\xD1\x96\xD0\xBD\xD0\xB6"; + #; + #; + #; + # + ]; + [ + "\xC3\xBAnora"; + %true; + "5"; + "nora"; + "\xC3\xBAn"; + "\xC3\xBAnoa"; + "5"; + "aron\xC3\xBA"; + #; + #; + #; + # + ]; + [ + "Ci\xD1\x87 Ci\xD1\x87"; + %true; + "7"; + "i\xD1\x87 Ci\xD1\x87"; + "Ci"; + "Ci Ci"; + "5"; + "\xD1\x87iC \xD1\x87iC"; + #; + #; + #; + # + ]; + [ + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"; + %true; + "13"; + "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"; + "\xD0\xBF\xD1\x80"; + "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"; + "5"; + "\xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF \xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF"; + [ + "4" + ]; + [ + "11" + ]; + [ + "11" + ]; + [ + "4" + ] + ]; + [ + "6"; + %true; + "1"; + ""; + "6"; + "6"; + "1"; + "6"; + #; + #; + #; + # + ]; + [ + ""; + %true; + "0"; + ""; + ""; + ""; + "0"; + ""; + #; + #; + #; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Find_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Find_/results.txt index bcccb2b511..4ee0b05ad2 100644 --- a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Find_/results.txt +++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Find_/results.txt @@ -8,66 +8,73 @@ "StructType"; [ [ - "column0"; + "value"; [ - "DataType"; - "Utf8" + "OptionalType"; + [ + "DataType"; + "Utf8" + ] ] ]; [ "column1"; [ - "DataType"; - "Utf8" + "OptionalType"; + [ + "DataType"; + "Utf8" + ] ] ]; [ "column2"; [ - "DataType"; - "Utf8" + "OptionalType"; + [ + "DataType"; + "Utf8" + ] ] - ] - ] - ] - ]; - "Data" = [ - [ - "\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm"; - "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m"; - "\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, " - ] - ] - } - ] - }; - { - "Write" = [ - { - "Type" = [ - "ListType"; - [ - "StructType"; - [ + ]; [ - "column0"; + "column3"; [ - "DataType"; - "Utf8" + "OptionalType"; + [ + "DataType"; + "Utf8" + ] ] ]; [ - "column1"; + "column4"; [ - "DataType"; - "Utf8" + "OptionalType"; + [ + "DataType"; + "Utf8" + ] ] ]; [ - "column2"; + "column5"; [ - "DataType"; - "Utf8" + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] ] ] ] @@ -75,9 +82,50 @@ ]; "Data" = [ [ - "\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k"; - "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m"; - "\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r" + [ + "l\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm\xC3\xA4\xC3\x9Fig" + ]; + [ + "\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm" + ]; + [ + "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m" + ]; + [ + "\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, " + ]; + [ + "\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k" + ]; + [ + "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m" + ]; + [ + "\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r" + ] + ]; + [ + [ + "l\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm\xC3\xA4\xC3\x9Fig" + ]; + [ + "\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm" + ]; + [ + "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m" + ]; + [ + "\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, " + ]; + [ + "\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k" + ]; + [ + "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m" + ]; + [ + "\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r" + ] ] ] } diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Remove_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Remove_/results.txt index 11bcb15a2f..4004c75199 100644 --- a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Remove_/results.txt +++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Remove_/results.txt @@ -8,63 +8,45 @@ "StructType"; [ [ - "column0"; + "value"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "all"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "first"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "last"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "first2"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "last2"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ] ] @@ -72,104 +54,44 @@ ]; "Data" = [ [ - [ - "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2" - ]; - [ - "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" - ]; - [ - "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" - ] + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2"; + "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"; + "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" ]; [ - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B" - ]; - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x8B" - ]; - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" - ]; - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" - ]; - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" - ]; - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" - ] + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" ]; [ - [ - "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD0\xB2\xD1\x8B\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2" - ]; - [ - "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" - ]; - [ - "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" - ] + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB2\xD1\x8B\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2"; + "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"; + "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" ]; [ - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B" - ]; - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD1\x8B" - ]; - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B" - ]; - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B" - ]; - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B" - ]; - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x8B" - ] + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x8B" ]; [ - [ - "" - ]; - [ - "" - ]; - [ - "" - ]; - [ - "" - ]; - [ - "" - ]; - [ - "" - ] + ""; + ""; + ""; + ""; + ""; + "" ] ] } diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Replace_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Replace_/results.txt index 7390dbdbc3..bdb61e7f5c 100644 --- a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Replace_/results.txt +++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Replace_/results.txt @@ -8,83 +8,59 @@ "StructType"; [ [ - "column0"; + "value"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "all"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "first"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "last"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "first2"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "last2"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "first3"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "last3"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ] ] @@ -92,134 +68,54 @@ ]; "Data" = [ [ - [ - "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD1\x8B\xD0\xB2z\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z" - ]; - [ - "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" - ]; - [ - "\xD1\x8B\xD0\xB2zzz\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz" - ] + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2z\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z"; + "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"; + "\xD1\x8B\xD0\xB2zzz\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz" ]; [ - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B" - ]; - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B" - ]; - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fz\xD0\xB0\xD1\x87\xD1\x8B" - ]; - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0z\xD1\x87\xD1\x8B" - ]; - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" - ]; - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" - ]; - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fzzz\xD0\xB0\xD1\x87\xD1\x8B" - ]; - [ - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0zzz\xD1\x87\xD1\x8B" - ] + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fz\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0z\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fzzz\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0zzz\xD1\x87\xD1\x8B" ]; [ - [ - "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "z\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z" - ]; - [ - "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" - ]; - [ - "zzz\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" - ]; - [ - "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz" - ] + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "z\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z"; + "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2"; + "zzz\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz" ]; [ - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B" - ]; - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x8B" - ]; - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2z\xD0\xB0\xD1\x84\xD1\x8B" - ]; - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0z\xD1\x84\xD1\x8B" - ]; - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B" - ]; - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B" - ]; - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2zzz\xD0\xB0\xD1\x84\xD1\x8B" - ]; - [ - "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x84\xD1\x8B" - ] + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2z\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0z\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2zzz\xD0\xB0\xD1\x84\xD1\x8B"; + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x84\xD1\x8B" ]; [ - [ - "" - ]; - [ - "" - ]; - [ - "" - ]; - [ - "" - ]; - [ - "" - ]; - [ - "" - ]; - [ - "" - ]; - [ - "" - ] + ""; + ""; + ""; + ""; + ""; + ""; + ""; + "" ] ] } diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Strip_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Strip_/results.txt index 613b639ed0..22df398114 100644 --- a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Strip_/results.txt +++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Strip_/results.txt @@ -8,7 +8,7 @@ "StructType"; [ [ - "column0"; + "value"; [ "DataType"; "Utf8" @@ -20,53 +20,33 @@ "DataType"; "Utf8" ] - ]; - [ - "column2"; - [ - "DataType"; - "Utf8" - ] - ]; - [ - "column3"; - [ - "DataType"; - "Utf8" - ] - ]; - [ - "column4"; - [ - "DataType"; - "Utf8" - ] - ]; - [ - "column5"; - [ - "DataType"; - "Utf8" - ] - ]; - [ - "column6"; - [ - "DataType"; - "Utf8" - ] ] ] ] ]; "Data" = [ [ - "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; - "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B"; - "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; - "\xD0\xB0\xD0\xB0\xD0\xB2 \xD1\x8B\xD0\xB0 \xD1\x8B\xD0\xB2\xD0\xB0 \xD1\x8B\xD0\xB2\xD0\xB0"; - "\xD1\x8B\xD0\xB2\xD0\xB0"; - "\xD0\xB2\xD0\xB0\xD0\xBE\xD0\xB0\xD0\xBE"; + "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0 \xD0\xB1\xD0\xB5\xD0\xB7 \xD0\xB2\xD0\xBD\xD0\xB5\xD1\x88\xD0\xBD\xD0\xB8\xD1\x85 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2"; + "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0 \xD0\xB1\xD0\xB5\xD0\xB7 \xD0\xB2\xD0\xBD\xD0\xB5\xD1\x88\xD0\xBD\xD0\xB8\xD1\x85 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2" + ]; + [ + " \xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBB\xD0\xB5\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB"; + "\xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBB\xD0\xB5\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB" + ]; + [ + "\xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBF\xD1\x80\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB "; + "\xD1\x82\xD0\xBE\xD0\xBB\xD1\x8C\xD0\xBA\xD0\xBE \xD0\xBF\xD1\x80\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB9 \xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB" + ]; + [ + "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0_\xD1\x81\xD0\xBE\xD0\xB2\xD1\x81\xD0\xB5\xD0\xBC_\xD0\xB1\xD0\xB5\xD0\xB7_\xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2"; + "\xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB0_\xD1\x81\xD0\xBE\xD0\xB2\xD1\x81\xD0\xB5\xD0\xBC_\xD0\xB1\xD0\xB5\xD0\xB7_\xD0\xBF\xD1\x80\xD0\xBE\xD0\xB1\xD0\xB5\xD0\xBB\xD0\xBE\xD0\xB2" + ]; + [ + "\xE2\x80\x89\xD1\x8E\xD0\xBD\xD0\xB8\xD0\xBA\xD0\xBE\xD0\xB4+\xD0\xBF\xD0\xB5\xD1\x80\xD0\xB5\xD0\xB2\xD0\xBE\xD0\xB4 \xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB8\n"; + "\xD1\x8E\xD0\xBD\xD0\xB8\xD0\xBA\xD0\xBE\xD0\xB4+\xD0\xBF\xD0\xB5\xD1\x80\xD0\xB5\xD0\xB2\xD0\xBE\xD0\xB4 \xD1\x81\xD1\x82\xD1\x80\xD0\xBE\xD0\xBA\xD0\xB8" + ]; + [ + ""; "" ] ] diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_UnicodeCodePoint_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_UnicodeCodePoint_/results.txt new file mode 100644 index 0000000000..cab1fc79ef --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_UnicodeCodePoint_/results.txt @@ -0,0 +1,120 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "code_point_list"; + [ + "ListType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "from_code_point_list"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "from_lazy_code_point_list"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "69"; + "121"; + "108"; + "252"; + "108" + ]; + "Eyl\xC3\xBCl"; + "Eyl\xC3\xBCl" + ]; + [ + [ + "1078"; + "1085"; + "1110"; + "1118"; + "1085"; + "1103" + ]; + "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"; + "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F" + ]; + [ + [ + "250"; + "110"; + "111"; + "114"; + "97" + ]; + "\xC3\xBAnora"; + "\xC3\xBAnora" + ]; + [ + [ + "67"; + "105"; + "1095"; + "32"; + "67"; + "105"; + "1095" + ]; + "Ci\xD1\x87 Ci\xD1\x87"; + "Ci\xD1\x87 Ci\xD1\x87" + ]; + [ + [ + "1087"; + "1088"; + "1080"; + "1074"; + "1077"; + "1090"; + "32"; + "1087"; + "1088"; + "1080"; + "1074"; + "1077"; + "1090" + ]; + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"; + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" + ]; + [ + [ + "54" + ]; + "6"; + "6" + ]; + [ + []; + ""; + "" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Unicode_/results.txt b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Unicode_/results.txt index 502cea3fd0..76cdb42446 100644 --- a/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Unicode_/results.txt +++ b/yql/essentials/udfs/common/unicode_base/test/canondata/test.test_Unicode_/results.txt @@ -10,11 +10,8 @@ [ "value"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ @@ -27,94 +24,43 @@ [ "length"; [ - "OptionalType"; - [ - "DataType"; - "Uint64" - ] + "DataType"; + "Uint64" ] ]; [ "one_end_substring"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "two_end_substring"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "remove_all"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ "levenstein"; [ - "OptionalType"; - [ - "DataType"; - "Uint64" - ] - ] - ]; - [ - "code_point_list"; - [ - "OptionalType"; - [ - "ListType"; - [ - "DataType"; - "Uint32" - ] - ] - ] - ]; - [ - "from_code_point_list"; - [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] - ] - ]; - [ - "from_lazy_code_point_list"; - [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Uint64" ] ]; [ "reverse"; [ - "OptionalType"; - [ - "DataType"; - "Utf8" - ] + "DataType"; + "Utf8" ] ]; [ @@ -162,226 +108,70 @@ ]; "Data" = [ [ - [ - "Eyl\xC3\xBCl" - ]; + "Eyl\xC3\xBCl"; %true; - [ - "5" - ]; - [ - "yl\xC3\xBCl" - ]; - [ - "Ey" - ]; - [ - "Eyl\xC3\xBCl" - ]; - [ - "5" - ]; - [ - [ - "69"; - "121"; - "108"; - "252"; - "108" - ] - ]; - [ - "Eyl\xC3\xBCl" - ]; - [ - "Eyl\xC3\xBCl" - ]; - [ - "l\xC3\xBClyE" - ]; + "5"; + "yl\xC3\xBCl"; + "Ey"; + "Eyl\xC3\xBCl"; + "5"; + "l\xC3\xBClyE"; #; #; #; # ]; [ - [ - "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F" - ]; + "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"; %true; - [ - "6" - ]; - [ - "\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F" - ]; - [ - "\xD0\xB6\xD0\xBD" - ]; - [ - "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F" - ]; - [ - "5" - ]; - [ - [ - "1078"; - "1085"; - "1110"; - "1118"; - "1085"; - "1103" - ] - ]; - [ - "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F" - ]; - [ - "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F" - ]; - [ - "\xD1\x8F\xD0\xBD\xD1\x9E\xD1\x96\xD0\xBD\xD0\xB6" - ]; + "6"; + "\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"; + "\xD0\xB6\xD0\xBD"; + "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"; + "5"; + "\xD1\x8F\xD0\xBD\xD1\x9E\xD1\x96\xD0\xBD\xD0\xB6"; #; #; #; # ]; [ - [ - "\xC3\xBAnora" - ]; + "\xC3\xBAnora"; %true; - [ - "5" - ]; - [ - "nora" - ]; - [ - "\xC3\xBAn" - ]; - [ - "\xC3\xBAnoa" - ]; - [ - "5" - ]; - [ - [ - "250"; - "110"; - "111"; - "114"; - "97" - ] - ]; - [ - "\xC3\xBAnora" - ]; - [ - "\xC3\xBAnora" - ]; - [ - "aron\xC3\xBA" - ]; + "5"; + "nora"; + "\xC3\xBAn"; + "\xC3\xBAnoa"; + "5"; + "aron\xC3\xBA"; #; #; #; # ]; [ - [ - "Ci\xD1\x87 Ci\xD1\x87" - ]; + "Ci\xD1\x87 Ci\xD1\x87"; %true; - [ - "7" - ]; - [ - "i\xD1\x87 Ci\xD1\x87" - ]; - [ - "Ci" - ]; - [ - "Ci Ci" - ]; - [ - "5" - ]; - [ - [ - "67"; - "105"; - "1095"; - "32"; - "67"; - "105"; - "1095" - ] - ]; - [ - "Ci\xD1\x87 Ci\xD1\x87" - ]; - [ - "Ci\xD1\x87 Ci\xD1\x87" - ]; - [ - "\xD1\x87iC \xD1\x87iC" - ]; + "7"; + "i\xD1\x87 Ci\xD1\x87"; + "Ci"; + "Ci Ci"; + "5"; + "\xD1\x87iC \xD1\x87iC"; #; #; #; # ]; [ - [ - "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" - ]; + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"; %true; - [ - "13" - ]; - [ - "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" - ]; - [ - "\xD0\xBF\xD1\x80" - ]; - [ - "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" - ]; - [ - "5" - ]; - [ - [ - "1087"; - "1088"; - "1080"; - "1074"; - "1077"; - "1090"; - "32"; - "1087"; - "1088"; - "1080"; - "1074"; - "1077"; - "1090" - ] - ]; - [ - "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" - ]; - [ - "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" - ]; - [ - "\xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF \xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF" - ]; + "13"; + "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"; + "\xD0\xBF\xD1\x80"; + "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"; + "5"; + "\xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF \xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF"; [ "4" ]; @@ -396,76 +186,28 @@ ] ]; [ - [ - "6" - ]; + "6"; %true; - [ - "1" - ]; - [ - "" - ]; - [ - "6" - ]; - [ - "6" - ]; - [ - "1" - ]; - [ - [ - "54" - ] - ]; - [ - "6" - ]; - [ - "6" - ]; - [ - "6" - ]; + "1"; + ""; + "6"; + "6"; + "1"; + "6"; #; #; #; # ]; [ - [ - "" - ]; + ""; %true; - [ - "0" - ]; - [ - "" - ]; - [ - "" - ]; - [ - "" - ]; - [ - "0" - ]; - [ - [] - ]; - [ - "" - ]; - [ - "" - ]; - [ - "" - ]; + "0"; + ""; + ""; + ""; + "0"; + ""; #; #; #; diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in b/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in new file mode 100644 index 0000000000..c40336b0e2 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in @@ -0,0 +1,2 @@ +{"key"="1";"value"="lästig, möchten, ausführlich, später, können, natürlich, universität, öffentlich, rückwärts, kämpfen, mögen, überall, regelmäßig"}; +{"key"="2";"value"="lästig, möchten, ausführlich, später, können, natürlich, universität, öffentlich, rückwärts, kämpfen, mögen, überall, regelmäßig"}; diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in.attr new file mode 100644 index 0000000000..ea891bb344 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.in.attr @@ -0,0 +1,8 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["OptionalType";["DataType";"Utf8"]]]; + ["value";["OptionalType";["DataType";"Utf8"]]] + ]]; + } +} diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.sql b/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.sql new file mode 100644 index 0000000000..0954e77c94 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockFind.sql @@ -0,0 +1,12 @@ + +pragma UseBlocks; + +SELECT + value as value, + Unicode::Substring(value, Unicode::Find(value, "ä"u), Unicode::RFind(value, "ä"u) - Unicode::Find(value, "ä"u)), + Unicode::Substring(value, Unicode::Find(value, "ö"u), Unicode::RFind(value, "ö"u) - Unicode::Find(value, "ö"u)), + Unicode::Substring(value, Unicode::Find(value, "ü"u), Unicode::RFind(value, "ü"u) - Unicode::Find(value, "ü"u)), + Unicode::Substring(value, Unicode::Find(value, "ä"u, 30ul), Unicode::RFind(value, "ä"u, 123ul) - Unicode::Find(value, "ä"u, 30ul)), + Unicode::Substring(value, Unicode::Find(value, "ö"u, 9ul), Unicode::RFind(value, "ö"u, 103ul) - Unicode::Find(value, "ö"u, 9ul)), + Unicode::Substring(value, Unicode::Find(value, "ü"u, 45ul), Unicode::RFind(value, "ü"u, 83ul) - Unicode::Find(value, "ü"u, 45ul)) +from Input diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in b/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in new file mode 100644 index 0000000000..95262ac2b9 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in @@ -0,0 +1,5 @@ +{"key"="1";"value"="ываыва"}; +{"key"="2";"value"="ячсячсяаачы"}; +{"key"="3";"value"="аавыаываыва"}; +{"key"="4";"value"="gd2цй3ываафы"}; +{"key"="5";"value"=""}; diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in.attr new file mode 100644 index 0000000000..d5e5b2ca48 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.in.attr @@ -0,0 +1,8 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Utf8"]]; + ["value";["DataType";"Utf8"]] + ]]; + } +} diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.sql b/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.sql new file mode 100644 index 0000000000..04a8593148 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockRemove.sql @@ -0,0 +1,12 @@ +/* syntax version 1 */ + +pragma UseBlocks; + +SELECT + value as value, + Unicode::RemoveAll(value, "фа"u) AS all, + Unicode::RemoveFirst(value, "а"u) AS first, + Unicode::RemoveLast(value, "а"u) AS last, + Unicode::RemoveFirst(value, "фа"u) AS first2, + Unicode::RemoveLast(value, "фа"u) AS last2 +FROM Input; diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.in.attr new file mode 100644 index 0000000000..d5e5b2ca48 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.in.attr @@ -0,0 +1,8 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Utf8"]]; + ["value";["DataType";"Utf8"]] + ]]; + } +} diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.sql b/yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.sql new file mode 100644 index 0000000000..c50f01c184 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockReplace.sql @@ -0,0 +1,14 @@ +/* syntax version 1 */ + +pragma UseBlocks; + +SELECT + value, + Unicode::ReplaceAll(value, Utf8("аф"), Utf8("zzz")) AS all, + Unicode::ReplaceFirst(value, Utf8("а"), Utf8("z")) AS first, + Unicode::ReplaceLast(value, Utf8("а"), Utf8("z")) AS last, + Unicode::ReplaceFirst(value, Utf8("а"), Utf8("")) AS first2, + Unicode::ReplaceLast(value, Utf8("а"), Utf8("")) AS last2, + Unicode::ReplaceFirst(value, Utf8("а"), Utf8("zzz")) AS first3, + Unicode::ReplaceLast(value, Utf8("а"), Utf8("zzz")) AS last3 +FROM Input
\ No newline at end of file diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in b/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in new file mode 100644 index 0000000000..d8e23353ed --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in @@ -0,0 +1,6 @@ +{"key"="1";"value"="строка без внешних пробелов"}; +{"key"="2";"value"=" только левый пробел"}; +{"key"="3";"value"="только правый пробел "}; +{"key"="4";"value"="строка_совсем_без_пробелов"}; +{"key"="5";"value"="\u2009юникод+перевод строки\n"}; +{"key"="6";"value"=""}; diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in.attr new file mode 100644 index 0000000000..d5e5b2ca48 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.in.attr @@ -0,0 +1,8 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Utf8"]]; + ["value";["DataType";"Utf8"]] + ]]; + } +} diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.sql b/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.sql new file mode 100644 index 0000000000..04e1b04764 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockStrip.sql @@ -0,0 +1,8 @@ +/* syntax version 1 */ + +pragma UseBlocks; + +SELECT + value as value, + Unicode::Strip(value) +From Input diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in b/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in new file mode 100644 index 0000000000..d9c36c855a --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in @@ -0,0 +1,7 @@ +{"key"="";"value"="Eyl\xC3\xBCl"}; +{"key"="";"value"="\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"}; +{"key"="";"value"="\xC3\xBAnora"}; +{"key"="";"value"="Ci\xD1\x87 Ci\xD1\x87"}; +{"key"="";"value"="\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"}; +{"key"="";"value"="6"}; +{"key"="";"value"=""}; diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in.attr new file mode 100644 index 0000000000..5f1b009fbf --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.in.attr @@ -0,0 +1,8 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Utf8"]]; + ["value";["DataType";"Utf8"]] + ]]; + } +}
\ No newline at end of file diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.sql b/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.sql new file mode 100644 index 0000000000..3ab0ffc96f --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/BlockUnicode.sql @@ -0,0 +1,18 @@ +/* syntax version 1 */ + +pragma UseBlocks; + +SELECT + value AS value, + Unicode::IsUtf(value) AS is, + Unicode::GetLength(value) AS length, + Unicode::Substring(value, 1) AS one_end_substring, + Unicode::Substring(value, 0, 2) AS two_end_substring, + Unicode::RemoveAll(value, "\xD1\x87пr") AS remove_all, + Unicode::LevensteinDistance(value, value || Unicode::Substring(value, 0, 5)) AS levenstein, + Unicode::Reverse(value) AS reverse, + Unicode::Find(value, "ет"u) AS find, + Unicode::RFind(value, "ет"u) AS rfind, + Unicode::Find(value, "ет"u, 7ul) AS find_from, + Unicode::RFind(value, "ет"u, 7ul) AS rfind_from +FROM Input diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Find.in b/yql/essentials/udfs/common/unicode_base/test/cases/Find.in new file mode 100644 index 0000000000..c40336b0e2 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Find.in @@ -0,0 +1,2 @@ +{"key"="1";"value"="lästig, möchten, ausführlich, später, können, natürlich, universität, öffentlich, rückwärts, kämpfen, mögen, überall, regelmäßig"}; +{"key"="2";"value"="lästig, möchten, ausführlich, später, können, natürlich, universität, öffentlich, rückwärts, kämpfen, mögen, überall, regelmäßig"}; diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Find.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/Find.in.attr new file mode 100644 index 0000000000..ea891bb344 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Find.in.attr @@ -0,0 +1,8 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["OptionalType";["DataType";"Utf8"]]]; + ["value";["OptionalType";["DataType";"Utf8"]]] + ]]; + } +} diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Find.sql b/yql/essentials/udfs/common/unicode_base/test/cases/Find.sql index 9a9a58752e..1515be76c6 100644 --- a/yql/essentials/udfs/common/unicode_base/test/cases/Find.sql +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Find.sql @@ -1,13 +1,9 @@ -$text ="lästig, möchten, ausführlich, später, können, natürlich, universität, öffentlich, rückwärts, kämpfen, mögen, überall, regelmäßig"u; - SELECT - Unicode::Substring($text, Unicode::Find($text, "ä"u), Unicode::RFind($text, "ä"u) - Unicode::Find($text, "ä"u)), - Unicode::Substring($text, Unicode::Find($text, "ö"u), Unicode::RFind($text, "ö"u) - Unicode::Find($text, "ö"u)), - Unicode::Substring($text, Unicode::Find($text, "ü"u), Unicode::RFind($text, "ü"u) - Unicode::Find($text, "ü"u)); - - -SELECT - Unicode::Substring($text, Unicode::Find($text, "ä"u, 30ul), Unicode::RFind($text, "ä"u, 123ul) - Unicode::Find($text, "ä"u, 30ul)), - Unicode::Substring($text, Unicode::Find($text, "ö"u, 9ul), Unicode::RFind($text, "ö"u, 103ul) - Unicode::Find($text, "ö"u, 9ul)), - Unicode::Substring($text, Unicode::Find($text, "ü"u, 45ul), Unicode::RFind($text, "ü"u, 83ul) - Unicode::Find($text, "ü"u, 45ul)); - + value as value, + Unicode::Substring(value, Unicode::Find(value, "ä"u), Unicode::RFind(value, "ä"u) - Unicode::Find(value, "ä"u)), + Unicode::Substring(value, Unicode::Find(value, "ö"u), Unicode::RFind(value, "ö"u) - Unicode::Find(value, "ö"u)), + Unicode::Substring(value, Unicode::Find(value, "ü"u), Unicode::RFind(value, "ü"u) - Unicode::Find(value, "ü"u)), + Unicode::Substring(value, Unicode::Find(value, "ä"u, 30ul), Unicode::RFind(value, "ä"u, 123ul) - Unicode::Find(value, "ä"u, 30ul)), + Unicode::Substring(value, Unicode::Find(value, "ö"u, 9ul), Unicode::RFind(value, "ö"u, 103ul) - Unicode::Find(value, "ö"u, 9ul)), + Unicode::Substring(value, Unicode::Find(value, "ü"u, 45ul), Unicode::RFind(value, "ü"u, 83ul) - Unicode::Find(value, "ü"u, 45ul)) +from Input diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Remove.in b/yql/essentials/udfs/common/unicode_base/test/cases/Remove.in new file mode 100644 index 0000000000..95262ac2b9 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Remove.in @@ -0,0 +1,5 @@ +{"key"="1";"value"="ываыва"}; +{"key"="2";"value"="ячсячсяаачы"}; +{"key"="3";"value"="аавыаываыва"}; +{"key"="4";"value"="gd2цй3ываафы"}; +{"key"="5";"value"=""}; diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Remove.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/Remove.in.attr new file mode 100644 index 0000000000..d5e5b2ca48 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Remove.in.attr @@ -0,0 +1,8 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Utf8"]]; + ["value";["DataType";"Utf8"]] + ]]; + } +} diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Remove.sql b/yql/essentials/udfs/common/unicode_base/test/cases/Remove.sql index ee96037f79..eae1d678a3 100644 --- a/yql/essentials/udfs/common/unicode_base/test/cases/Remove.sql +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Remove.sql @@ -1,9 +1,9 @@ /* syntax version 1 */ SELECT - CAST(value AS Utf8), - Unicode::RemoveAll(CAST(value AS Utf8), Utf8("фа")) AS all, - Unicode::RemoveFirst(CAST(value AS Utf8), Utf8("а")) AS first, - Unicode::RemoveLast(CAST(value AS Utf8), Utf8("а")) AS last, - Unicode::RemoveFirst(CAST(value AS Utf8), Utf8("фа")) AS first2, - Unicode::RemoveLast(CAST(value AS Utf8), Utf8("фа")) AS last2 + value as value, + Unicode::RemoveAll(value, "фа"u) AS all, + Unicode::RemoveFirst(value, "а"u) AS first, + Unicode::RemoveLast(value, "а"u) AS last, + Unicode::RemoveFirst(value, "фа"u) AS first2, + Unicode::RemoveLast(value, "фа"u) AS last2 FROM Input; diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Replace.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/Replace.in.attr new file mode 100644 index 0000000000..d5e5b2ca48 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Replace.in.attr @@ -0,0 +1,8 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Utf8"]]; + ["value";["DataType";"Utf8"]] + ]]; + } +} diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Replace.sql b/yql/essentials/udfs/common/unicode_base/test/cases/Replace.sql index d623984413..9f875627ed 100644 --- a/yql/essentials/udfs/common/unicode_base/test/cases/Replace.sql +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Replace.sql @@ -1,11 +1,11 @@ /* syntax version 1 */ SELECT - CAST(value AS Utf8), - Unicode::ReplaceAll(CAST(value AS Utf8), Utf8("аф"), Utf8("zzz")) AS all, - Unicode::ReplaceFirst(CAST(value AS Utf8), Utf8("а"), Utf8("z")) AS first, - Unicode::ReplaceLast(CAST(value AS Utf8), Utf8("а"), Utf8("z")) AS last, - Unicode::ReplaceFirst(CAST(value AS Utf8), Utf8("а"), Utf8("")) AS first2, - Unicode::ReplaceLast(CAST(value AS Utf8), Utf8("а"), Utf8("")) AS last2, - Unicode::ReplaceFirst(CAST(value AS Utf8), Utf8("а"), Utf8("zzz")) AS first3, - Unicode::ReplaceLast(CAST(value AS Utf8), Utf8("а"), Utf8("zzz")) AS last3 -FROM Input; + value, + Unicode::ReplaceAll(value, Utf8("аф"), Utf8("zzz")) AS all, + Unicode::ReplaceFirst(value, Utf8("а"), Utf8("z")) AS first, + Unicode::ReplaceLast(value, Utf8("а"), Utf8("z")) AS last, + Unicode::ReplaceFirst(value, Utf8("а"), Utf8("")) AS first2, + Unicode::ReplaceLast(value, Utf8("а"), Utf8("")) AS last2, + Unicode::ReplaceFirst(value, Utf8("а"), Utf8("zzz")) AS first3, + Unicode::ReplaceLast(value, Utf8("а"), Utf8("zzz")) AS last3 +FROM Input
\ No newline at end of file diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Strip.in b/yql/essentials/udfs/common/unicode_base/test/cases/Strip.in new file mode 100644 index 0000000000..d8e23353ed --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Strip.in @@ -0,0 +1,6 @@ +{"key"="1";"value"="строка без внешних пробелов"}; +{"key"="2";"value"=" только левый пробел"}; +{"key"="3";"value"="только правый пробел "}; +{"key"="4";"value"="строка_совсем_без_пробелов"}; +{"key"="5";"value"="\u2009юникод+перевод строки\n"}; +{"key"="6";"value"=""}; diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Strip.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/Strip.in.attr new file mode 100644 index 0000000000..d5e5b2ca48 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Strip.in.attr @@ -0,0 +1,8 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Utf8"]]; + ["value";["DataType";"Utf8"]] + ]]; + } +} diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Strip.sql b/yql/essentials/udfs/common/unicode_base/test/cases/Strip.sql index 45bde163e0..48f9498b8e 100644 --- a/yql/essentials/udfs/common/unicode_base/test/cases/Strip.sql +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Strip.sql @@ -1,9 +1,5 @@ /* syntax version 1 */ SELECT - Unicode::Strip("ываыва"u), - Unicode::Strip(" ячсячсяаачы"u), - Unicode::Strip("аавыаываыва "u), - Unicode::Strip("аав ыа ыва ыва "u), - Unicode::Strip("\u2009ыва\n"u), - Unicode::Strip("\u200aваоао\u2002"u), - Unicode::Strip(""u) + value as value, + Unicode::Strip(value) +From Input diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in b/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in index 55f0307e35..d9c36c855a 100644 --- a/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in @@ -1,7 +1,7 @@ -{"key"="";"subkey"="";"value"="Eyl\xC3\xBCl"}; -{"key"="";"subkey"="";"value"="\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"}; -{"key"="";"subkey"="";"value"="\xC3\xBAnora"}; -{"key"="";"subkey"="";"value"="Ci\xD1\x87 Ci\xD1\x87"}; -{"key"="";"subkey"="";"value"="\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"}; -{"key"="";"subkey"="";"value"="6"}; -{"key"="";"subkey"="";"value"=""}; +{"key"="";"value"="Eyl\xC3\xBCl"}; +{"key"="";"value"="\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"}; +{"key"="";"value"="\xC3\xBAnora"}; +{"key"="";"value"="Ci\xD1\x87 Ci\xD1\x87"}; +{"key"="";"value"="\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"}; +{"key"="";"value"="6"}; +{"key"="";"value"=""}; diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in.attr new file mode 100644 index 0000000000..5f1b009fbf --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.in.attr @@ -0,0 +1,8 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Utf8"]]; + ["value";["DataType";"Utf8"]] + ]]; + } +}
\ No newline at end of file diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.sql b/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.sql index cdff12f352..6cbaededb6 100644 --- a/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.sql +++ b/yql/essentials/udfs/common/unicode_base/test/cases/Unicode.sql @@ -7,12 +7,9 @@ SELECT Unicode::Substring(value, 0, 2) AS two_end_substring, Unicode::RemoveAll(value, "\xD1\x87пr") AS remove_all, Unicode::LevensteinDistance(value, value || Unicode::Substring(value, 0, 5)) AS levenstein, - Unicode::ToCodePointList(value) AS code_point_list, - Unicode::FromCodePointList(Unicode::ToCodePointList(value)) AS from_code_point_list, - Unicode::FromCodePointList(YQL::LazyList(Unicode::ToCodePointList(value))) AS from_lazy_code_point_list, Unicode::Reverse(value) AS reverse, Unicode::Find(value, "ет"u) AS find, Unicode::RFind(value, "ет"u) AS rfind, Unicode::Find(value, "ет"u, 7ul) AS find_from, Unicode::RFind(value, "ет"u, 7ul) AS rfind_from -FROM (SELECT CAST(value AS Utf8) AS value FROM Input); +FROM Input diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in b/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in new file mode 100644 index 0000000000..d9c36c855a --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in @@ -0,0 +1,7 @@ +{"key"="";"value"="Eyl\xC3\xBCl"}; +{"key"="";"value"="\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"}; +{"key"="";"value"="\xC3\xBAnora"}; +{"key"="";"value"="Ci\xD1\x87 Ci\xD1\x87"}; +{"key"="";"value"="\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"}; +{"key"="";"value"="6"}; +{"key"="";"value"=""}; diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in.attr b/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in.attr new file mode 100644 index 0000000000..d5e5b2ca48 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.in.attr @@ -0,0 +1,8 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Utf8"]]; + ["value";["DataType";"Utf8"]] + ]]; + } +} diff --git a/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.sql b/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.sql new file mode 100644 index 0000000000..cc26378317 --- /dev/null +++ b/yql/essentials/udfs/common/unicode_base/test/cases/UnicodeCodePoint.sql @@ -0,0 +1,6 @@ +/* syntax version 1 */ +SELECT + Unicode::ToCodePointList(value) AS code_point_list, + Unicode::FromCodePointList(Unicode::ToCodePointList(value)) AS from_code_point_list, + Unicode::FromCodePointList(YQL::LazyList(Unicode::ToCodePointList(value))) AS from_lazy_code_point_list, +FROM Input diff --git a/yt/cpp/mapreduce/client/operation.cpp b/yt/cpp/mapreduce/client/operation.cpp index c8cbe5b644..76a55b436f 100644 --- a/yt/cpp/mapreduce/client/operation.cpp +++ b/yt/cpp/mapreduce/client/operation.cpp @@ -879,6 +879,12 @@ void BuildCommonOperationPart( if (baseSpec.MaxFailedJobCount_.Defined()) { (*specNode)["max_failed_job_count"] = *baseSpec.MaxFailedJobCount_; } + if (baseSpec.Description_.Defined()) { + (*specNode)["description"] = *baseSpec.Description_; + } + if (baseSpec.Annotations_.Defined()) { + (*specNode)["annotations"] = *baseSpec.Annotations_; + } } template <typename TSpec> diff --git a/yt/cpp/mapreduce/interface/operation.h b/yt/cpp/mapreduce/interface/operation.h index 218ead0572..c1beb5375d 100644 --- a/yt/cpp/mapreduce/interface/operation.h +++ b/yt/cpp/mapreduce/interface/operation.h @@ -542,6 +542,12 @@ struct TOperationSpecBase /// How many jobs can fail before operation is failed. FLUENT_FIELD_OPTION(ui64, MaxFailedJobCount); + + // Arbitrary structured information related to the operation. + FLUENT_FIELD_OPTION(TNode, Annotations); + + // Similar to Annotations, shown on the operation page. Recommends concise, human-readable entries to prevent clutter. + FLUENT_FIELD_OPTION(TNode, Description); }; /// diff --git a/yt/yql/providers/yt/lib/mkql_helpers/mkql_helpers.cpp b/yt/yql/providers/yt/lib/mkql_helpers/mkql_helpers.cpp index bc307c3178..7916821ca4 100644 --- a/yt/yql/providers/yt/lib/mkql_helpers/mkql_helpers.cpp +++ b/yt/yql/providers/yt/lib/mkql_helpers/mkql_helpers.cpp @@ -69,7 +69,11 @@ void TRecordsRange::Fill(const TExprNode& settingsNode) { if (settingName != TStringBuf("take") && settingName != TStringBuf("skip")) { continue; } - YQL_ENSURE(setting->Child(1)->IsCallable("Uint64")); + if (!setting->Child(1)->IsCallable("Uint64")) { + Offset.Clear(); + Limit.Clear(); + return; + } if (!UpdateRecordsRange(*this, settingName, NYql::FromString<ui64>(*setting->Child(1)->Child(0), NUdf::EDataSlot::Uint64))) { break; } diff --git a/yt/yql/providers/yt/lib/res_pull/table_limiter.cpp b/yt/yql/providers/yt/lib/res_pull/table_limiter.cpp index 98731da58f..ddd4781ed6 100644 --- a/yt/yql/providers/yt/lib/res_pull/table_limiter.cpp +++ b/yt/yql/providers/yt/lib/res_pull/table_limiter.cpp @@ -8,11 +8,16 @@ namespace NYql { TTableLimiter::TTableLimiter(const TRecordsRange& range) : Start(range.Offset.GetOrElse(0ULL)) - , End(range.Limit.Defined() ? Start + *range.Limit : Max()) , Current(0ULL) , TableStart(0ULL) , TableEnd(Max()) { + const auto limit = range.Limit.GetOrElse(Max()); + if (limit > Max<ui64>() - Start) { + End = Max(); + } else { + End = Start + limit; + } } bool TTableLimiter::NextTable(ui64 recordCount) { diff --git a/yt/yql/providers/yt/provider/yql_yt_dq_hybrid.cpp b/yt/yql/providers/yt/provider/yql_yt_dq_hybrid.cpp index 0c8c9fdf6c..b3233e37f1 100644 --- a/yt/yql/providers/yt/provider/yql_yt_dq_hybrid.cpp +++ b/yt/yql/providers/yt/provider/yql_yt_dq_hybrid.cpp @@ -279,31 +279,41 @@ private: .Build() .Done(); - TExprNode::TPtr limit; - if (const auto& limitNode = NYql::GetSetting(sort.Settings().Ref(), EYtSettingType::Limit)) { - limit = GetLimitExpr(limitNode, ctx); - } - + TExprNode::TPtr work; auto [direct, selector] = GetOutputSortSettings(sort, ctx); - auto work = direct && selector ? - limit ? - Build<TCoTopSort>(ctx, sort.Pos()) + if (direct && selector) { + // Don't use runtime limit for TopSort - it may have max<ui64>() value, which cause TopSort to fail + TMaybe<ui64> limit = GetLimit(sort.Settings().Ref()); + work = limit + ? Build<TCoTopSort>(ctx, sort.Pos()) .Input(input) - .Count(std::move(limit)) + .Count<TCoUint64>() + .Literal() + .Value(ToString(*limit), TNodeFlags::Default) + .Build() + .Build() .SortDirections(std::move(direct)) .KeySelectorLambda(std::move(selector)) - .Done().Ptr(): - Build<TCoSort>(ctx, sort.Pos()) + .Done().Ptr() + : Build<TCoSort>(ctx, sort.Pos()) .Input(input) .SortDirections(std::move(direct)) .KeySelectorLambda(std::move(selector)) - .Done().Ptr(): - limit ? - Build<TCoTake>(ctx, sort.Pos()) + .Done().Ptr() + ; + } else { + TExprNode::TPtr limit; + if (const auto& limitNode = NYql::GetSetting(sort.Settings().Ref(), EYtSettingType::Limit)) { + limit = GetLimitExpr(limitNode, ctx); + } + + work = limit + ? Build<TCoTake>(ctx, sort.Pos()) .Input(input) .Count(std::move(limit)) - .Done().Ptr(): - input.Ptr(); + .Done().Ptr() + : input.Ptr(); + } auto settings = NYql::AddSetting(sort.Settings().Ref(), EYtSettingType::NoDq, {}, ctx); auto operation = ctx.ChangeChild(sort.Ref(), TYtTransientOpBase::idx_Settings, std::move(settings)); diff --git a/yt/yql/providers/yt/provider/yql_yt_helpers.cpp b/yt/yql/providers/yt/provider/yql_yt_helpers.cpp index 97b9fdeda9..d8b1f20823 100644 --- a/yt/yql/providers/yt/provider/yql_yt_helpers.cpp +++ b/yt/yql/providers/yt/provider/yql_yt_helpers.cpp @@ -905,7 +905,30 @@ TExprNode::TPtr GetLimitExpr(const TExprNode::TPtr& limitSetting, TExprContext& } if (skip) { - limitValues.push_back(ctx.NewCallable(child->Pos(), "+", { take, skip })); + auto uintMax = ctx.Builder(child->Pos()) + .Callable("Uint64") + .Atom(0, ToString(Max<ui64>()), TNodeFlags::Default) + .Seal() + .Build(); + limitValues.push_back( + ctx.Builder(child->Pos()) + .Callable("If") + .Callable(0, ">") + .Add(0, take) + .Callable(1, "-") + .Add(0, uintMax) + .Add(1, skip) + .Seal() + .Seal() + .Add(1, uintMax) + .Callable(2, "+") + .Add(0, take) + .Add(1, skip) + .Seal() + .Seal() + .Build() + ); + } else { limitValues.push_back(take); } diff --git a/yt/yql/providers/yt/provider/yql_yt_optimize.cpp b/yt/yql/providers/yt/provider/yql_yt_optimize.cpp index 0137b343eb..cd0b5e2ade 100644 --- a/yt/yql/providers/yt/provider/yql_yt_optimize.cpp +++ b/yt/yql/providers/yt/provider/yql_yt_optimize.cpp @@ -73,7 +73,7 @@ TMaybeNode<TYtSection> MaterializeSectionIfRequired(TExprBase world, TYtSection .Paths() .Add(path) .Build() - .Settings(NYql::RemoveSetting(section.Settings().Ref(), EYtSettingType::Sample, ctx)) + .Settings(NYql::RemoveSettings(section.Settings().Ref(), EYtSettingType::Sample | EYtSettingType::SysColumns, ctx)) .Done(); } @@ -89,7 +89,7 @@ TMaybeNode<TYtSection> UpdateSectionWithRange(TExprBase world, TYtSection sectio TVector<TYtPath> skippedPaths; if (auto limiter = TTableLimiter(range)) { if (auto materialized = MaterializeSectionIfRequired(world, section, dataSink, outRowSpec, keepSortness, - {NYql::KeepOnlySettings(section.Settings().Ref(), EYtSettingType::Take | EYtSettingType::Skip | EYtSettingType::SysColumns, ctx)}, state, ctx)) + {NYql::KeepOnlySettings(section.Settings().Ref(), EYtSettingType::Take | EYtSettingType::Skip, ctx)}, state, ctx)) { if (!allowMaterialize || state->Types->EvaluationInProgress) { // Keep section as is diff --git a/yt/yql/tests/sql/suites/limit/dynamic_limit_offset_overflow.sql b/yt/yql/tests/sql/suites/limit/dynamic_limit_offset_overflow.sql new file mode 100644 index 0000000000..5452aceb1c --- /dev/null +++ b/yt/yql/tests/sql/suites/limit/dynamic_limit_offset_overflow.sql @@ -0,0 +1,14 @@ +-- YQL-19579 +-- Check that offset + limit don't overflow max uin64 +use plato; + +$limit = -1; +$offset = 2; +$limit = if($limit >= 0, cast($limit as uint64)); +$offset = if($offset >= 0, cast($offset as uint64)); + +$i = select distinct key from Input; + +select * from $i order by key +limit $limit offset $offset; + diff --git a/yt/yql/tests/sql/suites/select/sample_limit_recordindex.cfg b/yt/yql/tests/sql/suites/select/sample_limit_recordindex.cfg new file mode 100644 index 0000000000..6c06cba116 --- /dev/null +++ b/yt/yql/tests/sql/suites/select/sample_limit_recordindex.cfg @@ -0,0 +1,2 @@ +in Input input1100.txt + diff --git a/yt/yql/tests/sql/suites/select/sample_limit_recordindex.sql b/yt/yql/tests/sql/suites/select/sample_limit_recordindex.sql new file mode 100644 index 0000000000..220fbfa060 --- /dev/null +++ b/yt/yql/tests/sql/suites/select/sample_limit_recordindex.sql @@ -0,0 +1,12 @@ +/* custom check: len(yt_res_yson[0][b'Write'][0][b'Data']) <= 5 */ +USE plato; + +SELECT + key, + subkey, + TableRecordIndex() AS index +FROM + Input +SAMPLE 1.0 / 5 +LIMIT 5 +; diff --git a/yt/yt/client/kafka/requests.cpp b/yt/yt/client/kafka/requests.cpp index e5ac8928f8..f81e97040d 100644 --- a/yt/yt/client/kafka/requests.cpp +++ b/yt/yt/client/kafka/requests.cpp @@ -601,8 +601,10 @@ void TRspFetch::Serialize(IKafkaProtocolWriter* writer, int apiVersion) const //////////////////////////////////////////////////////////////////////////////// -void TReqSaslHandshake::Deserialize(IKafkaProtocolReader* reader, int /*apiVersion*/) +void TReqSaslHandshake::Deserialize(IKafkaProtocolReader* reader, int apiVersion) { + ApiVersion = apiVersion; + Mechanism = reader->ReadString(); } diff --git a/yt/yt/client/kafka/requests.h b/yt/yt/client/kafka/requests.h index e8c4342354..04435ffcaf 100644 --- a/yt/yt/client/kafka/requests.h +++ b/yt/yt/client/kafka/requests.h @@ -120,6 +120,13 @@ struct TRecord //////////////////////////////////////////////////////////////////////////////// +struct TReqBase +{ + int ApiVersion = 0; +}; + +//////////////////////////////////////////////////////////////////////////////// + struct TReqApiVersions { static constexpr ERequestType RequestType = ERequestType::ApiVersions; @@ -504,6 +511,7 @@ struct TRspFetch //////////////////////////////////////////////////////////////////////////////// struct TReqSaslHandshake + : public TReqBase { static constexpr ERequestType RequestType = ERequestType::SaslHandshake; diff --git a/yt/yt/core/bus/client.h b/yt/yt/core/bus/client.h index fa12665fc2..1b9ca361f5 100644 --- a/yt/yt/core/bus/client.h +++ b/yt/yt/core/bus/client.h @@ -2,6 +2,8 @@ #include "public.h" +#include <yt/yt/core/bus/tcp/public.h> + #include <yt/yt/core/ytree/public.h> namespace NYT::NBus { @@ -28,6 +30,9 @@ struct IBusClient //! Typically used for constructing errors. virtual const NYTree::IAttributeDictionary& GetEndpointAttributes() const = 0; + //! Apply new dynamic config. + virtual void OnDynamicConfigChanged(const NBus::TBusClientDynamicConfigPtr& config) = 0; + //! Creates a new bus. /*! * The bus will point to the address supplied during construction. diff --git a/yt/yt/core/bus/server.h b/yt/yt/core/bus/server.h index dd7a35bc13..d217935c36 100644 --- a/yt/yt/core/bus/server.h +++ b/yt/yt/core/bus/server.h @@ -2,6 +2,8 @@ #include "public.h" +#include <yt/yt/core/bus/tcp/public.h> + #include <yt/yt/core/actions/future.h> namespace NYT::NBus { @@ -22,6 +24,12 @@ struct IBusServer */ virtual void Start(IMessageHandlerPtr handler) = 0; + //! Apply new dynamic config. + /* + * \param config New config. + */ + virtual void OnDynamicConfigChanged(const NBus::TBusServerDynamicConfigPtr& config) = 0; + //! Asynchronously stops the listener. /*! * After this call the instance is no longer usable. diff --git a/yt/yt/core/bus/tcp/client.cpp b/yt/yt/core/bus/tcp/client.cpp index 5dd0117bee..81db62b1ab 100644 --- a/yt/yt/core/bus/tcp/client.cpp +++ b/yt/yt/core/bus/tcp/client.cpp @@ -160,6 +160,11 @@ public: return *EndpointAttributes_; } + void OnDynamicConfigChanged(const NBus::TBusClientDynamicConfigPtr& config) override + { + DynamicConfig_.Store(config); + } + IBusPtr CreateBus(IMessageHandlerPtr handler, const TCreateBusOptions& options) override { YT_ASSERT_THREAD_AFFINITY_ANY(); @@ -181,7 +186,6 @@ public: .EndMap()); auto poller = TTcpDispatcher::TImpl::Get()->GetXferPoller(); - auto connection = New<TTcpConnection>( Config_, EConnectionType::Client, @@ -196,7 +200,8 @@ public: std::move(handler), std::move(poller), PacketTranscoderFactory_, - MemoryUsageTracker_); + MemoryUsageTracker_, + DynamicConfig_.Acquire()->NeedRejectConnectionDueMemoryOvercommit); connection->Start(); return New<TTcpClientBusProxy>(std::move(connection)); @@ -204,6 +209,7 @@ public: private: const TBusClientConfigPtr Config_; + TAtomicIntrusivePtr<TBusClientDynamicConfig> DynamicConfig_{New<TBusClientDynamicConfig>()}; IPacketTranscoderFactory* const PacketTranscoderFactory_; const IMemoryUsageTrackerPtr MemoryUsageTracker_; const std::string EndpointDescription_; diff --git a/yt/yt/core/bus/tcp/config.cpp b/yt/yt/core/bus/tcp/config.cpp index f67c6fba6c..809a2d7413 100644 --- a/yt/yt/core/bus/tcp/config.cpp +++ b/yt/yt/core/bus/tcp/config.cpp @@ -126,6 +126,9 @@ TBusServerConfigPtr TBusServerConfig::CreateUds(const std::string& socketPath) return config; } +void TBusServerDynamicConfig::Register(TRegistrar /*registrar*/) +{ } + //////////////////////////////////////////////////////////////////////////////// void TBusConfig::Register(TRegistrar registrar) @@ -170,6 +173,14 @@ void TBusConfig::Register(TRegistrar registrar) //////////////////////////////////////////////////////////////////////////////// +void TBusDynamicConfig::Register(TRegistrar registrar) +{ + registrar.Parameter("need_reject_connection_due_memory_overcommit", &TThis::NeedRejectConnectionDueMemoryOvercommit) + .Default(false); +} + +//////////////////////////////////////////////////////////////////////////////// + void TBusClientConfig::Register(TRegistrar registrar) { registrar.Parameter("address", &TThis::Address) @@ -198,6 +209,9 @@ TBusClientConfigPtr TBusClientConfig::CreateUds(const std::string& socketPath) return config; } +void TBusClientDynamicConfig::Register(TRegistrar /*registrar*/) +{ } + //////////////////////////////////////////////////////////////////////////////// } // namespace NYT::NBus diff --git a/yt/yt/core/bus/tcp/config.h b/yt/yt/core/bus/tcp/config.h index 491612fabb..d0a5bde08d 100644 --- a/yt/yt/core/bus/tcp/config.h +++ b/yt/yt/core/bus/tcp/config.h @@ -130,6 +130,21 @@ DEFINE_REFCOUNTED_TYPE(TBusConfig) //////////////////////////////////////////////////////////////////////////////// +class TBusDynamicConfig + : public NYTree::TYsonStruct +{ +public: + bool NeedRejectConnectionDueMemoryOvercommit; + + REGISTER_YSON_STRUCT(TBusDynamicConfig); + + static void Register(TRegistrar registrar); +}; + +DEFINE_REFCOUNTED_TYPE(TBusDynamicConfig) + +//////////////////////////////////////////////////////////////////////////////// + class TBusServerConfig : public TBusConfig { @@ -151,6 +166,19 @@ DEFINE_REFCOUNTED_TYPE(TBusServerConfig) //////////////////////////////////////////////////////////////////////////////// +class TBusServerDynamicConfig + : public TBusDynamicConfig +{ +public: + REGISTER_YSON_STRUCT(TBusServerDynamicConfig); + + static void Register(TRegistrar registrar); +}; + +DEFINE_REFCOUNTED_TYPE(TBusServerDynamicConfig) + +//////////////////////////////////////////////////////////////////////////////// + class TBusClientConfig : public TBusConfig { @@ -170,5 +198,18 @@ DEFINE_REFCOUNTED_TYPE(TBusClientConfig) //////////////////////////////////////////////////////////////////////////////// +class TBusClientDynamicConfig + : public TBusDynamicConfig +{ +public: + REGISTER_YSON_STRUCT(TBusClientDynamicConfig); + + static void Register(TRegistrar registrar); +}; + +DEFINE_REFCOUNTED_TYPE(TBusClientDynamicConfig) + +//////////////////////////////////////////////////////////////////////////////// + } // namespace NYT::NBus diff --git a/yt/yt/core/bus/tcp/connection.cpp b/yt/yt/core/bus/tcp/connection.cpp index a357e9199d..792cc3d0c4 100644 --- a/yt/yt/core/bus/tcp/connection.cpp +++ b/yt/yt/core/bus/tcp/connection.cpp @@ -114,7 +114,8 @@ TTcpConnection::TTcpConnection( IMessageHandlerPtr handler, IPollerPtr poller, IPacketTranscoderFactory* packetTranscoderFactory, - IMemoryUsageTrackerPtr memoryUsageTracker) + IMemoryUsageTrackerPtr memoryUsageTracker, + bool needRejectConnectionDueMemoryOvercommit) : Config_(std::move(config)) , ConnectionType_(connectionType) , Id_(id) @@ -139,6 +140,7 @@ TTcpConnection::TTcpConnection( , EncryptionMode_(Config_->EncryptionMode) , VerificationMode_(Config_->VerificationMode) , MemoryUsageTracker_(std::move(memoryUsageTracker)) + , NeedRejectConnectionDueMemoryOvercommit_(needRejectConnectionDueMemoryOvercommit) { } TTcpConnection::~TTcpConnection() @@ -596,9 +598,15 @@ void TTcpConnection::InitBuffers() ConnectionType_ == EConnectionType::Server ? GetRefCountedTypeCookie<TTcpServerConnectionWriteBufferTag>() : GetRefCountedTypeCookie<TTcpClientConnectionWriteBufferTag>()); - trackedBlob - .TryReserve(WriteBufferSize) - .ThrowOnError(); + + if (NeedRejectConnectionDueMemoryOvercommit_) { + trackedBlob + .TryReserve(WriteBufferSize) + .ThrowOnError(); + } else { + trackedBlob.Reserve(WriteBufferSize); + } + WriteBuffers_.push_back(std::move(trackedBlob)); } diff --git a/yt/yt/core/bus/tcp/connection.h b/yt/yt/core/bus/tcp/connection.h index bc520f331a..229d244828 100644 --- a/yt/yt/core/bus/tcp/connection.h +++ b/yt/yt/core/bus/tcp/connection.h @@ -88,7 +88,8 @@ public: IMessageHandlerPtr handler, NConcurrency::IPollerPtr poller, IPacketTranscoderFactory* packetTranscoderFactory, - IMemoryUsageTrackerPtr memoryUsageTracker); + IMemoryUsageTrackerPtr memoryUsageTracker, + bool needRejectConnectionDueMemoryOvercommit); ~TTcpConnection(); @@ -279,6 +280,7 @@ private: const EVerificationMode VerificationMode_; const IMemoryUsageTrackerPtr MemoryUsageTracker_; + const bool NeedRejectConnectionDueMemoryOvercommit_; NYTree::IAttributeDictionaryPtr PeerAttributes_; diff --git a/yt/yt/core/bus/tcp/public.h b/yt/yt/core/bus/tcp/public.h index 0c86109c1a..aa86f46c4b 100644 --- a/yt/yt/core/bus/tcp/public.h +++ b/yt/yt/core/bus/tcp/public.h @@ -14,9 +14,15 @@ using TBusNetworkCountersPtr = TIntrusivePtr<TBusNetworkCounters>; DECLARE_REFCOUNTED_CLASS(TMultiplexingBandConfig) DECLARE_REFCOUNTED_CLASS(TTcpDispatcherConfig) DECLARE_REFCOUNTED_CLASS(TTcpDispatcherDynamicConfig) + DECLARE_REFCOUNTED_CLASS(TBusConfig) +DECLARE_REFCOUNTED_CLASS(TBusDynamicConfig) + DECLARE_REFCOUNTED_CLASS(TBusServerConfig) +DECLARE_REFCOUNTED_CLASS(TBusServerDynamicConfig) + DECLARE_REFCOUNTED_CLASS(TBusClientConfig) +DECLARE_REFCOUNTED_CLASS(TBusClientDynamicConfig) struct IPacketTranscoderFactory; diff --git a/yt/yt/core/bus/tcp/server.cpp b/yt/yt/core/bus/tcp/server.cpp index a9fcf0c8a0..2802f2d5d6 100644 --- a/yt/yt/core/bus/tcp/server.cpp +++ b/yt/yt/core/bus/tcp/server.cpp @@ -78,6 +78,13 @@ public: YT_LOG_INFO("Bus server started"); } + void OnDynamicConfigChanged(const NBus::TBusServerDynamicConfigPtr& config) + { + YT_VERIFY(config); + + DynamicConfig_.Store(config); + } + TFuture<void> Stop() { YT_LOG_INFO("Stopping Bus server"); @@ -122,6 +129,7 @@ public: protected: const TBusServerConfigPtr Config_; + TAtomicIntrusivePtr<TBusServerDynamicConfig> DynamicConfig_{New<TBusServerDynamicConfig>()}; const IPollerPtr Poller_; const IMessageHandlerPtr Handler_; IPacketTranscoderFactory* const PacketTranscoderFactory_; @@ -254,7 +262,6 @@ protected: .EndMap()); auto poller = TTcpDispatcher::TImpl::Get()->GetXferPoller(); - auto connection = New<TTcpConnection>( Config_, EConnectionType::Server, @@ -269,7 +276,8 @@ protected: Handler_, std::move(poller), PacketTranscoderFactory_, - MemoryUsageTracker_); + MemoryUsageTracker_, + DynamicConfig_.Acquire()->NeedRejectConnectionDueMemoryOvercommit); { auto guard = WriterGuard(ConnectionsSpinLock_); @@ -435,6 +443,18 @@ public: Server_.Store(server); server->Start(); + server->OnDynamicConfigChanged(DynamicConfig_.Acquire()); + } + + void OnDynamicConfigChanged(const NBus::TBusServerDynamicConfigPtr& config) final + { + YT_VERIFY(config); + + DynamicConfig_.Store(config); + + if (auto server = Server_.Acquire()) { + server->OnDynamicConfigChanged(config); + } } TFuture<void> Stop() final @@ -448,6 +468,7 @@ public: private: const TBusServerConfigPtr Config_; + TAtomicIntrusivePtr<TBusServerDynamicConfig> DynamicConfig_{New<TBusServerDynamicConfig>()}; IPacketTranscoderFactory* const PacketTranscoderFactory_; const IMemoryUsageTrackerPtr MemoryUsageTracker_; @@ -521,6 +542,15 @@ public: } } + void OnDynamicConfigChanged(const NBus::TBusServerDynamicConfigPtr& config) final + { + YT_VERIFY(config); + + for (const auto& server : Servers_) { + server->OnDynamicConfigChanged(config); + } + } + TFuture<void> Stop() final { if (Config_->EnableLocalBypass && Config_->Port) { diff --git a/yt/yt/core/concurrency/arcadia_interop-inl.h b/yt/yt/core/concurrency/arcadia_interop-inl.h new file mode 100644 index 0000000000..57dc19c66d --- /dev/null +++ b/yt/yt/core/concurrency/arcadia_interop-inl.h @@ -0,0 +1,68 @@ +#ifndef ARCADIA_INTEROP_INL_H_ +#error "Direct inclusion of this file is not allowed, include async_batcher.h" +// For the sake of sane code completion. +#include "arcadia_interop.h" +#endif +#undef ARCADIA_INTEROP_INL_H_ + +#include <yt/yt/core/actions/future.h> + +#include <library/cpp/threading/future/core/future.h> + +namespace NYT::NConcurrency { + +//////////////////////////////////////////////////////////////////////////////// + +template <class T> +::NThreading::TFuture<T> ToArcadiaFuture(const TFuture<T>& future) +{ + auto promise = ::NThreading::NewPromise<T>(); + auto wrappedFuture = promise.GetFuture(); + + future + .Subscribe(BIND([promise = std::move(promise)] (const TErrorOr<T>& valueOrError) mutable { + try { + if constexpr (std::is_same_v<T, void>) { + valueOrError + .ThrowOnError(); + promise.TrySetValue(); + } else { + auto value = valueOrError + .ValueOrThrow(); + promise.TrySetValue(std::move(value)); + } + } catch (...) { + promise.TrySetException(std::current_exception()); + } + })); + + return wrappedFuture; +} + +template <class T> +TFuture<T> FromArcadiaFuture(const ::NThreading::TFuture<T>& future) +{ + auto promise = NewPromise<T>(); + auto wrappedFuture = promise.ToFuture(); + + future + .Subscribe([promise = std::move(promise)](::NThreading::TFuture<T> future) { + YT_ASSERT(future.HasValue() || future.HasException()); + try { + if constexpr (std::is_void_v<T>) { + future.TryRethrow(); + promise.TrySet(); + } else { + promise.TrySet(future.ExtractValueSync()); + } + } catch (const std::exception& e) { + promise.TrySet(NYT::TError(e)); + } + }); + + return wrappedFuture; +} + +//////////////////////////////////////////////////////////////////////////////// + +} // namespace NYT::NConcurrency diff --git a/yt/yt/core/concurrency/arcadia_interop.h b/yt/yt/core/concurrency/arcadia_interop.h new file mode 100644 index 0000000000..d46ebb8c00 --- /dev/null +++ b/yt/yt/core/concurrency/arcadia_interop.h @@ -0,0 +1,23 @@ +#pragma once + +#include <yt/yt/core/actions/future.h> + +#include <library/cpp/threading/future/core/future.h> + +namespace NYT::NConcurrency { + +//////////////////////////////////////////////////////////////////////////////// + +template <class T> +::NThreading::TFuture<T> ToArcadiaFuture(const TFuture<T>& future); + +template <class T> +TFuture<T> FromArcadiaFuture(const ::NThreading::TFuture<T>& future); + +//////////////////////////////////////////////////////////////////////////////// + +} // namespace NYT::NConcurrency + +#define ARCADIA_INTEROP_INL_H_ +#include "arcadia_interop-inl.h" +#undef ARCADIA_INTEROP_INL_H_ diff --git a/yt/yt/core/concurrency/unittests/arcadia_interop_ut.cpp b/yt/yt/core/concurrency/unittests/arcadia_interop_ut.cpp new file mode 100644 index 0000000000..a987ebbca2 --- /dev/null +++ b/yt/yt/core/concurrency/unittests/arcadia_interop_ut.cpp @@ -0,0 +1,137 @@ +#include <yt/yt/core/test_framework/framework.h> + +#include <yt/yt/core/concurrency/arcadia_interop.h> + +namespace NYT::NConcurrency { +namespace { + +//////////////////////////////////////////////////////////////////////////////// + +TEST(TFutureInteropTest, FromArcadiaFutureWithValue1) +{ + auto future = FromArcadiaFuture(::NThreading::MakeFuture<int>(1)); + ASSERT_TRUE(future.IsSet()); + EXPECT_EQ(1, future.Get().ValueOrThrow()); +} + +TEST(TFutureInteropTest, FromArcadiaFutureWithValue2) +{ + ::testing::TProbeState state; + auto promise = ::NThreading::NewPromise<::testing::TProbe>(); + auto future = FromArcadiaFuture(promise.GetFuture()); + EXPECT_TRUE(!future.IsSet()); + promise.SetValue(::testing::TProbe(&state)); + ASSERT_TRUE(future.IsSet()); + EXPECT_TRUE(future.Get().ValueOrThrow().IsValid()); + EXPECT_THAT(state, ::testing::HasCopyMoveCounts(0, 3)); +} + +TEST(TFutureInteropTest, FromArcadiaFutureWithError1) +{ + auto promise = ::NThreading::NewPromise<int>(); + promise.SetException("error"); + auto future = FromArcadiaFuture(promise.GetFuture()); + ASSERT_TRUE(future.IsSet()); + EXPECT_THROW_MESSAGE_HAS_SUBSTR(future.Get().ThrowOnError(), std::exception, "error"); +} + +TEST(TFutureInteropTest, FromArcadiaFutureWithError2) +{ + auto promise = ::NThreading::NewPromise<int>(); + auto future = FromArcadiaFuture(promise.GetFuture()); + EXPECT_TRUE(!future.IsSet()); + promise.SetException("error"); + ASSERT_TRUE(future.IsSet()); + EXPECT_THROW_MESSAGE_HAS_SUBSTR(future.Get().ThrowOnError(), std::exception, "error"); +} + +TEST(TFutureInteropTest, FromArcadiaFutureVoid1) +{ + auto promise = ::NThreading::NewPromise<void>(); + auto future = FromArcadiaFuture(promise.GetFuture()); + EXPECT_TRUE(!future.IsSet()); + promise.SetValue(); + ASSERT_TRUE(future.IsSet()); + EXPECT_NO_THROW(future.Get().ThrowOnError()); +} + +TEST(TFutureInteropTest, FromArcadiaFutureVoid2) +{ + auto promise = ::NThreading::NewPromise<void>(); + auto future = FromArcadiaFuture(promise.GetFuture()); + EXPECT_TRUE(!future.IsSet()); + promise.SetException("error"); + ASSERT_TRUE(future.IsSet()); + ASSERT_THROW_MESSAGE_HAS_SUBSTR(future.Get().ThrowOnError(), std::exception, "error"); +} + +TEST(TFutureInteropTest, FromArcadiaFutureCancel) +{ + auto promise = ::NThreading::NewPromise<void>(); + auto future = FromArcadiaFuture(promise.GetFuture()); + EXPECT_TRUE(!future.IsSet()); + future.Cancel(TError("canceled")); + promise.SetValue(); + ASSERT_THROW_MESSAGE_HAS_SUBSTR(future.Get().ThrowOnError(), std::exception, "canceled"); +} + +TEST(TFutureInteropTest, ToArcadiaFutureWithValue) +{ + ::testing::TProbeState state; + auto promise = NewPromise<::testing::TProbe>(); + auto future = ToArcadiaFuture(promise.ToFuture()); + EXPECT_FALSE(future.HasValue()); + promise.Set(::testing::TProbe(&state)); + ASSERT_TRUE(future.HasValue()); + EXPECT_TRUE(future.GetValue().IsValid()); + EXPECT_THAT(state, ::testing::HasCopyMoveCounts(1, 2)); +} + +TEST(TFutureInteropTest, ToArcadiaFutureWithError1) +{ + ::testing::TProbeState state; + auto promise = NewPromise<::testing::TProbe>(); + auto future = ToArcadiaFuture(promise.ToFuture()); + EXPECT_FALSE(future.HasValue()); + promise.Set(TError("error")); + ASSERT_TRUE(future.HasException()); + EXPECT_THROW_MESSAGE_HAS_SUBSTR(future.TryRethrow(), std::exception, "error"); + EXPECT_THAT(state, ::testing::HasCopyMoveCounts(0, 0)); +} + +TEST(TFutureInteropTest, ToArcadiaFutureCanceled) +{ + ::testing::TProbeState state; + auto promise = NewPromise<::testing::TProbe>(); + auto future = ToArcadiaFuture(promise.ToFuture()); + EXPECT_FALSE(future.HasValue()); + + promise.ToFuture().Cancel(TError("canceled")); + ASSERT_TRUE(future.HasException()); + EXPECT_THROW_MESSAGE_HAS_SUBSTR(future.TryRethrow(), std::exception, "canceled"); + EXPECT_THAT(state, ::testing::HasCopyMoveCounts(0, 0)); +} + +TEST(TFutureInteropTest, ToArcadiaFutureVoid1) +{ + auto promise = NewPromise<void>(); + auto future = ToArcadiaFuture(promise.ToFuture()); + EXPECT_FALSE(future.HasValue()); + promise.Set(); + EXPECT_TRUE(future.HasValue()); +} + +TEST(TFutureInteropTest, ToArcadiaFutureVoid2) +{ + auto promise = NewPromise<void>(); + auto future = ToArcadiaFuture(promise.ToFuture()); + EXPECT_FALSE(future.HasValue()); + promise.Set(TError("error")); + EXPECT_TRUE(future.HasException()); + EXPECT_THROW_MESSAGE_HAS_SUBSTR(future.TryRethrow(), std::exception, "error"); +} + +//////////////////////////////////////////////////////////////////////////////// + +} // namespace +} // namespace NYT:::NConcurrency diff --git a/yt/yt/core/concurrency/unittests/ya.make b/yt/yt/core/concurrency/unittests/ya.make index 1d59b915ee..f78e63ebce 100644 --- a/yt/yt/core/concurrency/unittests/ya.make +++ b/yt/yt/core/concurrency/unittests/ya.make @@ -5,6 +5,7 @@ INCLUDE(${ARCADIA_ROOT}/yt/ya_cpp.make.inc) PROTO_NAMESPACE(yt) SRCS( + arcadia_interop_ut.cpp async_barrier_ut.cpp async_looper_ut.cpp async_rw_lock_ut.cpp @@ -47,6 +48,7 @@ PEERDIR( yt/yt/core/test_framework library/cpp/json/yson + library/cpp/threading/future ) REQUIREMENTS( |