Skip to content

Commit 73c5b36

Browse files
committed
Merge branch 'rightlib' into merge-libs-250227-0050
2 parents 3f91ea9 + 629114a commit 73c5b36

File tree

238 files changed

+9476
-4778
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

238 files changed

+9476
-4778
lines changed

build/conf/go.conf

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@ _GO_CGO1_WRAPPER_FLAGS=--build-prefix=/-B --source-prefix=/-S
9595
_GO_LINK_EXE_EXT_CMD=
9696

9797
# tag:go-specific
98-
GO_WITH_MUSL=
9998

10099
# tag:go-specific
101100
GO_TOOLS_ROOT=${GO_TOOLS_RESOURCE_GLOBAL}
@@ -219,7 +218,7 @@ macro _GO_COMPILE_CGO1(NAME, FLAGS[], FILES...) {
219218

220219
# tag:go-specific
221220
macro _GO_COMPILE_CGO2(NAME, C_FILES[], S_FILES[], OBJ_FILES[], FILES...) {
222-
.CMD=${hide:_CGO_FAKEID} $C_COMPILER $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} $CGO_CFLAGS_VALUE ${input;tobindir:"_cgo_main.c"} -c -o ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_main.c"} && $C_COMPILER $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} -o ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_"} $LDFLAGS $LDFLAGS_GLOBAL $CGO2_LDFLAGS_VALUE ${hide;input:"_cgo_export.h"} ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_main.c"} ${input;suf=${OBJECT_SUF}:"_cgo_export.c"} ${input;nopath;noext;suf=.cgo2.c${OBJECT_SUF}:FILES} ${input;suf=${OBJECT_SUF}:C_FILES} ${input;suf=.o:S_FILES} ${input:OBJ_FILES} $CGO_LDFLAGS_VALUE && ${GO_TOOLS_ROOT}/pkg/tool/$_GO_TC_PATH/cgo -dynpackage $NAME -dynimport ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_"} -dynout ${output:"_cgo_import.go"} -dynlinker $GO_CGO2_FLAGS_VALUE $GO_TOOLCHAIN_ENV ${hide;kv:"p go"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
221+
.CMD=${hide:_CGO_FAKEID} $C_COMPILER $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} $CGO_CFLAGS_VALUE ${input;tobindir:"_cgo_main.c"} -c -o ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_main.c"} && $YMAKE_PYTHON ${input:"build/scripts/link_o.py"} $C_COMPILER $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} -o ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_"} $LDFLAGS $LDFLAGS_GLOBAL $CGO2_LDFLAGS_VALUE ${hide;input:"_cgo_export.h"} ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_main.c"} ${input;suf=${OBJECT_SUF}:"_cgo_export.c"} ${input;nopath;noext;suf=.cgo2.c${OBJECT_SUF}:FILES} ${input;suf=${OBJECT_SUF}:C_FILES} ${input;suf=.o:S_FILES} ${input:OBJ_FILES} $CGO_LDFLAGS_VALUE && ${GO_TOOLS_ROOT}/pkg/tool/$_GO_TC_PATH/cgo -dynpackage $NAME -dynimport ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_"} -dynout ${output:"_cgo_import.go"} -dynlinker $GO_CGO2_FLAGS_VALUE $GO_TOOLCHAIN_ENV ${hide;kv:"p go"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
223222

224223
_USE_LINKER()
225224
}
@@ -233,12 +232,12 @@ macro _GO_LINK_LIB_IMPL(CGO_FILES[], EXTRA_INPUTS[], EXTRA_TEXT_INPUTS[], GO_FIL
233232

234233
# tag:go-specific
235234
macro _GO_LINK_EXE_IMPL(CGO_FILES[], EXTRA_INPUTS[], EXTRA_TEXT_INPUTS[], GO_FILES...) {
236-
.CMD=${hide:_GO_FAKEID} $GO_TOOL ${hide;input:EXTRA_INPUTS} ${hide;context=TEXT;input:EXTRA_TEXT_INPUTS} --ya-start-command-file $_GO_TOOL_COMMON_FLAGS ++vcs $VCS_GO $GO_WITH_MUSL $GO_EXTLD ++peers ${rootrel;tags_in=local,GO|local,GO_PROTO|local,GO_PROTO_FROM_SCHEMA|local,GO_FBS:PEERS} ++non-local-peers ${rootrel;tags_in=GO|GO_PROTO|GO_PROTO_FROM_SCHEMA|GO_FBS|;tags_out=local:PEERS} ++cgo-peers ${VCS_C_OBJ_RR} ${_EXTRA_OBJS} ${rootrel;tags_out=GO|GO_PROTO|GO_PROTO_FROM_SCHEMA|GO_FBS|RESOURCE_LIB:PEERS} --ya-end-command-file ${hide;kv:"p LD"} ${hide;kv:"pc light-red"} ${hide;kv:"show_out"} && $_GO_LINK_EXE_EXT_CMD
235+
.CMD=${hide:_GO_FAKEID} $GO_TOOL ${hide;input:EXTRA_INPUTS} ${hide;context=TEXT;input:EXTRA_TEXT_INPUTS} --ya-start-command-file $_GO_TOOL_COMMON_FLAGS ++ld_plugins ${ext=.pyplugin:SRCS_GLOBAL} ++vcs $VCS_GO $GO_EXTLD ++peers ${rootrel;tags_in=local,GO|local,GO_PROTO|local,GO_PROTO_FROM_SCHEMA|local,GO_FBS:PEERS} ++non-local-peers ${rootrel;tags_in=GO|GO_PROTO|GO_PROTO_FROM_SCHEMA|GO_FBS|;tags_out=local:PEERS} ++cgo-peers ${VCS_C_OBJ_RR} ${_EXTRA_OBJS} ${rootrel;tags_out=GO|GO_PROTO|GO_PROTO_FROM_SCHEMA|GO_FBS|RESOURCE_LIB:PEERS} --ya-end-command-file ${hide;kv:"p LD"} ${hide;kv:"pc light-red"} ${hide;kv:"show_out"} && $_GO_LINK_EXE_EXT_CMD
237236
}
238237

239238
# tag:go-specific
240239
macro _GO_LINK_TEST_IMPL(CGO_FILES[], EXTRA_INPUTS[], EXTRA_TEXT_INPUTS[], GO_TEST_FILES[], GO_XTEST_FILES[], GO_FILES...) {
241-
.CMD=${hide:_GO_FAKEID} $GO_TOOL ${hide;input:EXTRA_INPUTS} ${hide;context=TEXT;input:EXTRA_TEXT_INPUTS} --ya-start-command-file $_GO_TOOL_COMMON_FLAGS ++vcs $VCS_GO $GO_WITH_MUSL $GO_EXTLD ++test-miner $GO_TEST_MINER ++test-import-path $GO_TEST_IMPORT_PATH ++peers ${rootrel;tags_in=local,GO|local,GO_PROGRAM|local,GO_PROTO|local,GO_PROTO_FROM_SCHEMA|local,GO_FBS:PEERS} ++non-local-peers ${rootrel;tags_in=GO|GO_PROTO|GO_PROTO_FROM_SCHEMA|GO_FBS;tags_out=local:PEERS} ++cgo-peers ${VCS_C_OBJ_RR} ${rootrel;tags_out=GO|GO_PROGRAM|GO_PROTO|GO_PROTO_FROM_SCHEMA|GO_FBS|RESOURCE_LIB:PEERS} ++test_srcs ${input:GO_TEST_FILES} ++xtest_srcs ${input:GO_XTEST_FILES} ++cover_info $GO_COVER_INFO_VALUE ++skip-tests $_GO_SKIP_TEST_VALUE --ya-end-command-file ${hide;kv:"p GO"} ${hide;kv:"pc light-red"} ${hide;kv:"show_out"}
240+
.CMD=${hide:_GO_FAKEID} $GO_TOOL ${hide;input:EXTRA_INPUTS} ${hide;context=TEXT;input:EXTRA_TEXT_INPUTS} --ya-start-command-file $_GO_TOOL_COMMON_FLAGS ++ld_plugins ${ext=.pyplugin:SRCS_GLOBAL} ++vcs $VCS_GO $GO_EXTLD ++test-miner $GO_TEST_MINER ++test-import-path $GO_TEST_IMPORT_PATH ++peers ${rootrel;tags_in=local,GO|local,GO_PROGRAM|local,GO_PROTO|local,GO_PROTO_FROM_SCHEMA|local,GO_FBS:PEERS} ++non-local-peers ${rootrel;tags_in=GO|GO_PROTO|GO_PROTO_FROM_SCHEMA|GO_FBS;tags_out=local:PEERS} ++cgo-peers ${VCS_C_OBJ_RR} ${rootrel;tags_out=GO|GO_PROGRAM|GO_PROTO|GO_PROTO_FROM_SCHEMA|GO_FBS|RESOURCE_LIB:PEERS} ++test_srcs ${input:GO_TEST_FILES} ++xtest_srcs ${input:GO_XTEST_FILES} ++cover_info $GO_COVER_INFO_VALUE ++skip-tests $_GO_SKIP_TEST_VALUE --ya-end-command-file ${hide;kv:"p GO"} ${hide;kv:"pc light-red"} ${hide;kv:"show_out"}
242241
}
243242

244243
# tag:go-specific
@@ -638,7 +637,7 @@ otherwise {
638637
###
639638
### The base module of all golang modules. Defines common properties, dependencies and rules for go build.
640639
module _GO_BASE_UNIT: _BASE_UNIT {
641-
.EXTS=.go .gosrc .o .obj .sbom .a .symabis .mf
640+
.EXTS=.go .gosrc .o .obj .sbom .a .symabis .mf .pyplugin
642641
.CMD=$TOUCH_UNIT
643642
.STRUCT_CMD=yes
644643
.NODE_TYPE=Bundle
@@ -870,10 +869,6 @@ module GO_PROGRAM: _GO_BASE_UNIT {
870869
PEERDIR += ${GOSTD}/runtime/race
871870
}
872871

873-
when ($MUSL == "yes") {
874-
GO_WITH_MUSL = ++musl
875-
}
876-
877872
when ($HARDENING == "yes") {
878873
_GO_BUILDMODE=++buildmode=pie
879874
}

build/conf/licenses.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
"GCC-exception-3.1",
4646
"GDAL",
4747
"GFDL-1.1-or-later",
48+
"GFDL-1.3-only",
4849
"GFDL-1.3-or-later",
4950
"Go-License",
5051
"Google-Patent-License-Webm",

build/conf/ts/node_modules.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ _PREPARE_NO_DEPS_CMD=$TOUCH_UNIT \
3636

3737
module _PREPARE_DEPS_BASE: _BARE_UNIT {
3838
.CMD=_PREPARE_DEPS_CMD
39-
.IGNORED=SRCS FILES TS_FILES COPY_FILE RUN_JAVASCRIPT_AFTER_BUILD
39+
.IGNORED=SRCS FILES TS_FILES COPY_FILE RUN_JAVASCRIPT_AFTER_BUILD RUN_JAVASCRIPT
4040
# Propagates peers to related modules
4141
.PEERDIR_POLICY=as_build_from
4242
.NODE_TYPE=Bundle

build/conf/ts/ts.conf

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ TS_CONFIG_USE_OUTDIR=
1111
TS_USE_PREBUILT_NOTS_TOOL=yes
1212
NOTS_TOOL=${tool:"devtools/frontend_build_platform/nots/builder"}
1313

14-
# Additional commands that module can add (with `&&` as delimiter), if set those will be executed
14+
# Additional commands that module can add (with `&&` as delimiter), if set those will be executed
1515
# in build phase just before building the module.
1616
_TS_PROJECT_SETUP_CMD=
1717

@@ -56,6 +56,7 @@ when($AUTOCHECK == "yes") {
5656

5757
_RUN_JAVASCRIPT_AFTER_BUILD_ARGS=
5858
_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS=
59+
_RUN_JAVASCRIPT_AFTER_BUILD_TS_PACKAGE_EXTRA=
5960

6061
# Arguments for builders' commands, passed after the command
6162
# TODO FBP-1978 (remove output.tar output)
@@ -185,7 +186,7 @@ macro _AS_HIDDEN_INPUTS(IN{input}[]) {
185186
.CMD=${hide;context=TEXT;input:IN}
186187
}
187188

188-
# Input/output directives for files set by use with
189+
# Input/output directives for files set by use with
189190
# SRCS / TS_LARGE_FILES / TS_FILES / TS_FILES_GLOB
190191
_TS_FILES_INOUTS=
191192

@@ -231,15 +232,25 @@ macro RUN_JAVASCRIPT_AFTER_BUILD(JS_SCRIPT, OUTDIR="", IN{input}[], ARGS...) {
231232
# --after-build-args uses `arg=val` format because args can start with --, so value will be parsed as another key.
232233
# With `arg=val` format parser knows that after `=` is a value of the --after-build-args.
233234
# For --after-build-outdir it is used to handle possible empty string in OUTDIR
234-
SET(_RUN_JAVASCRIPT_AFTER_BUILD_ARGS --after-build-js $JS_SCRIPT "--after-build-args=${join="<~~~>":ARGS}" "--after-build-outdir=$OUTDIR")
235+
SET(_RUN_JAVASCRIPT_AFTER_BUILD_ARGS --with-after-build --after-build-js $JS_SCRIPT "--after-build-args=${join="<~~~>":ARGS}" "--after-build-outdir=$OUTDIR")
235236
SET(_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS ${IN})
237+
# here we need to escape $, otherwise it will be expanded in-place and will end up with empty value
238+
SET(_RUN_JAVASCRIPT_AFTER_BUILD_TS_PACKAGE_EXTRA \${hide;output:"output.tar"} \${hide;output:"output.tar.uuid"})
236239
_RUN_JAVASCRIPT_AFTER_BUILD_ADD_JS_SCRIPT_AS_INPUT($JS_SCRIPT)
237240
}
238241

239242
macro _RENDER_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS(IN{input}[]) {
240243
.CMD=${hide;input:IN}
241244
}
242245

246+
### @usage RUN_JAVASCRIPT(script_path [args...] [IN inputs...] [OUTDIR outdir])
247+
###
248+
### Run JS script after build of TS_* module.
249+
### Documentation: https://docs.yandex-team.ru/frontend-in-arcadia/references/macros#run-javascript-after-build
250+
macro RUN_JAVASCRIPT(JS_SCRIPT, OUTDIR="", IN{input}[], ARGS...) {
251+
MESSAGE(FATAL_ERROR RUN_JAVASCRIPT macro exists only in scope of TS_PACKAGE. For other TS_* modules use RUN_JAVASCRIPT_AFTER_BUILD)
252+
}
253+
243254

244255
@import "${CONF_ROOT}/conf/ts/node_modules.conf"
245256
@import "${CONF_ROOT}/conf/ts/ts_next.conf"

build/conf/ts/ts_package.conf

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
1-
TS_PACK=$TOUCH_UNIT \
2-
&& $_TS_PROJECT_SETUP_CMD \
3-
&& $NOTS_TOOL $NOTS_TOOL_BASE_ARGS build-package $_NODE_MODULES_INOUTS \
4-
$_TS_FILES_INOUTS ${hide;kv:"p TS_PKG"} ${hide;kv:"pc magenta"}
1+
TS_PACK=$_TS_PROJECT_SETUP_CMD \
2+
&& $NOTS_TOOL $NOTS_TOOL_BASE_ARGS build-package \
3+
--output-file ${output:TARGET} \
4+
$_NODE_MODULES_INOUTS $_TS_FILES_INOUTS \
5+
${hide;kv:"p TS_PKG"} ${hide;kv:"pc magenta"} \
6+
$_RUN_JAVASCRIPT_AFTER_BUILD_TS_PACKAGE_EXTRA \
7+
$_RUN_JAVASCRIPT_AFTER_BUILD_ARGS \
8+
$_RENDER_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS($_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS)
9+
510

611
### # internal
712
macro _TS_PACKAGE_EPILOGUE() {
@@ -31,9 +36,7 @@ multimodule TS_PACKAGE {
3136
.CMD=TS_PACK
3237
.EPILOGUE=_TS_PACKAGE_EPILOGUE
3338
.ALLOWED=TS_FILES TS_FILES_GLOB
34-
# TODO: FBP-2029
35-
.RESTRICTED=RUN_JAVASCRIPT_AFTER_BUILD
36-
.ALIASES=FILES=TS_FILES SRCS=TS_FILES
39+
.ALIASES=FILES=TS_FILES SRCS=TS_FILES RUN_JAVASCRIPT=RUN_JAVASCRIPT_AFTER_BUILD
3740
.PEERDIRSELF=TS_PREPARE_DEPS
3841

3942
# by default multimodule overrides inherited MODULE_TAG to submodule name (BUILD in this case)
@@ -46,9 +49,5 @@ multimodule TS_PACKAGE {
4649
}
4750

4851
module TS_PREPARE_DEPS: _PREPARE_DEPS_BASE {
49-
# TODO: FBP-2029
50-
# You need to restricts macro in all submodules of multimodule
51-
# otherwise .RESTRICTED will behave as .IGNORED
52-
.RESTRICTED=RUN_JAVASCRIPT_AFTER_BUILD
5352
}
5453
}

build/plugins/nots.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -937,7 +937,6 @@ def __on_ts_files(unit: NotsUnitType, files_in: list[str], files_out: list[str])
937937
new_items = _build_cmd_input_paths(paths=files_in, hide=True, disable_include_processor=True)
938938
new_items += _build_cmd_output_paths(paths=files_out, hide=True)
939939
__set_append(unit, "_TS_FILES_INOUTS", new_items)
940-
logger.print_vars("_TS_FILES_INOUTS")
941940

942941

943942
@_with_report_configure_error

build/scripts/go_tool.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -525,12 +525,7 @@ def do_link_exe(args):
525525
cmd.append('-extld={}'.format(args.extld))
526526

527527
if args.extldflags is not None:
528-
filter_musl = bool
529-
if args.musl:
530-
cmd.append('-linkmode=external')
531-
extldflags.append('-static')
532-
filter_musl = lambda x: x not in ('-lc', '-ldl', '-lm', '-lpthread', '-lrt')
533-
extldflags += [x for x in args.extldflags if filter_musl(x)]
528+
extldflags.extend(args.extldflags)
534529
cgo_peers = []
535530
if args.cgo_peers is not None and len(args.cgo_peers) > 0:
536531
is_group = args.targ_os == 'linux'
@@ -545,6 +540,10 @@ def do_link_exe(args):
545540
except ValueError:
546541
extldflags.extend(cgo_peers)
547542
if len(extldflags) > 0:
543+
for p in args.ld_plugins:
544+
res = subprocess.check_output([sys.executable, p, sys.argv[0]] + extldflags, cwd=args.build_root).decode().strip()
545+
if res:
546+
extldflags = json.loads(res)[1:]
548547
cmd.append('-extldflags={}'.format(' '.join(extldflags)))
549548
cmd.append(compile_args.output)
550549
call(cmd, args.build_root)
@@ -850,6 +849,7 @@ def find_ydx_file_name(name, flags):
850849
parser.add_argument('++test_srcs', nargs='*')
851850
parser.add_argument('++xtest_srcs', nargs='*')
852851
parser.add_argument('++cover_info', nargs='*')
852+
parser.add_argument('++ld_plugins', nargs='*')
853853
parser.add_argument('++output', nargs='?', default=None)
854854
parser.add_argument('++source-root', default=None)
855855
parser.add_argument('++build-root', required=True)
@@ -881,7 +881,6 @@ def find_ydx_file_name(name, flags):
881881
parser.add_argument('++vet-flags', nargs='*', default=None)
882882
parser.add_argument('++vet-info-ext', default=vet_info_ext)
883883
parser.add_argument('++vet-report-ext', default=vet_report_ext)
884-
parser.add_argument('++musl', action='store_true')
885884
parser.add_argument('++skip-tests', nargs='*', default=None)
886885
parser.add_argument('++ydx-file', default='')
887886
parser.add_argument('++debug-root-map', default=None)

build/scripts/link_dyn_lib.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,9 +165,6 @@ def parse_args(args):
165165
parser.add_option('--fix-elf')
166166
parser.add_option('--linker-output')
167167
parser.add_option('--dynamic-cuda', action='store_true')
168-
parser.add_option('--cuda-architectures',
169-
help='List of supported CUDA architectures, separated by ":" (e.g. "sm_52:compute_70:lto_90a"')
170-
parser.add_option('--nvprune-exe')
171168
parser.add_option('--objcopy-exe')
172169
parser.add_option('--whole-archive-peers', action='append')
173170
parser.add_option('--whole-archive-libs', action='append')

build/scripts/link_exe.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,6 @@ def parse_args(args):
4747
parser.add_option('--build-root')
4848
parser.add_option('--clang-ver')
4949
parser.add_option('--dynamic-cuda', action='store_true')
50-
parser.add_option('--cuda-architectures',
51-
help='List of supported CUDA architectures, separated by ":" (e.g. "sm_52:compute_70:lto_90a"')
52-
parser.add_option('--nvprune-exe')
5350
parser.add_option('--objcopy-exe')
5451
parser.add_option('--arch')
5552
parser.add_option('--linker-output')

build/scripts/link_o.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import subprocess
2+
import sys
3+
import os
4+
5+
6+
def flt(args):
7+
for a in args:
8+
if a == '-o':
9+
yield '-Wl,-r'
10+
yield '-fuse-ld=lld'
11+
yield '-nodefaultlibs'
12+
yield '-nostartfiles'
13+
yield '-Wl,-no-pie'
14+
yield '-o'
15+
elif a.endswith('.o'):
16+
yield a
17+
elif '--ld' in a:
18+
yield a
19+
elif '--target' in a:
20+
yield a
21+
22+
23+
if '-apple-macos' in str(sys.argv):
24+
cmd = sys.argv[1:]
25+
else:
26+
cmd = [sys.argv[1]] + list(flt(sys.argv[2:]))
27+
28+
29+
subprocess.check_call(cmd)

0 commit comments

Comments
 (0)