Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BUILDING BITCOIN ARMORY ON THE MAC
- Requirements (tested ones)
- - Mac OS X 10.6.7 (MacOSXUpdCombo10.6.7.dmg)
- - Xcode 4.2 (xcode_4.2_and_ios_5_sdk_for_snow_leopard.dmg)
- Screenshots:
- http://imageshack.us/g/717/screenshot20120201at113.png/
- Dependencies:
- OS X versions 10.5 and greater ship with python, zope and twisted installed.
- (see http://twistedmatrix.com/trac/wiki/Downloads)
- Xcode 4 installs git by default (see /Developer/usr/bin).
- How to build:
- cd ~
- git clone git://github.com/etotheipi/BitcoinArmory.git
- cd ~/BitcoinArmory
- git checkout qtdev
- cd ~/BitcoinArmory/cppForSwig/cryptopp
- make libcryptopp.a
- sudo make install
- cd ~/BitcoinArmory/cppForSwig
- make swig
- Download and install QT:
- http://get.qt.nokia.com/qt/source/qt-mac-cocoa-opensource-4.7.4.dmg
- Download, unpack and build SIP and PyQT4:
- http://www.riverbankcomputing.co.uk/static/Downloads/sip4/sip-4.13.1.tar.gz
- http://www.riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-mac-gpl-4.9.tar.gz
- cd <source dir>
- python configure.py
- make
- sudo make install
- run armory:
- cd ~/BitcoinArmory
- python ArmoryQt.py
- PATCHES (for 02 Feb 2012, supposedly platform-independent)
- [!] UniversalTimer.cpp:1: error: bad value (native) for -march= switch
- You have to remove -march=native from COMPILER_OPTS
- e.g. using /Applications/TextEdit.app/Contents/MacOS/TextEdit Makefile
- [!] 686-apple-darwin10-llvm-g++-4.2: -lcryptopp: linker input file unused because linking not done
- Happens due to using -c and -l together. You should remove $(LIBRARY_OPTS) from compiler lines.
- e.g:
- -$(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) $(LIBRARY_OPTS) UniversalTimer.cpp
- +$(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) UniversalTimer.cpp
- [!] ld: library not found for -lcryptopp
- You should make cryptopp (it comes along with the armory from git).
- cd ~/BitcoinArmory/cppForSwig/cryptopp
- make libcryptopp.a (could take a while)
- sudo make install
- While installing cryptopp: cp: *.so: No such file or directory
- Skip it, it's okay - we don't need *.so, we need *.a.
- [!] Undefined symbols for architecture i386: "_Py_InitModule4"
- Add -lpython2.6 to the linker opts of cppForSwig/Makefile.
- [!] Armory incorrectly determines OSX data path and refuses to run.
- see armoryengine.py:36 and armoryengine.py:775
- OS_WINDOWS = 'win' in opsys.lower()
- OS_LINUX = 'nix' in opsys.lower() or 'nux' in opsys.lower()
- OS_MACOSX = 'mac' in opsys.lower() or 'osx' in opsys.lower()
- There's a mess between 'win' and lowercase 'Darwin'. Use patches below.
- Actual patches:
- 1) Makefile patch:
- --- Makefile.orig Sun Jan 22 05:11:09 2012
- +++ Makefile Thu Feb 2 01:34:41 2012
- @@ -1,6 +1,6 @@
- COMPILER = g++
- #COMPILER_OPTS = -c -g -Wall -D_DEBUG
- -COMPILER_OPTS = -c -march=native -O2 -pipe
- +COMPILER_OPTS = -c -O2 -pipe
- LINKER = g++
- @@ -19,8 +19,10 @@
- ifneq (exists, $(shell [ -d /usr/include/python2.7 ] && echo exists ))
- SWIG_INC = -I/usr/include/python2.6
- + LIBRARY_OPTS = -lcryptopp -lpthread -lpython2.6
- ifneq (exists, $(shell [ -d /usr/include/python2.6 ] && echo exists ))
- SWIG_INC = -I/usr/include/python2.5
- + LIBRARY_OPTS = -lcryptopp -lpthread -lpython2.5
- endif
- endif
- @@ -38,25 +40,25 @@
- # Rules for performing the compilation of each individual object file.
- UniversalTimer.o: UniversalTimer.h UniversalTimer.cpp
- - $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) $(LIBRARY_OPTS) UniversalTimer.cpp
- + $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) UniversalTimer.cpp
- BinaryData.o: BinaryData.h BinaryData.cpp BtcUtils.h
- - $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) $(LIBRARY_OPTS) BinaryData.cpp
- + $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) BinaryData.cpp
- BtcUtils.o: BtcUtils.h BtcUtils.cpp
- - $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) $(LIBRARY_OPTS) BtcUtils.cpp
- + $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) BtcUtils.cpp
- BlockObj.o: BinaryData.h BtcUtils.h BlockObjRef.h BlockObj.h BlockObj.cpp
- - $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) $(LIBRARY_OPTS) BlockObj.cpp
- + $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) BlockObj.cpp
- BlockObjRef.o: BinaryData.h BtcUtils.h BlockObj.h BlockObjRef.h BlockObjRef.cpp
- - $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) $(LIBRARY_OPTS) BlockObjRef.cpp
- + $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) BlockObjRef.cpp
- BlockUtils.o: BlockUtils.h BinaryData.h UniversalTimer.h BlockUtils.cpp
- - $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) $(LIBRARY_OPTS) BlockUtils.cpp
- + $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) BlockUtils.cpp
- EncryptionUtils.o: BtcUtils.h BinaryData.h EncryptionUtils.h EncryptionUtils.cpp
- - $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) $(LIBRARY_OPTS) EncryptionUtils.cpp
- + $(COMPILER) $(COMPILER_OPTS) $(INCLUDE_OPTS) EncryptionUtils.cpp
- CppBlockUtils_wrap.cxx: BlockUtils.h BinaryData.h BlockObj.h BlockObjRef.h UniversalTimer.h BlockUtils.h BlockUtils.cpp CppBlockUtils.i
- swig $(SWIG_OPTS) -outdir ../ -v CppBlockUtils.i
- 2) armoryengine.py patch:
- --- armoryengine.py.orig Sun Jan 22 05:11:09 2012
- +++ armoryengine.py Thu Feb 2 00:24:34 2012
- @@ -106,9 +106,9 @@
- # Get the host operating system
- import platform
- opsys = platform.system()
- -OS_WINDOWS = 'win' in opsys.lower()
- +OS_WINDOWS = 'win32' in opsys.lower() or 'windows' in opsys.lower()
- OS_LINUX = 'nix' in opsys.lower() or 'nux' in opsys.lower()
- -OS_MACOSX = 'mac' in opsys.lower() or 'osx' in opsys.lower()
- +OS_MACOSX = 'darwin' in opsys.lower() or 'osx' in opsys.lower()
- # Figure out the default directories for Satoshi client, and BicoinArmory
- OS_NAME = ''
- @@ -761,21 +761,12 @@
- computed. Access to any information in the blockchain can be found via
- the bdm object.
- """
- + global BTC_HOME_DIR
- if blkfile==None:
- if not USE_TESTNET:
- - if 'win' in opsys.lower():
- - blkfile = os.path.join(os.getenv('APPDATA'), 'Bitcoin', 'blk0001.dat')
- - if 'nix' in opsys.lower() or 'nux' in opsys.lower():
- - blkfile = os.path.join(os.getenv('HOME'), '.bitcoin', 'blk0001.dat')
- - if 'mac' in opsys.lower() or 'osx' in opsys.lower():
- - blkfile = os.path.expanduser('~/Library/Application Support/Bitcoin/blk0001.dat')
- + blkfile = os.path.join(BTC_HOME_DIR, 'blk0001.dat')
- else:
- - if 'win' in opsys.lower():
- - blkfile = os.path.join(os.getenv('APPDATA'), 'Bitcoin/testnet', 'blk0001.dat')
- - if 'nix' in opsys.lower() or 'nux' in opsys.lower():
- - blkfile = os.path.join(os.getenv('HOME'), '.bitcoin/testnet', 'blk0001.dat')
- - if 'mac' in opsys.lower() or 'osx' in opsys.lower():
- - blkfile = os.path.expanduser('~/Library/Application Support/Bitcoin/testnet/blk0001.dat')
- + blkfile = os.path.join(BTC_HOME_DIR, 'testnet', 'blk0001.dat')
- if not os.path.exists(blkfile):
- raise FileExistsError, ('File does not exist: %s' % blkfile)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement