From 59734be36c891bbebc1e547e36997b0dc11d76fb Mon Sep 17 00:00:00 2001 From: Hirokazu Yamamoto Date: Thu, 9 Dec 2010 08:01:18 +0000 Subject: Merged revisions 85071-85072,85894,87132 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ........ 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) ........ --- PC/VC6/build_ssl.py | 49 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 9 deletions(-) (limited to 'PC/VC6/build_ssl.py') diff --git a/PC/VC6/build_ssl.py b/PC/VC6/build_ssl.py index 3e96a5b5bb..29a51921e0 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 -- cgit v1.2.1