コード例 #1
0
def parse_args():
    args = pcf.get_args(sys.argv[1:])
    lics, peers, free_args, credits = [], [], [], []
    current_list = free_args
    for a in args:
        if a == '-Ya,lics':
            current_list = lics
        elif a == '-Ya,peers':
            current_list = peers
        elif a == '-Ya,credits':
            current_list = credits
        elif a and a.startswith('-'):
            current_list = free_args
            current_list.append(a)
        else:
            current_list.append(a)

    parser = optparse.OptionParser()
    parser.add_option('--build-root')
    parser.add_option('--module-name')
    parser.add_option('-o', '--output')
    parser.add_option('-c', '--credits-output')
    parser.add_option('-t', '--type')
    opts, _ = parser.parse_args(free_args)
    return lics, peers, credits, opts,
コード例 #2
0
def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('--dest-dir', required=True)
    parser.add_argument('--existing', choices=('skip', 'overwrite'), default='overwrite')
    parser.add_argument('--flat', action='store_true')
    parser.add_argument('--skip-prefix', dest='skip_prefixes', action='append', default=[])
    parser.add_argument('files', nargs='*')
    return parser.parse_args(pcf.get_args(sys.argv[1:]))
コード例 #3
0
def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('--dest-dir', required=True)
    parser.add_argument('--skip-prefix',
                        dest='skip_prefixes',
                        action='append',
                        default=[])
    parser.add_argument('docs', nargs='*')
    return parser.parse_args(pcf.get_args(sys.argv[1:]))
コード例 #4
0
ファイル: copy_docs_files.py プロジェクト: saurzcode/catboost
def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('--build-root', required=True)
    parser.add_argument('--dst-dir', required=True)
    parser.add_argument('--existing', choices=('skip', 'overwrite'), default='overwrite')
    parser.add_argument('--source-root', required=True)
    parser.add_argument('--src-dir', required=None)
    parser.add_argument('files', nargs='*')
    return parser.parse_args(pcf.get_args(sys.argv[1:]))
コード例 #5
0
def parse_args():
    args = pcf.get_args(sys.argv[1:])
    parser = argparse.ArgumentParser()
    parser.add_argument('-f', '--file', dest='file_path')
    parser.add_argument('-a', '--append', action='store_true', default=False)
    parser.add_argument('-Q', '--quote', action='store_true', default=False)
    parser.add_argument('-s', '--addspace', action='store_true', default=False)
    parser.add_argument('-c', '--content', action='append', dest='content')
    parser.add_argument('-m', '--content-multiple', nargs='*', dest='content')
    parser.add_argument('-P',
                        '--path-list',
                        action='store_true',
                        default=False)
    return parser.parse_args(args)
コード例 #6
0
def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('--bin-dir', nargs='*')
    parser.add_argument('--build-root', required=True)
    parser.add_argument('--dest-dir', required=True)
    parser.add_argument('--docs-dir',
                        action='append',
                        nargs=2,
                        dest='docs_dirs',
                        default=None)
    parser.add_argument('--existing',
                        choices=('skip', 'overwrite'),
                        default='overwrite')
    parser.add_argument('--source-root', required=True)
    parser.add_argument('--src-dir',
                        action='append',
                        nargs='*',
                        dest='src_dirs',
                        default=None)
    parser.add_argument('files', nargs='*')
    return parser.parse_args(pcf.get_args(sys.argv[1:]))
コード例 #7
0
ファイル: go_tool.py プロジェクト: ytongc/catboost
        test_args.import_path = test_args.import_path + '___test_main__'
    classify_srcs(test_args.srcs, test_args)
    if test_lib_args:
        test_args.module_map[test_lib_args.import_path] = test_lib_args.output
    if xtest_lib_args:
        test_args.module_map[xtest_lib_args.import_path] = xtest_lib_args.output

    if args.vet:
        dump_vet_report_for_tests(test_args, test_lib_args, xtest_lib_args)
    test_args.vet = False

    do_link_exe(test_args)


if __name__ == '__main__':
    args = pcf.get_args(sys.argv[1:])

    parser = argparse.ArgumentParser(prefix_chars='+')
    parser.add_argument('++mode', choices=['dll', 'exe', 'lib', 'test'], required=True)
    parser.add_argument('++srcs', nargs='*', required=True)
    parser.add_argument('++cgo-srcs', nargs='*')
    parser.add_argument('++test_srcs', nargs='*')
    parser.add_argument('++xtest_srcs', nargs='*')
    parser.add_argument('++cover_info', nargs='*')
    parser.add_argument('++output', nargs='?', default=None)
    parser.add_argument('++source-root', default=None)
    parser.add_argument('++build-root', required=True)
    parser.add_argument('++tools-root', default=None)
    parser.add_argument('++output-root', required=True)
    parser.add_argument('++toolchain-root', required=True)
    parser.add_argument('++host-os', choices=['linux', 'darwin', 'windows'], required=True)
