Index: build/go/go.py |
diff --git a/build/go/go.py b/build/go/go.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..2e4f99bc37ed64140a3763b0c7652f5d6ad9be06 |
--- /dev/null |
+++ b/build/go/go.py |
@@ -0,0 +1,60 @@ |
+#!/usr/bin/env python |
+# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+""" |
+This script invokes the go build tool. |
+Must be called as follows: |
+python go.py <go-binary> <build directory> <output file> <src directory> |
+<CGO_CFLAGS> <CGO_LDFLAGS> <go-binary options> |
+eg. |
+python go.py /usr/lib/google-golang/bin/go out/build out/a.out .. "-I." |
+"-L. -ltest" test -c test/test.go |
+""" |
+ |
+import argparse |
+import os |
+import shutil |
+import sys |
+ |
+def main(): |
+ parser = argparse.ArgumentParser() |
+ parser.add_argument('go_binary') |
+ parser.add_argument('build_directory') |
+ parser.add_argument('output_file') |
+ parser.add_argument('src_root') |
+ parser.add_argument('cgo_cflags') |
+ parser.add_argument('cgo_ldflags') |
+ parser.add_argument('go_option', nargs='*') |
+ args = parser.parse_args() |
+ go_binary = args.go_binary |
+ build_dir = args.build_directory |
+ out_file = os.path.abspath(args.output_file) |
+ # The src directory specified is relative. We need this as an absolute path. |
+ src_root = os.path.abspath(args.src_root) |
+ # GOPATH must be absolute, and point to one directory up from |src_Root| |
+ go_path = os.path.abspath(os.path.join(src_root, "..")) |
+ go_options = args.go_option |
+ try: |
+ shutil.rmtree(build_dir, True) |
+ os.mkdir(build_dir) |
+ except: |
+ pass |
+ old_directory = os.getcwd() |
+ os.chdir(build_dir) |
+ os.environ["GOPATH"] = go_path |
+ os.environ["CGO_CFLAGS"] = args.cgo_cflags |
+ os.environ["CGO_LDFLAGS"] = args.cgo_ldflags |
+ os.system("%s %s" % (go_binary, " ".join(go_options))) |
+ out_files = [ f for f in os.listdir(".") if os.path.isfile(f)] |
+ if (len(out_files) > 0): |
+ shutil.move(out_files[0], out_file) |
+ os.chdir(old_directory) |
+ try: |
+ shutil.rmtree(build_dir, True) |
+ except: |
+ pass |
+ |
+if __name__ == '__main__': |
+ sys.exit(main()) |