Fix Py2Exe / Py2App

Fixes the C PoW loading in frozen apps (Windows and OSX)
Cleaner fallback in PoW if something goes wrong
This commit is contained in:
mailchuck 2015-11-09 17:15:05 +01:00 committed by Peter Surda
parent 03f709b70d
commit 12878af41f

View File

@ -10,7 +10,12 @@ import openclpow
import os import os
import ctypes import ctypes
curdir = os.path.dirname(__file__) if frozen == "macosx_app":
curdir = os.environ.get("RESOURCEPATH")
elif frozen: # windows
curdir = sys._MEIPASS
else:
curdir = os.path.dirname(__file__)
bitmsglib = 'bitmsghash.so' bitmsglib = 'bitmsghash.so'
if "win32" == sys.platform: if "win32" == sys.platform:
if ctypes.sizeof(ctypes.c_voidp) == 4: if ctypes.sizeof(ctypes.c_voidp) == 4:
@ -128,13 +133,18 @@ def run(target, initialHash):
try: try:
return _doGPUPoW(target, initialHash) return _doGPUPoW(target, initialHash)
except: except:
pass # fallback to normal PoW pass # fallback
if frozen == "macosx_app" or not frozen:
if bmpow: if bmpow:
try: try:
return _doCPoW(target, initialHash) return _doCPoW(target, initialHash)
except: except:
pass # fallback to normal PoW pass # fallback
if frozen == "macosx_app" or not frozen:
# on my (Peter Surda) Windows 10, Windows Defender
# does not like this and fights with PyBitmessage
# over CPU, resulting in very slow PoW
try:
return _doFastPoW(target, initialHash) return _doFastPoW(target, initialHash)
else: except:
pass #fallback
return _doSafePoW(target, initialHash) return _doSafePoW(target, initialHash)