2. Current Blockers - heldersrvio/PureDarwin GitHub Wiki
Current Blockers
This page lists the current issues we are having that prevent us from making a Darwin 9 ISO. The contents of this page are subject to change.
Contents
- 1. Problems to be solved
- 1.1
CFOpenDirectory
missing inCFOpenDirectory
binary root - 1.2
IOHDIXController.kext
needed (image boot support) - 1.3
OSvKernDSPLib.kext
needed (audio support) - 1.4 Shortage of network drivers
- 1.5
SystemConfiguration.framework
is incomplete - 1.6 gdb does not compile
- 1.7 DirectoryService daemon depends on missing CFLite functions
- 1.1
- 2. Problems with partial workarounds
- 3. Problems that are problems no more
1. Problems to be solved
CFOpenDirectory
missing in CFOpenDirectory
binary root
1.1 OpenDirectory
framework depends on CFOpenDirectory
framework, for which there is both a project and a binary root.
However, the binary root does not contain the actual CFOpenDirectory
file (http://darwinbuild.macosforge.org/trac/ticket/50):
otool -L OpenDirectory.root/System/Library/PrivateFrameworks/OpenDirectory.framework/Versions/A/OpenDirectory | grep CFO
/System/Library/PrivateFrameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
(compatibility version 1.0.0, current version 1.0.0)
The sources cannot be built without being patched because it depends on missing CoreFoundation
headers (e.g., CoreFoundation/CFBridgingPriv.h
) and on DirectoryServiceCore
(part of DirectoryService
which cannot yet be built too).
IOHDIXController.kext
needed (image boot support)
1.2 BinaryDriver IOHDIXController.kext
is missing (used to be available under Apple Driver License) in order to use imageboot.
Please let us know if you know a solution.
OSvKernDSPLib.kext
needed (audio support)
1.3 BinaryDriver OSvKernDSPLib.kext
is missing, consequently IOAudioFamily.kext
cannot be loaded resulting in no audio support.
Please let us know if you know a solution.
1.4 Shortage of network drivers
There is a shortage of network drivers (and of other drivers in general) for Darwin.
Of particular concern, the Intel e1000 driver AppleIntel8254XEthernet.kext
, needed to run networking under VMWare, while available in OS X are not available for general distribution nor redistributable.
Open source drivers for a vast number of network cards (and hardware of every type) are available for other platforms (e.g., BSD and GNU/Linux). See the Network page for more information.
It would be great if someone skilled in driver programming could port some of these to Darwin (we are told that writing drivers for IOKit is really a rather nice experience).
SystemConfiguration.framework
is incomplete
1.5 SystemConfiguration.framework (in the configd package) does not compile, and the binary root made available is incomplete. While some components can be made to compile individually (see the Network page for a download), there are still important components (ATConfig and KernelEventMonitor) missing. KernelEventMonitor can be built (part of configd_plugins which not build because it depends on configd which not build without patch and code sacrifice):
file BuildRoot/private/var/tmp/configd_plugins/configd_plugins-
91.root/System/Library/SystemConfiguration/KernelEventMonitor.bundle/Contents/MacOS/KernelEventMonitor
BuildRoot/private/var/tmp/configd_plugins/configd_plugins-
91.root/System/Library/SystemConfiguration/KernelEventMonitor.bundle/Contents/MacOS/KernelEventMonitor: Mach-O universal binary with 2
architectures
BuildRoot/private/var/tmp/configd_plugins/configd_plugins-
91.root/System/Library/SystemConfiguration/KernelEventMonitor.bundle/Contents/MacOS/KernelEventMonitor (for architecture i386): Mach-O
bundle i386
BuildRoot/private/var/tmp/configd_plugins/configd_plugins-
91.root/System/Library/SystemConfiguration/KernelEventMonitor.bundle/Contents/MacOS/KernelEventMonitor (for architecture ppc7400): Mach-O
bundle ppc
1.6 gdb does not compile
Software development (for example, of PureFoundation or device drivers) is hampered by the lack of a native debugged for Darwin. gdb uses parts of the old Carbon runtime in a single component. However, this is preventing the package as a whole from compiling. Non-Apple gdb cannot be used because it does not understand Darwin's Mach-O binary format. (You only need to install DebugSymbols.framework and CoreServices.framework into PureDarwin Xmas to get gdb running, but since these are closed-source and non-distributable you wouldn't want to do that, would you?)
1.7 DirectoryService daemon depends on missing CFLite functions
DirectoryServices, the daemon responsible for (surprise surprise) Directory Services, makes use of CFFileDescriptors and CFNotificationCenters, neither of which are present in the current release of CFLite. The latest patched CFLite produced as part of the PureFoundation project includes basic implementations of these functions which allows DirectoryService to run.
2. Problems with partial workarounds
2.1 OpenDirectory depends on Foundation
OpenDirectory depends on Foundation which is not available in Darwin. This is a vital component of Darwin linked implicitly to the login infrastructure, consequently multi-user mode fails.
passwd
dyld: Library not loaded: /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
Referenced from: /System/Library/PrivateFrameworks/OpenDirectory.framework/Versions/A/OpenDirectory
The dependency of the OpenDirectory project on Foundation should be removed. http://darwinbuild.macosforge.org/trac/ticket/49 See Foundation replacement called PureFoundation.
2.2 launchd does not build
This is a mission critical component of Darwin. http://darwinbuild.macosforge.org/trac/ticket/9 Maybe related: "Logged as radar 5802196: Unable to build TOT launchd from macosforge.org" (source)
Patched its sources. Please let us know if you know a cleaner solution.
2.3 IOKitUser does not build
Patched its sources. Please let us know if you know a cleaner solution.
3. Problems that are problems no more
3.1 diskarbitrationd fails with "_SCSerialize() failure" errors
This was caused by CFLite not supporting a certain mode of operation of a particular CF function. Building CFLite with the latest PureDarwin patch will restore this functionality and allow diskarbitrationd to run correctly.
3.2 CF missing symbols
__kCFBundleResourceSpecificationKey referenced by some dependents (e.g., Security framework) is expected in CF but missing. Patching the source code to restore this symbol and others (for example, exception names) has proved successful. To apply these patches, follows the instructions for initialising the darwinbuild environment as described in Using DarwinBuild.
missing
3.3 libauto.dylib Apple has released autozone-77 under the Apache License 2.0. Thanks, Apple!