Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(483)

Unified Diff: build/toolchain/mac/setup_toolchain.py

Issue 1928303003: Only write gyp-mac-tool when needed (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/toolchain/mac/setup_toolchain.py
diff --git a/build/toolchain/mac/setup_toolchain.py b/build/toolchain/mac/setup_toolchain.py
index 431078fb1802d7f93adb310f8b917c4cc1c8162e..98b50bebcbab3bb6d14826dc5c8f05fbc0cf1664 100644
--- a/build/toolchain/mac/setup_toolchain.py
+++ b/build/toolchain/mac/setup_toolchain.py
@@ -13,14 +13,27 @@ def CopyTool(source_path):
tool_source = source_file.readlines()
# Add header and write it out to the current directory (which should be the
- # root build dir).
+ # root build dir). Don't write the file if a matching file already exists
+ # because that causes a cascade of unnecessary rebuilds.
+ match = False
+ contents = ''.join([tool_source[0],
+ '# Generated by setup_toolchain.py do not edit.\n']
+ + tool_source[1:])
out_path = 'gyp-mac-tool'
- with open(out_path, 'w') as tool_file:
- tool_file.write(''.join([tool_source[0],
- '# Generated by setup_toolchain.py do not edit.\n']
- + tool_source[1:]))
+ try:
+ with open(out_path, 'rb') as read_tool_file:
+ existing_contents = read_tool_file.read()
+ if existing_contents == contents:
+ match = True
+ except:
+ pass
+ if not match:
+ with open(out_path, 'wb') as write_tool_file:
+ write_tool_file.write(contents)
st = os.stat(out_path)
- os.chmod(out_path, st.st_mode | stat.S_IEXEC)
+ if (st.st_mode & stat.S_IEXEC) == 0:
+ # Only chmod when necessary.
+ os.chmod(out_path, st.st_mode | stat.S_IEXEC)
# Find the tool source, it's the first argument, and copy it.
if len(sys.argv) != 2:
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698