~ubuntu-branches/ubuntu/trusty/mapnik/trusty

« back to all changes in this revision

Viewing changes to scons/scons-local-0.97.0d20071212/SCons/Tool/zip.py

  • Committer: Bazaar Package Importer
  • Author(s): Andres Rodriguez
  • Date: 2009-05-20 15:39:58 UTC
  • mfrom: (3.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090520153958-cf6z1ql9zva4y4dq
Tags: 0.6.0-1ubuntu1
* Merge from debian unstable (LP: #378819), remaining changes:
  - debian/control:
    + Change bdeps from python2.5-dev to python-all-dev (>= 2.5)
    + Change XS-Python-Version from 2.5 to >= 2.5
  - debian/rules:
    + Various changes to enable python2.5 and python2.6 builds
* debian/patches/libtool2_2.diff Dropped. Included upsteam.
* Removed quilt support.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
"""SCons.Tool.zip
2
 
 
3
 
Tool-specific initialization for zip.
4
 
 
5
 
There normally shouldn't be any need to import this module directly.
6
 
It will usually be imported through the generic SCons.Tool.Tool()
7
 
selection method.
8
 
 
9
 
"""
10
 
 
11
 
#
12
 
# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007 The SCons Foundation
13
 
#
14
 
# Permission is hereby granted, free of charge, to any person obtaining
15
 
# a copy of this software and associated documentation files (the
16
 
# "Software"), to deal in the Software without restriction, including
17
 
# without limitation the rights to use, copy, modify, merge, publish,
18
 
# distribute, sublicense, and/or sell copies of the Software, and to
19
 
# permit persons to whom the Software is furnished to do so, subject to
20
 
# the following conditions:
21
 
#
22
 
# The above copyright notice and this permission notice shall be included
23
 
# in all copies or substantial portions of the Software.
24
 
#
25
 
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
26
 
# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
27
 
# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28
 
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
29
 
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
30
 
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
31
 
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32
 
#
33
 
 
34
 
__revision__ = "src/engine/SCons/Tool/zip.py 2523 2007/12/12 09:37:41 knight"
35
 
 
36
 
import os.path
37
 
 
38
 
import SCons.Builder
39
 
import SCons.Defaults
40
 
import SCons.Node.FS
41
 
import SCons.Util
42
 
 
43
 
try:
44
 
    import zipfile
45
 
    internal_zip = 1
46
 
except ImportError:
47
 
    internal_zip = 0
48
 
 
49
 
if internal_zip:
50
 
    zipcompression = zipfile.ZIP_DEFLATED
51
 
    def zip(target, source, env):
52
 
        def visit(arg, dirname, names):
53
 
            for name in names:
54
 
                path = os.path.join(dirname, name)
55
 
                if os.path.isfile(path):
56
 
                    arg.write(path)
57
 
        compression = env.get('ZIPCOMPRESSION', 0)
58
 
        zf = zipfile.ZipFile(str(target[0]), 'w', compression)
59
 
        for s in source:
60
 
            if s.isdir():
61
 
                os.path.walk(str(s), visit, zf)
62
 
            else:
63
 
                zf.write(str(s))
64
 
        zf.close()
65
 
else:
66
 
    zipcompression = 0
67
 
    zip = "$ZIP $ZIPFLAGS ${TARGET.abspath} $SOURCES"
68
 
 
69
 
 
70
 
zipAction = SCons.Action.Action(zip, varlist=['ZIPCOMPRESSION'])
71
 
 
72
 
ZipBuilder = SCons.Builder.Builder(action = SCons.Action.Action('$ZIPCOM', '$ZIPCOMSTR'),
73
 
                                   source_factory = SCons.Node.FS.Entry,
74
 
                                   source_scanner = SCons.Defaults.DirScanner,
75
 
                                   suffix = '$ZIPSUFFIX',
76
 
                                   multi = 1)
77
 
 
78
 
 
79
 
def generate(env):
80
 
    """Add Builders and construction variables for zip to an Environment."""
81
 
    try:
82
 
        bld = env['BUILDERS']['Zip']
83
 
    except KeyError:
84
 
        bld = ZipBuilder
85
 
        env['BUILDERS']['Zip'] = bld
86
 
 
87
 
    env['ZIP']        = 'zip'
88
 
    env['ZIPFLAGS']   = SCons.Util.CLVar('')
89
 
    env['ZIPCOM']     = zipAction
90
 
    env['ZIPCOMPRESSION'] =  zipcompression
91
 
    env['ZIPSUFFIX']  = '.zip'
92
 
 
93
 
def exists(env):
94
 
    return internal_zip or env.Detect('zip')