BitcoinArmory icon indicating copy to clipboard operation
BitcoinArmory copied to clipboard

Update libraries and fix openssl 1.1 qt4 build.

Open jameshilliard opened this issue 6 years ago • 7 comments

Should hopefully fix this error due to homebrew removing openssl 1.0:

$ ./Armory 
dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
  Referenced from: /Applications/Armory.app/Contents/MacOS/Python
  Reason: image not found
Abort trap: 6

@droark Could you try building with these changes after updating to the latest homebrew openssl?

jameshilliard avatar Dec 17 '19 10:12 jameshilliard

@jameshilliard - Thanks for looking into this. Which version of macOS are you running? I recently upgraded my Mac and am now on 10.15.2. I'm getting some compile errors. I can fire up a 10.14 VM. I just wanted to get your info first.

droark avatar Dec 30 '19 00:12 droark

I was trying to get this to work on 10.14 but was having some build issues(that seem unrelated to openssl), the last release was built on 10.13 right? Can you try building on a 10.13 system?

jameshilliard avatar Dec 30 '19 00:12 jameshilliard

Okay. I fired up and updated my 10.13 VM. I see the following Qt issue.

clang++ -headerpad_max_install_names -stdlib=libc++ -mmacosx-version-min=10.7 -arch x86_64 -single_module -dynamiclib -compatibility_version	4.8 -current_version	4.8.7 -install_name	/Users/doug/Projects/armory-james/osxbuild/workspace/install/qt/lib/QtNetwork.framework/Versions/4/QtNetwork -o QtNetwork .obj/release-shared/qftp.o .obj/release-shared/qhttp.o .obj/release-shared/qhttpnetworkheader.o .obj/release-shared/qhttpnetworkrequest.o .obj/release-shared/qhttpnetworkreply.o .obj/release-shared/qhttpnetworkconnection.o .obj/release-shared/qhttpnetworkconnectionchannel.o .obj/release-shared/qnetworkaccessauthenticationmanager.o .obj/release-shared/qnetworkaccessmanager.o .obj/release-shared/qnetworkaccesscache.o .obj/release-shared/qnetworkaccessbackend.o .obj/release-shared/qnetworkaccessdebugpipebackend.o .obj/release-shared/qnetworkaccessfilebackend.o .obj/release-shared/qnetworkaccesscachebackend.o .obj/release-shared/qnetworkaccessftpbackend.o .obj/release-shared/qnetworkaccesshttpbackend.o .obj/release-shared/qnetworkcookie.o .obj/release-shared/qnetworkcookiejar.o .obj/release-shared/qnetworkrequest.o .obj/release-shared/qnetworkreply.o .obj/release-shared/qnetworkreplyimpl.o .obj/release-shared/qnetworkreplydataimpl.o .obj/release-shared/qnetworkreplyfileimpl.o .obj/release-shared/qabstractnetworkcache.o .obj/release-shared/qnetworkdiskcache.o .obj/release-shared/qhttpthreaddelegate.o .obj/release-shared/qhttpmultipart.o .obj/release-shared/qnetworksession.o .obj/release-shared/qnetworkconfigmanager.o .obj/release-shared/qnetworkconfiguration.o .obj/release-shared/qnetworkconfigmanager_p.o .obj/release-shared/qbearerengine.o .obj/release-shared/qbearerplugin.o .obj/release-shared/qsharednetworksession.o .obj/release-shared/qauthenticator.o .obj/release-shared/qhostaddress.o .obj/release-shared/qhostinfo.o .obj/release-shared/qurlinfo.o .obj/release-shared/qnetworkproxy.o .obj/release-shared/qnetworkinterface.o .obj/release-shared/qhostinfo_unix.o .obj/release-shared/qnetworkinterface_unix.o .obj/release-shared/qnetworkproxy_mac.o .obj/release-shared/qabstractsocketengine.o .obj/release-shared/qhttpsocketengine.o .obj/release-shared/qsocks5socketengine.o .obj/release-shared/qabstractsocket.o .obj/release-shared/qtcpsocket.o .obj/release-shared/qudpsocket.o .obj/release-shared/qtcpserver.o .obj/release-shared/qlocalsocket.o .obj/release-shared/qlocalserver.o .obj/release-shared/qnativesocketengine.o .obj/release-shared/qnativesocketengine_unix.o .obj/release-shared/qlocalsocket_unix.o .obj/release-shared/qlocalserver_unix.o .obj/release-shared/qssl.o .obj/release-shared/qsslcertificate.o .obj/release-shared/qsslconfiguration.o .obj/release-shared/qsslcipher.o .obj/release-shared/qsslerror.o .obj/release-shared/qsslkey.o .obj/release-shared/qsslsocket.o .obj/release-shared/qsslsocket_openssl.o .obj/release-shared/qsslsocket_openssl_symbols.o .obj/release-shared/moc_qhttpnetworkreply_p.o .obj/release-shared/moc_qnetworkaccesscache_p.o .obj/release-shared/moc_qnetworkaccessbackend_p.o .obj/release-shared/moc_qnetworkaccessdebugpipebackend_p.o .obj/release-shared/moc_qnetworkaccesshttpbackend_p.o .obj/release-shared/moc_qnetworkaccessfilebackend_p.o .obj/release-shared/moc_qnetworkaccessftpbackend_p.o .obj/release-shared/moc_qnetworkcookiejar.o .obj/release-shared/moc_qnetworkreply.o .obj/release-shared/moc_qabstractnetworkcache.o .obj/release-shared/moc_qnetworkdiskcache.o .obj/release-shared/moc_qhttpthreaddelegate_p.o .obj/release-shared/moc_qhttpmultipart.o .obj/release-shared/moc_qnetworkconfigmanager_p.o .obj/release-shared/moc_qnetworksession_p.o .obj/release-shared/moc_qbearerplugin_p.o .obj/release-shared/moc_qhostinfo_p.o .obj/release-shared/moc_qabstractsocketengine_p.o .obj/release-shared/moc_qhttpsocketengine_p.o .obj/release-shared/moc_qsocks5socketengine_p.o .obj/release-shared/moc_qtcpsocket.o .obj/release-shared/moc_qudpsocket.o .obj/release-shared/moc_qnativesocketengine_p.o  -F/Users/doug/Projects/armory-james/osxbuild/workspace/unpackandbuild/qt-everywhere-opensource-src-4.8.7/lib -L/usr/local/opt/openssl/lib -L/Users/doug/Projects/armory-james/osxbuild/workspace/unpackandbuild/qt-everywhere-opensource-src-4.8.7/lib -framework QtCore -L/usr/local/opt/openssl/lib -L/Users/doug/Projects/armory-james/osxbuild/workspace/unpackandbuild/qt-everywhere-opensource-src-4.8.7/lib -lz -framework SystemConfiguration -framework CoreFoundation -framework CoreServices 
Undefined symbols for architecture x86_64:
  "_ASN1_INTEGER_get", referenced from:
      QSslCertificate::version() const in qsslcertificate.o
     (maybe you meant: __Z18q_ASN1_INTEGER_getP14asn1_string_st)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [../../lib/QtNetwork.framework/QtNetwork] Error 1
make[1]: *** [release] Error 2

droark avatar Dec 30 '19 02:12 droark

Did you update homebrew/openssl to the latest version as well?

jameshilliard avatar Dec 30 '19 02:12 jameshilliard

Ahhh, yeah, I forgot to update all that. Getting closer. I can build but now I have a sip issue when I attempt to start Armory. I feel like I've seen this before and have just forgotten how to resolve it.

Dougs-Mac:MacOS doug$ ./Armory --testnet
Traceback (most recent call last):
  File "/Users/doug/Projects/armory-james/osxbuild/workspace/Armory.app/Contents/MacOS/py/usr/local/lib/armory/ArmoryQt.py", line 36, in <module>
    from PyQt4.QtCore import *
ImportError: No module named sip

While we're at it, one good thing to do would be to mod the compile steps before this is pulled. For example, I had to run brew install python@2 in order to get back Python 2.x. I'm guessing there will be at least one more before this is all over.

droark avatar Dec 30 '19 04:12 droark

Does it work if you take just the 2 openssl qt4 patches I added without any of the other changes?

jameshilliard avatar Dec 30 '19 05:12 jameshilliard

@droark I made a minimal openssl patch in #613.

jameshilliard avatar Dec 30 '19 07:12 jameshilliard