diff options
Diffstat (limited to 'engine/SCons/Tool/packaging/__init__.py')
| -rw-r--r-- | engine/SCons/Tool/packaging/__init__.py | 49 | 
1 files changed, 30 insertions, 19 deletions
diff --git a/engine/SCons/Tool/packaging/__init__.py b/engine/SCons/Tool/packaging/__init__.py index 489b07c..02f1acd 100644 --- a/engine/SCons/Tool/packaging/__init__.py +++ b/engine/SCons/Tool/packaging/__init__.py @@ -4,7 +4,7 @@ SCons Packaging Tool.  """  # -# Copyright (c) 2001 - 2017 The SCons Foundation +# Copyright (c) 2001 - 2019 The SCons Foundation  #  # Permission is hereby granted, free of charge, to any person obtaining  # a copy of this software and associated documentation files (the @@ -25,18 +25,23 @@ SCons Packaging Tool.  # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -__revision__ = "src/engine/SCons/Tool/packaging/__init__.py 74b2c53bc42290e911b334a6b44f187da698a668 2017/11/14 13:16:53 bdbaddog" +__revision__ = "src/engine/SCons/Tool/packaging/__init__.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan" +import SCons.Defaults  import SCons.Environment  from SCons.Variables import *  from SCons.Errors import *  from SCons.Util import is_List, make_path_relative  from SCons.Warnings import warn, Warning -import os, imp -import SCons.Defaults +import os +import importlib -__all__ = [ 'src_targz', 'src_tarbz2', 'src_zip', 'tarbz2', 'targz', 'zip', 'rpm', 'msi', 'ipk' ] +__all__ = [ +    'src_targz', 'src_tarbz2', 'src_tarxz', 'src_zip', +    'targz', 'tarbz2', 'tarxz', 'zip', +    'rpm', 'msi', 'ipk', +]  #  # Utility and Builder function @@ -102,7 +107,7 @@ def Package(env, target=None, source=None, **kw):          from SCons.Script import GetOption          kw['PACKAGETYPE'] = GetOption('package_type') -    if kw['PACKAGETYPE'] == None: +    if kw['PACKAGETYPE'] is None:          if 'Tar' in env['BUILDERS']:              kw['PACKAGETYPE']='targz'          elif 'Zip' in env['BUILDERS']: @@ -117,12 +122,12 @@ def Package(env, target=None, source=None, **kw):      # load the needed packagers.      def load_packager(type):          try: -            file,path,desc=imp.find_module(type, __path__) -            return imp.load_module(type, file, path, desc) +            # the specific packager is a relative import +            return importlib.import_module("." + type, __name__)          except ImportError as e: -            raise EnvironmentError("packager %s not available: %s"%(type,str(e))) +            raise SConsEnvironmentError("packager %s not available: %s" % (type, str(e))) -    packagers=list(map(load_packager, PACKAGETYPE)) +    packagers = list(map(load_packager, PACKAGETYPE))      # set up targets and the PACKAGEROOT      try: @@ -163,15 +168,22 @@ def Package(env, target=None, source=None, **kw):          # this exception means that a needed argument for the packager is          # missing. As our packagers get their "tags" as named function          # arguments we need to find out which one is missing. -        from inspect import getargspec -        args,varargs,varkw,defaults=getargspec(packager.package) -        if defaults!=None: -            args=args[:-len(defaults)] # throw away arguments with default values +        #TODO: getargspec deprecated in Py3. cleanup when Py2.7 dropped. +        try: +            from inspect import getfullargspec +            argspec = getfullargspec(packager.package) +        except ImportError: +            from inspect import getargspec +            argspec = getargspec(packager.package) +        args = argspec.args +        if argspec.defaults: +            # throw away arguments with default values +            args = args[:-len(argspec.defaults)]          args.remove('env')          args.remove('target')          args.remove('source')          # now remove any args for which we have a value in kw. -        args=[x for x in args if x not in kw] +        args = [x for x in args if x not in kw]          if len(args)==0:              raise # must be a different error, so re-raise @@ -283,10 +295,9 @@ def stripinstallbuilder(target, source, env):      It also warns about files which have no install builder attached.      """      def has_no_install_location(file): -        return not (file.has_builder() and\ -            hasattr(file.builder, 'name') and\ -            (file.builder.name=="InstallBuilder" or\ -             file.builder.name=="InstallAsBuilder")) +        return not (file.has_builder() and hasattr(file.builder, 'name') +                    and file.builder.name in ["InstallBuilder", "InstallAsBuilder"]) +      if len([src for src in source if has_no_install_location(src)]):          warn(Warning, "there are files to package which have no\  | 
