diff options
-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 | ||||
-rw-r--r-- | PCbuild/build_ssl.py | 8 | ||||
-rw-r--r-- | PCbuild/readme.txt | 2 |
5 files changed, 65 insertions, 28 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 diff --git a/PC/VS8.0/build_ssl.py b/PC/VS8.0/build_ssl.py index 867fd4c..a08cc5e 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) diff --git a/PCbuild/build_ssl.py b/PCbuild/build_ssl.py index 7f3a5d0..2693c41 100644 --- a/PCbuild/build_ssl.py +++ b/PCbuild/build_ssl.py @@ -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: @@ -186,10 +186,10 @@ 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. ssl_dir = find_best_ssl_dir(("..\\..",)) diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt index 2a944c6..f4da945 100644 --- a/PCbuild/readme.txt +++ b/PCbuild/readme.txt @@ -156,7 +156,7 @@ _ssl nasmw.exe. You can also install ActivePerl from - http://www.activestate.com/Products/ActivePerl/ + 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. |