Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified)) by mollari.NetBSD.org (Postfix) with ESMTPS id ABF3B1A921F for ; Fri, 8 Apr 2022 01:21:52 +0000 (UTC) Received: by mail.netbsd.org (Postfix, from userid 605) id F1EBD84FDB; Fri, 8 Apr 2022 01:21:51 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mail.netbsd.org (Postfix) with ESMTP id 3837E84FD9 for ; Fri, 8 Apr 2022 01:21:51 +0000 (UTC) X-Virus-Scanned: amavisd-new at netbsd.org Received: from mail.netbsd.org ([127.0.0.1]) by localhost (mail.netbsd.org [127.0.0.1]) (amavisd-new, port 10025) with ESMTP id 1Autb9cUrjLF for ; Fri, 8 Apr 2022 01:21:50 +0000 (UTC) Received: from cvs.NetBSD.org (ivanova.NetBSD.org [IPv6:2001:470:a085:999:28c:faff:fe03:5984]) by mail.netbsd.org (Postfix) with ESMTP id D5FA184C71 for ; Fri, 8 Apr 2022 01:21:49 +0000 (UTC) Received: by cvs.NetBSD.org (Postfix, from userid 500) id C297DFB24; Fri, 8 Apr 2022 01:21:49 +0000 (UTC) Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_164938090994070" MIME-Version: 1.0 Date: Fri, 8 Apr 2022 01:21:49 +0000 From: "Amitai Schleier" Subject: CVS commit: pkgsrc/bootstrap To: pkgsrc-changes@NetBSD.org Reply-To: schmonz@netbsd.org X-Mailer: log_accum Message-Id: <20220408012149.C297DFB24@cvs.NetBSD.org> Sender: pkgsrc-changes-owner@NetBSD.org List-Id: Precedence: bulk List-Unsubscribe: This is a multi-part message in MIME format. --_----------=_164938090994070 Content-Disposition: inline Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" Module Name: pkgsrc Committed By: schmonz Date: Fri Apr 8 01:21:49 UTC 2022 Modified Files: pkgsrc/bootstrap: README.macOS Log Message: README.macOS: rewrite for typical new users. Historical details have moved: https://wiki.netbsd.org/pkgsrc/macos_porting_notes/ To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 pkgsrc/bootstrap/README.macOS Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. --_----------=_164938090994070 Content-Disposition: inline Content-Length: 10873 Content-Transfer-Encoding: binary Content-Type: text/x-diff; charset=us-ascii Modified files: Index: pkgsrc/bootstrap/README.macOS diff -u pkgsrc/bootstrap/README.macOS:1.6 pkgsrc/bootstrap/README.macOS:1.7 --- pkgsrc/bootstrap/README.macOS:1.6 Wed Apr 6 13:06:09 2022 +++ pkgsrc/bootstrap/README.macOS Fri Apr 8 01:21:49 2022 @@ -1,230 +1,35 @@ -$NetBSD: README.macOS,v 1.6 2022/04/06 13:06:09 schmonz Exp $ +$NetBSD: README.macOS,v 1.7 2022/04/08 01:21:49 schmonz Exp $ -This file describes the use of current versions of pkgsrc with -multiple versions of Darwin and macOS, omitting information about -previous pkgsrc versions. +Please read the general README file as well. -* Darwin vs macOS +Binary packages are available for macOS arm64 and x86_64, provided by +Joyent. More info: -macOS consists of Darwin (kernel/userland) plus Mac stuff on top. -pkgsrc used to target Darwin, but given the tools issued discussed -below it is not clear that it works on Darwin without macOS. Darwin -from Apple is no longer open source. +If these don't suffice for your needs, you'll want to build your own. +First, install either the full Xcode environment (if that's something +you want to have) or else just its Command Line Tools. For the latter: -Users of non-macOS Darwin are invited to submit patches to this file. -The only known project is: - http://www.puredarwin.org/ + $ xcode-select --install -Until then, this file remains macOS-centric. +Next, if you haven't already done so, fetch and extract pkgsrc: -* system tools issues + $ curl -O https://cdn.netbsd.org/pub/pkgsrc/current/pkgsrc.tar.gz + $ tar -zxf pkgsrc.tar.gz && rm pkgsrc.tar.gz -** native headers vs SDK +Now you're ready to bootstrap as described in README. -macOS used to include system headers in /usr/include, so that one -could treat it like a relatively normal POSIX system. Starting at -approximately 10.9, headers were no longer available at the standard -location, and one has to use an SDK that puts headers someplace else. -pkgsrc supports this, but there has been some confusion where a 10.9 -system produced binaries for 10.10, which only mostly works. The -confusion is believed to be resolved. +Once bootstrapped, install `devel/scmcvs` so you can update pkgsrc via +anonymous CVS. Alternatively, swap out your CVS checkout for a clone +from this git mirror: -*** SDK version issues +For any particular package that doesn't build, macOS fixes are often in +MacPorts or Homebrew waiting to be borrowed. -The SDK supported versions and default versions do are not always the -same as the current system version. The following may be useful in -understanding one's situation: +Patches to support older systems will generally get merged, provided +they don't break newer systems and aren't too much trouble to maintain. +Tigerbrew is a good place to look for such fixes. - /usr/bin/xcrun --show-sdk-version - sw_vers -productVersion - -pkgsrc attempts to query the system version, and then ask the sdk to -use that version. See mk/platform/Darwin.mk for the code. - -** gcc vs clang - -Older versions of OS X (when XCode is installed) provided gcc, and -pkgsrc defaulted to using gcc. With 10.9, gcc is no longer present. - -** i386 vs x86_64 ABI issue - -This entire section is only about Intel Macs. - -OS X 10.6 and higher supports x86-64 binaries on Intel Macs with -x86-64 processors, which is now most of them. i386 binaries are also -supported on most (all?) Intel machines. - -*** issues related to ABI 32 vs 64 - -Note that a pkgsrc package built in x86_64 mode will not run on an -Intel Mac that is i386 only. For a longer discussion, see: -http://mail-index.NetBSD.org/pkgsrc-users/2009/09/24/msg010817.html - -Somewhat separately from pkgsrc's ABI choice, there have been issues -with packages which get confused because "MACHINE_ARCH" is in some OS -versions set to "i386" (on a 64-bit system!). As of 2016 this should -be mostly resolved. - version: uname -m : uname -p - 10.6: i386 : i386 - 10.9: x86_64 : i386 - -*** default ABI - -The ABI is chosen at bootstrap time and encoded into mk.conf. So a -change in the default is about what a new bootstrap will do; -already-bootstrapped systems should remain unchanged. They should be -able to build and run new packages using the old ABI value. - -pkgsrc used to set the default ABI as i386, both on systems with i386 -processors and on systems with x86_64 processors. On 2015-11-09 the -default was changed so that ABI=64 is chosen on machines where "uname --m" reports x86_64. (It remains i386 on others, which are not capable -of running x86_64 binaries.) - -Generally, users will not need to deal with the default ABI change, -except that packages are mostly only portable across machines with the -same bootstrapping parameters. - -If one unpacks a new binary bootstrap kit over an existing -installation, one can end up with a mix. The standard advice is not to -do this, and to rrebuild/reinstall all packages from scratch or a -compatible binary package set. But, one could also mark packages with -the wrong ABI as rebuild=YES and use pkg_rolling-replace. - -*** change in storage of ABI information - -On 2016-01-24, the way ABI information was stored in pkgsrc was -rationalized and simplified. The new code could compute the wrong ABI -for some previously-bootstrapped installations. The problem can be -resolved by building bmake with MACHINE_ARCH=x86_64 and updating that -package, as described in mail archives: - - https://mail-index.netbsd.org/pkgsrc-users/2016/01/25/msg022870.html - -(One would expect to be able to use make replace to do this. One -minor issue is that it requires pkg_tarup, although that will be -present on systems of those who use make replace. There also may be -an error with architecture mismatch from pkg_install requiring a "-f" -option. Repeatable data about recovery is somewhat hard to obtain, as -most are past this issue already and no longer interested in -experimenting.) - -* Developer tools and prerequisites - -** XCode - -This section applies to 10.6 through 11. - -If you haven't already, you will need to install the macOS -Developer Tools package (XCode) to obtain a compiler, etc. The -procedure depends on the version of macOS; recent versions use the -App Store. - -*** Command-line Tools - -If one installs "Commmand Line Tools", then pkgsrc can use the -compiler. - -Since Xcode 7 (installed from the Apple Store) the development -environment can upgrade itself without interaction from the user, but -will not automatically update the Command Line Tools. This will -cause system header files like stdlib.h not to be found by pkgsrc. -The command `xcode-select --install' will install the Command Line -Tools for Xcode. - -In the past at least, Command Line Tools for Xcode could be obtained -from https://developer.apple.com/downloads/ - -** cvs - -Note that as of 10.9, cvs is no longer provided by Apple. You can build -devel/scmcvs. To obtain pkgsrc in order to bootstrap and build cvs, -it may be useful to `git clone https://github.com/NetBSD/pkgsrc.git`. - -** X11 - -X11 used to be built into macOS, but as of 10.8 it is no longer -included. You can install XQuartz from -https://www.xquartz.org, or try the newly-added pkgsrc -version. - -* macOS Versions - -Because Apple drops support for previous hardware faster than the -hardware fails, many machines cannot be upgraded to recent versions of -macOS, creating a greater than usual desire to support old systems. -Because of the particular history of deprecation, most systems tend to -run relatively recent versions or specific older versions. - -The stance of pkgsrc is generally to avoid breaking older systems -unless keeping support would cause difficulty, and to accept clean -patches when there is no harm to non-deprecated versions. This -section is partly to document what versions tend to be used and why, -and partly to enable cleaning up bug reports without fixes for very -old systems. - -pkgsrc PRs about 10.12 or older that do not contain fixes may be closed -without fixing. - -macOS 11 (major versions are now just digits) is the current version; -hardware before 2013 cannot be upgraded to this version. Also this -version introduces support for Apple M1 processors, using the aarch64 -instruction set. - -macOS 10.15 is maintained and supports the same hardware as 10.14. - -macOS 10.14 is somewhat old but still maintained. It cannot be run on -hardware before 2012 and Macbooks before 2015. - -macOS 10.13 is old; Apple ended support in January of 2021. -Significant amounts of entirely functional hardware cannot be upgraded -beyond this version. - -macOS 10.12 is very old. There is no known reason to run it, as all -(most?) hardware that runs 10.12 can run 10.13. - -OS X 10.11 is very old; some hardware cannot be upgraded beyond this -version, but most of it is old and slow, dating from approximately -2010 or earlier. - -OS X 10.10, 10.9 and 10.8 are extremely old; most hardware that can -run them can probably run 10.11. - -OS X 10.7 is the last version that works on a few Intel Macs, e.g. the -Mac Pro 1.1 and 2.1 and some Mac Minis. - -OS X 10.6 is the last version that works on Intel Macs lacking amd64 -support, e.g. Mac Minis and Macbooks with Core Duo. - -OS X 10.5 is the last version that works on PowerPC Macs. - -OS X 10.4 (Darwin 8.11.0) is the last version that works on PowerPC G3 -and slower G4 Macs. - -* Bulk builds - -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 macOS -version. Targeting older versions makes a build run on more systems, -and targeting newer versions makes the build closer to what would be -obtained from bootstrapping on a newer version and thus avoids some -issues. This section has pointers to active bulk builds. - -** 10.4, --abi=32 powerpc, gcc - -Sevan Janiyan provides a bulk build for the -current branch -(--abi=32, OS X 10.4/PowerPC, gcc 4.0.1 from Xcode 2.5, X11_TYPE=modular): - https://www.geeklan.co.uk/?p=1579 - US repo: http://sevan.mit.edu/packages - Euro mirror: http://pkgsrc.geeklan.co.uk/packages/current/Darwin-8 - See - https://mail-index.netbsd.org/pkgsrc-bulk/2015/11/07/msg012171.html - -** 10.14, --abi=64 x86-64, clang -** 11, --abi=64 x86-64, clang - -Joyent provide a bulk build for both 10.14/x86_64 and 11/x86_64: - http://pkgsrc.joyent.com/install-on-osx/ - -They hold archives for 64-bit Sierra (10.12), Mavericks (10.9) and Snow -Leopard (10.6), but these are no longer updated. +Occasionally, after updating to a freshly released macOS version, you'll +see "No suitable Xcode SDK or Command Line Tools installed." This +usually means a pkgsrc developer needs to add another `OSX_SDK_MAP` +entry to `mk/platform/Darwin.mk`. --_----------=_164938090994070--