Browse Source

Merge pull request #3750 from gavinandresen/osx_minversion

Require OSX 10.6, 64-bit
0.10
Gavin Andresen 11 years ago
parent
commit
68c97fe110
  1. 44
      doc/build-osx.md
  2. 14
      doc/release-process.md
  3. 8
      share/qt/Info.plist.in
  4. 29
      share/qt/clean_mac_info_plist.py

44
doc/build-osx.md

@ -5,8 +5,9 @@ This guide will show you how to build bitcoind(headless client) for OSX.
Notes Notes
----- -----
* Tested on OS X 10.5 through 10.9 on Intel processors only. PPC is not * Tested on OS X 10.6 through 10.9 on 64-bit Intel processors only.
supported because it is big-endian. Older OSX releases or 32-bit processors are no longer supported.
* All of the commands should be executed in a Terminal application. The * All of the commands should be executed in a Terminal application. The
built-in one is located in `/Applications/Utilities`. built-in one is located in `/Applications/Utilities`.
@ -47,6 +48,10 @@ Installing the dependencies using MacPorts is very straightforward.
sudo port install boost db48@+no_java openssl miniupnpc autoconf pkgconfig automake sudo port install boost db48@+no_java openssl miniupnpc autoconf pkgconfig automake
Optional: install Qt4
sudo port install qt4-mac qrencode protobuf-cpp
### Building `bitcoind` ### Building `bitcoind`
1. Clone the github tree to get the source code and go into the directory. 1. Clone the github tree to get the source code and go into the directory.
@ -54,7 +59,7 @@ Installing the dependencies using MacPorts is very straightforward.
git clone git@github.com:bitcoin/bitcoin.git bitcoin git clone git@github.com:bitcoin/bitcoin.git bitcoin
cd bitcoin cd bitcoin
2. Build bitcoind: 2. Build bitcoind (and Bitcoin-Qt, if configured):
./autogen.sh ./autogen.sh
./configure ./configure
@ -102,35 +107,33 @@ Rerunning "openssl version" should now return the correct version.
Creating a release build Creating a release build
------------------------ ------------------------
You can ignore this section if you are building `bitcoind` for your own use.
A bitcoind binary is not included in the Bitcoin-Qt.app bundle. You can ignore bitcoind/bitcoin-cli binaries are not included in the Bitcoin-Qt.app bundle.
this section if you are building `bitcoind` for your own use.
If you are building `bitcoind` for others, your build machine should be set up If you are building `bitcoind` or `Bitcoin-Qt` for others, your build machine should be set up
as follows for maximum compatibility: as follows for maximum compatibility:
All dependencies should be compiled with these flags: All dependencies should be compiled with these flags:
-mmacosx-version-min=10.5 -arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.6
-arch x86_64
-isysroot $(xcode-select --print-path)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk
For MacPorts, that means editing your macports.conf and setting For MacPorts, that means editing your macports.conf and setting
`macosx_deployment_target` and `build_arch`: `macosx_deployment_target` and `build_arch`:
macosx_deployment_target=10.5 macosx_deployment_target=10.6
build_arch=i386 build_arch=x86_64
... and then uninstalling and re-installing, or simply rebuilding, all ports. ... and then uninstalling and re-installing, or simply rebuilding, all ports.
As of December 2012, the `boost` port does not obey `macosx_deployment_target`. As of December 2012, the `boost` port does not obey `macosx_deployment_target`.
Download `http://gavinandresen-bitcoin.s3.amazonaws.com/boost_macports_fix.zip` Download `http://gavinandresen-bitcoin.s3.amazonaws.com/boost_macports_fix.zip`
for a fix. Some ports also seem to obey either `build_arch` or for a fix.
`macosx_deployment_target`, but not both at the same time. For example, building
on an OS X 10.6 64-bit machine fails. Official release builds of Bitcoin-Qt are
compiled on an OS X 10.6 32-bit machine to workaround that problem.
Once dependencies are compiled, creating `Bitcoin-Qt.app` is easy:
make -f Makefile.osx RELEASE=1 Once dependencies are compiled, see release-process.md for how the Bitcoin-Qt.app
bundle is packaged and signed to create the .dmg disk image that is distributed.
Running Running
------- -------
@ -145,10 +148,13 @@ commands:
chmod 600 "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf" chmod 600 "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"
When next you run it, it will start downloading the blockchain, but it won't When next you run it, it will start downloading the blockchain, but it won't
output anything while it's doing this. This process may take several hours. output anything while it's doing this. This process may take several hours;
you can monitor its process by looking at the debug.log file, like this:
tail -f $HOME/Library/Application\ Support/Bitcoin/debug.log
Other commands: Other commands:
./bitcoind --help # for a list of command-line options.
./bitcoind -daemon # to start the bitcoin daemon. ./bitcoind -daemon # to start the bitcoin daemon.
./bitcoind help # When the daemon is running, to get a list of RPC commands ./bitcoin-cli --help # for a list of command-line options.
./bitcoin-cli help # When the daemon is running, to get a list of RPC commands

