Prepare for scons3: change prints and more 35/22635/5
authorMats Wichmann <mats@linux.com>
Thu, 28 Sep 2017 12:51:47 +0000 (06:51 -0600)
committerMats Wichmann <mats@linux.com>
Tue, 10 Oct 2017 11:39:01 +0000 (11:39 +0000)
A previous change updated all the scons scripts:

https://gerrit.iotivity.org/gerrit/#/c/22525/

This change picks up the semi-external scripts that are called
by the build, and thus are run in the scons context and need updating.

Print statements are surrounded with parens so they look like function
calls.  This is an scons3 syntax requirement even if still using Python 2.

The old exception format "except FooErr, err" is no longer supported
in Python 3; since the Python 3 format "except FooErr as err" has been
available since Python 2.6, there is no problem switching these and it
makes sense to remove one way things could fail if Py3 is used.

A few comparisons which used <> are changed to the preferred != form.

Reformatted Builder call without changing it, and added a comment in the
forked version to help explain why there are two copies of UnpackAll.py.

With these changes, a full build completes successfully using scons3.0.

Change-Id: Ia8df28d12c6504d6466dcf793779535d1ad3aa8b
Signed-off-by: Mats Wichmann <mats@linux.com>
build_common/iotivityconfig/__init__.py
build_common/tools/UnpackAll.py
tools/scons/BoostBootstrap.py
tools/scons/BoostBuild.py
tools/scons/Configure.py
tools/scons/RunTest.py
tools/scons/URLDownload.py
tools/scons/UnpackAll.py

index 3a2ef6a..d84d361 100644 (file)
@@ -37,9 +37,10 @@ def _check_for_broken_gcc_headers(context, flag):
     context.Result(ret)
 
     if ret:
-        print('Warning: detected pre-C++11 GCC C header bugs.  See:')
-        print('           https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34032')
-        print('         for related details.')
+        print('''
+Warning: detected pre-C++11 GCC C header bugs.
+         See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34032 for details.
+''')
 
 def _inform_user_of_broken_gcc_headers(context, flag):
     # Informative tests used to inform the user of broken GCC headers.
index dd42f2e..3c25fb4 100644 (file)
@@ -58,6 +58,8 @@
 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.             #
 ############################################################################
 
+# iotivity note: this is a forked copy of the UnpackBuilder elsewhere
+# in the tree, which instead of defining a Builder, adds a method UnpackAll.
 
 
 # The Unpack Builder can be used for unpacking archives (eg Zip, TGZ, BZ, ... ).
@@ -193,7 +195,7 @@ def __getExtractor( source, env ) :
 # @param source source name
 # @param env environment object
 def __message( s, target, source, env ) :
-    print "extract [%s] ..." % (source[0])
+    print("extract [%s] ..." % (source[0]))
 
 
 # action function for extracting of the data
@@ -220,7 +222,7 @@ def __action( target, source, env ) :
         devnull = open(os.devnull, "wb")
         handle  = subprocess.Popen( cmd, shell=True, stdout=devnull )
 
-    if handle.wait() <> 0 :
+    if handle.wait() != 0 :
         raise SCons.Errors.BuildError( "error running extractor [%s] on the source [%s]" % (cmd, source[0])  )
 
 
@@ -257,7 +259,7 @@ def __emitter( target, source, env ) :
     handle = subprocess.Popen( cmd, shell=True, stdout=subprocess.PIPE )
     target = handle.stdout.readlines()
     handle.communicate()
-    if handle.returncode <> 0 :
+    if handle.returncode != 0 :
         raise SCons.Errors.StopError("error on running list command [%s] of the source file [%s]" % (cmd, source[0]) )
 
     # if the returning output exists and the listseperator is a callable structure
@@ -265,8 +267,8 @@ def __emitter( target, source, env ) :
     # a string we push it back to the target list
     try :
         if callable(extractor["LISTEXTRACTOR"]) :
-            target = filter( lambda s : SCons.Util.is_String(s), [ extractor["LISTEXTRACTOR"]( env, len(target), no, i) for no, i in enumerate(target) ] )
-    except Exception, e :
+            target = filter(lambda s: SCons.Util.is_String(s), [extractor["LISTEXTRACTOR"](env, len(target), no, i) for no, i in enumerate(target)])
+    except Exception as e :
         raise SCons.Errors.StopError( "%s" % (e) )
 
     # the line removes duplicated names - we need this line, otherwise an cyclic dependency error will occured,