コード例 #8
0
def main():
    args = pcf.get_args(sys.argv[1:])
    parser = argparse.ArgumentParser()
    parser.add_argument('--java')
    parser.add_argument('--groovy')
    parser.add_argument('--kotlin')
    parser.add_argument('--coverage')
    parser.add_argument('--source-root')
    args, remaining_args = parser.parse_known_args(args)

    java = []
    kotlin = []
    groovy = []
    coverage = []

    cur_resources_list_file = None
    cur_srcdir = None
    cur_resources = []

    FILE_ARG = 1
    RESOURCES_DIR_ARG = 2
    SRCDIR_ARG = 3

    next_arg = FILE_ARG

    for src in remaining_args:
        if next_arg == RESOURCES_DIR_ARG:
            assert cur_resources_list_file is None
            cur_resources_list_file = src
            next_arg = FILE_ARG
            continue
        elif next_arg == SRCDIR_ARG:
            assert cur_srcdir is None
            cur_srcdir = src if os.path.isabs(src) else os.path.join(
                os.getcwd(), src)
            next_arg = FILE_ARG
            continue

        if src.endswith(".java"):
            java.append(src)
            if args.coverage and args.source_root:
                rel = os.path.relpath(src, args.source_root)
                if not rel.startswith('..' + os.path.sep):
                    coverage.append(rel)
        elif src.endswith(".kt"):
            kotlin.append(src)
        elif src.endswith(".groovy"):
            groovy.append(src)
        else:
            if src == '--resources':
                if cur_resources_list_file is not None:
                    with open(cur_resources_list_file, 'w') as f:
                        writelines(f, cur_resources)
                cur_resources_list_file = None
                cur_srcdir = None
                cur_resources = []
                next_arg = RESOURCES_DIR_ARG
            elif src == '--srcdir':
                next_arg = SRCDIR_ARG
            else:
                assert cur_srcdir is not None and cur_resources_list_file is not None
                cur_resources.append(os.path.relpath(src, cur_srcdir))

    if cur_resources_list_file is not None:
        with open(cur_resources_list_file, 'w') as f:
            writelines(f, cur_resources)

    if args.java:
        with open(args.java, 'w') as f:
            writelines(f, java)
    if args.kotlin:
        with open(args.kotlin, 'w') as f:
            writelines(f, kotlin)
    if args.groovy:
        with open(args.groovy, 'w') as f:
            writelines(f, groovy)
    if args.coverage:
        jcov.write_coverage_sources(args.coverage, args.source_root, coverage)

    return 0
コード例 #9
0
        else:
            os.link(src, dst)
    except OSError as e:
        if e.errno == errno.EEXIST:
            print('link_or_copy: destination file already exists: {}'.format(
                dst),
                  file=sys.stderr)
        if e.errno == errno.ENOENT:
            print('link_or_copy: source file doesn\'t exists: {}'.format(src),
                  file=sys.stderr)
        raise


if __name__ == '__main__':
    mode = sys.argv[1]
    args = pcf.get_args(sys.argv[2:])

    if mode == 'copy':
        shutil.copy(args[0], args[1])
    elif mode == 'copy_tree_no_link':
        dst = args[1]
        shutil.copytree(
            args[0],
            dst,
            ignore=lambda dirname, names:
            [n for n in names if os.path.islink(os.path.join(dirname, n))])
    elif mode == 'copy_files':
        src = args[0]
        dst = args[1]
        files = open(args[2]).read().strip().split()
        for f in files:
