diff options
author | Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp> | 2010-12-09 09:25:38 (GMT) |
---|---|---|
committer | Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp> | 2010-12-09 09:25:38 (GMT) |
commit | ba466cd208926ad3b2ff3e292659258cdbf8f8c5 (patch) | |
tree | 8bf0bb3fa5e23b9a670792842cbe60a000d83a6f /PC/VC6 | |
parent | a85b671cb6f71b7c80f4d4cf5e08d14c2c52a235 (diff) | |
download | cpython-ba466cd208926ad3b2ff3e292659258cdbf8f8c5.zip cpython-ba466cd208926ad3b2ff3e292659258cdbf8f8c5.tar.gz cpython-ba466cd208926ad3b2ff3e292659258cdbf8f8c5.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/VC6')
-rw-r--r-- | PC/VC6/build_ssl.py | 49 | ||||
-rw-r--r-- | PC/VC6/readme.txt | 22 |
2 files changed, 54 insertions, 17 deletions
diff --git a/PC/VC6/build_ssl.py b/PC/VC6/build_ssl.py index 51f34b6..c512688 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 0645fa3..59e65d0 100644 --- a/PC/VC6/readme.txt +++ b/PC/VC6/readme.txt @@ -149,21 +149,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 |