[Python-checkins] r50631 - in python/trunk: Misc/NEWS PCbuild/_ssl.vcproj PCbuild/build_ssl.bat PCbuild/build_ssl.py PCbuild/readme.txt

martin.v.loewis python-checkins at python.org
Fri Jul 14 11:58:57 CEST 2006


Author: martin.v.loewis
Date: Fri Jul 14 11:58:55 2006
New Revision: 50631

Added:
   python/trunk/PCbuild/build_ssl.bat
Modified:
   python/trunk/Misc/NEWS
   python/trunk/PCbuild/_ssl.vcproj
   python/trunk/PCbuild/build_ssl.py
   python/trunk/PCbuild/readme.txt
Log:
Extend build_ssl to Win64, using VSExtComp.

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Fri Jul 14 11:58:55 2006
@@ -170,6 +170,8 @@
 Build
 -----
 
+- Automate Windows build process for the Win64 SSL module.
+
 - 'configure' now detects the zlib library the same way as distutils.
   Previously, the slight difference could cause compilation errors of the
   'zlib' module on systems with more than one version of zlib.

Modified: python/trunk/PCbuild/_ssl.vcproj
==============================================================================
--- python/trunk/PCbuild/_ssl.vcproj	(original)
+++ python/trunk/PCbuild/_ssl.vcproj	Fri Jul 14 11:58:55 2006
@@ -21,8 +21,8 @@
 			ATLMinimizesCRunTimeLibraryUsage="FALSE">
 			<Tool
 				Name="VCNMakeTool"
-				BuildCommandLine="python build_ssl.py"
-				ReBuildCommandLine="python build_ssl.py -a"
+				BuildCommandLine="build_ssl.bat $(ConfigurationName)"
+				ReBuildCommandLine="build_ssl.bat -a $(ConfigurationName)"
 				CleanCommandLine="echo Nothing to do"
 				Output="_ssl.pyd"/>
 		</Configuration>
@@ -35,8 +35,8 @@
 			ATLMinimizesCRunTimeLibraryUsage="FALSE">
 			<Tool
 				Name="VCNMakeTool"
-				BuildCommandLine="python_d -u build_ssl.py -d"
-				ReBuildCommandLine="python_d -u build_ssl.py -d -a"
+				BuildCommandLine="build_ssl.bat $(ConfigurationName)"
+				ReBuildCommandLine="build_ssl.bat -a $(ConfigurationName)"
 				CleanCommandLine="echo Nothing to do"
 				Output="_ssl_d.pyd"/>
 		</Configuration>
@@ -49,8 +49,9 @@
 			ATLMinimizesCRunTimeLibraryUsage="FALSE">
 			<Tool
 				Name="VCNMakeTool"
-				BuildCommandLine="python build_ssl.py"
-				ReBuildCommandLine="python build_ssl.py -a"
+				BuildCommandLine="build_ssl.bat $(ConfigurationName)"
+				ReBuildCommandLine="build_ssl.bat -a $(ConfigurationName)"
+				CleanCommandLine="echo Nothing to do"
 				Output="_ssl.pyd"/>
 		</Configuration>
 		<Configuration
@@ -62,8 +63,9 @@
 			ATLMinimizesCRunTimeLibraryUsage="FALSE">
 			<Tool
 				Name="VCNMakeTool"
-				BuildCommandLine="python build_ssl.py"
-				ReBuildCommandLine="python build_ssl.py -a"
+				BuildCommandLine="build_ssl.bat $(ConfigurationName)"
+				ReBuildCommandLine="build_ssl.bat -a $(ConfigurationName)"
+				CleanCommandLine="echo Nothing to do"
 				Output="_ssl.pyd"/>
 		</Configuration>
 	</Configurations>

Added: python/trunk/PCbuild/build_ssl.bat
==============================================================================
--- (empty file)
+++ python/trunk/PCbuild/build_ssl.bat	Fri Jul 14 11:58:55 2006
@@ -0,0 +1,4 @@
+ at echo off
+if not defined HOST_PYTHON set HOST_PYTHON=python
+%HOST_PYTHON% build_ssl.py %1 %2
+

Modified: python/trunk/PCbuild/build_ssl.py
==============================================================================
--- python/trunk/PCbuild/build_ssl.py	(original)
+++ python/trunk/PCbuild/build_ssl.py	Fri Jul 14 11:58:55 2006
@@ -84,9 +84,59 @@
         print "Could not find an SSL directory in '%s'" % (sources,)
     return best_name
 
