OLD | NEW |
---|---|
(Empty) | |
1 #!/usr/bin/env python | |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 """ | |
7 This script invokes the go build tool. | |
8 Must be called as follows: | |
9 python go.py <go-binary> <build directory> <output file> <src directory> | |
10 <CGO_CFLAGS> <CGO_LDFLAGS> <go-binary options> | |
11 eg. | |
12 python go.py /usr/lib/google-golang/bin/go out/build out/a.out .. "-I." | |
13 "-L. -ltest" test -c test/test.go | |
14 """ | |
15 | |
16 import argparse | |
17 import os | |
18 import shutil | |
19 import string | |
qsr
2014/09/22 14:35:07
This import is not used.
tburkard
2014/09/22 14:45:07
Done.
| |
20 import sys | |
21 | |
22 def main(): | |
23 parser = argparse.ArgumentParser() | |
24 parser.add_argument('go_binary') | |
25 parser.add_argument('build_directory') | |
26 parser.add_argument('output_file') | |
27 parser.add_argument('src_root') | |
28 parser.add_argument('cgo_cflags') | |
29 parser.add_argument('cgo_ldflags') | |
30 parser.add_argument('go_option', nargs='*') | |
31 args = parser.parse_args() | |
32 go_binary = args.go_binary | |
33 build_dir = args.build_directory | |
34 out_file = os.path.abspath(args.output_file) | |
35 # The src directory specified is relative. We will later need this as an | |
36 # absolute path. | |
37 src_root = os.path.abspath(args.src_root) + "/" | |
qsr
2014/09/22 14:35:07
You do not need this concantenation or this local
tburkard
2014/09/22 14:45:07
Done.
| |
38 # GOPATH must be absolute, and point to one directory up from |src_Root| | |
39 go_path = os.path.abspath(os.path.join(src_root, "..")) | |
40 go_options = args.go_option | |
41 try: | |
42 shutil.rmtree(build_dir, True) | |
43 os.mkdir(build_dir) | |
44 except: | |
45 pass | |
46 old_directory = os.getcwd() | |
47 os.chdir(build_dir) | |
48 os.environ["GOPATH"] = go_path | |
49 os.environ["CGO_CFLAGS"] = args.cgo_cflags | |
50 os.environ["CGO_LDFLAGS"] = args.cgo_ldflags | |
51 os.system("%s %s" % (go_binary, " ".join(go_options))) | |
52 out_files = [ f for f in os.listdir(".") if os.path.isfile(f)] | |
53 if (len(out_files) > 0): | |
54 shutil.move(out_files[0], out_file) | |
55 os.chdir(old_directory) | |
56 try: | |
57 shutil.rmtree(build_dir, True) | |
58 except: | |
59 pass | |
60 | |
61 if __name__ == '__main__': | |
62 sys.exit(main()) | |
OLD | NEW |