Peter Surda
e20569acf9
- bump OpenSSL to 1.0.2u and remove the old one that is included in PyQt - add msvcr120.dll (needed by the new OpenSSL) - bump python to 2.7.18 - OpenSSL is now cross-compiled with mingw to avoid problems with MSVCR - downgrade PyInstaller for 64bit (was causing problems) - upgrade PyInstaller for 32bit
120 lines
4.0 KiB
Python
120 lines
4.0 KiB
Python
import ctypes
|
|
import os
|
|
import time
|
|
import sys
|
|
|
|
if ctypes.sizeof(ctypes.c_voidp) == 4:
|
|
arch=32
|
|
else:
|
|
arch=64
|
|
|
|
sslName = 'OpenSSL-Win%s' % ("32" if arch == 32 else "64")
|
|
site_root = os.path.abspath(HOMEPATH)
|
|
spec_root = os.path.abspath(SPECPATH)
|
|
cdrivePath = site_root[0:3]
|
|
srcPath = os.path.join(spec_root[:-20], "src")
|
|
qtBase = "PyQt4"
|
|
openSSLPath = os.path.join(cdrivePath, sslName)
|
|
msvcrDllPath = os.path.join(cdrivePath, "windows", "system32")
|
|
pythonDllPath = os.path.join(cdrivePath, "Python27")
|
|
outPath = os.path.join(spec_root, "bitmessagemain")
|
|
libgcc={
|
|
'32': ["libgcc_s_sjlj-1.dll", "/usr/lib/gcc/i686-w64-mingw32/7.3-win32"],
|
|
'64': ["libgcc_s_seh-1.dll", "/usr/lib/gcc/x86_64-w64-mingw32/7.3-win32"]
|
|
}
|
|
|
|
importPath = srcPath
|
|
sys.path.insert(0,importPath)
|
|
os.chdir(sys.path[0])
|
|
from version import softwareVersion
|
|
|
|
today = time.strftime("%Y%m%d")
|
|
snapshot = False
|
|
|
|
os.rename(os.path.join(srcPath, '__init__.py'), os.path.join(srcPath, '__init__.py.backup'))
|
|
|
|
# -*- mode: python -*-
|
|
a = Analysis(
|
|
[os.path.join(srcPath, 'bitmessagemain.py')],
|
|
pathex=[outPath],
|
|
hiddenimports=['bitmessageqt.languagebox', 'pyopencl','numpy', 'win32com' , 'setuptools.msvc' ,'_cffi_backend'],
|
|
hookspath=None,
|
|
runtime_hooks=None
|
|
)
|
|
|
|
os.rename(os.path.join(srcPath, '__init__.py.backup'), os.path.join(srcPath, '__init__.py'))
|
|
|
|
def addTranslations():
|
|
import os
|
|
extraDatas = []
|
|
for file_ in os.listdir(os.path.join(srcPath, 'translations')):
|
|
if file_[-3:] != ".qm":
|
|
continue
|
|
extraDatas.append((os.path.join('translations', file_),
|
|
os.path.join(srcPath, 'translations', file_), 'DATA'))
|
|
for libdir in sys.path:
|
|
qtdir = os.path.join(libdir, qtBase, 'translations')
|
|
if os.path.isdir(qtdir):
|
|
break
|
|
if not os.path.isdir(qtdir):
|
|
return extraDatas
|
|
for file_ in os.listdir(qtdir):
|
|
if file_[0:3] != "qt_" or file_[5:8] != ".qm":
|
|
continue
|
|
extraDatas.append((os.path.join('translations', file_),
|
|
os.path.join(qtdir, file_), 'DATA'))
|
|
return extraDatas
|
|
|
|
def addUIs():
|
|
import os
|
|
extraDatas = []
|
|
for file_ in os.listdir(os.path.join(srcPath, 'bitmessageqt')):
|
|
if file_[-3:] != ".ui":
|
|
continue
|
|
extraDatas.append((os.path.join('ui', file_), os.path.join(srcPath,
|
|
'bitmessageqt', file_), 'DATA'))
|
|
return extraDatas
|
|
|
|
# append the translations directory
|
|
a.datas += addTranslations()
|
|
a.datas += addUIs()
|
|
|
|
if os.path.isdir(libgcc[str(arch)][1]):
|
|
a.binaries += [(libgcc[str(arch)][0], os.path.join(libgcc[str(arch)][1], libgcc[str(arch)][0]), 'BINARY')]
|
|
|
|
a.binaries += [('libeay32.dll', os.path.join(openSSLPath, 'libeay32.dll'), 'BINARY'),
|
|
('python27.dll', os.path.join(pythonDllPath, 'python27.dll'), 'BINARY'),
|
|
(os.path.join('bitmsghash', 'bitmsghash%i.dll' % (arch)), os.path.join(srcPath, 'bitmsghash', 'bitmsghash%i.dll' % (arch)), 'BINARY'),
|
|
(os.path.join('bitmsghash', 'bitmsghash.cl'), os.path.join(srcPath, 'bitmsghash', 'bitmsghash.cl'), 'BINARY'),
|
|
(os.path.join('sslkeys', 'cert.pem'), os.path.join(srcPath, 'sslkeys', 'cert.pem'), 'BINARY'),
|
|
(os.path.join('sslkeys', 'key.pem'), os.path.join(srcPath, 'sslkeys', 'key.pem'), 'BINARY')
|
|
]
|
|
|
|
|
|
fname = 'Bitmessage_%s_%s.exe' % ("x86" if arch == 32 else "x64", softwareVersion)
|
|
if snapshot:
|
|
fname = 'Bitmessagedev_%s_%s.exe' % ("x86" if arch == 32 else "x64", today)
|
|
|
|
pyz = PYZ(a.pure)
|
|
exe = EXE(pyz,
|
|
a.scripts,
|
|
a.binaries,
|
|
a.zipfiles,
|
|
a.datas,
|
|
a.binaries,
|
|
[],
|
|
name=fname,
|
|
debug=False,
|
|
strip=None,
|
|
upx=False,
|
|
console=False, icon= os.path.join(srcPath, 'images', 'can-icon.ico'))
|
|
|
|
coll = COLLECT(exe,
|
|
a.binaries,
|
|
a.zipfiles,
|
|
a.datas,
|
|
strip=False,
|
|
upx=False,
|
|
name='main')
|
|
|