]> git.saurik.com Git - wxWidgets.git/commitdiff
Changes to allow these build scripts to use python3
authorRobin Dunn <robin@alldunn.com>
Thu, 24 May 2012 23:26:34 +0000 (23:26 +0000)
committerRobin Dunn <robin@alldunn.com>
Thu, 24 May 2012 23:26:34 +0000 (23:26 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

build/tools/build-wxwidgets.py
build/tools/builder.py
src/stc/gen_iface.py

index c052e817f5e3b076f97d7800c57c8c37aefff870..eec91098566a383d7649dbe9f394012930c9a04b 100755 (executable)
@@ -9,7 +9,6 @@ import os
 import re
 import sys
 import builder
-import commands
 import glob
 import optparse
 import platform
@@ -38,7 +37,7 @@ def numCPUs():
     """
     # Linux, Unix and MacOS:
     if hasattr(os, "sysconf"):
-        if os.sysconf_names.has_key("SC_NPROCESSORS_ONLN"):
+        if "SC_NPROCESSORS_ONLN" in os.sysconf_names:
             # Linux & Unix:
             ncpus = os.sysconf("SC_NPROCESSORS_ONLN")
             if isinstance(ncpus, int) and ncpus > 0:
@@ -48,7 +47,7 @@ def numCPUs():
             return p.stdout.read()
             
     # Windows:
-    if os.environ.has_key("NUMBER_OF_PROCESSORS"):
+    if "NUMBER_OF_PROCESSORS" in os.environ:
             ncpus = int(os.environ["NUMBER_OF_PROCESSORS"]);
             if ncpus > 0:
                 return ncpus
@@ -56,16 +55,14 @@ def numCPUs():
 
 
 def getXcodePath():
-    p = subprocess.Popen("xcode-select -print-path", shell=True, stdout=subprocess.PIPE)
-    output = p.stdout.read()
-    return output.strip()
+    return getoutput("xcode-select -print-path")
 
 
 def exitIfError(code, msg):
     if code != 0:
-        print msg
+        print(msg)
         if exitWithException:
-            raise builder.BuildError, msg
+            raise builder.BuildError(msg)
         else:
             sys.exit(1)
      
@@ -110,14 +107,14 @@ def macFixupInstallNames(destdir, prefix, buildDir=None):
     # When an installdir is used then the install_names embedded in
     # the dylibs are not correct.  Reset the IDs and the dependencies
     # to use just the prefix.
-    print "**** macFixupInstallNames(%s, %s, %s)" % (destdir, prefix, buildDir)
+    print("**** macFixupInstallNames(%s, %s, %s)" % (destdir, prefix, buildDir))
     pwd = os.getcwd()
     os.chdir(destdir+prefix+'/lib')
     dylibs = glob.glob('*.dylib')     # ('*[0-9].[0-9].[0-9].[0-9]*.dylib')
     for lib in dylibs:
         cmd = 'install_name_tool -id %s/lib/%s %s/lib/%s' % \
               (prefix,lib,  destdir+prefix,lib)
-        print cmd
+        print(cmd)
         run(cmd)
         for dep in dylibs:
             if buildDir is not None:
@@ -126,7 +123,7 @@ def macFixupInstallNames(destdir, prefix, buildDir=None):
             else:
                 cmd = 'install_name_tool -change %s/lib/%s %s/lib/%s %s/lib/%s' % \
                       (destdir+prefix,dep,  prefix,dep,  destdir+prefix,lib)
-            print cmd
+            print(cmd)
             run(cmd)        
     os.chdir(pwd)
 
@@ -134,10 +131,25 @@ def macFixupInstallNames(destdir, prefix, buildDir=None):
 def run(cmd):
     global verbose
     if verbose:
-        print "Running %s" % cmd
+        print("Running %s" % cmd)
     return exitIfError(os.system(cmd), "Error running %s" % cmd)
 
 
+def getoutput(cmd):
+    sp = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+    output = None
+    output = sp.stdout.read()
+    if sys.version_info > (3,):
+        output = output.decode('utf-8')  # TODO: is utf-8 okay here?
+    output = output.rstrip()
+    rval = sp.wait()
+    if rval:
+        # Failed!
+        print("Command '%s' failed with exit code %d." % (cmd, rval))
+        sys.exit(rval)
+    return output
+    
+
 def main(scriptName, args):
     global scriptDir
     global wxRootDir
@@ -196,11 +208,10 @@ def main(scriptName, args):
     parser = optparse.OptionParser(usage="usage: %prog [options]", version="%prog 1.0")
 
     keys = option_dict.keys()
-    keys.sort()
-    for opt in keys:
+    for opt in sorted(keys):
         default = option_dict[opt][0]
         action = "store"
-        if type(default) == types.BooleanType:
+        if type(default) == bool:
             action = "store_true"
         parser.add_option("--" + opt, default=default, action=action, dest=opt, 
                           help=option_dict[opt][1])
@@ -321,7 +332,7 @@ def main(scriptName, args):
             configure_opts.append("--enable-universal_binary=%s" % options.mac_universal_binary)
 
             
-        print "Configure options: " + `configure_opts`
+        print("Configure options: " + repr(configure_opts))
         wxBuilder = builder.AutoconfBuilder()
         if not options.no_config and not options.clean:
             olddir = os.getcwd()
@@ -332,14 +343,14 @@ def main(scriptName, args):
             os.chdir(olddir)
 
         if options.config_only:
-            print "Exiting after configure"
+            print("Exiting after configure")
             return
     
     elif toolkit in ["msvc", "msvcProject"]:
         flags = {}
         buildDir = os.path.abspath(os.path.join(scriptDir, "..", "msw"))
 
-        print "creating wx/msw/setup.h from setup0.h"
+        print("creating wx/msw/setup.h from setup0.h")
         if options.unicode:
             flags["wxUSE_UNICODE"] = "1"
             if VERSION < (2,9):
@@ -347,7 +358,7 @@ def main(scriptName, args):
     
         if options.cairo:
             if not os.environ.get("CAIRO_ROOT"):
-                print "WARNING: Expected CAIRO_ROOT set in the environment!"
+                print("WARNING: Expected CAIRO_ROOT set in the environment!")
             flags["wxUSE_CAIRO"] = "1"
     
         if options.wxpython:
@@ -375,7 +386,7 @@ def main(scriptName, args):
         for flag in flags:
             setupText, subsMade = re.subn(flag + "\s+?\d", "%s %s" % (flag, flags[flag]), setupText)
             if subsMade == 0:
-                print "Flag %s wasn't found in setup0.h!" % flag
+                print("Flag %s wasn't found in setup0.h!" % flag)
                 sys.exit(1)
     
         setupFile = open(os.path.join(mswIncludeDir, "setup.h"), "wb")
@@ -383,7 +394,7 @@ def main(scriptName, args):
         setupFile.close()
         args = []
         if toolkit == "msvc":
-            print "setting build options..."
+            print("setting build options...")
             args.append("-f makefile.vc")
             if options.unicode:
                 args.append("UNICODE=1")
@@ -424,11 +435,11 @@ def main(scriptName, args):
         
             
     if not wxBuilder:
-        print "Builder not available for your specified platform/compiler."
+        print("Builder not available for your specified platform/compiler.")
         sys.exit(1)
     
     if options.clean:
-        print "Performing cleanup."
+        print("Performing cleanup.")
         wxBuilder.clean(dir=buildDir, options=args)
         
         sys.exit(0)
@@ -455,7 +466,7 @@ def main(scriptName, args):
                 links.append(reallib)
                 reallib = "lib/" + os.readlink(reallib)
                 
-            #print "reallib is %s" % reallib
+            #print("reallib is %s" % reallib)
             run("mv -f %s lib/%s.dylib" % (reallib, frameworkname))
             
             for link in links:
@@ -463,7 +474,7 @@ def main(scriptName, args):
     
         frameworkRootDir = prefixDir
         if installDir:
-            print "installDir = %s" % installDir
+            print("installDir = %s" % installDir)
             frameworkRootDir = installDir + prefixDir
         os.chdir(frameworkRootDir)
         build_string = ""
@@ -471,10 +482,10 @@ def main(scriptName, args):
             build_string = "d"
 
         fwname = getFrameworkName(options)
-        version = commands.getoutput("bin/wx-config --release")
-        version_full = commands.getoutput("bin/wx-config --version")
-        basename = commands.getoutput("bin/wx-config --basename")
-        configname = commands.getoutput("bin/wx-config --selected-config")
+        version = getoutput("bin/wx-config --release")
+        version_full = getoutput("bin/wx-config --version")
+        basename = getoutput("bin/wx-config --basename")
+        configname = getoutput("bin/wx-config --selected-config")
         
         os.makedirs("Resources")
         wxplist = dict(
@@ -559,10 +570,10 @@ def main(scriptName, args):
         file('lib/wx/config/%s' % configname, 'w').write(text)
         
         # The framework is finished!
-        print "wxWidgets framework created at: " + \
+        print("wxWidgets framework created at: " + 
               os.path.join( installDir, 
                             options.mac_framework_prefix,
-                            '%s.framework' % fwname)
+                            '%s.framework' % fwname))
         
         
     # adjust the install_name if needed
@@ -596,7 +607,7 @@ def main(scriptName, args):
         args.append("--version %s" % getWxRelease())
         args.append("--out %s" % os.path.join(packagedir, packageName + ".pkg"))
         cmd = packageMakerPath + ' '.join(args)
-        print "cmd = %s" % cmd
+        print("cmd = %s" % cmd)
         run(cmd)
         
         os.chdir(options.mac_distdir)
index 484e274f573b566d19ef9a1d448ef409cda69673..a61ca3d2b28fad226021feb770ba335a13bbc8cb 100755 (executable)
@@ -18,7 +18,7 @@ def runInDir(command, dir=None, verbose=True):
 
     commandStr = " ".join(command)
     if verbose:
-        print commandStr
+        print(commandStr)
     result = os.system(commandStr)
 
     if dir:
@@ -181,7 +181,7 @@ class AutoconfBuilder(GNUMakeBuilder):
 
         optionsStr = string.join(options, " ") if options else ""
         command = "%s %s" % (configure_cmd, optionsStr)
-        print command
+        print(command)
         result = os.system(command)
         #os.chdir(olddir)
         return result
index de946ed8e9b290fe674b6f11c1850629f2f7c1bd..55eaa895b1bcff9187a418e2ab06599379bf362e 100755 (executable)
@@ -785,7 +785,7 @@ def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest, docstr_dest):
             curDocStrings = []
 
         elif op == 'cat ':
-            if string.strip(line[4:]) == 'Deprecated':
+            if line[4:].strip() == 'Deprecated':
                 break    # skip the rest of the file
 
         elif op == 'evt ':
@@ -798,7 +798,7 @@ def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest, docstr_dest):
             pass
 
         else:
-            print '***** Unknown line type: ', line
+            print('***** Unknown line type: %s' % line)
 
 
     # process templates
@@ -825,7 +825,7 @@ def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest, docstr_dest):
 
 
 def joinWithNewLines(values):
-    return string.join(values, '\n')
+    return '\n'.join(values)
 
 #----------------------------------------------------------------------------
 
@@ -905,7 +905,7 @@ def processMethods(methods):
 
 def checkMethodOverride(name, number, docs):
     theDef = theImp = None
-    if methodOverrideMap.has_key(name):
+    if name in methodOverrideMap:
         item = methodOverrideMap[name]
 
         try:
@@ -918,7 +918,7 @@ def checkMethodOverride(name, number, docs):
             if item[3] != 0:
                 docs = item[3]
         except:
-            print "*************", name
+            print("************* " + name)
             raise
 
     return name, theDef, theImp, docs
@@ -958,7 +958,7 @@ def makeParamString(param1, param2):
 #----------------------------------------------------------------------------
 
 def parseVal(line, values, docs):
-    name, val = string.split(line, '=')
+    name, val = line.split('=')
 
     # remove prefixes such as SCI, etc.
     for old, new in valPrefixes:
@@ -981,16 +981,16 @@ funregex = re.compile(r'\s*([a-zA-Z0-9_]+)'  # <ws>return type
 
 def parseFun(line, methods, docs, values, is_const):
     def parseParam(param):
-        param = string.strip(param)
+        param = param.strip()
         if param == '':
             param = None
         else:
-            param = tuple(string.split(param))
+            param = tuple(param.split())
         return param
 
     mo = funregex.match(line)
     if mo is None:
-        print "***** Line doesn't match! : " + line
+        print("***** Line doesn't match! : %s" % line)
 
     retType, name, number, param1, param2 = mo.groups()
 
@@ -998,10 +998,10 @@ def parseFun(line, methods, docs, values, is_const):
     param2 = parseParam(param2)
 
     # Special case.  For the key command functions we want a value defined too
-    num = string.atoi(number)
+    num = int(number)
     for v in cmdValues:
         if (type(v) == type(()) and v[0] <= num <= v[1]) or v == num:
-            parseVal('CMD_%s=%s' % (string.upper(name), number), values, docs)
+            parseVal('CMD_%s=%s' % (name.upper(), number), values, docs)
 
             # if we are not also doing a function for CMD values, then
             # just return, otherwise fall through to the append blow.
@@ -1019,7 +1019,7 @@ def main(args):
     # TODO: parse command line args to replace default input/output files???
 
     if not os.path.exists(IFACE):
-        print 'Please run this script from src/stc subdirectory.'
+        print('Please run this script from src/stc subdirectory.')
         sys.exit(1)
 
     # Now just do it