diff options
author | alexv-smirnov <[email protected]> | 2023-03-28 22:25:04 +0300 |
---|---|---|
committer | alexv-smirnov <[email protected]> | 2023-03-28 22:25:04 +0300 |
commit | b8a17f9b1c166d2e9a26b99348a4c29d972caf55 (patch) | |
tree | 1a2d881f1a9452b9c6103dbf69d73da7624e98e5 /build/plugins/res.py | |
parent | 25659221f18577ea38430a8ec3349836f5626b6a (diff) |
Revert ymake build from ydb oss export
Diffstat (limited to 'build/plugins/res.py')
-rw-r--r-- | build/plugins/res.py | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/build/plugins/res.py b/build/plugins/res.py deleted file mode 100644 index c3fecce4ddb..00000000000 --- a/build/plugins/res.py +++ /dev/null @@ -1,133 +0,0 @@ -import json -import os -import six -from _common import iterpair, listid, pathid, rootrel_arc_src, tobuilddir, filter_out_by_keyword -import ymake - - -def split(lst, limit): - # paths are specified with replaceable prefix - # real length is unknown at the moment, that why we use root_lenght - # as a rough estimation - root_lenght = 200 - filepath = None - lenght = 0 - bucket = [] - - for item in lst: - if filepath: - lenght += root_lenght + len(filepath) + len(item) - if lenght > limit and bucket: - yield bucket - bucket = [] - lenght = 0 - - bucket.append(filepath) - bucket.append(item) - filepath = None - else: - filepath = item - - if bucket: - yield bucket - - -def remove_prefix(text, prefix): - if text.startswith(prefix): - return text[len(prefix):] - return text - - -def onresource_files(unit, *args): - """ - @usage: RESOURCE_FILES([DONT_PARSE] [PREFIX {prefix}] [STRIP prefix_to_strip] {path}) - - This macro expands into - RESOURCE([DONT_PARSE] {path} resfs/file/{prefix}{path} - - resfs/src/resfs/file/{prefix}{remove_prefix(path, prefix_to_strip)}={rootrel_arc_src(path)} - ) - - resfs/src/{key} stores a source root (or build root) relative path of the - source of the value of the {key} resource. - - resfs/file/{key} stores any value whose source was a file on a filesystem. - resfs/src/resfs/file/{key} must store its path. - - DONT_PARSE disables parsing for source code files (determined by extension) - Please don't abuse: use separate DONT_PARSE macro call only for files subject to parsing - - This form is for use from other plugins: - RESOURCE_FILES([DEST {dest}] {path}) expands into RESOURCE({path} resfs/file/{dest}) - - @see: https://wiki.yandex-team.ru/devtools/commandsandvars/resourcefiles/ - """ - prefix = '' - prefix_to_strip = None - dest = None - res = [] - first = 0 - - if args and not unit.enabled('_GO_MODULE'): - # GO_RESOURCE currently doesn't support DONT_PARSE - res.append('DONT_PARSE') - - if args and args[0] == 'DONT_PARSE': - first = 1 - - args = iter(args[first:]) - for arg in args: - if arg == 'DONT_PARSE': - # ignore explicit specification - continue - if arg == 'PREFIX': - prefix, dest = next(args), None - elif arg == 'DEST': - dest, prefix = next(args), None - elif arg == 'STRIP': - prefix_to_strip = next(args) - else: - path = arg - key = 'resfs/file/' + (dest or (prefix + (path if not prefix_to_strip else remove_prefix(path, prefix_to_strip)))) - src = 'resfs/src/{}={}'.format(key, rootrel_arc_src(path, unit)) - res += ['-', src, path, key] - - if unit.enabled('_GO_MODULE'): - unit.on_go_resource(res) - else: - unit.onresource(res) - -def onall_resource_files(unit, *args): - # This is only validation, actual work is done in ymake.core.conf implementation - for arg in args: - if '*' in arg or '?' in arg: - ymake.report_configure_error('Wildcards in [[imp]]ALL_RESOURCE_FILES[[rst]] are not allowed') - -def on_ya_conf_json(unit, conf_file): - conf_abs_path = unit.resolve('$S/' + conf_file) - if not os.path.exists(conf_abs_path): - ymake.report_configure_error('File "{}" not found'.format(conf_abs_path)) - return - - # conf_file should be passed to the RESOURCE_FILES macro without path. - # To resolve it later by name only we must add it's path to SRCDIR(). - conf_dir = os.path.dirname(conf_file) - if conf_dir: - unit.onsrcdir(conf_dir) - unit.onresource_files(os.path.basename(conf_file)) - - with open(conf_abs_path) as f: - conf = json.load(f) - formulas = set() - for bottle_name, bottle in conf['bottles'].items(): - formula = bottle['formula'] - if isinstance(formula, six.string_types): - if formula.startswith(conf_dir): - abs_path = unit.resolve('$S/' + formula) - if os.path.exists(abs_path): - formulas.add(formula) - else: - ymake.report_configure_error('File "{}" (referenced from bottle "{}" in "{}") is not found'.format(abs_path, bottle_name, conf_abs_path)) - else: - ymake.report_configure_error('File "{}" (referenced from bottle "{}" in "{}") must be located in "{}" file tree'.format(formula, bottle_name, conf_file, conf_dir)) - for formula in formulas: - unit.onresource_files(formula) |