diff options
author | alexv-smirnov <alex@ydb.tech> | 2023-06-13 11:05:01 +0300 |
---|---|---|
committer | alexv-smirnov <alex@ydb.tech> | 2023-06-13 11:05:01 +0300 |
commit | bf0f13dd39ee3e65092ba3572bb5b1fcd125dcd0 (patch) | |
tree | 1d1df72c0541a59a81439842f46d95396d3e7189 /build/scripts/fix_msvc_output.py | |
parent | 8bfdfa9a9bd19bddbc58d888e180fbd1218681be (diff) | |
download | ydb-bf0f13dd39ee3e65092ba3572bb5b1fcd125dcd0.tar.gz |
add ymake export to ydb
Diffstat (limited to 'build/scripts/fix_msvc_output.py')
-rw-r--r-- | build/scripts/fix_msvc_output.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/build/scripts/fix_msvc_output.py b/build/scripts/fix_msvc_output.py new file mode 100644 index 0000000000..183a442e1f --- /dev/null +++ b/build/scripts/fix_msvc_output.py @@ -0,0 +1,43 @@ +import subprocess +import sys + +import process_command_files as pcf +import process_whole_archive_option as pwa + + +def out2err(cmd): + return subprocess.Popen(cmd, stdout=sys.stderr).wait() + + +def decoding_needed(strval): + if sys.version_info >= (3, 0, 0): + return isinstance(strval, bytes) + else: + return False + + +def out2err_cut_first_line(cmd): + p = subprocess.Popen(cmd, stdout=subprocess.PIPE) + first_line = True + while True: + line = p.stdout.readline() + line = line.decode('utf-8') if decoding_needed(line) else line + if not line: + break + if first_line: + sys.stdout.write(line) + first_line = False + else: + sys.stderr.write(line) + return p.wait() + + +if __name__ == '__main__': + mode = sys.argv[1] + args, wa_peers, wa_libs = pwa.get_whole_archive_peers_and_libs(pcf.skip_markers(sys.argv[2:])) + cmd = pwa.ProcessWholeArchiveOption('WINDOWS', wa_peers, wa_libs).construct_cmd(args) + run = out2err + if mode in ('cl', 'ml'): + # First line of cl.exe and ml64.exe stdout is useless: it prints input file + run = out2err_cut_first_line + sys.exit(run(cmd)) |