14
doc/release-process.md

@ -103,21 +103,23 @@ repackage gitian builds for release as stand-alone zip/tar/installer exe
**Perform Mac build:** **Perform Mac build:**
OSX binaries are created by Gavin Andresen on a 32-bit, OSX 10.6 machine. OSX binaries are created by Gavin Andresen on a 64-bit, OSX 10.6 machine.
qmake RELEASE=1 USE_UPNP=1 USE_QRCODE=1 bitcoin-qt.pro ./autogen.sh
SDK=$(xcode-select --print-path)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk
CXXFLAGS="-mmacosx-version-min=10.6 -isysroot $SDK" ./configure --enable-upnp-default
make make
export QTDIR=/opt/local/share/qt4 # needed to find translations/qt_*.qm files export QTDIR=/opt/local/share/qt4 # needed to find translations/qt_*.qm files
T=$(contrib/qt_translations.py $QTDIR/translations src/qt/locale) T=$(contrib/qt_translations.py $QTDIR/translations src/qt/locale)
python2.7 share/qt/clean_mac_info_plist.py export CODESIGNARGS='--keychain ...path_to_keychain --sign "Developer ID Application: BITCOIN FOUNDATION, INC., THE"'
python2.7 contrib/macdeploy/macdeployqtplus Bitcoin-Qt.app -add-qt-tr $T -dmg -fancy contrib/macdeploy/fancy.plist python2.7 contrib/macdeploy/macdeployqtplus Bitcoin-Qt.app -sign -add-qt-tr $T -dmg -fancy contrib/macdeploy/fancy.plist
Build output expected: Bitcoin-Qt.dmg Build output expected: Bitcoin-Qt.dmg
###Next steps: ###Next steps:
* Code-sign Windows -setup.exe (in a Windows virtual machine) and * Code-sign Windows -setup.exe (in a Windows virtual machine using signtool)
OSX Bitcoin-Qt.app (Note: only Gavin has the code-signing keys currently) Note: only Gavin has the code-signing keys currently.
* upload builds to SourceForge * upload builds to SourceForge

8
share/qt/Info.plist.in

@ -2,6 +2,14 @@
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9"> <plist version="0.9">
<dict> <dict>
<key>LSMinimumSystemVersion</key>
<string>10.6.0</string>
<key>LSArchitecturePriority</key>
<array>
<string>x86_64</string>
</array>
<key>CFBundleIconFile</key> <key>CFBundleIconFile</key>
<string>bitcoin.icns</string> <string>bitcoin.icns</string>

29
share/qt/clean_mac_info_plist.py

@ -1,29 +0,0 @@
#!/usr/bin/env python
# Jonas Schnelli, 2013
# make sure the Bitcoin-Qt.app contains the right plist (including the right version)
# fix made because of serval bugs in Qt mac deployment (https://bugreports.qt-project.org/browse/QTBUG-21267)
from string import Template
from datetime import date
bitcoinDir = "./";
inFile = bitcoinDir+"/share/qt/Info.plist"
outFile = "Bitcoin-Qt.app/Contents/Info.plist"
version = "unknown";
fileForGrabbingVersion = bitcoinDir+"bitcoin-qt.pro"
for line in open(fileForGrabbingVersion):
lineArr = line.replace(" ", "").split("=");
if lineArr[0].startswith("VERSION"):
version = lineArr[1].replace("\n", "");
fIn = open(inFile, "r")
fileContent = fIn.read()
s = Template(fileContent)
newFileContent = s.substitute(VERSION=version,YEAR=date.today().year)
fOut = open(outFile, "w");
fOut.write(newFileContent);
print "Info.plist fresh created"
Loading…
Cancel
Save