old_contents: #!/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('out_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, ".."))
    # GOPATH also includes any third_party/go libraries that have been imported
    go_path += ":" +  os.path.abspath(os.path.join(src_root, "third_party/go"))
    go_path += ":" +  os.path.abspath(os.path.join(args.out_root, "gen", "go"))
    go_options = args.go_option
    try:
      shutil.rmtree(build_dir, True)
      os.mkdir(build_dir)
    except Exception:
      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 Exception:
      pass
  
  if __name__ == '__main__':
    sys.exit(main())
  
new_contents: #!/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-cmd> <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_cmd')
    parser.add_argument('build_directory')
    parser.add_argument('output_file')
    parser.add_argument('src_root')
    parser.add_argument('out_root')
    parser.add_argument('cgo_cflags')
    parser.add_argument('cgo_ldflags')
    parser.add_argument('go_option', nargs='*')
    args = parser.parse_args()
    go_cmd = args.go_cmd
    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, ".."))
    # GOPATH also includes any third_party/go libraries that have been imported
    go_path += ":" +  os.path.abspath(os.path.join(src_root, "third_party/go"))
    go_path += ":" +  os.path.abspath(os.path.join(args.out_root, "gen", "go"))
    go_options = args.go_option
    try:
      shutil.rmtree(build_dir, True)
      os.mkdir(build_dir)
    except Exception:
      pass
    old_directory = os.getcwd()
    os.chdir(build_dir)
    os.environ["GOPATH"] = go_path
    # Remove extra cmds if go_cmd is something like GOOS=android .../go
    go_binary = go_cmd.split(" ")[-1]
    bin_dir = os.path.dirname(os.path.abspath(go_binary))
    os.environ["GOROOT"] = os.path.dirname(bin_dir)
    os.environ["CGO_CFLAGS"] = args.cgo_cflags
    os.environ["CGO_LDFLAGS"] = args.cgo_ldflags
    os.system("%s %s" % (go_cmd, " ".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 Exception:
      pass
  
  if __name__ == '__main__':
    sys.exit(main())
  
subject: set GOPATH when running the go tool