aboutsummaryrefslogtreecommitdiffstats
path: root/build/plugins/_unpickler.py
diff options
context:
space:
mode:
authorDevtools Arcadia <arcadia-devtools@yandex-team.ru>2022-02-07 18:08:42 +0300
committerDevtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net>2022-02-07 18:08:42 +0300
commit1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch)
treee26c9fed0de5d9873cce7e00bc214573dc2195b7 /build/plugins/_unpickler.py
downloadydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'build/plugins/_unpickler.py')
-rw-r--r--build/plugins/_unpickler.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/build/plugins/_unpickler.py b/build/plugins/_unpickler.py
new file mode 100644
index 0000000000..e01e7b3118
--- /dev/null
+++ b/build/plugins/_unpickler.py
@@ -0,0 +1,42 @@
+import sys
+
+sys.dont_write_bytecode = True
+
+import argparse
+import base64
+try:
+ import cPickle as pickle
+except Exception:
+ import pickle
+
+import _common as common
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--data', help='pickled object of TCustomCommand class', required=True)
+ parser.add_argument('--src-root', help='$S real path', required=True)
+ parser.add_argument('--build-root', help='$B real path', required=True)
+ parser.add_argument('--tools', help='binaries needed by command', required=True, nargs='+')
+ args, unknown_args = parser.parse_known_args()
+
+ encoded_cmd = args.data
+ src_root = args.src_root
+ build_root = args.build_root
+ tools = args.tools
+
+ assert (int(tools[0]) == len(tools[1:])), "tools quantity != tools number!"
+
+ cmd_object = pickle.loads(base64.b64decode(encoded_cmd))
+
+ cmd_object.set_source_root(src_root)
+ cmd_object.set_build_root(build_root)
+
+ if len(tools[1:]) == 0:
+ cmd_object.run(unknown_args, common.get_interpreter_path())
+ else:
+ cmd_object.run(unknown_args, *tools[1:])
+
+
+if __name__ == '__main__':
+ main()