Commit 7405c200 authored by Hirokazu Yamamoto's avatar Hirokazu Yamamoto

Updated PC/VC6 openssl build script. (for openssl-1.0.0a)

parent 313dab43
...@@ -13,6 +13,11 @@ ...@@ -13,6 +13,11 @@
# it should configure and build SSL, then build the ssl Python extension # it should configure and build SSL, then build the ssl Python extension
# without intervention. # 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 import os, sys, re, shutil
# Find all "foo.exe" files on the PATH. # Find all "foo.exe" files on the PATH.
...@@ -36,7 +41,7 @@ def find_all_on_path(filename, extras = None): ...@@ -36,7 +41,7 @@ def find_all_on_path(filename, extras = None):
# is available. # is available.
def find_working_perl(perls): def find_working_perl(perls):
for perl in perls: for perl in perls:
fh = os.popen(perl + ' -e "use Win32;"') fh = os.popen('"%s" -e "use Win32;"' % perl)
fh.read() fh.read()
rc = fh.close() rc = fh.close()
if rc: if rc:
...@@ -90,13 +95,9 @@ def fix_makefile(makefile): ...@@ -90,13 +95,9 @@ def fix_makefile(makefile):
""" """
if not os.path.isfile(makefile): if not os.path.isfile(makefile):
return return
# 2.4 compatibility with open(makefile) as fin:
fin = open(makefile)
if 1: # with open(makefile) as fin:
lines = fin.readlines() lines = fin.readlines()
fin.close() with open(makefile, 'w') as fout:
fout = open(makefile, 'w')
if 1: # with open(makefile, 'w') as fout:
for line in lines: for line in lines:
if line.startswith("PERL="): if line.startswith("PERL="):
continue continue
...@@ -112,7 +113,6 @@ def fix_makefile(makefile): ...@@ -112,7 +113,6 @@ def fix_makefile(makefile):
line = line + noalgo line = line + noalgo
line = line + '\n' line = line + '\n'
fout.write(line) fout.write(line)
fout.close()
def run_configure(configure, do_script): def run_configure(configure, do_script):
print("perl Configure "+configure) print("perl Configure "+configure)
...@@ -120,6 +120,22 @@ def run_configure(configure, do_script): ...@@ -120,6 +120,22 @@ def run_configure(configure, do_script):
print(do_script) print(do_script)
os.system(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(): def main():
debug = "-d" in sys.argv debug = "-d" in sys.argv
build_all = "-a" in sys.argv build_all = "-a" in sys.argv
...@@ -129,6 +145,7 @@ def main(): ...@@ -129,6 +145,7 @@ def main():
do_script = "ms\\do_nasm" do_script = "ms\\do_nasm"
makefile="ms\\nt.mak" makefile="ms\\nt.mak"
m32 = makefile m32 = makefile
dirsuffix = "32"
configure += " no-idea no-rc5 no-mdc2" configure += " no-idea no-rc5 no-mdc2"
make_flags = "" make_flags = ""
if build_all: if build_all:
...@@ -137,12 +154,12 @@ def main(): ...@@ -137,12 +154,12 @@ def main():
# as "well known" locations # as "well known" locations
perls = find_all_on_path("perl.exe", ["\\perl\\bin", "C:\\perl\\bin"]) perls = find_all_on_path("perl.exe", ["\\perl\\bin", "C:\\perl\\bin"])
perl = find_working_perl(perls) perl = find_working_perl(perls)
if perl is None: if perl:
print("No Perl installation was found. Existing Makefiles are used.")
else:
print("Found a working perl at '%s'" % (perl,)) print("Found a working perl at '%s'" % (perl,))
else:
print("No Perl installation was found. Existing Makefiles are used.")
sys.stdout.flush() 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(("..\\..\\..",)) ssl_dir = find_best_ssl_dir(("..\\..\\..",))
if ssl_dir is None: if ssl_dir is None:
sys.exit(1) sys.exit(1)
...@@ -173,12 +190,21 @@ def main(): ...@@ -173,12 +190,21 @@ def main():
# os.system("perl util\mk1mf.pl debug "+configure+" >"+makefile) # os.system("perl util\mk1mf.pl debug "+configure+" >"+makefile)
fix_makefile(makefile) fix_makefile(makefile)
shutil.copy(r"crypto\buildinf.h", r"crypto\buildinf_%s.h" % arch) 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\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. # Now run make.
shutil.copy(r"crypto\buildinf_%s.h" % arch, r"crypto\buildinf.h") 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\opensslconf_%s.h" % arch, r"crypto\opensslconf.h")
#makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile) #makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile)
makeCommand = "nmake /nologo -f \"%s\"" % makefile makeCommand = "nmake /nologo -f \"%s\"" % makefile
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment