draft. The PureDarwin project uses a Mercurial (and used a Subversion) repository (hosted on Google Code) to maintain sources, patches, other code and binary roots that are or that are not part of one of our favorite upstream projects. This page describes how to use the contents of the repository to build your own PureDarwin ISOs and virtual machines. Please contact us if you need write access. Everyone who wants to make Darwin more usable is invited. Basic structureThe current Mercurial repository is composed of the sub repositories.
The latest revision of the repository can be browsed at http://puredarwin.googlecode.com/. UsageRequirementsThe actual state still needs
Optionally,
Quick stepsAfter cloning of the PureDarwin repository, the quickest way is to modify nothing and keep the default configuration (pd_config). Simply fetch binaryroots, thin them and build/deploy PureDarwin to the requested target after selection the `setup' folder.
ConfigurationIn case you decided to edit pd_config to reflect your needs, keep in mind only few variables need to be edited in the most cases. All options are not fully yet described here. Please see also the comments inside pd_config. DARWIN_RELEASESimply target the Operating System major release version, a.k.a Darwin 9 or Darwin 10. DARWIN_RELEASE="9" This variable is used by
Target the architecture. ARCH="i386" At this time, only "i386" is supported, but we're convinced that minor efforts (e.g., adapting bootloader steps to different OpenFirmware, adding some needed projects specific/related to the PPC support in "pd_roots", etc...) should be involved in order to bring PPC support in Darwin 9. Idem for "X86_64". Feel free to help us in this quest too. This variable is used by
PUREDARWIN_RELEASEThis variable enables a profiling of the release. Depending the value, specific options are enabled or disabled. Note: Most of the time, the choice should be "synced" with the BINARYROOTS_LIST_FILE variable. It is possible to override the value of PUREDARWIN_RELEASE via exporting it in the environment, prior to the script execution. See this example. PUREDARWIN_RELEASE="" This variable is used by
BINARYROOTS_LIST_FILEThis variable references a file containing the list of binaryroot project names. By default, the BINARYROOTS_LIST_FILE variable is automatically set to the corresponding PUREDARWIN_RELEASE. Note: Most of the time, the choice should be "synced" with the PUREDARWIN_RELEASE variable.
The binaryroots in pd_roots.nano also belong to pd_roots.bootstrap and pd_roots sets. The binaryroots in pd_roots.bootstrap also belong to pd_roots. This variable is used by:
Binaryroots built locally via DarwinBuild can be used (prior to the one fetched remotely on MacOS Forge in case it has not already been fetched) if DARWINBUILD_DIR variable is correctly filled in pd_config. However that can also result in one or more conflict between all the dependents and the dependencies living in the system (e.g., missing symbols) if you tend to mix binaryroots built in different BuildRoots. # # Dir of darwinbuild build directories # # WARNING: The binaryroots built on your local computer can, # depending on the constellation of your buildroot resulting # in problematic relation between dependents and dependencies. # # First Roots/.DownloadCache/ is checked then Packages/ if nothing found #DARWINBUILD_DIR="/[...]/darwinbuild" This variable should points to a directory containing build directories (e.g., 9J61, 9L30, 10C540, etc...). This variable is used by
ADD_CLONE.. "Genetic" constraintsBasic overviewWhich kind of PureDarwin you will be able to generate from the PureDarwin you generated is conditioned by the couple of (PUREDARWIN_RELEASE/BINARYROOTS_LIST_FILE) and ADD_CLONE. The picture above shows that nothing can be generated from PureDarwin nano. PureDarwin and PureDarwin bootstrap are able to generate themselves and respectively the other ones. Note: Implicitly, that's not (yet) entirely true concerning PureDarwin boostrap. PureDarwin will contains the same packages (c.f. pd_roots) which have been used to make it in /usr/local/share/puredarwin/... PureDarwin bootstrap will contains the same packages (c.f. pd_roots.bootstrap) which have been used to make it. Because "pd_roots.nano ∈ pd_roots.bootstrap ∈ pd_roots", PureDarwin bootstrap will be only able to generate itself or a PureDarwin nano. Zooming chickens and eggsThis is a more detailled and realistic, where there is (by default) no alteration of the couple of (PUREDARWIN_RELEASE/BINARYROOTS_LIST_FILE) and ADD_CLONE. Where obviously everything can be generated from a Mac (green dotted arrow), it's "almost" the contrary a fortiori depending the flavor of PureDarwin. The black arrow represents a successfull deployment. A blue dotted arrow shows that the deployment could be successfull if the expected binaryroots are present. A red one faces a blocker. ResourcesThe full chaotic history is available on request. http://puredarwin.googlecode.com/ (PureDarwin repository) http://mercurial.selenic.com/wiki/ (Mercurial) |
The goal of this project is to make Darwin more usable by providing an installation ISO, documentation, and add-on software. You are welcome to join #puredarwin on irc.freenode.net if you would like to join PureDarwin development and to add to this site.



