OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 """Creates a tree of hardlinks, symlinks or copy the inputs files.""" | 5 """Creates a tree of hardlinks, symlinks or copy the inputs files.""" |
6 | 6 |
7 import ctypes | 7 import ctypes |
8 import logging | 8 import logging |
9 import os | 9 import os |
10 import shutil | 10 import shutil |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 infile = os.path.normpath(os.path.join(indir, relfile)) | 51 infile = os.path.normpath(os.path.join(indir, relfile)) |
52 if not infile.startswith(indir): | 52 if not infile.startswith(indir): |
53 raise MappingError('Can\'t map file %s outside %s' % (infile, indir)) | 53 raise MappingError('Can\'t map file %s outside %s' % (infile, indir)) |
54 | 54 |
55 if relfile.endswith('/'): | 55 if relfile.endswith('/'): |
56 if not os.path.isdir(infile): | 56 if not os.path.isdir(infile): |
57 raise MappingError( | 57 raise MappingError( |
58 'Input directory %s must have a trailing slash' % infile) | 58 'Input directory %s must have a trailing slash' % infile) |
59 for dirpath, dirnames, filenames in os.walk(infile): | 59 for dirpath, dirnames, filenames in os.walk(infile): |
60 # Convert the absolute path to subdir + relative subdirectory. | 60 # Convert the absolute path to subdir + relative subdirectory. |
61 relpath = dirpath[len(infile)+1:] | 61 relpath = dirpath[len(indir)+1:] |
62 outfiles.extend(os.path.join(relpath, f) for f in filenames) | 62 outfiles.extend(os.path.join(relpath, f) for f in filenames) |
63 for index, dirname in enumerate(dirnames): | 63 for index, dirname in enumerate(dirnames): |
64 # Do not process blacklisted directories. | 64 # Do not process blacklisted directories. |
65 if blacklist(os.path.join(relpath, dirname)): | 65 if blacklist(os.path.join(relpath, dirname)): |
66 del dirnames[index] | 66 del dirnames[index] |
67 else: | 67 else: |
68 if not os.path.isfile(infile): | 68 if not os.path.isfile(infile): |
69 raise MappingError('Input file %s doesn\'t exist' % infile) | 69 raise MappingError('Input file %s doesn\'t exist' % infile) |
70 outfiles.append(relfile) | 70 outfiles.append(relfile) |
71 return outfiles, indir | 71 return outfiles, indir |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 | 141 |
142 def make_writable(root, read_only): | 142 def make_writable(root, read_only): |
143 """Toggle the writable bit on a directory tree.""" | 143 """Toggle the writable bit on a directory tree.""" |
144 root = os.path.abspath(root) | 144 root = os.path.abspath(root) |
145 for dirpath, dirnames, filenames in os.walk(root, topdown=True): | 145 for dirpath, dirnames, filenames in os.walk(root, topdown=True): |
146 for filename in filenames: | 146 for filename in filenames: |
147 _set_write_bit(os.path.join(dirpath, filename), read_only) | 147 _set_write_bit(os.path.join(dirpath, filename), read_only) |
148 | 148 |
149 for dirname in dirnames: | 149 for dirname in dirnames: |
150 _set_write_bit(os.path.join(dirpath, dirname), read_only) | 150 _set_write_bit(os.path.join(dirpath, dirname), read_only) |
OLD | NEW |