jrlepage (OP)
|
|
May 14, 2013, 12:21:03 PM |
|
Hey fellow Mac users, the past couple of days I went through the process of compiling the newest version of the MNC-qt client for Mac OS X. Lemme tell you, if you don't know what you're doing, it's a tremendous pain in the ass. Have to download a ton of dependencies, the QT SDK and QT Creator IDE, get the project file set up correctly for OS X, then screw around with packaging all of the library files into the .app so that other users don't have to have the dependencies installed. It took me at least 4 hours to figure all this crap out and get a Mac version of mincoin-qt published (link below). All of that being said... if you would like me to put my knowledge to good use and compile a Mac binary of any other alt coin client, either reply here or PM me and I will do so. Bounties/Donations would be VERY MUCH appreciated in whatever currency you have as this process is time intensive, at least for me. I'm including my BTC, LTC, and MNC addresses here since those are the coins I primarily trade in. If you'd rather donate a different coin let me know. P.S. If you're worried about me inserting a trojan or anything like that, all I can tell you is that I'm not that smart, and I guess you'll have to take my word for it. I'm perfectly happy to share the exactly source I use (which will come straight from the coin's dev) and the details of the process, which is quite boring. MinCoin-qt Version 0.6.3.0-g6e015e3-beta for Mac OS X: https://dl.dropboxusercontent.com/u/7405118/MinCoin-Qt_v063.zipDonations: BTC - 1Eq5zJJTcQ9RywuKUjfsYxmEAiS7toQAoQ LTC - LehmtWhrd3TNTgKfyVwSEWNg1ctkwmkWu9 MNC - MRMhVXatmuLxAieaiV4pntMbZrdQCHtUf6
|
|
|
|
jrlepage (OP)
|
|
May 14, 2013, 07:33:33 PM |
|
No Mac users interested in this service? Maybe I should have posted this in a different sub-forum... seems like the Alt Currencies forum is flooded with new posts constantly...
|
|
|
|
shakezula
|
|
May 14, 2013, 07:47:56 PM |
|
Oh PLEASE! I would LOVE an iXCoin and Devcoin QT for Mac!! Even better, tell me your secrets so I can make my own? The only other one I care about would be MinCoin, can you make one for MinCoin too? OH PLEASE PLEASE PLEASE
|
|
|
|
shakezula
|
|
May 14, 2013, 07:49:19 PM |
|
Wow I can't read can I. You did a MinCoin one. Once my wallet synchs, I'll send you a couple. THANK YOU. Will offer more for iX and Dev if you can
|
|
|
|
jrlepage (OP)
|
|
May 14, 2013, 07:50:27 PM |
|
Oh PLEASE! I would LOVE an iXCoin and Devcoin QT for Mac!! Even better, tell me your secrets so I can make my own? The only other one I care about would be MinCoin, can you make one for MinCoin too? OH PLEASE PLEASE PLEASE Hey man Haha no worries and thank you for any donation. Make sure that the MinCoin one works for you before donating... I'm almost positive it will but would hate for you to be disappointed. I will get to work on the other two for you tonight!
|
|
|
|
shakezula
|
|
May 14, 2013, 07:52:09 PM |
|
...details of the procedure would also be wonderful, can't ever learn enough about this and I am working on my own coin (not for profit, test-net only) and would love to eventually compile my own wallet as I'm a Mac too.
|
|
|
|
shakezula
|
|
May 14, 2013, 10:17:52 PM |
|
It works great! Sent you a block of MNC
|
|
|
|
maxpower
|
|
May 15, 2013, 12:19:38 AM |
|
Please do share the details of the process! I've tried to get several of the Qt wallets working on the Mac, and been fairly close with a few of them, but never quite succeeded. I promise I won't find it boring.
|
|
|
|
Coinbuck @ BTCLot
|
|
May 15, 2013, 12:23:47 AM |
|
Remember that you have to trust OP. Binaries can have whatever he wants.
|
|
|
|
jrlepage (OP)
|
|
May 15, 2013, 02:32:18 AM |
|
Please do share the details of the process! I've tried to get several of the Qt wallets working on the Mac, and been fairly close with a few of them, but never quite succeeded. I promise I won't find it boring. I will post the entire process here soon but here's a quick rundown... and Coinbuck you're right, I realize that if I were able I could insert whatever I want into the code prior to compiling. As I said, you'll just have to trust me to some extent - if you can suggest a way that I can prove that there's nothing malicious in the Mac binaries please let me know and I'll be more than happy to comply. All I can do for now is give you my word that I'm not interested in doing something like that. Ok, so brief rundown of how to do this: [Note: Pro tip, when you're in Terminal on a Mac and you don't want to have to type a huge path in, remember you can drag folders or files into the terminal window and it'll automatically put the correct path.]
1) You need to install all of the dependencies on your computer; this includes: - libminiupnpc - openssl - libboost - libdb 4.8 (aka Berkeley DB) [Note: This is NOT the most current version.]
To install those, you'll want to install either MacPorts or HomeBrew (I prefer HomeBrew). These are essentially the Mac equivalent of "apt-get" from the Linux environment and make it easy to install packages. Then just google "homebrew libminiupnpc," etc., to get the correct syntax for installing each library (this is all done via Terminal).
2) You need to download and install the QT SDK version 4.8 and QT Creator 2.5.2. I tried doing this with the latest versions (5.0 and 2.7.3 respectively) and had a bad time.
3) Download the complete source code for the client you want to compile.
4) Open the "xxcoin-qt.pro" file (where "xx" is the name of your coin) in the root directory of the source code with QT Creator.
5) Choose "Build" and "Build xxcoin-qt." (I think I'm glossing over some steps here,... I'll edit with more info when I do the next client.)
6) Find the .app file generated by QT Creator. It should run correctly on *your* computer since you have all the dependencies installed, but it won't run on anyone else's who doesn't have them. If you don't care, then you're done at this point.
7) To make it run on other people's computers without the dependencies, you'll have to right-click the .app file you built, choose "Show Package Contents," and go into the Contents directory. Now take a look in the same directory of the Mac clients you already have (can be my mincoin one, or the official bitcoin or litecoin ones). Notice that your newly built .app is missing the "Frameworks" and "Plugins" directories under "Contents." Copy them straight over from one of the official apps. Also copy over /Contents/Resources/qt.conf to the same location in your app. Notice in /Contents/Resources the file bitcoin.icns which is the icon - you can change that to whatever icon you want.
8) Okay, now you have all the dependencies in your .app but the .app doesn't know to find them there - if you were to give this .app to someone else, it would look for them in the normal places they would be installed if that person was to use HomeBrew or MacPorts to download them. To fix this we need to use a combination of "otool" and "install_name_tool." For example, to check where the app is looking for dependencies, type in terminal:
otool -L /Applications/MinCoin-Qt.app/Contents/MacOS/MinCoin-Qt
This is assuming that you put your newly compiled app into the Applications folder. Change names and locations as needed. You should get a list of all the dependencies and their locations. Now repeat that for one of the already-built clients. Notice the difference? Instead of looking for libminiupnpc, libssl/libcrypto (part of the openssl package), and libboost in absolute paths in their installation directories, the already-built clients are pointing to "@executable_path/../Frameworks/[library file]". This tells the app to look for the library in the Frameworks directory. To make the change you execute the following:
install_name_tool -change [old path] [new path] [application location]
For example, if I were changing the libboost_thread-mt.dylib reference, and my application was in /Applications I would run:
install_name_tool -change /usr/local/lib/libboost_thread-mt.dylib @executable_path/../Frameworks/libboost_thread-mt.dylib /Applications/MinCoin-Qt.app/Contents/MacOS/MinCoin-Qt
(Obviously that example is for fixing the mincoin-qt client - you would change the name for whatever client you are fixing.)
Repeat that for each dylib that otool lists. In the end, otool -L should look identical between your freshly made app and one of the pre-built Mac ones. That's all! I'm sure I left out some stuff, but that's the gist of it.
|
|
|
|
xan_The_Dragon
Sr. Member
Offline
Activity: 322
Merit: 250
I AM A DRAGON
|
|
May 15, 2013, 03:24:47 AM |
|
doesnt sound like a scam at all let me give u this program here
|
MfFMEpgL5Ma9C2yw6iSsSX4QcbSVzjm6iK
|
|
|
grc
Newbie
Offline
Activity: 40
Merit: 0
|
|
May 15, 2013, 04:32:09 AM |
|
Another tip: the locate command can be very helpful when your client doesn't find all the dependencies. Oh PLEASE! I would LOVE an iXCoin and Devcoin QT for Mac!! Even better, tell me your secrets so I can make my own? The only other one I care about would be MinCoin, can you make one for MinCoin too? OH PLEASE PLEASE PLEASE Have you tried this Devcoin client?
|
|
|
|
maxpower
|
|
May 15, 2013, 11:40:27 AM |
|
Please do share the details of the process! I've tried to get several of the Qt wallets working on the Mac, and been fairly close with a few of them, but never quite succeeded. I promise I won't find it boring. I will post the entire process here soon but here's a quick rundown... and Coinbuck you're right, I realize that if I were able I could insert whatever I want into the code prior to compiling. As I said, you'll just have to trust me to some extent - if you can suggest a way that I can prove that there's nothing malicious in the Mac binaries please let me know and I'll be more than happy to comply. All I can do for now is give you my word that I'm not interested in doing something like that. Ok, so brief rundown of how to do this: [...] That's all! I'm sure I left out some stuff, but that's the gist of it. That's fantastic, thank you! I'll give this a try with some of the other wallets as soon as I can. I would love to stop running these in Parallels.
|
|
|
|
jrlepage (OP)
|
|
May 15, 2013, 01:41:03 PM |
|
doesnt sound like a scam at all let me give u this program here
I appreciate your skepticism; if you can suggest a better way for me to provide the Mac client to users without everyone assuming I'm a hacker, I'd appreciate the input. Just curious, do you compile all of your software from source or do you trust anyone to compile software for you?
|
|
|
|
bushstar
|
|
May 15, 2013, 01:45:58 PM |
|
If it helps at all, below is the script I wrote for Feathercoin to copy all the library files into the .app and update the locations. Just change the client name and update the library paths. mkdir Feathercoin-Qt.app/Contents/Frameworks cp -R /Users/User/QtSDK/Desktop/Qt/4.8.1/gcc/lib/QtCore.framework Feathercoin-Qt.app/Contents/Frameworks cp -R /Users/User/QtSDK/Desktop/Qt/4.8.1/gcc/lib/QtGui.framework Feathercoin-Qt.app/Contents/Frameworks cp -R /opt/local/lib/libminiupnpc.8.dylib Feathercoin-Qt.app/Contents/Frameworks cp -R /opt/local/lib/libssl.1.0.0.dylib Feathercoin-Qt.app/Contents/Frameworks cp -R /opt/local/lib/libz.1.dylib Feathercoin-Qt.app/Contents/Frameworks cp -R /opt/local/lib/libz.1.2.7.dylib Feathercoin-Qt.app/Contents/Frameworks cp -R /opt/local/lib/libcrypto.1.0.0.dylib Feathercoin-Qt.app/Contents/Frameworks cp -R /opt/local/lib/db48/libdb_cxx-4.8.dylib Feathercoin-Qt.app/Contents/Frameworks cp -R /opt/local/lib/libboost_system-mt.dylib Feathercoin-Qt.app/Contents/Frameworks cp -R /opt/local/lib/libboost_filesystem-mt.dylib Feathercoin-Qt.app/Contents/Frameworks cp -R /opt/local/lib/libboost_program_options-mt.dylib Feathercoin-Qt.app/Contents/Frameworks cp -R /opt/local/lib/libboost_thread-mt.dylib Feathercoin-Qt.app/Contents/Frameworks install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore Feathercoin-Qt.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui Feathercoin-Qt.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui install_name_tool -id @executable_path/../Frameworks/libminiupnpc.8.dylib Feathercoin-Qt.app/Contents/Frameworks/libminiupnpc.8.dylib install_name_tool -id @executable_path/../Frameworks/libssl.1.0.0.dylib Feathercoin-Qt.app/Contents/Frameworks/libssl.1.0.0.dylib install_name_tool -id @executable_path/../Frameworks/libz.1.dylib Feathercoin-Qt.app/Contents/Frameworks/libz.1.dylib install_name_tool -id @executable_path/../Frameworks/libcrypto.1.0.0.dylib Feathercoin-Qt.app/Contents/Frameworks/libcrypto.1.0.0.dylib install_name_tool -id @executable_path/../Frameworks/libdb_cxx-4.8.dylib Feathercoin-Qt.app/Contents/Frameworks/libdb_cxx-4.8.dylib install_name_tool -id @executable_path/../Frameworks/libboost_system-mt.dylib Feathercoin-Qt.app/Contents/Frameworks/libboost_system-mt.dylib install_name_tool -id @executable_path/../Frameworks/libboost_filesystem-mt.dylib Feathercoin-Qt.app/Contents/Frameworks/libboost_filesystem-mt.dylib install_name_tool -id @executable_path/../Frameworks/libboost_program_options-mt.dylib Feathercoin-Qt.app/Contents/Frameworks/libboost_program_options-mt.dylib install_name_tool -id @executable_path/../Frameworks/libboost_thread-mt.dylib Feathercoin-Qt.app/Contents/Frameworks/libboost_thread-mt.dylib install_name_tool -change /Users/User/QtSDK/Desktop/Qt/4.8.1/gcc/lib/QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore Feathercoin-Qt.app/Contents/MacOs/Feathercoin-Qt install_name_tool -change /Users/User/QtSDK/Desktop/Qt/4.8.1/gcc/lib/QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui Feathercoin-Qt.app/Contents/MacOs/Feathercoin-Qt install_name_tool -change /Users/User/QtSDK/Desktop/Qt/4.8.1/gcc/lib/QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore Feathercoin-Qt.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui install_name_tool -change /opt/local/lib/libminiupnpc.8.dylib @executable_path/../Frameworks/libminiupnpc.8.dylib Feathercoin-Qt.app/Contents/MacOs/Feathercoin-Qt install_name_tool -change /opt/local/lib/libssl.1.0.0.dylib @executable_path/../Frameworks/libssl.1.0.0.dylib Feathercoin-Qt.app/Contents/MacOs/Feathercoin-Qt install_name_tool -change /opt/local/lib/libz.1.dylib @executable_path/../Frameworks/libz.1.dylib Feathercoin-Qt.app/Contents/Frameworks/libcrypto.1.0.0.dylib install_name_tool -change /opt/local/lib/libz.1.dylib @executable_path/../Frameworks/libz.1.dylib Feathercoin-Qt.app/Contents/Frameworks/libssl.1.0.0.dylib install_name_tool -change /opt/local/lib/libcrypto.1.0.0.dylib @executable_path/../Frameworks/libcrypto.1.0.0.dylib Feathercoin-Qt.app/Contents/MacOs/Feathercoin-Qt install_name_tool -change /opt/local/lib/libcrypto.1.0.0.dylib @executable_path/../Frameworks/libcrypto.1.0.0.dylib Feathercoin-Qt.app/Contents/Frameworks/libssl.1.0.0.dylib install_name_tool -change /opt/local/lib/db48/libdb_cxx-4.8.dylib @executable_path/../Frameworks/libdb_cxx-4.8.dylib Feathercoin-Qt.app/Contents/MacOs/Feathercoin-Qt install_name_tool -change /opt/local/lib/libboost_system-mt.dylib @executable_path/../Frameworks/libboost_system-mt.dylib Feathercoin-Qt.app/Contents/MacOs/Feathercoin-Qt install_name_tool -change /opt/local/lib/libboost_system-mt.dylib @executable_path/../Frameworks/libboost_system-mt.dylib Feathercoin-Qt.app/Contents/Frameworks/libboost_filesystem-mt.dylib install_name_tool -change /opt/local/lib/libboost_system-mt.dylib @executable_path/../Frameworks/libboost_system-mt.dylib Feathercoin-Qt.app/Contents/Frameworks/libboost_thread-mt.dylib install_name_tool -change /opt/local/lib/libboost_filesystem-mt.dylib @executable_path/../Frameworks/libboost_filesystem-mt.dylib Feathercoin-Qt.app/Contents/MacOs/Feathercoin-Qt install_name_tool -change /opt/local/lib/libboost_program_options-mt.dylib @executable_path/../Frameworks/libboost_program_options-mt.dylib Feathercoin-Qt.app/Contents/MacOs/Feathercoin-Qt install_name_tool -change /opt/local/lib/libboost_thread-mt.dylib @executable_path/../Frameworks/libboost_thread-mt.dylib Feathercoin-Qt.app/Contents/MacOs/Feathercoin-Qt
|
|
|
|
jrlepage (OP)
|
|
May 15, 2013, 01:50:05 PM |
|
If it help at all below is the script I use with Feathercoin to copy all the library files into the .app and update the locations. Just change the client name and update your library paths.
Very nice bushstar, thank you for this. I probably wasted a good 30 min typing all of that out for the mincoin client. Some people are suggesting that instead of offering compiled versions for Mac for tips, I just publish a complete guide for those interested in compiling themselves, and accept tips. I've pretty much already done that above, but I will try to elaborate on the guide and fill in any missing steps. If you are unable to follow it or would rather not spend the time, and you are willing to trust that I haven't inserted any malicious code, I'm still willing to do the compiling for you. Should have the devcoin and ixCoin clients done later today... If any of this is useful to you, I appreciate tips, but they're obviously not required. This information is out there for those who are willing to spend the time looking, I just hoped I could save people some time and make a little coin in tips. P.S. Some people may have to change some of the information in that script beyond the name of the client. For example, I used QT v. 4.8.3 rather than 4.8.1, and some of the paths in your script refer to /Users/User which would be different for other people depending on their OS X username. Nonetheless, very handy! I'd suggest people check the paths for themselves using otool -L to verify prior to using the script.
|
|
|
|
shakezula
|
|
May 16, 2013, 12:30:10 AM |
|
Thanks bushtar and jrlepage; I'm happy to know more about this too! Can't wait to have a couple more wallets I don't need to run crossover for!
|
|
|
|
shakezula
|
|
May 16, 2013, 12:57:16 AM |
|
Another tip: the locate command can be very helpful when your client doesn't find all the dependencies. Oh PLEASE! I would LOVE an iXCoin and Devcoin QT for Mac!! Even better, tell me your secrets so I can make my own? The only other one I care about would be MinCoin, can you make one for MinCoin too? OH PLEASE PLEASE PLEASE Have you tried this Devcoin client? I haven't, looked for ever for it too, will give it a go!
|
|
|
|
jrlepage (OP)
|
|
May 16, 2013, 03:19:39 AM |
|
Just a quick update: Ran into some issues with the latest Devcoin client. Got it compiled and deployed okay, and it starts up fine, but crashes after a few seconds - appears to be a memory leak. Troubleshooting and will update later. The one problem with writing an all-inclusive guide is that some of these alt coins' source code seem to be more Mac friendly or less Mac friendly depending on their author. Mincoin appears to have been very Mac friendly at the source level - the QT project file already had all kinds of flags set for Macs... Anyway, I'll keep trucking along and update this soon. P.S. The mini-guide above is still valid,... I just need to elaborate on some things like how to install HomeBrew and dependencies, etc. P.P.S. I'd appreciate anyone who uses the Mincoin-qt client I compiled for a few days posting back here to vouch that there was no Trojan inserted by me stealing your coin or anything. Thanks!
|
|
|
|
jubalix
Legendary
Offline
Activity: 2632
Merit: 1023
|
|
May 16, 2013, 03:46:57 AM |
|
On the list for MAC would be
TRC client IXC client BCQ client GLD client FTC Client CNC client
but the how to is even better than this!!!
|
|
|
|
|