[Scons-users] Zip tool flags

Dirk Bächle tshortik at gmx.de
Sun Jan 10 19:28:43 EST 2016


Hi,

On 11.01.2016 00:43, João M. S. Silva wrote:
> Hi,
>
> is it possible to use env.Zip() with internal Zip function and specify
> zip switch -j?
>

I don't think this is possible by simply setting a switch...but this is Python, so you can redefine it for your environment:

   env = Environment(tools=['zip'])
   try:
     import zipfile
     import SCons.Action

     def flat_zip(target, source, env):
         compression = env.get('ZIPCOMPRESSION', 0)
         zf = zipfile.ZipFile(str(target[0]), 'w', compression)
         for s in source:
             if s.isdir():
                 for dirpath, dirnames, filenames in os.walk(str(s)):
                     for fname in filenames:
                         path = os.path.join(dirpath, fname)
                         if os.path.isfile(path):
                             zf.write(path, fname)
             else:
                 fname = os.path.basename(str(s))
                 if fname:
                     zf.write(str(s), fname)
         zf.close()

     flat_action = SCons.Action.Action(flat_zip, varlist=['ZIPCOMPRESSION'])
     env['ZIPCOM'] = flat_action
   except:
     env.Append(ZIPFLAGS=['-j'])


Untested though, but I hope you get the idea.

Best regards,

Dirk



More information about the Scons-users mailing list