Release Branches November 10, 2009

In order to make it clear what is expected to work on a given OS release, we have split the source into release branches. If you are using darwinbuild on Tiger (Mac OS X 10.4.x, Darwin 8), use /releases/Darwin8. If you are on Leopard (Mac OS X 10.5.x, Darwin 9) use /releases/Darwin9. Trunk is currently intended for Snow Leopard (Mac OS X 10.6.x, Darwin 10).

We’ll backport any critical changes and features that do not rely on the newer release to the release branches. This should hopefully fix the problem of hunting for the last revision that worked on Tiger, for example.

Subversion Support August 9, 2009

Projects can now have a branch key in their plist which will cause darwinbuild to use subversion to checkout/update the source instead of downloading a tarball. You can see an example of this at the SmartCard Services project. Darwinbuild will assume -nosource when a project is subversion-based. The working copy is in the same place as usual, at BuildRoot/SourceCache/project/project-version/. This should allow developers to take advantage of the chroot and automatic root fetching of darwinbuild, while being able to make changes between builds and commit directly from the SourceCache.

New -init Options August 1, 2009

We have added some new logic to the -init processing that will look for http or scp URLs/paths and download the plist automatically. If you have been storing your own plist on a server and making users manually download the plist, you can now provide a URL and let darwinbuild download it for you:

darwinbuild -init

or using scp…

darwinbuild -init

New -nosource Option May 25, 2009

We have added in an option that many have been asking for. You can now pass -nosource to darwinbuild in order to skip the source staging. This means darwinbuild will not delete the BuildRoot/SourceCache/ files and replace them with the tarball. This option also disables file patching, since presumably the patches were already applied when the tarball was extracted. So, now you can modify the SourceCache as needed without darwinbuild deleting your changes.

New Storage Options April 18, 2009

The latest revision of trunk has support for sparsebundles and NFS Loopback in order to avoid the problems with xcodebuild inside of chroots. If you do not change the way you use darwinbuild, you will start seeing the sparsebundle storage. Nothing else is needed and Xcode-based projects will build on whatever filesystem you have.


Xcode 3.1 Support September 17, 2008

The latest source in trunk now supports Xcode 3.1! Projects which still fail to build should be reported in a Ticket.

Darwin 9 July 3, 2008

If you are trying to build projects for Darwin 9, there are a few tips you should know about to help:

  • Install darwinbuild from the trunk of our subversion repo. We have added some basic support for Xcode 3.0 and Leopard to it that has not made it into an “official” release.
  • Store your build environments on a UFS partition (disk images work for this). There is a problem with xcodebuild when running in a chroot on certain filesystems, like HFS+. Other filesystems might also work. You know you’ve hit this problem if your build errors out immediately with “cannot find xcode project”.
  • Building or loading the CF project will populate your environment with CF-Lite. This will cause problems for xcodebuild. During the installXcode phase, Darwinbuild will grab a copy of your Host’s CF, and thats the CF you should use to run xcodebuild (since it also comes from your Host).

Why use Darwinbuild? May 5, 2008

There is more to open source than source code. While it’s useful to read sources, the real benefit comes from working with them to fix bugs, make enhancements, and install new versions on your system. Darwin, the open source core of Apple’s Mac OS X operating system, contains hundreds of open source projects. In addition to the projects developed by Apple, many projects come from a wide variety of other open source initiatives, including GNU/Linux, FreeBSD, NetBSD, OpenBSD, XFree86, and independent projects hosted at SourceForge, Mac OS Forge, and elsewhere.

Because of the diversity of its component projects, and the unique requirements of the commercial Mac OS X system, Darwin’s build system is quite different than the other open source initiatives listed above. If you are interested in building and modifying Darwin projects, the documentation on this website, and the Darwinbuild tools, will prove to be an invaluable resource.