diff options
| author | svidyuk <[email protected]> | 2022-02-10 16:47:12 +0300 | 
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:47:12 +0300 | 
| commit | 287d7d8c4ffc811d1e51c756ecfb13b78f4ee62d (patch) | |
| tree | 339adc63bce23800021202ae4a8328a843dc447a /build/plugins | |
| parent | e23df0602fedd83374b43b6137a296baa2aad3f6 (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 2 of 2.
Diffstat (limited to 'build/plugins')
| -rw-r--r-- | build/plugins/java.py | 316 | ||||
| -rw-r--r-- | build/plugins/res.py | 22 | ||||
| -rw-r--r-- | build/plugins/scarab_cant_clash.py | 6 | ||||
| -rw-r--r-- | build/plugins/swig.py | 124 | ||||
| -rw-r--r-- | build/plugins/ytest.py | 94 | 
5 files changed, 281 insertions, 281 deletions
diff --git a/build/plugins/java.py b/build/plugins/java.py index ff5281624ad..16fc1267348 100644 --- a/build/plugins/java.py +++ b/build/plugins/java.py @@ -31,7 +31,7 @@ def extract_macro_calls2(unit, macro_value_name):      return calls -def on_run_jbuild_program(unit, *args):  +def on_run_jbuild_program(unit, *args):      args = list(args)      """      Custom code generation @@ -76,31 +76,31 @@ def ongenerate_script(unit, *args):  def onjava_module(unit, *args):      args_delim = unit.get('ARGS_DELIM') -    idea_only = True if 'IDEA_ONLY' in args else False  - -    if idea_only:  -        if unit.get('YA_IDE_IDEA') != 'yes':  -            return  -        if unit.get('YMAKE_JAVA_MODULES') != 'yes':  -            return  -  +    idea_only = True if 'IDEA_ONLY' in args else False + +    if idea_only: +        if unit.get('YA_IDE_IDEA') != 'yes': +            return +        if unit.get('YMAKE_JAVA_MODULES') != 'yes': +            return +      data = {          'BUNDLE_NAME': unit.name(),          'PATH': unit.path(), -        'IDEA_ONLY': 'yes' if idea_only else 'no',  +        'IDEA_ONLY': 'yes' if idea_only else 'no',          'MODULE_TYPE': unit.get('MODULE_TYPE'),          'MODULE_ARGS': unit.get('MODULE_ARGS'), -        'MANAGED_PEERS': '${MANAGED_PEERS}',  -        'MANAGED_PEERS_CLOSURE': '${MANAGED_PEERS_CLOSURE}',  -        'NON_NAMAGEABLE_PEERS': '${NON_NAMAGEABLE_PEERS}',  -        'TEST_CLASSPATH_MANAGED': '${TEST_CLASSPATH_MANAGED}',  +        'MANAGED_PEERS': '${MANAGED_PEERS}', +        'MANAGED_PEERS_CLOSURE': '${MANAGED_PEERS_CLOSURE}', +        'NON_NAMAGEABLE_PEERS': '${NON_NAMAGEABLE_PEERS}', +        'TEST_CLASSPATH_MANAGED': '${TEST_CLASSPATH_MANAGED}',          'EXCLUDE': extract_macro_calls(unit, 'EXCLUDE_VALUE', args_delim),          'JAVA_SRCS': extract_macro_calls(unit, 'JAVA_SRCS_VALUE', args_delim),          'JAVAC_FLAGS': extract_macro_calls(unit, 'JAVAC_FLAGS_VALUE', args_delim),          'ANNOTATION_PROCESSOR': extract_macro_calls(unit, 'ANNOTATION_PROCESSOR_VALUE', args_delim),          'EXTERNAL_JAR': extract_macro_calls(unit, 'EXTERNAL_JAR_VALUE', args_delim),          'RUN_JAVA_PROGRAM': extract_macro_calls2(unit, 'RUN_JAVA_PROGRAM_VALUE'), -        'RUN_JAVA_PROGRAM_MANAGED': '${RUN_JAVA_PROGRAM_MANAGED}',  +        'RUN_JAVA_PROGRAM_MANAGED': '${RUN_JAVA_PROGRAM_MANAGED}',          'MAVEN_GROUP_ID': extract_macro_calls(unit, 'MAVEN_GROUP_ID_VALUE', args_delim),          'JAR_INCLUDE_FILTER': extract_macro_calls(unit, 'JAR_INCLUDE_FILTER_VALUE', args_delim),          'JAR_EXCLUDE_FILTER': extract_macro_calls(unit, 'JAR_EXCLUDE_FILTER_VALUE', args_delim), @@ -219,151 +219,151 @@ def onjava_module(unit, *args):      dart = 'JAVA_DART: ' + base64.b64encode(json.dumps(data)) + '\n' + DELIM + '\n'      unit.set_property(['JAVA_DART_DATA', dart]) -    if not idea_only and unit.get('MODULE_TYPE') in ('JAVA_PROGRAM', 'JAVA_LIBRARY', 'JTEST', 'TESTNG', 'JUNIT5') and not unit.path().startswith('$S/contrib/java'):  -        unit.on_add_classpath_clash_check()  +    if not idea_only and unit.get('MODULE_TYPE') in ('JAVA_PROGRAM', 'JAVA_LIBRARY', 'JTEST', 'TESTNG', 'JUNIT5') and not unit.path().startswith('$S/contrib/java'): +        unit.on_add_classpath_clash_check()          if unit.get('LINT_LEVEL_VALUE') != "none":              unit.onadd_check(['JAVA_STYLE', unit.get('LINT_LEVEL_VALUE')]) -  -  -def on_add_java_style_checks(unit, *args):  -    if unit.get('LINT_LEVEL_VALUE') != "none":  -        unit.onadd_check(['JAVA_STYLE', unit.get('LINT_LEVEL_VALUE')] + list(args))  -  -  -def on_add_classpath_clash_check(unit, *args):  -    jdeps_val = (unit.get('CHECK_JAVA_DEPS_VALUE') or '').lower()  -    if jdeps_val and jdeps_val not in ('yes', 'no', 'strict'):  -        ymake.report_configure_error('CHECK_JAVA_DEPS: "yes", "no" or "strict" required')  -    if jdeps_val and jdeps_val != 'no':  -        unit.onjava_test_deps(jdeps_val)  -  -  -# Ymake java modules related macroses  -  -  -def onexternal_jar(unit, *args):  -    args = list(args)  -    flat, kv = common.sort_by_keywords({'SOURCES': 1}, args)  -    if not flat:  -        ymake.report_configure_error('EXTERNAL_JAR requires exactly one resource URL of compiled jar library')  -    res = flat[0]  -    resid = res[4:] if res.startswith('sbr:') else res  -    unit.set(['JAR_LIB_RESOURCE', resid])  -    unit.set(['JAR_LIB_RESOURCE_URL', res])  -  -  -def on_check_java_srcdir(unit, *args):  -    args = list(args)  -    for arg in args:  -        if not '$' in arg:  -            arc_srcdir = os.path.join(unit.get('MODDIR'), arg)  -            abs_srcdir = unit.resolve(os.path.join("$S/", arc_srcdir))  -            if not os.path.exists(abs_srcdir) or not os.path.isdir(abs_srcdir):  -                ymake.report_configure_error(  -                    'Trying to set a [[alt1]]JAVA_SRCS[[rst]] for a missing directory: [[imp]]$S/{}[[rst]]',  -                    missing_dir=arc_srcdir  -                )  -            return  -        srcdir = unit.resolve_arc_path(arg)  -        if srcdir and not srcdir.startswith('$S'):  -            continue  -        abs_srcdir = unit.resolve(srcdir) if srcdir else unit.resolve(arg)  -        if not os.path.exists(abs_srcdir) or not os.path.isdir(abs_srcdir):  -            ymake.report_configure_error(  -                'Trying to set a [[alt1]]JAVA_SRCS[[rst]] for a missing directory: [[imp]]{}[[rst]]',  -                missing_dir=srcdir  -            )  -  -  -def on_fill_jar_copy_resources_cmd(unit, *args):  -    if len(args) == 4:  -        varname, srcdir, base_classes_dir, reslist = tuple(args)  -        package = ''  -    else:  -        varname, srcdir, base_classes_dir, package, reslist = tuple(args)  -    dest_dir = os.path.join(base_classes_dir, *package.split('.')) if package else base_classes_dir  -    var = unit.get(varname)  -    var += ' && $FS_TOOLS copy_files {} {} {}'.format(srcdir if srcdir.startswith('"$') else '${CURDIR}/' + srcdir, dest_dir, reslist)  -    unit.set([varname, var])  -  -def on_fill_jar_gen_srcs(unit, *args):  -    varname, jar_type, srcdir, base_classes_dir, java_list, kt_list, groovy_list, res_list = tuple(args[0:8])  -    resolved_srcdir = unit.resolve_arc_path(srcdir)  -    if not resolved_srcdir.startswith('$') or resolved_srcdir.startswith('$S'):  -        return  -  -    exclude_pos = args.index('EXCLUDE')  -    globs = args[7:exclude_pos]  -    excludes = args[exclude_pos + 1:]  -    var = unit.get(varname)  -    var += ' && ${{cwd:BINDIR}} $YMAKE_PYTHON ${{input:"build/scripts/resolve_java_srcs.py"}} --append -d {} -s {} -k {} -g {} -r {} --include-patterns {}'.format(srcdir, java_list, kt_list, groovy_list, res_list, ' '.join(globs))  -    if jar_type == 'SRC_JAR':  -        var += ' --all-resources'  -    if len(excludes) > 0:  -        var += ' --exclude-patterns {}'.format(' '.join(excludes))  -    if unit.get('WITH_KOTLIN_VALUE') == 'yes':  -        var += ' --resolve-kotlin'  -    unit.set([varname, var])  -  -  -def on_check_run_java_prog_classpath(unit, *args):  -    if len(args) != 1:  -        ymake.report_configure_error('multiple CLASSPATH elements in RUN_JAVA_PROGRAM invocation no more supported. Use JAVA_RUNTIME_PEERDIR on the JAVA_PROGRAM module instead')  -  -  -def extract_words(words, keys):  -    kv = {}  -    k = None  -  -    for w in words:  -        if w in keys:  -            k = w  -        else:  -            if not k in kv:  -                kv[k] = []  -            kv[k].append(w)  -  -    return kv  -  -  -def parse_words(words):  -    kv = extract_words(words, {'OUT', 'TEMPLATE'})  -    ws = []  -    for item in ('OUT', 'TEMPLATE'):  -        for i, word in list(enumerate(kv[item])):  -            if word == 'CUSTOM_PROPERTY':  -                ws += kv[item][i:]  -                kv[item] = kv[item][:i]  -    tepmlates = kv['TEMPLATE']  -    outputs = kv['OUT']  -    if len(outputs) < len(tepmlates):  -        ymake.report_configure_error('To many arguments for TEMPLATE parameter')  -        return  -    if ws and ws[0] != 'CUSTOM_PROPERTY':  -        ymake.report_configure_error('''Can't parse {}'''.format(ws))  -    custom_props = []  -    for item in ws:  -        if item == 'CUSTOM_PROPERTY':  -            custom_props.append([])  -        else:  -            custom_props[-1].append(item)  -    props = []  -    for p in custom_props:  -        if not p:  -            ymake.report_configure_error('Empty CUSTOM_PROPERTY')  -            continue  -        props.append('-B')  -        if len(p) > 1:  -            props.append(base64.b64encode("{}={}".format(p[0], ' '.join(p[1:]))))  -        else:  -            ymake.report_configure_error('CUSTOM_PROPERTY "{}" value is not specified'.format(p[0]))  -    for i, o in enumerate(outputs):  -        yield o, tepmlates[min(i, len(tepmlates) - 1)], props  -  -  -def on_ymake_generate_script(unit, *args):  -    for out, tmpl, props in parse_words(list(args)):  -        unit.on_add_gen_java_script([out, tmpl] + list(props))  + + +def on_add_java_style_checks(unit, *args): +    if unit.get('LINT_LEVEL_VALUE') != "none": +        unit.onadd_check(['JAVA_STYLE', unit.get('LINT_LEVEL_VALUE')] + list(args)) + + +def on_add_classpath_clash_check(unit, *args): +    jdeps_val = (unit.get('CHECK_JAVA_DEPS_VALUE') or '').lower() +    if jdeps_val and jdeps_val not in ('yes', 'no', 'strict'): +        ymake.report_configure_error('CHECK_JAVA_DEPS: "yes", "no" or "strict" required') +    if jdeps_val and jdeps_val != 'no': +        unit.onjava_test_deps(jdeps_val) + + +# Ymake java modules related macroses + + +def onexternal_jar(unit, *args): +    args = list(args) +    flat, kv = common.sort_by_keywords({'SOURCES': 1}, args) +    if not flat: +        ymake.report_configure_error('EXTERNAL_JAR requires exactly one resource URL of compiled jar library') +    res = flat[0] +    resid = res[4:] if res.startswith('sbr:') else res +    unit.set(['JAR_LIB_RESOURCE', resid]) +    unit.set(['JAR_LIB_RESOURCE_URL', res]) + + +def on_check_java_srcdir(unit, *args): +    args = list(args) +    for arg in args: +        if not '$' in arg: +            arc_srcdir = os.path.join(unit.get('MODDIR'), arg) +            abs_srcdir = unit.resolve(os.path.join("$S/", arc_srcdir)) +            if not os.path.exists(abs_srcdir) or not os.path.isdir(abs_srcdir): +                ymake.report_configure_error( +                    'Trying to set a [[alt1]]JAVA_SRCS[[rst]] for a missing directory: [[imp]]$S/{}[[rst]]', +                    missing_dir=arc_srcdir +                ) +            return +        srcdir = unit.resolve_arc_path(arg) +        if srcdir and not srcdir.startswith('$S'): +            continue +        abs_srcdir = unit.resolve(srcdir) if srcdir else unit.resolve(arg) +        if not os.path.exists(abs_srcdir) or not os.path.isdir(abs_srcdir): +            ymake.report_configure_error( +                'Trying to set a [[alt1]]JAVA_SRCS[[rst]] for a missing directory: [[imp]]{}[[rst]]', +                missing_dir=srcdir +            ) + + +def on_fill_jar_copy_resources_cmd(unit, *args): +    if len(args) == 4: +        varname, srcdir, base_classes_dir, reslist = tuple(args) +        package = '' +    else: +        varname, srcdir, base_classes_dir, package, reslist = tuple(args) +    dest_dir = os.path.join(base_classes_dir, *package.split('.')) if package else base_classes_dir +    var = unit.get(varname) +    var += ' && $FS_TOOLS copy_files {} {} {}'.format(srcdir if srcdir.startswith('"$') else '${CURDIR}/' + srcdir, dest_dir, reslist) +    unit.set([varname, var]) + +def on_fill_jar_gen_srcs(unit, *args): +    varname, jar_type, srcdir, base_classes_dir, java_list, kt_list, groovy_list, res_list = tuple(args[0:8]) +    resolved_srcdir = unit.resolve_arc_path(srcdir) +    if not resolved_srcdir.startswith('$') or resolved_srcdir.startswith('$S'): +        return + +    exclude_pos = args.index('EXCLUDE') +    globs = args[7:exclude_pos] +    excludes = args[exclude_pos + 1:] +    var = unit.get(varname) +    var += ' && ${{cwd:BINDIR}} $YMAKE_PYTHON ${{input:"build/scripts/resolve_java_srcs.py"}} --append -d {} -s {} -k {} -g {} -r {} --include-patterns {}'.format(srcdir, java_list, kt_list, groovy_list, res_list, ' '.join(globs)) +    if jar_type == 'SRC_JAR': +        var += ' --all-resources' +    if len(excludes) > 0: +        var += ' --exclude-patterns {}'.format(' '.join(excludes)) +    if unit.get('WITH_KOTLIN_VALUE') == 'yes': +        var += ' --resolve-kotlin' +    unit.set([varname, var]) + + +def on_check_run_java_prog_classpath(unit, *args): +    if len(args) != 1: +        ymake.report_configure_error('multiple CLASSPATH elements in RUN_JAVA_PROGRAM invocation no more supported. Use JAVA_RUNTIME_PEERDIR on the JAVA_PROGRAM module instead') + + +def extract_words(words, keys): +    kv = {} +    k = None + +    for w in words: +        if w in keys: +            k = w +        else: +            if not k in kv: +                kv[k] = [] +            kv[k].append(w) + +    return kv + + +def parse_words(words): +    kv = extract_words(words, {'OUT', 'TEMPLATE'}) +    ws = [] +    for item in ('OUT', 'TEMPLATE'): +        for i, word in list(enumerate(kv[item])): +            if word == 'CUSTOM_PROPERTY': +                ws += kv[item][i:] +                kv[item] = kv[item][:i] +    tepmlates = kv['TEMPLATE'] +    outputs = kv['OUT'] +    if len(outputs) < len(tepmlates): +        ymake.report_configure_error('To many arguments for TEMPLATE parameter') +        return +    if ws and ws[0] != 'CUSTOM_PROPERTY': +        ymake.report_configure_error('''Can't parse {}'''.format(ws)) +    custom_props = [] +    for item in ws: +        if item == 'CUSTOM_PROPERTY': +            custom_props.append([]) +        else: +            custom_props[-1].append(item) +    props = [] +    for p in custom_props: +        if not p: +            ymake.report_configure_error('Empty CUSTOM_PROPERTY') +            continue +        props.append('-B') +        if len(p) > 1: +            props.append(base64.b64encode("{}={}".format(p[0], ' '.join(p[1:])))) +        else: +            ymake.report_configure_error('CUSTOM_PROPERTY "{}" value is not specified'.format(p[0])) +    for i, o in enumerate(outputs): +        yield o, tepmlates[min(i, len(tepmlates) - 1)], props + + +def on_ymake_generate_script(unit, *args): +    for out, tmpl, props in parse_words(list(args)): +        unit.on_add_gen_java_script([out, tmpl] + list(props))  def on_jdk_version_macro_check(unit, *args):      if len(args) != 1: diff --git a/build/plugins/res.py b/build/plugins/res.py index ec8e2801f7b..a937caba816 100644 --- a/build/plugins/res.py +++ b/build/plugins/res.py @@ -28,12 +28,12 @@ def split(lst, limit):          yield bucket -def remove_prefix(text, prefix):  -    if text.startswith(prefix):  -        return text[len(prefix):]  -    return text  -  -  +def remove_prefix(text, prefix): +    if text.startswith(prefix): +        return text[len(prefix):] +    return text + +  def onfat_resource(unit, *args):      unit.onpeerdir(['library/cpp/resource']) @@ -56,7 +56,7 @@ def onresource_files(unit, *args):      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/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 @@ -74,7 +74,7 @@ def onresource_files(unit, *args):      @see: https://wiki.yandex-team.ru/devtools/commandsandvars/resourcefiles/      """      prefix = '' -    prefix_to_strip = None  +    prefix_to_strip = None      dest = None      res = []      first = 0 @@ -92,11 +92,11 @@ def onresource_files(unit, *args):              prefix, dest = next(args), None          elif arg == 'DEST':              dest, prefix = next(args), None -        elif arg == 'STRIP':  -            prefix_to_strip = next(args)  +        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))))  +            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] diff --git a/build/plugins/scarab_cant_clash.py b/build/plugins/scarab_cant_clash.py index a112a3220fb..77dc3031838 100644 --- a/build/plugins/scarab_cant_clash.py +++ b/build/plugins/scarab_cant_clash.py @@ -2,10 +2,10 @@ import _common as common  def onacceleo(unit, *args): -    if unit.get("YMAKE_JAVA_MODULES") == "yes":  -        return  +    if unit.get("YMAKE_JAVA_MODULES") == "yes": +        return      flat, kv = common.sort_by_keywords( -        {'XSD': -1, 'MTL': -1, 'MTL_ROOT': 1, 'LANG': -1, 'OUT': -1, 'OUT_NOAUTO': -1, 'OUTPUT_INCLUDES': -1, 'DEBUG': 0},  +        {'XSD': -1, 'MTL': -1, 'MTL_ROOT': 1, 'LANG': -1, 'OUT': -1, 'OUT_NOAUTO': -1, 'OUTPUT_INCLUDES': -1, 'DEBUG': 0},          args      ) diff --git a/build/plugins/swig.py b/build/plugins/swig.py index f90185bcaab..32a37204a60 100644 --- a/build/plugins/swig.py +++ b/build/plugins/swig.py @@ -26,22 +26,22 @@ class Swig(iw.CustomCommand):          self._swig_lang = unit.get('SWIG_LANG') -        if self._swig_lang != 'jni_java':  -            self._main_out = os.path.join(  -                self._bindir,  -                '' if relpath == '.' else relpath.replace('..', '__'),  -                self._input_name + '_wrap.swg.c')  -  -            if not path.endswith('.c.swg'):  -                self._flags += ['-c++']  -                self._main_out += 'pp'  -  -        # lang_specific_incl_dir = 'perl5' if self._swig_lang == 'perl' else self._swig_lang  -        lang_specific_incl_dir = self._swig_lang  -        if self._swig_lang == 'perl':  -            lang_specific_incl_dir = 'perl5'  -        elif self._swig_lang in ['jni_cpp', 'jni_java']:  -            lang_specific_incl_dir = 'java'  +        if self._swig_lang != 'jni_java': +            self._main_out = os.path.join( +                self._bindir, +                '' if relpath == '.' else relpath.replace('..', '__'), +                self._input_name + '_wrap.swg.c') + +            if not path.endswith('.c.swg'): +                self._flags += ['-c++'] +                self._main_out += 'pp' + +        # lang_specific_incl_dir = 'perl5' if self._swig_lang == 'perl' else self._swig_lang +        lang_specific_incl_dir = self._swig_lang +        if self._swig_lang == 'perl': +            lang_specific_incl_dir = 'perl5' +        elif self._swig_lang in ['jni_cpp', 'jni_java']: +            lang_specific_incl_dir = 'java'          incl_dirs = [              "FOR", "swig",              posixpath.join(self._library_dir, lang_specific_incl_dir), @@ -65,16 +65,16 @@ class Swig(iw.CustomCommand):              self._flags.append('-shadow')              unit.onpeerdir(['build/platform/perl']) -        if self._swig_lang in ['jni_cpp', 'java']:  +        if self._swig_lang in ['jni_cpp', 'java']:              self._out_header = os.path.splitext(self._main_out)[0] + '.h'              if (not unit.get('USE_SYSTEM_JDK')) and (unit.get('OS_ANDROID') != "yes"):                  unit.onpeerdir(['contrib/libs/jdk']) -        self._package = 'ru.yandex.' + os.path.dirname(self._path).replace('$S/', '').replace('$B/', '').replace('/', '.').replace('-', '_')  -        if self._swig_lang in ['jni_java', 'java']:  -            self._out_name = os.path.splitext(os.path.basename(self._path))[0] + '.jsrc'  -        elif self._swig_lang != 'jni_cpp':  -            self._flags.append('-' + self._swig_lang)  +        self._package = 'ru.yandex.' + os.path.dirname(self._path).replace('$S/', '').replace('$B/', '').replace('/', '.').replace('-', '_') +        if self._swig_lang in ['jni_java', 'java']: +            self._out_name = os.path.splitext(os.path.basename(self._path))[0] + '.jsrc' +        elif self._swig_lang != 'jni_cpp': +            self._flags.append('-' + self._swig_lang)      def descr(self):          return 'SW', self._path, 'yellow' @@ -91,23 +91,23 @@ class Swig(iw.CustomCommand):          ]      def output(self): -        if self._swig_lang == 'jni_java':  -            return [(common.join_intl_paths(self._bindir, self._out_name), [])]  -        elif self._swig_lang == 'jni_cpp':  -            return [(self._main_out, []), (self._out_header, [])]  -  +        if self._swig_lang == 'jni_java': +            return [(common.join_intl_paths(self._bindir, self._out_name), [])] +        elif self._swig_lang == 'jni_cpp': +            return [(self._main_out, []), (self._out_header, [])] +          return [              (self._main_out, []),              (common.join_intl_paths(self._bindir, self._out_name), (['noauto', 'add_to_outs'] if self._swig_lang != 'java' else [])),          ] + ([(self._out_header, [])] if self._swig_lang == 'java' else [])      def output_includes(self): -        return [(self._out_header, [])] if self._swig_lang in ['java', 'jni_cpp'] else []  +        return [(self._out_header, [])] if self._swig_lang in ['java', 'jni_cpp'] else []      def run(self, extra_args, binary):          if self._local_swig:              binary = self._tool -        return self.do_run_java(binary, self._path) if self._swig_lang in ['java', 'jni_cpp', 'jni_java'] else self.do_run(binary, self._path)  +        return self.do_run_java(binary, self._path) if self._swig_lang in ['java', 'jni_cpp', 'jni_java'] else self.do_run(binary, self._path)      def _incl_flags(self):          return ['-I' + self.resolve_path(x) for x in self._incl_dirs] @@ -122,10 +122,10 @@ class Swig(iw.CustomCommand):          import tarfile          outdir = self.resolve_path(self._bindir) -        if self._swig_lang != 'jni_cpp':  -            java_srcs_dir = os.path.join(outdir, self._package.replace('.', '/'))  -            if not os.path.exists(java_srcs_dir):  -                os.makedirs(java_srcs_dir)  +        if self._swig_lang != 'jni_cpp': +            java_srcs_dir = os.path.join(outdir, self._package.replace('.', '/')) +            if not os.path.exists(java_srcs_dir): +                os.makedirs(java_srcs_dir)          flags = self._incl_flags()          src = self.resolve_path(path) @@ -133,32 +133,32 @@ class Swig(iw.CustomCommand):              if not re.search(r'(?m)^%module\b', f.read()):                  flags += ['-module', os.path.splitext(os.path.basename(src))[0]] -        if self._swig_lang == 'jni_cpp':  -            self.call([binary, '-c++', '-o', self._main_out, '-java', '-package', self._package] + flags + [src])  -        elif self._swig_lang == 'jni_java':  -            self.call([binary, '-c++', '-o', os.path.join(outdir, 'unused.cpp'), '-outdir', java_srcs_dir, '-java', '-package', self._package] + flags + [src])  -        elif self._swig_lang == 'java':  -            self.call([  -                binary, '-c++', '-o', self._main_out, '-outdir', java_srcs_dir,  -                '-java', '-package', self._package,  -            ] + flags + [src])  - -        if self._swig_lang in ['jni_java', 'java']:  -            with tarfile.open(os.path.join(outdir, self._out_name), 'a') as tf:  -                tf.add(java_srcs_dir, arcname=self._package.replace('.', '/'))  - -        if self._swig_lang in ['jni_cpp', 'java']:  -            header = os.path.splitext(self.resolve_path(self._main_out))[0] + '.h'  -            if not os.path.exists(header):  -                open(header, 'w').close()  -  -  -def on_swig_lang_filtered_srcs(unit, *args):  -    swig_lang = unit.get('SWIG_LANG')  -    allowed_exts = set()  -    if swig_lang == 'jni_cpp':  -        allowed_exts = set(['.cpp', '.swg'])  -    if swig_lang == 'jni_java':  -        allowed_exts = set(['.java', '.swg'])  -    args = [arg for arg in iter(args) if allowed_exts and os.path.splitext(arg)[1] in allowed_exts]  -    unit.onsrcs(args)  +        if self._swig_lang == 'jni_cpp': +            self.call([binary, '-c++', '-o', self._main_out, '-java', '-package', self._package] + flags + [src]) +        elif self._swig_lang == 'jni_java': +            self.call([binary, '-c++', '-o', os.path.join(outdir, 'unused.cpp'), '-outdir', java_srcs_dir, '-java', '-package', self._package] + flags + [src]) +        elif self._swig_lang == 'java': +            self.call([ +                binary, '-c++', '-o', self._main_out, '-outdir', java_srcs_dir, +                '-java', '-package', self._package, +            ] + flags + [src]) + +        if self._swig_lang in ['jni_java', 'java']: +            with tarfile.open(os.path.join(outdir, self._out_name), 'a') as tf: +                tf.add(java_srcs_dir, arcname=self._package.replace('.', '/')) + +        if self._swig_lang in ['jni_cpp', 'java']: +            header = os.path.splitext(self.resolve_path(self._main_out))[0] + '.h' +            if not os.path.exists(header): +                open(header, 'w').close() + + +def on_swig_lang_filtered_srcs(unit, *args): +    swig_lang = unit.get('SWIG_LANG') +    allowed_exts = set() +    if swig_lang == 'jni_cpp': +        allowed_exts = set(['.cpp', '.swg']) +    if swig_lang == 'jni_java': +        allowed_exts = set(['.java', '.swg']) +    args = [arg for arg in iter(args) if allowed_exts and os.path.splitext(arg)[1] in allowed_exts] +    unit.onsrcs(args) diff --git a/build/plugins/ytest.py b/build/plugins/ytest.py index 27460b35e57..8970837f0f8 100644 --- a/build/plugins/ytest.py +++ b/build/plugins/ytest.py @@ -524,25 +524,25 @@ def onadd_ytest(unit, *args):          save_in_file(unit.get('TEST_DART_OUT_FILE'), data) -def java_srcdirs_to_data(unit, var):  -    extra_data = []  -    for srcdir in (unit.get(var) or '').replace('$' + var, '').split():  -        if srcdir == '.':  -            srcdir = unit.get('MODDIR')  -        if srcdir.startswith('${ARCADIA_ROOT}/') or srcdir.startswith('$ARCADIA_ROOT/'):  -            srcdir = srcdir.replace('${ARCADIA_ROOT}/', '$S/')  -            srcdir = srcdir.replace('$ARCADIA_ROOT/', '$S/')  -        if srcdir.startswith('${CURDIR}/') or srcdir.startswith('$CURDIR/'):  -            srcdir = srcdir.replace('${CURDIR}/', os.path.join('$S', unit.get('MODDIR')))  -            srcdir = srcdir.replace('$CURDIR/', os.path.join('$S', unit.get('MODDIR')))  -        srcdir = unit.resolve_arc_path(srcdir)  -        if not srcdir.startswith('$'):  -            srcdir = os.path.join('$S', unit.get('MODDIR'), srcdir)  -        if srcdir.startswith('$S'):  -            extra_data.append(srcdir.replace('$S', 'arcadia'))  -    return serialize_list(extra_data)  -  -  +def java_srcdirs_to_data(unit, var): +    extra_data = [] +    for srcdir in (unit.get(var) or '').replace('$' + var, '').split(): +        if srcdir == '.': +            srcdir = unit.get('MODDIR') +        if srcdir.startswith('${ARCADIA_ROOT}/') or srcdir.startswith('$ARCADIA_ROOT/'): +            srcdir = srcdir.replace('${ARCADIA_ROOT}/', '$S/') +            srcdir = srcdir.replace('$ARCADIA_ROOT/', '$S/') +        if srcdir.startswith('${CURDIR}/') or srcdir.startswith('$CURDIR/'): +            srcdir = srcdir.replace('${CURDIR}/', os.path.join('$S', unit.get('MODDIR'))) +            srcdir = srcdir.replace('$CURDIR/', os.path.join('$S', unit.get('MODDIR'))) +        srcdir = unit.resolve_arc_path(srcdir) +        if not srcdir.startswith('$'): +            srcdir = os.path.join('$S', unit.get('MODDIR'), srcdir) +        if srcdir.startswith('$S'): +            extra_data.append(srcdir.replace('$S', 'arcadia')) +    return serialize_list(extra_data) + +  def onadd_check(unit, *args):      if unit.get("TIDY") == "yes":          # graph changed for clang_tidy tests @@ -554,16 +554,16 @@ def onadd_check(unit, *args):      test_timeout = ''      fork_mode = '' -    extra_test_data = ''  +    extra_test_data = ''      extra_test_dart_data = {} -    ymake_java_test = unit.get('YMAKE_JAVA_TEST') == 'yes'  +    ymake_java_test = unit.get('YMAKE_JAVA_TEST') == 'yes'      if check_type in ["flake8.py2", "flake8.py3"]:          script_rel_path = check_type          fork_mode = unit.get('TEST_FORK_MODE') or ''      elif check_type == "JAVA_STYLE": -        if ymake_java_test and not unit.get('ALL_SRCDIRS') or '':  -            return  +        if ymake_java_test and not unit.get('ALL_SRCDIRS') or '': +            return          if len(flat_args) < 2:              raise Exception("Not enough arguments for JAVA_STYLE check")          check_level = flat_args[1] @@ -576,13 +576,13 @@ def onadd_check(unit, *args):          if check_level not in allowed_levels:              raise Exception('{} is not allowed in LINT(), use one of {}'.format(check_level, allowed_levels.keys()))          flat_args[1] = allowed_levels[check_level] -        if check_level == 'none':  -            return  +        if check_level == 'none': +            return          script_rel_path = "java.style"          test_timeout = '120'          fork_mode = unit.get('TEST_FORK_MODE') or '' -        if ymake_java_test:  -            extra_test_data = java_srcdirs_to_data(unit, 'ALL_SRCDIRS')  +        if ymake_java_test: +            extra_test_data = java_srcdirs_to_data(unit, 'ALL_SRCDIRS')          extra_test_dart_data['JDK_RESOURCE'] = 'JDK' + (unit.get('JDK_VERSION') or '_DEFAULT')      elif check_type == "gofmt":          script_rel_path = check_type @@ -620,7 +620,7 @@ def onadd_check(unit, *args):          'TESTED-PROJECT-NAME': os.path.basename(test_dir),          'SOURCE-FOLDER-PATH': test_dir,          'CUSTOM-DEPENDENCIES': " ".join(spec_args.get('DEPENDS', [])), -        'TEST-DATA': extra_test_data,  +        'TEST-DATA': extra_test_data,          "SBR-UID-EXT": uid_ext,          'SPLIT-FACTOR': '',          'TEST_PARTITION': 'SEQUENTIAL', @@ -635,7 +635,7 @@ def onadd_check(unit, *args):          # TODO remove FILES, see DEVTOOLS-7052          'FILES': test_files,          'TEST-FILES': test_files, -        'NO_JBUILD': 'yes' if ymake_java_test else 'no',  +        'NO_JBUILD': 'yes' if ymake_java_test else 'no',      }      test_record.update(extra_test_dart_data) @@ -836,7 +836,7 @@ def onjava_test(unit, *args):      else:          script_rel_path = 'junit.test' -    ymake_java_test = unit.get('YMAKE_JAVA_TEST') == 'yes'  +    ymake_java_test = unit.get('YMAKE_JAVA_TEST') == 'yes'      test_record = {          'SOURCE-FOLDER-PATH': path,          'TEST-NAME': '-'.join([os.path.basename(os.path.dirname(path)), os.path.basename(path)]), @@ -861,22 +861,22 @@ def onjava_test(unit, *args):          'SYSTEM_PROPERTIES': props,          'TEST-CWD': test_cwd,          'SKIP_TEST': unit.get('SKIP_TEST_VALUE') or '', -        'JAVA_CLASSPATH_CMD_TYPE': java_cp_arg_type,  +        'JAVA_CLASSPATH_CMD_TYPE': java_cp_arg_type,          'NO_JBUILD': 'yes' if ymake_java_test else 'no',          'JDK_RESOURCE': 'JDK' + (unit.get('JDK_VERSION') or '_DEFAULT'),          'JDK_FOR_TESTS': 'JDK' + (unit.get('JDK_VERSION') or '_DEFAULT') + '_FOR_TESTS',      } -    test_classpath_origins = unit.get('TEST_CLASSPATH_VALUE')  -    if test_classpath_origins:  -        test_record['TEST_CLASSPATH_ORIGINS'] = test_classpath_origins  -        test_record['TEST_CLASSPATH'] = '${TEST_CLASSPATH_MANAGED}'  -    elif ymake_java_test:  -        test_record['TEST_CLASSPATH'] = '${DART_CLASSPATH}'  -        test_record['TEST_CLASSPATH_DEPS'] = '${DART_CLASSPATH_DEPS}'  -        if unit.get('UNITTEST_DIR'):  -            test_record['TEST_JAR'] = '${UNITTEST_MOD}'  -        else:  -            test_record['TEST_JAR'] = '{}/{}.jar'.format(unit.get('MODDIR'), unit.get('REALPRJNAME'))  +    test_classpath_origins = unit.get('TEST_CLASSPATH_VALUE') +    if test_classpath_origins: +        test_record['TEST_CLASSPATH_ORIGINS'] = test_classpath_origins +        test_record['TEST_CLASSPATH'] = '${TEST_CLASSPATH_MANAGED}' +    elif ymake_java_test: +        test_record['TEST_CLASSPATH'] = '${DART_CLASSPATH}' +        test_record['TEST_CLASSPATH_DEPS'] = '${DART_CLASSPATH_DEPS}' +        if unit.get('UNITTEST_DIR'): +            test_record['TEST_JAR'] = '${UNITTEST_MOD}' +        else: +            test_record['TEST_JAR'] = '{}/{}.jar'.format(unit.get('MODDIR'), unit.get('REALPRJNAME'))      data = dump_test(unit, test_record)      if data: @@ -893,7 +893,7 @@ def onjava_test_deps(unit, *args):      mode = args[0]      path = get_norm_unit_path(unit) -    ymake_java_test = unit.get('YMAKE_JAVA_TEST') == 'yes'  +    ymake_java_test = unit.get('YMAKE_JAVA_TEST') == 'yes'      test_record = {          'SOURCE-FOLDER-PATH': path, @@ -909,7 +909,7 @@ def onjava_test_deps(unit, *args):          'TAG': '',          'SIZE': 'SMALL',          'IGNORE_CLASSPATH_CLASH': ' '.join(get_values_list(unit, 'JAVA_IGNORE_CLASSPATH_CLASH_VALUE')), -        'NO_JBUILD': 'yes' if ymake_java_test else 'no',  +        'NO_JBUILD': 'yes' if ymake_java_test else 'no',          # JTEST/JTEST_FOR only          'MODULE_TYPE': unit.get('MODULE_TYPE'), @@ -920,9 +920,9 @@ def onjava_test_deps(unit, *args):      if mode == 'strict':          test_record['STRICT_CLASSPATH_CLASH'] = 'yes' -    if ymake_java_test:  -        test_record['CLASSPATH'] = '$B/{}/{}.jar ${{DART_CLASSPATH}}'.format(unit.get('MODDIR'), unit.get('REALPRJNAME'))  -  +    if ymake_java_test: +        test_record['CLASSPATH'] = '$B/{}/{}.jar ${{DART_CLASSPATH}}'.format(unit.get('MODDIR'), unit.get('REALPRJNAME')) +      data = dump_test(unit, test_record)      unit.set_property(['DART_DATA', data])  | 
