summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--PC/VC6/build_ssl.py49
-rw-r--r--PC/VC6/readme.txt22
-rw-r--r--PC/VS8.0/build_ssl.py12
-rw-r--r--PCbuild/build_ssl.py8
-rw-r--r--PCbuild/readme.txt2
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.