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

Side by Side Diff: win_toolchain/get_toolchain_if_necessary.py

Issue 1200113004: win toolchain downloader: Don't omit hidden or system files. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 5 years, 6 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Downloads and unpacks a toolchain for building on Windows. The contents are 6 """Downloads and unpacks a toolchain for building on Windows. The contents are
7 matched by sha1 which will be updated when the toolchain is updated. 7 matched by sha1 which will be updated when the toolchain is updated.
8 8
9 Having a toolchain script in depot_tools means that it's not versioned 9 Having a toolchain script in depot_tools means that it's not versioned
10 directly with the source code. That is, if the toolchain is upgraded, but 10 directly with the source code. That is, if the toolchain is upgraded, but
(...skipping 30 matching lines...) Expand all
41 BASEDIR = os.path.dirname(os.path.abspath(__file__)) 41 BASEDIR = os.path.dirname(os.path.abspath(__file__))
42 DEPOT_TOOLS_PATH = os.path.join(BASEDIR, '..') 42 DEPOT_TOOLS_PATH = os.path.join(BASEDIR, '..')
43 sys.path.append(DEPOT_TOOLS_PATH) 43 sys.path.append(DEPOT_TOOLS_PATH)
44 try: 44 try:
45 import download_from_google_storage 45 import download_from_google_storage
46 except ImportError: 46 except ImportError:
47 # Allow use of utility functions in this script from package_from_installed 47 # Allow use of utility functions in this script from package_from_installed
48 # on bare VM that doesn't have a full depot_tools. 48 # on bare VM that doesn't have a full depot_tools.
49 pass 49 pass
50 50
51 if sys.platform != 'cygwin':
52 import ctypes.wintypes
53 GetFileAttributes = ctypes.windll.kernel32.GetFileAttributesW
54 GetFileAttributes.argtypes = (ctypes.wintypes.LPWSTR,)
55 GetFileAttributes.restype = ctypes.wintypes.DWORD
56 FILE_ATTRIBUTE_HIDDEN = 0x2
57 FILE_ATTRIBUTE_SYSTEM = 0x4
58
59
60 def IsHidden(file_path):
61 """Returns whether the given |file_path| has the 'system' or 'hidden'
62 attribute set."""
63 p = GetFileAttributes(file_path)
64 assert p != 0xffffffff
65 return bool(p & (FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM))
66
67 51
68 def GetFileList(root): 52 def GetFileList(root):
69 """Gets a normalized list of files under |root|.""" 53 """Gets a normalized list of files under |root|."""
70 assert not os.path.isabs(root) 54 assert not os.path.isabs(root)
71 assert os.path.normpath(root) == root 55 assert os.path.normpath(root) == root
72 file_list = [] 56 file_list = []
73 for base, _, files in os.walk(root): 57 for base, _, files in os.walk(root):
74 paths = [os.path.join(base, f) for f in files] 58 paths = [os.path.join(base, f) for f in files]
75 file_list.extend(x.lower() for x in paths if not IsHidden(x)) 59 file_list.extend(x.lower() for x in paths)
76 return sorted(file_list) 60 return sorted(file_list)
77 61
78 62
79 def MakeTimestampsFileName(root): 63 def MakeTimestampsFileName(root):
80 return os.path.join(root, '..', '.timestamps') 64 return os.path.join(root, '..', '.timestamps')
81 65
82 66
83 def CalculateHash(root): 67 def CalculateHash(root):
84 """Calculates the sha1 of the paths to all files in the given |root| and the 68 """Calculates the sha1 of the paths to all files in the given |root| and the
85 contents of those files, and returns as a hex string.""" 69 contents of those files, and returns as a hex string."""
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 311
328 if options.output_json: 312 if options.output_json:
329 shutil.copyfile(os.path.join(target_dir, '..', 'data.json'), 313 shutil.copyfile(os.path.join(target_dir, '..', 'data.json'),
330 options.output_json) 314 options.output_json)
331 315
332 return 0 316 return 0
333 317
334 318
335 if __name__ == '__main__': 319 if __name__ == '__main__':
336 sys.exit(main()) 320 sys.exit(main())
OLDNEW
« 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