• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2013 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import os
6import stat
7import sys
8
9def CopyTool(source_path):
10  """Copies the given tool to the current directory, including a warning not
11  to edit it."""
12  with open(source_path) as source_file:
13    tool_source = source_file.readlines()
14
15  # Add header and write it out to the current directory (which should be the
16  # root build dir). Don't write the file if a matching file already exists
17  # because that causes a cascade of unnecessary rebuilds.
18  match = False
19  contents = ''.join([tool_source[0],
20                      '# Generated by setup_toolchain.py do not edit.\n']
21                     + tool_source[1:])
22  out_path = 'gyp-mac-tool'
23  try:
24    with open(out_path, 'rb') as read_tool_file:
25      existing_contents = read_tool_file.read()
26    if existing_contents == contents:
27      match = True
28  except:
29    pass
30  if not match:
31    with open(out_path, 'wb') as write_tool_file:
32      write_tool_file.write(contents)
33  st = os.stat(out_path)
34  if (st.st_mode & stat.S_IEXEC) == 0:
35    # Only chmod when necessary.
36    os.chmod(out_path, st.st_mode | stat.S_IEXEC)
37
38# Find the tool source, it's the first argument, and copy it.
39if len(sys.argv) != 2:
40  print "Need one argument (mac_tool source path)."
41  sys.exit(1)
42CopyTool(sys.argv[1])
43