+def run_32all_py():
+    # ms\32all.bat will reconfigure OpenSSL and then try to build
+    # all outputs (debug/nondebug/dll/lib).  So we filter the file
+    # to exclude any "nmake" commands and then execute.
+    tempname = "ms\\32all_py.bat"
+
+    in_bat  = open("ms\\32all.bat")
+    temp_bat = open(tempname,"w")
+    while 1:
+        cmd = in_bat.readline()
+        print 'cmd', repr(cmd)
+        if not cmd: break
+        if cmd.strip()[:5].lower() == "nmake":
+            continue
+        temp_bat.write(cmd)
+    in_bat.close()
+    temp_bat.close()
+    os.system(tempname)
+    try:
+        os.remove(tempname)
+    except:
+        pass
+
+def run_configure(configure, do_script):
+    os.system("perl Configure "+configure)
+    os.system(do_script)
+
 def main():
-    debug = "-d" in sys.argv
     build_all = "-a" in sys.argv
+    if sys.argv[-1] == "Release":
+        arch = "x86"
+        debug = False
+        configure = "VC-WIN32"
+        makefile = "32.mak"
+    elif sys.argv[-1] == "Debug":
+        arch = "x86"
+        debug = True
+        configure = "VC-WIN32"
+        makefile="d32.mak"
+    elif sys.argv[-1] == "ReleaseItanium":
+        arch = "ia64"
+        debug = False
+        configure = "VC-WIN64I"
+        do_script = "ms\\do_win64i"
+        makefile = "ms\\nt.mak"
+        os.environ["VSEXTCOMP_USECL"] = "MS_ITANIUM"
+    elif sys.argv[-1] == "ReleaseAMD64":
+        arch="amd64"
+        debug=False
+        configure = "VC-WIN64A"
+        do_script = "ms\\do_win64a"
+        makefile = "ms\\nt.mak"
+        os.environ["VSEXTCOMP_USECL"] = "MS_OPTERON"
     make_flags = ""
     if build_all:
         make_flags = "-a"
@@ -107,49 +157,24 @@
     try:
         os.chdir(ssl_dir)
         # If the ssl makefiles do not exist, we invoke Perl to generate them.
-        if not os.path.isfile(os.path.join(ssl_dir, "32.mak")) or \
-           not os.path.isfile(os.path.join(ssl_dir, "d32.mak")):
+        if not os.path.isfile(makefile):
             print "Creating the makefiles..."
             # Put our working Perl at the front of our path
             os.environ["PATH"] = os.path.split(perl)[0] + \
                                           os.pathsep + \
                                           os.environ["PATH"]
-            # ms\32all.bat will reconfigure OpenSSL and then try to build
-            # all outputs (debug/nondebug/dll/lib).  So we filter the file
-            # to exclude any "nmake" commands and then execute.
-            tempname = "ms\\32all_py.bat"
-
-            in_bat  = open("ms\\32all.bat")
-            temp_bat = open(tempname,"w")
-            while 1:
-                cmd = in_bat.readline()
-                print 'cmd', repr(cmd)
-                if not cmd: break
-                if cmd.strip()[:5].lower() == "nmake":
-                    continue
-                temp_bat.write(cmd)
-            in_bat.close()
-            temp_bat.close()
-            os.system(tempname)
-            try:
-                os.remove(tempname)
-            except:
-                pass
+            if arch=="x86":
+                run_32all_py()
+            else:
+                run_configure(configure, do_script)
 
         # Now run make.
         print "Executing nmake over the ssl makefiles..."
-        if debug:
-            rc = os.system("nmake /nologo -f d32.mak")
-            if rc:
-                print "Executing d32.mak failed"
-                print rc
-                sys.exit(rc)
-        else:
-            rc = os.system("nmake /nologo -f 32.mak")
-            if rc:
-                print "Executing 32.mak failed"
-                print rc
-                sys.exit(rc)
+        rc = os.system("nmake /nologo -f "+makefile)
+        if rc:
+            print "Executing d32.mak failed"
+            print rc
+            sys.exit(rc)
     finally:
         os.chdir(old_cd)
     # And finally, we can build the _ssl module itself for Python.

Modified: python/trunk/PCbuild/readme.txt
==============================================================================
--- python/trunk/PCbuild/readme.txt	(original)
+++ python/trunk/PCbuild/readme.txt	Fri Jul 14 11:58:55 2006
@@ -264,7 +264,7 @@
 In addition, you need the Visual Studio plugin for external C compilers,
 from http://sf.net/projects/vsextcomp. The plugin will wrap cl.exe, to
 locate the proper target compiler, and convert compiler options
-accordingly. The project files require atleast version 0.8.
+accordingly. The project files require atleast version 0.9.
 
 Building for AMD64
 ------------------


More information about the Python-checkins mailing list