diff options
author | Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp> | 2010-12-09 08:01:18 (GMT) |
---|---|---|
committer | Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp> | 2010-12-09 08:01:18 (GMT) |
commit | 59734be36c891bbebc1e547e36997b0dc11d76fb (patch) | |
tree | 2bda0d1d771659a0255dedb73ae7f2adbd934f00 /PC | |
parent | 517858adb5ee34cf29a257a5b0152a8413a04d91 (diff) | |
download | cpython-59734be36c891bbebc1e547e36997b0dc11d76fb.zip cpython-59734be36c891bbebc1e547e36997b0dc11d76fb.tar.gz cpython-59734be36c891bbebc1e547e36997b0dc11d76fb.tar.bz2 |
Merged revisions 85071-85072,85894,87132 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r85071 | hirokazu.yamamoto | 2010-09-29 03:29:57 +0900 (水, 29 9 2010) | 1 line
Now perl path with spaces can be used.
........
r85072 | hirokazu.yamamoto | 2010-09-29 03:36:04 +0900 (水, 29 9 2010) | 1 line
Updated PC/VC6 openssl build script. (for openssl-1.0.0a)
........
r85894 | hirokazu.yamamoto | 2010-10-29 02:57:25 +0900 (金, 29 10 2010) | 1 line
Updated readme.txt about OpenSSL.
........
r87132 | hirokazu.yamamoto | 2010-12-08 23:47:07 +0900 (水, 08 12 2010) | 3 lines
Mention NASM which is needed to build openssl-1.0.0a original source.
(PC/VC6/readme.txt)
........
Diffstat (limited to 'PC')
-rw-r--r-- | PC/VC6/build_ssl.py | 49 | ||||
-rw-r--r-- | PC/VC6/readme.txt | 22 | ||||
-rw-r--r-- | PC/VS8.0/build_ssl.py | 12 |
3 files changed, 60 insertions, 23 deletions
diff --git a/PC/VC6/build_ssl.py b/PC/VC6/build_ssl.py index 3e96a5b..29a5192 100644 --- a/PC/VC6/build_ssl.py +++ b/PC/VC6/build_ssl.py @@ -13,6 +13,11 @@ # it should configure and build SSL, then build the ssl Python extension # without intervention. +# Modified by Christian Heimes +# Now this script supports pre-generated makefiles and assembly files. +# Developers don't need an installation of Perl anymore to build Python. A svn +# checkout from our svn repository is enough. + import os, sys, re, shutil # Find all "foo.exe" files on the PATH. @@ -36,7 +41,7 @@ def find_all_on_path(filename, extras = None): # is available. def find_working_perl(perls): for perl in perls: - fh = os.popen(perl + ' -e "use Win32;"') + fh = os.popen('"%s" -e "use Win32;"' % perl) fh.read() rc = fh.close() if rc: @@ -120,6 +125,22 @@ def run_configure(configure, do_script): print do_script os.system(do_script) +def cmp(f1, f2): + bufsize = 1024 * 8 + with open(f1, 'rb') as fp1, open(f2, 'rb') as fp2: + while True: + b1 = fp1.read(bufsize) + b2 = fp2.read(bufsize) + if b1 != b2: + return False + if not b1: + return True + +def copy(src, dst): + if os.path.isfile(dst) and cmp(src, dst): + return + shutil.copy(src, dst) + def main(): debug = "-d" in sys.argv build_all = "-a" in sys.argv @@ -129,6 +150,7 @@ def main(): do_script = "ms\\do_nasm" makefile="ms\\nt.mak" m32 = makefile + dirsuffix = "32" configure += " no-idea no-rc5 no-mdc2" make_flags = "" if build_all: @@ -137,12 +159,12 @@ def main(): # as "well known" locations perls = find_all_on_path("perl.exe", ["\\perl\\bin", "C:\\perl\\bin"]) perl = find_working_perl(perls) - if perl is None: - print "No Perl installation was found. Existing Makefiles are used." - else: + if perl: print "Found a working perl at '%s'" % (perl,) + else: + print "No Perl installation was found. Existing Makefiles are used." sys.stdout.flush() - # Look for SSL 3 levels up from pcbuild - ie, same place zlib etc all live. + # Look for SSL 3 levels up from PC/VC6 - ie, same place zlib etc all live. ssl_dir = find_best_ssl_dir(("..\\..\\..",)) if ssl_dir is None: sys.exit(1) @@ -173,12 +195,21 @@ def main(): # os.system("perl util\mk1mf.pl debug "+configure+" >"+makefile) fix_makefile(makefile) - shutil.copy(r"crypto\buildinf.h", r"crypto\buildinf_%s.h" % arch) - shutil.copy(r"crypto\opensslconf.h", r"crypto\opensslconf_%s.h" % arch) + copy(r"crypto\buildinf.h", r"crypto\buildinf_%s.h" % arch) + copy(r"crypto\opensslconf.h", r"crypto\opensslconf_%s.h" % arch) + + # If the assembler files don't exist in tmpXX, copy them there + if perl is None: + if not os.path.exists("tmp"+dirsuffix): + os.mkdir("tmp"+dirsuffix) + for f in os.listdir("asm"+dirsuffix): + if not f.endswith(".asm"): continue + if os.path.isfile(r"tmp%s\%s" % (dirsuffix, f)): continue + shutil.copy(r"asm%s\%s" % (dirsuffix, f), "tmp"+dirsuffix) # Now run make. - shutil.copy(r"crypto\buildinf_%s.h" % arch, r"crypto\buildinf.h") - shutil.copy(r"crypto\opensslconf_%s.h" % arch, r"crypto\opensslconf.h") + copy(r"crypto\buildinf_%s.h" % arch, r"crypto\buildinf.h") + copy(r"crypto\opensslconf_%s.h" % arch, r"crypto\opensslconf.h") #makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile) makeCommand = "nmake /nologo -f \"%s\"" % makefile diff --git a/PC/VC6/readme.txt b/PC/VC6/readme.txt index 0ea3edd..03d2318 100644 --- a/PC/VC6/readme.txt +++ b/PC/VC6/readme.txt @@ -202,21 +202,27 @@ _ssl Get the latest source code for OpenSSL from http://www.openssl.org - You (probably) don't want the "engine" code. For example, get - openssl-0.9.8g.tar.gz - not - openssl-engine-0.9.8g.tar.gz + You (probably) don't want the "engine" code. For example, don't get + openssl-engine-0.9.6g.tar.gz Unpack into the "dist" directory, retaining the folder name from the archive - for example, the latest stable OpenSSL will install as - dist/openssl-0.9.8g + dist/openssl-1.0.0a You can (theoretically) use any version of OpenSSL you like - the build process will automatically select the latest version. - You must also install ActivePerl from - http://www.activestate.com/Products/ActivePerl/ - as this is used by the OpenSSL build process. Complain to them <wink>. + You can install the NASM assembler from + http://www.nasm.us/ + for x86 builds. Put nasmw.exe anywhere in your PATH. + Note: recent releases of nasm only have nasm.exe. Just rename it to + nasmw.exe. + + You can also install ActivePerl from + http://www.activestate.com/activeperl/ + if you like to use the official sources instead of the files from + python's subversion repository. The svn version contains pre-build + makefiles and assembly files. The MSVC project simply invokes PC/VC6/build_ssl.py to perform the build. This Python script locates and builds your OpenSSL diff --git a/PC/VS8.0/build_ssl.py b/PC/VS8.0/build_ssl.py index ab5fcea..663e655 100644 --- a/PC/VS8.0/build_ssl.py +++ b/PC/VS8.0/build_ssl.py @@ -8,7 +8,7 @@ # directory. It is likely you will already find the zlib library and # any other external packages there. # * Install ActivePerl and ensure it is somewhere on your path. -# * Run this script from the PCBuild directory. +# * Run this script from the PC/VS8.0 directory. # # it should configure and build SSL, then build the _ssl and _hashlib # Python extensions without intervention. @@ -46,7 +46,7 @@ def find_all_on_path(filename, extras = None): # is available. def find_working_perl(perls): for perl in perls: - fh = os.popen(perl + ' -e "use Win32;"') + fh = os.popen('"%s" -e "use Win32;"' % perl) fh.read() rc = fh.close() if rc: @@ -178,12 +178,12 @@ def main(): # as "well known" locations perls = find_all_on_path("perl.exe", ["\\perl\\bin", "C:\\perl\\bin"]) perl = find_working_perl(perls) - if perl is None: + if perl: + print("Found a working perl at '%s'" % (perl,)) + else: print("No Perl installation was found. Existing Makefiles are used.") - - print("Found a working perl at '%s'" % (perl,)) sys.stdout.flush() - # Look for SSL 2 levels up from pcbuild - ie, same place zlib etc all live. + # Look for SSL 3 levels up from PC/VS8.0 - ie, same place zlib etc all live. ssl_dir = find_best_ssl_dir(("..\\..\\..",)) if ssl_dir is None: sys.exit(1) |