@@ -276,7 +278,7 @@ def __emitter( target, source, env ) :
         SCons.Warnings.warn(UnpackWarning, "emitter file list on target [%s] is empty, please check your extractor list function [%s]" % (source[0], cmd) )
 
     # we append the extractdir to each target if is not absolut
-    if env["UNPACK"]["EXTRACTDIR"] <> "." :
+    if env["UNPACK"]["EXTRACTDIR"] != "." :
         target = [i if os.path.isabs(i) else os.path.join(env["UNPACK"]["EXTRACTDIR"], i) for i in target]
 
     return target, source
@@ -285,7 +287,7 @@ def __unpack_all(env, target, source) :
     if os.path.exists(target):
         return
 
-    print "Unpacking %s ..." % source
+    print("Unpacking %s ..." % source)
     __action(target, source, env)
 
 # generate function, that adds the builder to the environment
@@ -378,7 +380,7 @@ def generate( env ) :
     }
 
     # read tools for Windows system
-    if env["PLATFORM"] <> "darwin" and "win" in env["PLATFORM"] :
+    if env["PLATFORM"] != "darwin" and "win" in env["PLATFORM"] :
 
         if env.WhereIs('7z', env.get('PATH')):
             toolset["EXTRACTOR"]["TARGZ"]["RUN"]           = "7z"
@@ -423,12 +425,13 @@ def generate( env ) :
             toolset["EXTRACTOR"]["TAR"]["EXTRACTFLAGS"]    = "x"
             toolset["EXTRACTOR"]["TAR"]["EXTRACTSUFFIX"]   = "-y -ttar -o${UNPACK['EXTRACTDIR']}"
         else:
-            print '''*********************** Error ************************
+            print('''
+*********************** Error ************************
 *                                                    *
 * Please make sure that 7-zip is in your System PATH *
 *                                                    *
 ******************************************************
-'''
+''')
 
         # here can add some other Windows tools, that can handle the archive files
         # but I don't know which ones can handle all file types
@@ -477,12 +480,19 @@ def generate( env ) :
     else :
         raise SCons.Errors.StopError("Unpack tool detection on this platform [%s] unkown" % (env["PLATFORM"]))
 
-    # the target_factory must be a "Entry", because the target list can be files and dirs, so we can not specified the targetfactory explicite
+    # the target_factory must be an "Entry", because the target list can be
+    # files and dirs, so we can not specify the targetfactory explicitly
     env.Replace(UNPACK = toolset)
+    #env["BUILDERS"]["UnpackAll"] = SCons.Builder.Builder(
+    #    action=__action,
+    #    emitter=__emitter,
+    #    target_factory=SCons.Node.FS.Entry,
+    #    source_factory=SCons.Node.FS.File,
+    #    single_source=True,
+    #    PRINT_CMD_LINE_FUNC=__message
+    #)
     env.AddMethod(__unpack_all, 'UnpackAll')
 
-#    env["BUILDERS"]["UnpackAll"] = SCons.Builder.Builder( action = __action,  emitter = __emitter,  target_factory = SCons.Node.FS.Entry,  source_factory = SCons.Node.FS.File,  single_source = True,  PRINT_CMD_LINE_FUNC = __message )
-
 
 # existing function of the builder
 # @param env environment object
index 54cac6b..a28674b 100644 (file)
@@ -32,7 +32,7 @@ import SCons.Builder, SCons.Node, SCons.Errors
 # @param source source name
 # @param env environment object
 def __message( s, target, source, env ) :
-    print 'bootstrapping using [%s] ...' % (source[0])
+    print('bootstrapping using [%s] ...' % (source[0]))
 
 
 # Create the builder action which executes the bootstrap script
@@ -64,7 +64,7 @@ def __action( target, source, env ) :
     devnull = open(os.devnull, 'wb')
     handle  = subprocess.Popen( cmd, shell=True, cwd=cwd, stdout=devnull )
 
