$NetBSD: README.MacOSX,v 1.17 2014/03/18 01:28:26 gdt Exp $ * system tools issues ** gcc vs clang Older versions of Mac OS X (with XCode, of course) provided gcc, and pkgsrc defaulted to using gcc. With 10.9, gcc is no longer present and one must bootstrap with "--compiler=clang". (Arguably, pkgsrc should default to clang on 10.9.) ** i386 vs x86_64 ABI issue Mac OS X Snow Leopard (10.6) through Mavericks (10.9) supports 64-bit binaries on most Intel Macs and build those by default on such machine. This has caused problems with packages which get confused because "MACHINE_ARCH" is in some OS versions set to "i386" (on a 64-bit system!). version: uname -m : uname -p 10.6: i386 : i386 10.9: x86_64 : i386 There are of course some packages which will fail in i386 mode, and some in x86_64 mode. Because of all this, the default for pkgsrc was set to use the 32-bit ABI, which results in packages being compiled and run in i386 mode. In addition, there are some Intel Macs (older Mac Minis) which can only run i386 and not x86_64. For a longer discussion, see: http://mail-index.NetBSD.org/pkgsrc-users/2009/09/24/msg010817.html As of 2014, the decision to default to i386 should probably be revisited. ** sed in 10.9 The sed that comes with 10.9 appears to be broken; it exits when called on files with UTF-8 or other apparently-binary content. Therefore, pkgsrc uses nbsed on 10.9. * Developer tools and prerequisites ** basic tools If you haven't already, you will need to install the Mac OS X Developer Tools package (XCode) to obtain a compiler, etc. The procedure depends on the version of Mac OS X; recent versions use the App Store. Note that as of 10.9, cvs is no longer provided. You can build devel/scmcvs. To obtain pkgsrc in order to bootstrap and build cvs, it may be useful to use git to clone https://github.com/jsonn/pkgsrc ** X11 X11 used to be built into Mac OS X, but as of 10.8 it is not. Install XQuartz from http://xquartz.macosforge.org/landing/ ** XL compiler [The text in this section dates from 2004-10-07! Please update it if you have used XL since then.] Experimental support for IBM's XL C/C++ compiler is present (tested with version 6.0). To use it, set: PKGSRC_COMPILER=xlc in mk.conf. XL C uses the Apple provided libtool to create shared libraries, however, we must force it to call libtool with the full path to avoid calling the pkgsrc provided GNU libtool with arguments that it does not understand. edit the template configuration file /opt/ibmcmp/vac/6.0/etc/vac.base.cfg and set: libtool = /usr/bin/libtool then run: /opt/ibmcmp/vacpp/6.0/bin/vacpp_configure -gcc /usr -install -force as root to install the configuration. to bootstrap with xlc, you need to make sure CFLAGS contains "-ma": env CC=/opt/ibmcmp/vacpp/6.0/bin/xlc CFLAGS=-ma ./bootstrap * Mac OS X Versions pkgsrc is a volunteer project, and individuals support/fix packages and platforms as they choose. However, pkgsrc contributors as a group share both a bugtracker and norms about what is ok to break and what is not. To describe these norms, we define levels of concern, keeping in mind that there are no guarantees: SUPPORTED doesn't mean that anyone is required to fix your problem; it means that we agree that it is broadly desireable that such problems be fixed and that we therefore allow them to be listed in our issue tracker. DEPRECATED means that individual problems are not of interest, but pkgsrc overall working is of enough interest to be allowed to be listed in the issue tracker. IGNORED means we are not willing to expend issue tracker resources (clutter for those reviewing the db) at all. Given the above definitions, the pkgsrc developers label versions of Mac OS X as follows: 10.9 (13.1.0): current, PRs may be filed. Structurally breaking pkgsrc on 10.9 is considered not ok. [SUPPORTED] 10.8: somewhat old, PRs may still be filed. Structurally breaking pkgsrc on 10.8 is considered not ok. [SUPPORTED] 10.7: old, but PRs may still be filed. Structurally breaking pkgsrc on 10.7 is considered not ok. [SUPPORTED] 10.6 (10.8.0): very old, and individual pkg PRs may be bounced to authors to retest with newer versions, and closed if that doesn't happen in 14 days. We will for now consider structurally breaking pkgsrc on 10.6 to be undesirable. If keeping support for 10.6 causes excessive work for maintainers it may be moved to IGNORED state any time, without warning. [DEPRECATED] 10.5 and below: ancient, and PRs will be summarily closed. It is acceptable to give zero consideration to causing structural problems on 10.5 and below. [IGNORED] Because Apple provides 10.9 as a no-cost upgrade (from 10.6 or higher, it is fairly likely that 10.6-10.8 will become DEPRECATED faster than they might have otherwise. (The rationale for supporting versions beyond the current and previous ones has been the difficulty for users to upgrade.) * Bulk build suggestions and issues Clearly, it is desirable for a bulk build to be useful on as many computers as possible. The main issues are which ABI and which OS X version. ** 10.6, --abi=32 jperkin@netbsd.org provides a bulk build for quarterly branches (--abi=32, OSX 10.6, and therefore gcc 4.2.1, XQuartz, X11_TYPE=native): http://www.perkin.org.uk/pages/pkgsrc-binary-packages-for-osx.html http://mail-index.netbsd.org/pkgsrc-bulk/2014/01/10/msg010276.html which should run on any version from 10.6 to 10.9. Note that sed on 10.9 is broken, but a bootstrap on 10.6 will not avoid it, so while one can install this bootstrap on 10.9 and run binary packages, building packages will not in general work. ** 10.9, --abi=64 --compiler=clang Given the 10.9 license situation, a bulk build on 10.9 (and therefore clang) seems reasonable, with either --abi=32 or --abi=64. Such builds are almost certainly only usable on 10.9, but that is or will be soon a large fraction of Macs.