about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/bootstrap/bootstrap.py21
-rwxr-xr-xx.py14
2 files changed, 21 insertions, 14 deletions
diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py
index c1ee0c29ac9..7dd53f41a21 100644
--- a/src/bootstrap/bootstrap.py
+++ b/src/bootstrap/bootstrap.py
@@ -8,6 +8,7 @@
 # option. This file may not be copied, modified, or distributed
 # except according to those terms.
 
+from __future__ import print_function
 import argparse
 import contextlib
 import datetime
@@ -501,7 +502,7 @@ class RustBuild(object):
 
         return "{}-{}".format(cputype, ostype)
 
-def main():
+def bootstrap():
     parser = argparse.ArgumentParser(description='Build rust')
     parser.add_argument('--config')
     parser.add_argument('--clean', action='store_true')
@@ -564,8 +565,6 @@ def main():
     rb._rustc_channel, rb._rustc_date = data['rustc'].split('-', 1)
     rb._cargo_rev = data['cargo']
 
-    start_time = time()
-
     # Fetch/build the bootstrap
     rb.build = rb.build_triple()
     rb.download_stage0()
@@ -582,9 +581,19 @@ def main():
     env["BOOTSTRAP_PARENT_ID"] = str(os.getpid())
     rb.run(args, env)
 
-    end_time = time()
-
-    print("Build completed in %s" % format_build_time(end_time - start_time))
+def main():
+    start_time = time()
+    try:
+        bootstrap()
+        print("Build completed successfully in %s" % format_build_time(time() - start_time))
+    except (SystemExit, KeyboardInterrupt) as e:
+        if hasattr(e, 'code') and isinstance(e.code, int):
+            exit_code = e.code
+        else:
+            exit_code = 1
+            print(e)
+        print("Build completed unsuccessfully in %s" % format_build_time(time() - start_time))
+        sys.exit(exit_code)
 
 if __name__ == '__main__':
     main()
diff --git a/x.py b/x.py
index d281a6abc93..8f528889d60 100755
--- a/x.py
+++ b/x.py
@@ -9,14 +9,12 @@
 # option. This file may not be copied, modified, or distributed
 # except according to those terms.
 
-import sys
+# This file is only a "symlink" to boostrap.py, all logic should go there.
+
 import os
-dir = os.path.dirname(__file__)
-sys.path.append(os.path.abspath(os.path.join(dir, "src", "bootstrap")))
+import sys
+rust_dir = os.path.dirname(os.path.abspath(__file__))
+sys.path.append(os.path.join(rust_dir, "src", "bootstrap"))
 
 import bootstrap
-
-try:
-    bootstrap.main()
-except KeyboardInterrupt:
-    sys.exit()
+bootstrap.main()