-    if handle.wait() <> 0 :
+    if handle.wait() != 0 :
         raise SCons.Errors.BuildError( 'Bootstrapping script [%s] on the source [%s]' % (cmd, source[0])  )
 
 # Define the emitter of the builder
index 7756568..3753aa9 100644 (file)
@@ -35,7 +35,7 @@ import SCons.Builder, SCons.Node, SCons.Errors
 # @param source source name
 # @param env environment object
 def __message( s, target, source, env ) :
-    print "building boost from [%s] for ..." % (source[0])
+    print("building boost from [%s] for ..." % (source[0]))
 
 
 # Create the builder action which constructs a user-config.jam based
@@ -136,7 +136,7 @@ def __action( target, source, env ) :
     devnull = open(os.devnull, "wb")
     handle  = subprocess.Popen( cmd, env=penv, cwd=cwd ) #, stdout=devnull )
 
-    if handle.wait() <> 0 :
+    if handle.wait() != 0 :
         raise SCons.Errors.BuildError( "Building boost [%s] on the source [%s]" % (cmd, source[0])  )
 
 # Define the emitter of the builder
index 94db96b..f41cdab 100644 (file)
@@ -32,7 +32,7 @@ import SCons.Builder, SCons.Node, SCons.Errors
 # @param source source name
 # @param env environment object
 def __message( s, target, source, env ) :
-    print "Configuring using [%s] ..." % (source[0])
+    print("Configuring using [%s] ..." % (source[0]))
 
 # Create the action
 #
@@ -63,7 +63,7 @@ def __action( target, source, env ) :
     devnull = open(os.devnull, "wb")
     handle  = subprocess.Popen( cmd, shell=True, cwd=cwd, stdout=devnull )
 
-    if handle.wait() <> 0 :
+    if handle.wait() != 0 :
         raise SCons.Errors.BuildError( "Configuring script [%s] on the source [%s]" % (cmd, source[0])  )
 
 # Define the builder's emitter
index 02d14ed..1cd516c 100644 (file)
@@ -106,7 +106,7 @@ def run_uwp_wack_test(env, cert_file, appx_file, report_output_path):
     command += ' && certutil %s | for /f "delims=: tokens=1*" %%i in (\'findstr "Serial Number:"\') do (certutil -delstore root %%j)' % (cert_file)
     command += ' && findstr OVERALL_RESULT=.PASS %s' % (report_output_file)
 
-    print 'Running WACK Test'
+    print('Running WACK Test')
     wack_test = env.Command(report_output_file, appx_file, command)
     env.AlwaysBuild(wack_test)
 
index f824140..bc74034 100644 (file)
@@ -62,7 +62,7 @@
 
 # the URLDownload-Builder can be download any data from an URL into a target file
 # and can replace the target file name with the URL filename (the setting variable
-# within the environment object is a boolean type with the name "URLDOWNLOAD_USEURLFILENAM", 
+# within the environment object is a boolean type with the name "URLDOWNLOAD_USEURLFILENAME",
 # default setting replaces the target name with the URL filename)
 
 
@@ -77,26 +77,26 @@ class URLNode(SCons.Node.Python.Value) :
 
     # overload the get_csig (copy the source from the
     # Python.Value node and append the data of the URL header
-    def get_csig(self, calc=None): 
-        try: 
-            return self.ninfo.csig 
-        except AttributeError: 
-            pass 
-        
+    def get_csig(self, calc=None):
+        try:
+            return self.ninfo.csig
+        except AttributeError:
+            pass
+
         try :
             response = urllib2.urlopen( str(self.value) ).info()
         except Exception, e :
             raise SCons.Errors.StopError( "%s [%s]" % (e, self.value) )
-            
+
         contents = ""
         if "Last-Modified" in response :
             contents = contents + response["Last-Modified"]
         if "Content-Length" in response :
             contents = contents + response["Content-Length"]
         if not contents :
-            contents = self.get_contents() 
-        self.get_ninfo().csig = contents 
-        return contents 
+            contents = self.get_contents()
+        self.get_ninfo().csig = contents
+        return contents
 
 
 
@@ -105,8 +105,8 @@ class URLNode(SCons.Node.Python.Value) :
 # @param target target name
 # @param source source name
 # @param env environment object