コード例 #10
0
def run_main():
    topdirs = ['/%s/' % d for d in os.listdir('/')]

    def abs_path_start(path, pos):
        if pos < 0:
            return False
        return pos == 0 or path[pos - 1] == ':'

    def fix_path(p):
        pp = None

        for pr in topdirs:
            pp2 = p.find(pr)

            if abs_path_start(p, pp2) and (pp is None or pp > pp2):
                pp = pp2

        if pp is not None:
            return p[:pp] + 'Z:' + p[pp:].replace('/', '\\')

        if p.startswith('/Fo'):
            return '/Fo' + p[3:].replace('/', '\\')

        return p

    parser = argparse.ArgumentParser()
    parser.add_argument('wine', action='store')
    parser.add_argument('-v', action='store', dest='version', default='120')
    parser.add_argument('-I', action='append', dest='incl_paths')
    parser.add_argument('mode', action='store')
    parser.add_argument('arcadia_root', action='store')
    parser.add_argument('arcadia_build_root', action='store')
    parser.add_argument('binary', action='store')
    parser.add_argument('free_args', nargs=argparse.REMAINDER)
    args = parser.parse_args()

    wine = args.wine
    mode = args.mode
    binary = args.binary
    version = args.version
    incl_paths = args.incl_paths
    # By now just unpack. Ideally we should fix path and pack arguments back into command file
    free_args = process_whole_archive(pcf.get_args(args.free_args))
    bld_root = args.arcadia_build_root

    wine_dir = os.path.dirname(os.path.dirname(wine))
    bin_dir = os.path.dirname(binary)
    tc_dir = os.path.dirname(os.path.dirname(os.path.dirname(bin_dir)))
    if not incl_paths:
        incl_paths = [tc_dir + '/VC/include', tc_dir + '/include']

    cmd_out = find_cmd_out(free_args)

    env = os.environ.copy()

    env.pop('DISPLAY', None)

    env['WINEDLLOVERRIDES'] = 'msvcr{}=n'.format(version)
    env['WINEDEBUG'] = 'fixme-all'
    env['INCLUDE'] = ';'.join(fix_path(p) for p in incl_paths)
    env['VSINSTALLDIR'] = fix_path(tc_dir)
    env['VCINSTALLDIR'] = fix_path(tc_dir + '/VC')
    env['WindowsSdkDir'] = fix_path(tc_dir)
    env['LIBPATH'] = fix_path(tc_dir + '/VC/lib/amd64')
    env['LIB'] = fix_path(tc_dir + '/VC/lib/amd64')
    env['LD_LIBRARY_PATH'] = ':'.join(
        wine_dir + d for d in ['/lib', '/lib64', '/lib64/wine'])

    short_names = {}
    winepath = os.path.join(os.path.dirname(wine), 'winepath')
    short_names[bld_root] = trim_path(bld_root, winepath)
    # Slow for no benefit.
    # arc_root = args.arcadia_root
    # short_names[arc_root] = trim_path(arc_root, winepath)

    process_link = lambda x: make_full_path_arg(x, bld_root, short_names[
        bld_root]) if mode in ('link', 'lib') else x

    cmd = [binary] + [
        fix_path(process_link(downsize_path(x, short_names)))
        for x in free_args
    ]

    for x in ('/NOLOGO', '/nologo', '/FD'):
        try:
            cmd.remove(x)
        except ValueError:
            pass

    def run_process(sleep, tout):
        if sleep:
            time.sleep(sleep)

        args = {'cmd': cmd, 'env': env, 'mode': mode, 'tout': tout}

        slave_cmd = [
            sys.executable, sys.argv[0], wine, 'slave',
            json.dumps(args)
        ]
        p = run_subprocess(slave_cmd,
                           stderr=subprocess.STDOUT,
                           stdout=subprocess.PIPE,
                           shell=False)
        out, _ = p.communicate()
        return p.wait(), out

    def print_err_log(log):
        if not log:
            return
        if mode == 'cxx':
            log = colorize(log)
        print >> sys.stderr, log

    tout = 200

    while True:
        rc, out = run_process(0, tout)

        if rc in (-signal.SIGALRM, signal.SIGALRM):
            print_err_log(out)
            print >> sys.stderr, '##append_tag##time out'
        elif out and ' stack overflow ' in out:
            print >> sys.stderr, '##append_tag##stack overflow'
        elif out and 'recvmsg: Connection reset by peer' in out:
            print >> sys.stderr, '##append_tag##wine gone'
        elif out and 'D8037' in out:
            print >> sys.stderr, '##append_tag##repair wine'

            try:
                os.unlink(
                    os.path.join(os.environ['WINEPREFIX'],
                                 '.update-timestamp'))
            except Exception as e:
                print >> sys.stderr, e

        else:
            print_err_log(out)

            # non-zero return code - bad, return it immediately
            if rc:
                print >> sys.stderr, '##win_cmd##' + ' '.join(cmd)
                print >> sys.stderr, '##args##' + ' '.join(free_args)
                return rc

            # check for output existence(if we expect it!) and real length
            if cmd_out:
                if is_good_file(cmd_out):
                    return 0
                else:
                    # retry!
                    print >> sys.stderr, '##append_tag##no output'
            else:
                return 0

        tout *= 3