summaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2003-12-16 11:56:45 (GMT)
committerSteven Knight <knight@baldmt.com>2003-12-16 11:56:45 (GMT)
commit571141b46b2f9ee0f7150bdb3aeee11e2d7bcd21 (patch)
tree357c0b5f81ca33ee0f74c45dd581a9a424442b45 /src/engine
parentcde0b273458b25194d63499f24abb877085eb47e (diff)
downloadSCons-571141b46b2f9ee0f7150bdb3aeee11e2d7bcd21.zip
SCons-571141b46b2f9ee0f7150bdb3aeee11e2d7bcd21.tar.gz
SCons-571141b46b2f9ee0f7150bdb3aeee11e2d7bcd21.tar.bz2
Have the Zip() Builder create compressed .zip files by default.
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/SCons/Tool/zip.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/engine/SCons/Tool/zip.py b/src/engine/SCons/Tool/zip.py
index 510aa6e..18f0caa 100644
--- a/src/engine/SCons/Tool/zip.py
+++ b/src/engine/SCons/Tool/zip.py
@@ -41,29 +41,32 @@ import SCons.Util
try:
import zipfile
+ internal_zip = 1
+except ImportError:
+ internal_zip = 0
+if internal_zip:
+ zipcompression = zipfile.ZIP_DEFLATED
def zip(target, source, env):
def visit(arg, dirname, names):
for name in names:
path = os.path.join(dirname, name)
if os.path.isfile(path):
arg.write(path)
- zf = zipfile.ZipFile(str(target[0]), 'w')
+ compression = env.get('ZIPCOMPRESSION', 0)
+ zf = zipfile.ZipFile(str(target[0]), 'w', compression)
for s in source:
if os.path.isdir(str(s)):
os.path.walk(str(s), visit, zf)
else:
zf.write(str(s))
zf.close()
-
- internal_zip = 1
-
-except ImportError:
+else:
+ zipcompression = 0
zip = "$ZIP $ZIPFLAGS ${TARGET.abspath} $SOURCES"
- internal_zip = 0
-zipAction = SCons.Action.Action(zip)
+zipAction = SCons.Action.Action(zip, varlist=['ZIPCOMPRESSION'])
ZipBuilder = SCons.Builder.Builder(action = '$ZIPCOM',
source_factory = SCons.Node.FS.default_fs.Entry,
@@ -82,6 +85,7 @@ def generate(env):
env['ZIP'] = 'zip'
env['ZIPFLAGS'] = ''
env['ZIPCOM'] = zipAction
+ env['ZIPCOMPRESSION'] = zipcompression
env['ZIPSUFFIX'] = '.zip'
def exists(env):