[DEV] MacOS - Build Feathercoind + Feathercoin-Qt v0.9.3.1 [COMPLETED]
The last Apple GCC was v4.2.1. Newer releases directly from the GCC developers don’t support some Apple specific things which are required to compile Qt. It’s still possible to pull v4.2.1 from an old Xcode release and install it manually.
Thanks @ghostlander - You being a developer…do you have any recommendations ?
I’ve gone as far back as OSX 10.9.5 inside Vmware.
I followed Lizhi’s instructions for building Feathercoin-qt …
without installing xcode, I was able to build everything, the build log looked similar to when you do it on Ubuntu or Centos (minimal warnings, or the warnings I’m used to seeing)
Still though, QT crashes with a Segfault 11.
feathercoind runs perfectly, starts syncing the blockchain and all.
So I’ve managed to build the Wallet on MacOS 10.9.5
see screenshot here: https://i.snag.gy/ap6m4X.jpg
I’ve even managed to create a Feathercoin-qt.app (see the screenshot) - the APP is 61MB and I believe it has all the files needed for it to run…unfortunately running this on another mac, I get this error:
Dyld Error Message: Library not loaded: libboost_system-mt.dylib Referenced from: /Users/Apple2/Desktop/Feathercoin-Qt-0.9.3.1.app/Contents/Frameworks/libboost_filesystem-mt.dylib Reason: image not found
if I use otool on the qt binary it shows me what dylibs Feathercoin-QT is looking for.
Mac-Admin:~ admin$ otool -L Feathercoin-Qt-0.9.3.1.app/Contents/MacOs/feathercoin-qt Feathercoin-Qt-0.9.3.1.app/Contents/MacOs/feathercoin-qt: @loader_path/../Frameworks/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0) @loader_path/../Frameworks/libboost_system-mt.dylib (compatibility version 0.0.0, current version 0.0.0) @loader_path/../Frameworks/libboost_filesystem-mt.dylib (compatibility version 0.0.0, current version 0.0.0) @loader_path/../Frameworks/libboost_program_options-mt.dylib (compatibility version 0.0.0, current version 0.0.0) @loader_path/../Frameworks/libboost_thread-mt.dylib (compatibility version 0.0.0, current version 0.0.0) @loader_path/../Frameworks/libboost_chrono-mt.dylib (compatibility version 0.0.0, current version 0.0.0) @loader_path/../Frameworks/QtNetwork (compatibility version 5.5.0, current version 5.5.1) @loader_path/../Frameworks/QtPrintSupport (compatibility version 5.5.0, current version 5.5.1) @loader_path/../Frameworks/QtWidgets (compatibility version 5.5.0, current version 5.5.1) @loader_path/../Frameworks/QtGui (compatibility version 5.5.0, current version 5.5.1) @loader_path/../Frameworks/QtCore (compatibility version 5.5.0, current version 5.5.1) /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1056.16.0) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 48.0.0) /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1265.21.0) @loader_path/../Frameworks/libprotobuf.11.dylib (compatibility version 12.0.0, current version 12.0.0) @loader_path/../Frameworks/libdb_cxx-4.8.dylib (compatibility version 0.0.0, current version 0.0.0) @loader_path/../Frameworks/libqrencode.3.dylib (compatibility version 8.0.0, current version 8.4.0) @loader_path/../Frameworks/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0) @loader_path/../Frameworks/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 855.17.0) /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 59.0.0) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
The @loader_path points to my Frameworks directory inside the app.
Fyi I had to build the Feathercoin-qt.App Manually as doing a “make deploy” shows the below
Mac-Admin:FTC0931 admin$ make deploy ./contrib/macdeploy/macdeployqtplus Feathercoin-Qt.app -add-qt-tr da,de,es,hu,ru,uk,zh_CN,zh_TW -dmg -fancy ./contrib/macdeploy/fancy.plist -verbose 2 + Removing old dist folder + + Copying source bundle + + Deploying frameworks + Processing libboost_system.dylib ... Error: No file at libboost_system.dylib Traceback (most recent call last): File "./contrib/macdeploy/macdeployqtplus", line 583, in <module> sys.exit(ret) NameError: name 'ret' is not defined make: *** [Feathercoin-Qt.dmg] Error 1
I swear I was able to create a static 160MB file on Centos for Feathercoin that included everything needed for it to run as “portable” or “standalone” I just cant remember the switches…
LDFLAGS=-static doesn’t seem to do anything.
Ok so I believe …as per this http://stackoverflow.com/questions/5259249/creating-static-mac-os-x-c-build
that we cannot use -static since OSX doesnt like/support it.
Can we get away without the static build?
Finally!! after many moons and sleepless nights, I’ve done it!!
I have a Static Binary that worked on a clean MacOS Sierra install…no other dependancies or software were installed on the test machine.
This was build with MacOS Sierra, Boost155, Protobuf260, QT 5.7.0.
Full 64-bit, none of this going back generations of OS’s just to get it to build…No nonsense from Acid!
EDIT========The below link is for the Feathercoin-Qt.app file only.
Download link here:
Love a good screenshot!
I’ve also managed to get the “Make Deploy” working.
You have to edit a few files since it’s looking for things “Bitcoin” related (eg. Bitcoin-qt becomes Feathercoin-qt…etc)
However…after some hackery I can now produce a DMG file with a working Feathercoin-Qt App. YAY!!
I just downloaded GIMP so I can change the “To install Bitcoin…” Text
This is ready for testing I believe.
Random (might be useful) points:
Built Feathercoin 0.9.3.1 from source here: https://github.com/FeatherCoin/Feathercoin/tree/0.9.3.1
major hackery with the Makefiles to get things like C++11 support for QT 5.7
Built it under MacOS Sierra 10.12.1
Yes I did go back to Mavricks 10.9 out of pure frustration at one point, I had 2 build stations (VMs) at work and 1 at home (MacBookPro) , each with different versions of OSX…trying different things…the final working build came from my OSX Sierra MacBookPro
Hackery for “Make Deploy” - wasn’t much, I had a info.plist file ready to copy into the Feathercoin-Qt.app as the “Make deploy” is running …otherwise the .App file gets built and doesn’t work because it’s looking for the executable binary “Bitcoin-Qt”
Edited the background.png file in the contrib/macdeploy folder - just added the Feathercoin name instead of Bitcoin
on OSX Sierra 10.12 you’ll have to use QT 5.7.0 since previous versions are not supported. You’ll get an error “QT Requires C++11 Support” . - thats when the Makefile Hackery for /src/qt/Makefile comes in…while other Makefiles were left alone
You’ll also get the same error for macdockiconhandler and you have to go and add the same flags you did for QT CXXFLAGS on OBJCXXFLAGS
-std=c++11 <<< add that
- LevelDB Makefile was edited to include that flag
- Last ./configure command looked like this:
acids-MBP:FTC0931 acid$ ./configure --disable-upnp-default --disable-tests --without-miniupnpc LDFLAGS="-L/usr/local/opt/berkeley-db4/lib/ -L/usr/local/opt/qrencode/lib/" CPPFLAGS=" -I/usr/local/opt/berkeley-db4/include/ -I/usr/local/opt/qrencode/include/" --with-gui=qt5 --with-qrcode=yes --with-boost=/usr/local/Cellar/boost155/1.55.0_1
Anyways, I digress… Here’s the goods.
Link to DMG:
Love a good screen shot:
Anyone testing this, feel free to post back in this thread.
Full blockchain sync on test machine in 4 hours. Will pass some FTC back and fourth between my dev machine and the test machine.
Test Machine is a MacBook Pro with a Fresh Install of MacOS Sierra. No dependancies or libs were installed, the DMG opens and the app installs successfully. A complete static build.
Both the wallet on my dev machine and test machine synced correctly.
I sent some FTC to my dev machine here:
I’d like to get a few more test machines running this before we push it to Feathercoin.com for downloading.
Awesome! Im not on a mac but thanks for the effort put into this!!
sradics last edited by | Tip sradics
@aciddude said in [DEV] MacOS - Build Feathercoind + Feathercoin-Qt v0.9.3.1 [COMPLETED]:
Just did a test with https://ufile.io/26924 and it was working fine for me on Mac-OS Sierra - MacBook (Retina, 12-inch, Early 2015).
Installer worked without problems and Feathercoin-QT GUI started fast. Did 1 outgoing transaction and one incoming transaction and both worked well and fast.
So - now I’m running v0.9.3.1 - GREAT JOB
@Wellenreiter has now created the release version 0.9.6. This should just compile the same as 0.3.1 and 0.9.3.2 - the differenced are documentation.
Once were happy that compiles and runs as version 0.9.3.2, the test look positive to produce the official build.
Version 0.9.6 contains a number of significant improvements, particularly in look and feel.
Actually it is 0.9.3.6
We are planning the release for the second half of January, if all goes well
Should have just edited it, i’m still rough.
It needs to be 0.9.6 otherwise people will still use 0.9.5 because it is a bigger number !!!
Sorry didn’t notice, the slight difference, when i checked it.
ok, branch number is 0.9.6 now
This work has been documented to the best of my ability, see here:
Link to DMG:
Anyone testing this, feel free to post back in this thread.
Have a spare few moments so was trying to give this a run for it’s money but the file is no longer available, can anyone provide me with a working link for this?