Index: mojo/public/tools/gn/zip.py |
diff --git a/mojo/public/tools/gn/zip.py b/mojo/public/tools/gn/zip.py |
index a73f801d04ce818abd4afb1fae5a8151a9a82853..12c1879e4a5450ee02967ed04d9f066be0cc9fbc 100755 |
--- a/mojo/public/tools/gn/zip.py |
+++ b/mojo/public/tools/gn/zip.py |
@@ -13,13 +13,18 @@ import os |
import sys |
import zipfile |
-def DoZip(inputs, zip_inputs, output, base_dir): |
+def DoZip(inputs, link_inputs, zip_inputs, output, base_dir): |
files = [] |
with zipfile.ZipFile(output, 'w', zipfile.ZIP_DEFLATED) as outfile: |
for f in inputs: |
file_name = os.path.relpath(f, base_dir) |
files.append(file_name) |
outfile.write(f, file_name) |
+ for f in link_inputs: |
+ realf = os.path.realpath(f) # Resolve symlinks. |
+ file_name = os.path.relpath(realf, base_dir) |
+ files.append(file_name) |
+ outfile.write(realf, file_name) |
for zf_name in zip_inputs: |
with zipfile.ZipFile(zf_name, 'r') as zf: |
for f in zf.namelist(): |
@@ -33,6 +38,8 @@ def main(): |
parser = optparse.OptionParser() |
parser.add_option('--inputs', help='List of files to archive.') |
+ parser.add_option('--link-inputs', |
+ help='List of files to archive. Symbolic links are resolved.') |
parser.add_option('--zip-inputs', help='List of zip files to re-archive.') |
parser.add_option('--output', help='Path to output archive.') |
parser.add_option('--base-dir', |
@@ -44,13 +51,16 @@ def main(): |
inputs = [] |
if (options.inputs): |
inputs = ast.literal_eval(options.inputs) |
+ link_inputs = [] |
+ if options.link_inputs: |
+ link_inputs = ast.literal_eval(options.link_inputs) |
zip_inputs = [] |
if options.zip_inputs: |
zip_inputs = ast.literal_eval(options.zip_inputs) |
output = options.output |
base_dir = options.base_dir |
- DoZip(inputs, zip_inputs, output, base_dir) |
+ DoZip(inputs, link_inputs, zip_inputs, output, base_dir) |
if __name__ == '__main__': |
sys.exit(main()) |