-def __message( s, target, source, env ) : 
-    print "downloading [%s] to [%s] ..." % (source[0], target[0])
+def __message( s, target, source, env ):
+    print("downloading [%s] to [%s] ..." % (source[0], target[0]))
 
 
 # the download function, which reads the data from the URL
@@ -116,12 +116,12 @@ def __message( s, target, source, env ) :
 # @@param env environment object
 def __action( target, source, env ) :
     try :
-        stream = urllib2.urlopen( str(source[0]) )
+        stream = urllib2.urlopen(str(source[0]))
         file   = open( str(target[0]), "wb" )
         file.write(stream.read())
         file.close()
         stream.close()
-    except Exception, e :
+    except Exception as e:
         raise SCons.Errors.StopError( "%s [%s]" % (e, source[0]) )
 
 
@@ -138,8 +138,8 @@ def __emitter( target, source, env ) :
         return target, source
 
     try :
-        url = urlparse.urlparse( urllib2.urlopen( str(source[0]) ).geturl() )
-    except Exception, e :
+        url = urlparse.urlparse(urllib2.urlopen(str(source[0])).geturl())
+    except Exception as e:
         raise SCons.Errors.StopError( "%s [%s]" % (e, source[0]) )
 
     return url.path.split("/")[-1], source
@@ -148,7 +148,7 @@ def __emitter( target, source, env ) :
 
 
 # generate function, that adds the builder to the environment,
-# the value "DOWNLOAD_USEFILENAME" replaces the target name with
+# the value "DOWNLOAD_USEUSRFILENAME" replaces the target name with
 # the filename of the URL
 # @param env environment object
 def generate( env ) :
@@ -160,4 +160,4 @@ def generate( env ) :
 # @param env environment object
 # @return true
 def exists(env) :
-    return 1
\ No newline at end of file
+    return 1
index 6850e05..176f213 100644 (file)
@@ -193,7 +193,7 @@ def __getExtractor( source, env ) :
 # @param source source name
 # @param env environment object
 def __message( s, target, source, env ) :
-    print "extract [%s] ..." % (source[0])
+    print("extract [%s] ..." % (source[0]))
 
 
 # action function for extracting of the data
@@ -225,7 +225,7 @@ def __action( target, source, env ) :
         devnull = open(os.devnull, "wb")
         handle  = subprocess.Popen( cmd, shell=True, stdout=devnull, cwd=cwd)
 
-    if handle.wait() <> 0 :
+    if handle.wait() != 0 :
         raise SCons.Errors.BuildError( "error running extractor [%s] on the source [%s]" % (cmd, source[0])  )
 
     fhandle = open(target_path, 'a')
@@ -336,7 +336,7 @@ def generate( env ) :
     }
 
     # read tools for Windows system
-    if env["PLATFORM"] <> "darwin" and "win" in env["PLATFORM"] :
+    if env["PLATFORM"] != "darwin" and "win" in env["PLATFORM"] :
 
         if env.WhereIs("7z"):
             toolset["EXTRACTOR"]["TARGZ"]["RUN"]           = "7z"
@@ -428,9 +428,17 @@ def generate( env ) :
     else :
         raise SCons.Errors.StopError("Unpack tool detection on this platform [%s] unkown" % (env["PLATFORM"]))
 
-    # the target_factory must be a "Entry", because the target list can be files and dirs, so we can not specified the targetfactory explicite
+    # the target_factory must be an "Entry", because the target list can be
+    # files and dirs, so we can not specify the targetfactory explicitly
     env.Replace(UNPACK = toolset)
-    env["BUILDERS"]["UnpackAll"] = SCons.Builder.Builder( action = __action,  emitter = __emitter,  target_factory = SCons.Node.FS.Entry,  source_factory = SCons.Node.FS.File,  single_source = True,  PRINT_CMD_LINE_FUNC = __message )
+    env["BUILDERS"]["UnpackAll"] = SCons.Builder.Builder(
+        action=__action,
+        emitter=__emitter,
+        target_factory=SCons.Node.FS.Entry,
+        source_factory=SCons.Node.FS.File,
+        single_source=True,
+        PRINT_CMD_LINE_FUNC=__message
+    )
 
 
 # existing function of the builder