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,
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:]))
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:]))
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:]))
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)
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:]))
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)
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
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:
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