{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf510 {\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fmodern\fcharset0 Courier;\f2\fswiss\fcharset0 ArialMT; \f3\fnil\fcharset0 Menlo-Regular;\f4\fnil\fcharset0 LucidaGrande;} {\colortbl;\red255\green255\blue255;\red186\green0\blue0;\red14\green14\blue255;\red245\green245\blue245; \red246\green246\blue246;} {\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}} {\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} \margl1440\margr1440\vieww14740\viewh11840\viewkind0 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc \f0\b\fs28 \cf0 Building BOINC Client and Manager on Macintosh OSX\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \b0\fs24 \cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc \cf0 Written by Charlie Fenton\ Last updated 4/19/13\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 \ This document applies to BOINC version 7.0.42 and later. It has instructions for building the BOINC Client and Manager for Macintosh OSX. Information for building science project applications to run under BOINC on Macintosh OSX can be found {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/BuildMacApp"}}{\fldrslt here}}. \ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \b \cf0 Note: \b0 the information in this document changes from time to time for different versions of BOINC. For any version of BOINC source files, the corresponding version of this document can be found in the source tree at:\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \f1\fs26 \cf0 boinc/mac_build/HowToBuildBOINC_XCode.rtf\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \f0\fs24 \cf0 \ Contents of this document:\ \'95 Important requirements for building BOINC software for the Mac.\ \'95 Cross-Platform Development.\ \'95 Building BOINC Manager with embedded BOINC Client.\ \'95 Building BOINC Manager Installer.\ \'95 Code Signing the BOINC Manager Installer and Uninstaller\ \'95 Debugging and BOINC security.\ \'95 Debugging into wxWidgets.\ \'95 Installing and setting up Xcode.\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc \b\fs28 \cf0 Important requirements for building BOINC software for the Mac \b0\fs24 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 \ \pard\pardeftab720\sa260 \cf0 Building BOINC for Macintosh OS X is complicated by the fact that Mac OS X is actually 2 different platforms:\ \pard\tx220\tx720\pardeftab720\li720\fi-720 \ls1\ilvl0\cf0 {\listtext \'95 } \b i686-apple-darwin \b0 : 32-bit intel processors running OS 10.4.0 and above\ {\listtext \'95 } \b x86_64-apple-darwin \b0 : 64-bit Intel processors running OS 10.5.0 and above\ \pard\pardeftab720\sa260 \cf0 As of version 6.13.0, BOINC does not support Macintosh PowerPC processors.\ Although BOINC supports 64-bit Intel project applications on Mac OS 10.5.0 and above, the only part of the BOINC client package built as a 64-bit executable is the screensaver coordinator for OS 10.6.x and later. The BOINC libraries also include a 64-bit build so that they can be linked with 64-bit project applications.\ You need to take certain steps to ensure that you use only APIs that are available in all the OS versions BOINC supports for each architecture. The best way to accomplish this is to use a single development system running OS 10.7.x or OS 10.8.x and cross-compile for the various platforms. The remainder of this document describes that process.\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \cf0 \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural \b \cf0 The above requirements apply not only to BOINC itself, but also to the WxWidgets, c-ares, cURL, openSSL, freetype, ftgl and SQLite3 libraries, as well as all project applications \b0 . \ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 Be sure to follow the directions in this document to ensure that these requirements are met.\ \ \pard\pardeftab720\sa260 \cf0 Starting with version 6.10.58, the BOINC Client supports only Mac OS X 10.4.0 and later. This allows it to be built with XCode 3.2 and later, which do not support the Mac OS 10.3.9 SDK.\ \pard\pardeftab720\sa260\qc \b\fs28 \cf0 Cross-Platform Development \f2\fs32 \ \pard\pardeftab720\sa260 \f0\b0\fs24 \cf0 Apple provides the tools necessary to cross-compile for both BOINC Mac platforms on any Mac running OS 10.7.x or OS 10.8.x.\ You get these tools, including the GCC compilers and system library header files, by installing the Xcode Tools package. \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural \b \cf0 Building BOINC now requires Xcode Tools version 3.2 or later but Xcode 4.3 or later is recommended. \b0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 \ \pard\pardeftab720\sa260 \cf0 You can download Xcode 4.3 or Xcode 4.4 from Apple's App Store (it is large: about 2 GB). If you are a member of Apple's Mac Developer Program, you can also download it from Apple's web site: {\field{\*\fldinst{HYPERLINK "http://developer.apple.com"}}{\fldrslt \f1\fs26 http://developer.apple.com}}\cf2 .\cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 Source files are now archived using git. For details, see:\ {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/SourceCodeGit"}}{\fldrslt \f1\fs26 http://boinc.berkeley.edu/trac/wiki/SourceCodeGit}}\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc \b\fs28 \cf0 Building BOINC Manager with embedded Core Client\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \b0\fs24 \cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \cf0 BOINC depends on six third-party libraries: wxMac-2.8.10, c-ares-1.9.1, curl-7.26.0, openssl-1.0.1c, freetype-2.4.10, ftgl-2.1.3~rc5 and sqlite3.7.14.1. You can obtain the source files from the following URLs:\ \ wxMac-2.8.10 (needed only if you are building the BOINC Manager):\ {\field{\*\fldinst{HYPERLINK "http://www.wxwidgets.org"}}{\fldrslt \f1\fs26 http://www.wxwidgets.org}} \f1\fs26 \ \f0\fs24 {\field{\*\fldinst{HYPERLINK "http://prdownloads.sourceforge.net/wxwindows/wxMac-2.8.10.tar.gz"}}{\fldrslt \f1\fs26 http://prdownloads.sourceforge.net/wxwindows/wxMac-2.8.10.tar.gz}} \f1\fs26 \ \f0\fs24 \ sqlite3.7.14.1 (needed only if you are building the BOINC Manager):\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \f1 \cf0 {\field{\*\fldinst{HYPERLINK "http://www.sqlite.org/"}}{\fldrslt \fs26 http://www.sqlite.org/}} \fs26 \ \fs24 {\field{\*\fldinst{HYPERLINK "http://www.sqlite.org/sqlite-autoconf-3071401.tar.gz"}}{\fldrslt \fs26 http://www.sqlite.org/sqlite-autoconf-3071401.tar.gz}} \fs26 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \f0\fs24 \cf0 \ curl-7.26.0:\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \f1\fs26 \cf0 {\field{\*\fldinst{HYPERLINK "http://curl.haxx.se"}}{\fldrslt http://curl.haxx.se}}\ {\field{\*\fldinst{HYPERLINK "http://curl.haxx.se/download/curl-7.26.0.tar.gz"}}{\fldrslt http://curl.haxx.se/download/curl-7.26.0.tar.gz}}\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \f0\fs24 \cf0 c-ares-1.9.1 (used by curl):\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \f1\fs26 \cf0 {\field{\*\fldinst{HYPERLINK "http://daniel.haxx.se/projects/c-ares/"}}{\fldrslt http://daniel.haxx.se/projects/c-ares/}}\ {\field{\*\fldinst{HYPERLINK "http://c-ares.haxx.se/download/c-ares-1.9.1.tar.gz"}}{\fldrslt http://c-ares.haxx.se/download/c-ares-1.9.1.tar.gz}}\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \f0\fs24 \cf0 openssl-1.0.1c:\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \f1\fs26 \cf0 {\field{\*\fldinst{HYPERLINK "http://www.openssl.org/"}}{\fldrslt http://www.openssl.org/}}\ {\field{\*\fldinst{HYPERLINK "http://www.openssl.org/source/openssl-1.0.1c.tar.gz"}}{\fldrslt http://www.openssl.org/source/openssl-1.0.1c.tar.gz}}\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \f0\fs24 \cf0 freetype-2.4.10 (needed only if you are building the BOINC default screensaver or a project screensaver):\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \f1\fs26 \cf0 {\field{\*\fldinst{HYPERLINK "http://www.freetype.org/"}}{\fldrslt \f3\fs22 \cf3 \CocoaLigature0 http://www.freetype.org/}} \f3\fs22 \cf3 \CocoaLigature0 \ {\field{\*\fldinst{HYPERLINK "http://sourceforge.net/projects/freetype/files/freetype2/2.4.10/freetype-2.4.10.tar.bz2"}}{\fldrslt http://sourceforge.net/projects/freetype/files/freetype2/2.4.10/freetype-2.4.10.tar.bz2}} \f0\fs24 \cf0 \CocoaLigature1 \ \ ftgl-2.1.3~rc5 (needed only if you are building the BOINC default screensaver or a project screensaver):\ \f1\fs26 {\field{\*\fldinst{HYPERLINK "http://sourceforge.net/projects/ftgl"}}{\fldrslt \f3\fs22 \cf3 \CocoaLigature0 http://sourceforge.net/projects/ftgl}}\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \f0\fs24 \cf0 {\field{\*\fldinst{HYPERLINK "http://sourceforge.net/projects/ftgl/files/FTGL%20Source/2.1.3~rc5/ftgl-2.1.3-rc5.tar.gz"}}{\fldrslt http://sourceforge.net/projects/ftgl/files/FTGL%20Source/2.1.3%7Erc5/ftgl-2.1.3-rc5.tar.gz}}\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \f1\fs26 \cf0 \ \pard\pardeftab720\sa260 \f0\fs24 \cf0 (Don't forget to expand the tar files by double-clicking on them.)\ XCode will automatically check compatibility back to OS 10.4 if the following are defined during compilation:\ \pard\pardeftab720 \f1\fs26 \cf0 MAC_OS_X_VERSION_MAX_ALLOWED=1040\ MAC_OS_X_VERSION_MIN_REQUIRED=1040\ \pard\pardeftab720 \f0\fs24 \cf0 \ \pard\pardeftab720\sa260 \cf0 These are not done automatically by either the Xcode projects which come with wxMac-2.8.10, nor the AutoMake scripts supplied with wxMac-2.8.10, c-ares-1.9.1, curl-7.26.0, openssl-1.0.1c, freetype-2.4.10, ftgl-2.1.3~rc5 and sqlite3.7.14.1. So be sure to use our special scripts to build these packages.\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 [1] Create a parent directory within which to work. In this description , we will call it BOINC_dev, but you can name it anything you wish.\ \ [2] Put the following 3 directories inside the BOINC_dev folder (omit any you don't need):\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \f1\fs26 \cf0 c-ares- \f0\fs24 1.9.1 \f1\fs26 \ curl-7.26.0\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \cf0 openssl-1.0.1c\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 wxMac-2.8.10\ freetype-2.4.10\ ftgl-2.1.3~rc5\ \fs24 sqlite3.7.14.1 \fs26 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \f0\fs24 \cf0 \ Important: do not change the names of any of these 6 directories.\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \b \cf0 Note: \b0 Building wxMac-2.8.10 requires the MacOSX10.6.sdk, which is not included in Xcode 4.5. If you are building wxMac-2.8.10 with Xcode 4.5, see the section \i\b Installing and setting up Xcode \i0\b0 for further information.\ \ [3] Get the BOINC source tree from Subversion, and put it in the same BOINC_dev folder. To do this, type the following in Terminal:\ \ \pard\pardeftab720 \f1\fs26 \cf0 cd \{path\}/BOINC_dev/ \f0\fs24 \ \pard\pardeftab720 \f1\fs26 \cf0 \cb4 git clone http://boinc.berkeley.edu/git/boinc-v2.git boinc \f0\fs24 \cb1 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 \ (You may change the name of the \f1\fs26 boinc \f0\fs24 directory to anything you wish.) \ \ The command above retrieves the source code from the HEAD (TRUNK) or development branch of the git repository. For more information on getting the BOINC source code, see:\ {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/SourceCodeGit"}}{\fldrslt \f1\fs26 http://boinc.berkeley.edu/trac/wiki/SourceCodeGit}}\ \ [4] Run the script to build the c-ares, curl, openssl, wxMac, freetype, ftgl and sqlite3 libraries as follows:\ \ \pard\pardeftab720 \f1\fs26 \cf0 cd \{path\}/BOINC_dev/boinc/mac_build/\ source setupForBoinc.sh -clean \f0\fs24 \ \ If you don't wish to force a full rebuild of everything, omit the -clean argument.\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \b \cf0 Note 1: \b0 Be sure to run the script using the \f1\fs26 source \f0\fs24 command. Do not double-click on the scripts or use the \f1\fs26 sh \f0\fs24 command to run them.\ \b Note 2: \b0 this script tries to build all six third-party libraries: wxMac-2.8.10, c-ares-1.9.1, curl-7.26.0, openssl-1.0.1c, freetype-2.4.10, ftgl-2.1.3~rc5 and sqlite3.7.14.1. when the script finishes, it will display a warning about any libraries was unable to build (for example, if you have not downloaded them.)\ \ [5] Build BOINC as follows:\ \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural \cf0 BOINC itself is built using the \b boinc.xcodeproj \b0 file. You can either build directly in Xcode \b \b0 (more information below) or run the \b BuildMacBOINC.sh \b0 script:\ \ \pard\pardeftab720 \f1\fs26 \cf0 cd \{path\}/BOINC_dev/boinc/mac_build/\ source BuildMacBOINC.sh \f0\fs24 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 \ The complete syntax for this script is\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \f1\fs26 \cf0 source BuildMacBOINC.sh [-dev] [-noclean] [-all] [-lib] [-client] [-help] \f0\fs24 \ \ The options for BuildMacBOINC.sh are:\ -dev build the development (debug) version (native architecture only). \ default is deployment (release) version (universal binary: i386 and x86_64).\ \ -noclean don't do a "clean" of each target before building.\ default is to clean all first.\ \ The following arguments determine which targets to build\ -all build all targets (i.e. target "Build_All" -- this is the default)\ \ -lib build the five libraries: libboinc_api.a, libboinc_graphics_api.a, libboinc.a, libboinc_opencl.a, jpeglib.a\ \ -client build two targets: boinc client and command-line utility {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/wiki/Boinccmd_tool"}}{\fldrslt boinccmd}}\ (also builds libboinc.a, since boinc_cmd requires it.)\ \ Both -lib and -client may be specified to build seven targets (no BOINC Manager or screensaver.)\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \b \cf0 Note 1: \b0 You may find two Xcode projects in the BOINC_dev/boinc/mac_build/ directory: \ \'95 \b wxMac-BOINC.xcodeproj \b0 was needed for building older versions of the wxMac library in conjunction with the older versions of the setupForBoinc.sh or buildWxMac.sh scripts. It is not used for BOINC 5.9.2 or later. \ \'95 \b boinc.xcodeproj \b0 builds BOINC. It can be used either with the BuildMacBOINC.sh script or as a stand-alone project. The \i Development \i0 build configuration builds only the native architecture and is used for debugging. The \i Deployment \i0 build configuration builds a universal binary and is suitable for release builds. If there are any other build configurations, they should not be used as they are obsolete. \ \ \b Note 2: \b0 To perform a release build under Xcode 4.3 when not using the BuildMacBOINC.sh script, select "Build for archiving" from Xcode's Product menu. Do \b not \b0 select "Archive."\ \ \b Note 3: \b0 Using the \f1\fs26 BuildMacBOINC.sh \f0\fs24 script is generally easier than building directly in Xcode. The script will place the built products in the directory \f1\fs26 boinc/mac_build/build/Deployment/ \f0\fs24 or \f1\fs26 boinc/mac_build/build/Development/ \f0\fs24 where they are easy to find. Building directly in Xcode places the built products in a somewhat obscure location; you would normally need to determine this location using Xcode's Organizer window. \ \ The BOINC Xcode project has built-in scripts which create a text file with the path to the built products at either \f1\fs26 boinc/mac_build/Build_Deployment_Dir \f0\fs24 or \f1\fs26 boinc/mac_build/Build_Development_Dir \f0\fs24 . These files are used by the \f1\fs26 release_boinc.sh \f0\fs24 script, but you can also use them to access the built products directly as follows; open the file with TextEdit and copy the path, then enter command-shift-G in the Finder and paste the path into the Finder's dialog.\ \ The standard release of BOINC version 6.13.0 and later builds only for Macintosh computers with Intel processors. Most of the executables are built only for the i386 architecture. The BOINC libraries and the screensaver are built as universal binaries containing builds for two architectures: i386 and x86_64.\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc \b\fs28 \cf0 Building BOINC Manager Installer \b0\fs24 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 \ In order to execute BOINC Manager, you have to install it using BOINC Manager Installer. Otherwise, you will encounter an error prompting for proper installation.\ \ To build the Installer for the BOINC Manager, you must be logged in as an administrator. If you are building BOINC version number x.y.z, type the following in Terminal, then enter your administrator password when prompted by the script:\ \ \pard\pardeftab720 \f1\fs26 \cf0 cd \{path\}/BOINC_dev/boinc/\ source \{path\}/BOINC_dev/boinc/mac_installer/release_boinc.sh x y z\ \pard\pardeftab720 \f0\fs24 \cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 Substitute the 3 parts of the BOINC version number for x y and z in the above. For example, to build the installer for BOINC version 7.0.32, the command would be\ \pard\pardeftab720 \f1\fs26 \cf0 source \{path\}/BOINC_dev/boinc/mac_installer/release_boinc.sh 7 0 32\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \f0\fs24 \cf0 This will create a directory "BOINC_Installer/New_Release_7_0_32" in the BOINC_dev directory, and the installer will be located in ' \f1\fs26 \{path\}/BOINC_dev/BOINC_Installer/New_Release_7_0_32/boinc_7.0.32_macOSX_i686 \f0\fs24 '. \f1 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \f4 \cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc \f0\b\fs28 \cf0 Code Signing the BOINC Manager Installer and Uninstaller \b0\fs24 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \f4 \cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \f0 \cf0 Mac OS 10.8 introduces a security feature called Gatekeeper, whose default settings won't allow a user to run applications or installers downloaded from the Internet unless they are signed by a registered Apple Developer. The \f1\fs26 release_boinc.sh \f0\fs24 script looks for a file \f1\fs26 ~/BOINCCodeSignIdentity.txt \f0\fs24 containing the name of a valid code signing identity stored in the user's Keychain. If this is found, the script will automatically sign the BOINC installer and BOINC uninstaller using that identity. For example, if your user name is John Smith, the first line of \f1\fs26 ~/BOINCCodeSignIdentity.txt \f0\fs24 would be something like the following: \f1\fs26 \ Developer ID Application: John Smith\ \ \f0\fs24 If there is no \f1\fs26 ~/BOINCCodeSignIdentity.txt \f0\fs24 file, then the script will not sign the installer or uninstaller. For more information on code signing identities see the documentation for the {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/codesign.1.html"}}{\fldrslt \f1\fs26 codesign}} utility and Apple's {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/library/mac/documentation/Security/Conceptual/CodeSigningGuide/"}}{\fldrslt Code Signing Guide}}. \ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc \b\fs28 \cf0 Debugging and BOINC security \b0\fs24 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural \cf0 Version 5.5.4 of BOINC Manager for the Macintosh introduced new, stricter security measures. For details, please see the file \f1\fs26 boinc/mac_installer/Readme.rtf \f0\fs24 and {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/sandbox.php"}}{\fldrslt http://boinc.berkeley.edu/sandbox.php}} and {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/SandboxUser"}}{\fldrslt \f1 http://boinc.berkeley.edu/trac/wiki/SandboxUser}}\ \ \pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\pardirnatural \cf0 \CocoaLigature0 The GDB debugger can't attach to applications which are running as a different user or group so it ignores the S_ISUID and S_ISGID permission bits when launching an application. To work around this, the BOINC \i \CocoaLigature1 Development \i0 \CocoaLigature0 build does not use the special boinc_master or boinc_project users or groups, and so can be run under the debugger from Xcode. \ \ The \i Development \i0 build \i only \i0 of the BOINC Manager allows you to change the ownership and permission settings of the BOINC Data and executables by entering an administrator user name and password. This also streamlines the development cycle by avoiding the need to run the installer for every change. (To generate the development build under Xcode 4.3, choose "Build" from the product menu, or enter command-B on the keyboard.)\ \ To restore the standard ownerships and permissions, run the installer.\ \ \pard\pardeftab720\sa260 \cf0 \cb5 \CocoaLigature1 For information on interpreting crash dumps and backtraces, see {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/MacBacktrace"}}{\fldrslt \cf2 Mac Backtrace}}.\cb1 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc \b\fs28 \cf0 Debugging into wxWidgets \b0\fs24 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 \ \pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\pardirnatural \cf0 \CocoaLigature0 The BOINC Xcode project normally links the BOINC Manager with the non-debugging (Deployment) build of wxWidgets, even for the Development build configuration of the Manager. However, there may be times when you wish to link the Development build of the Manager to the Development build of wxWidgets for debugging, as when you want to step into internal wxWidgets code or put breakpoints in wxWidgets.\ \ You can find instructions for doing this in the comments in the file \f1\fs26 boinc/clientgui/mac/MacGUI.pch \f0\fs24 .\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc \b\fs28 \cf0 \CocoaLigature1 Installing and setting up Xcode \b0\fs24 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640 \cf0 \ Versions of Xcode prior to Xcode 4.3 have an installer package. After downloading Xcode, mount the disk image file by double-clicking on it, then double-click the installer package. \ \ Starting with Xcode 4.3, the disk image contains a copy of Xcode itself. After mounting the disk image, drag the Xcode icon to the folder where you wish it to reside. In most cases, this will be the \f1\fs26 /Applications/ \f0\fs24 folder. Unmount the disk image by dragging it to the trash. Finally, double-click on the installed Xcode icon to run Xcode. Xcode will display a dialog allowing you to finish the installation; you must do this before running BOINC's build scripts. (Some versions of Xcode may not display this dialog until you open a file with Xcode.)\ \ Building wxMac-2.8.10 requires the MacOSX10.6.sdk, which is not included in Xcode 4.5. If you are building wxMac-2.8.10 with Xcode 4.5, you must install the OS 10.6 SDK as follows:\ [1] Download a version of Xcode for OS 10.7 Lion (such as Xcode 4.3.3.)\ [2] Mount the disk image file by double-clicking on it. Do \b not \b0 drag-install this older version of Xcode.\ [3] On the disk image, control-click on the Xcode icon and select \f1\fs26 Show Package Contents \f0\fs24 .\ [4] On the older Xcode disk image, browse to the directory:\ \f1\fs26 /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ \f0\fs24 \ You should see a folder named \f1\fs26 MacOSX10.6.sdk \f0\fs24 .\ [5] Control-click on your newer Xcode icon (which you previously installed on your hard drive) and select \f1\fs26 Show Package Contents \f0\fs24 .\ [6] In your newer Xcode Browse to the directory:\ \f1\fs26 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/\ \f0\fs24 (or the equivalent if you installed it somewhere other than your \f1\fs26 /Applications/ \f0\fs24 folder.)\ [7] Copy the \f1\fs26 MacOSX10.6.sdk \f0\fs24 folder from the \f1\fs26 SDKs \f0\fs24 folder on the older disk image to the \f1\fs26 SDKs \f0\fs24 folder in the newer Xcode.\ [8] Unmount the disk image by dragging it to the trash.\ }