Jonas Maebe wrote on ma, 16 feb 2009:
On 16 Feb 2009, at 17:07, William Siegrist wrote:
xnu comes with the 2 files (*.defs) you need in /usr/include/device. So make sure you load xnu and the files are there:
$ darwinbuild -load xnu $ ls -1 BuildRoot/usr/include/device/ device.defs device_port.h device_types.defs device_types.h
The source files get generated during the DeviceMIG target of IOKitUser. If you are building with -nochroot, you need to copy the .defs files from BuildRoot to /usr/include/device/.
Thanks, I missed the "-load". I've also created /usr/include/device and copied the .defs files there. However, still no dice (same error as before). I did notice the following in the build log though:
(NOTE: project IOKitUser was written by a newer Xcode version (45) -- temporarily downgrading it (without modifying project file))
I'll try downloading and installing Xcode 3.1.2 and see whether that solves it.
I discovered that the def files are not getting translated in case you build with -nochroot (the shell script of the target that should build that is simply empty in that case for some reason). Since -nochroot was required for my hfs+ disk image, I've restarted from scratch (thanks for the updated instructions in the README). I've also installed Xcode 3.1.2 (first, I ran /Developer/Library/uninstall-devtools). I'm still not getting anywhere, though. First of all, I got many errors about missing "as" binaries (this also happened previously). E.g., when asking to build AppleFan without -nochroot: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BUILDING AppleFan-110.3.1~2 on Sat Feb 14 08:43:25 PST 2009 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Build configuration: Build host: bigmac.elis.UGent.be Build tool: xcodebuild Build action: install Build number: 9G55 Host kernel version: Darwin Kernel Version 9.6.0: Mon Nov 24 17:39:01 PST 2008; root:xnu-1228.9.59~1/RELEASE_PPC cc version: gcc version 4.0.1 (Apple Inc. build 5465) cctools version: Fan/build-AppleFan-110.3.1~2.sh: line 13: as: command not found (see the last line -- this also resulted in compilation failures while building AppleFan itself). So I copied /usr/bin/as and /usr/libexec/gcc/darwin/ppc/as to the buildroot. Next, I got the errors about the missing headers, so I tried to build IOKitUser. As explained at the start of this reply, the translation of the def files by mig does not work with -nochroot for some reason, so I left it out. That however results in another problem: /bin/sh -c /private/var/tmp/IOKitUser/IOKitUser-388.50.obj/IOKitUser.build/DeviceMIG.build/Script-2DCEADC108DB8EA700B0CBEA.sh /usr/bin/mig -DIOKIT -D__MigTypeCheck=1 -fconstant-cfstrings -server /dev/null -header /private/var/tmp/IOKitUser/IOKitUser-388.50.obj/IOKitUser.build/DerivedSources/iokitmig32.h -user /private/var/tmp/IOKitUser/IOKitUser-388.50.obj/IOKitUser.build/DerivedSources/iokitmig32.c /usr/include/device/device.defs dyld: Library not loaded: /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation Referenced from: /usr/bin/arch Reason: image not found I initially started by first copying Foundation.framework into the BuildRoot, then CoreFoundation, then /usr/lib/libicucore.A.dylib, and then I gave up. I renamed BuildRoot/usr/bin/arch and put in its place a bash script simply containing "echo ppc" (I know arch does more than that, but I guess that's not needed here). Next, I got consecutive errors about missing assemblers for ppc64 and x86_64, which I also copied to BuildRoot/ibexec/gcc/darwin/$respective_arch, along with the i386 one since I guessed that one would error next. The next error was that /usr/bin/strip was not found, so I copied it as well. Then everything finally built successfully, but: The following build commands failed: ShadowExternalHeaders: PBXCp /private/var/tmp/IOKitUser/IOKitUser-388.50.sym/BuiltProducts/include/IOKit/graphics/IODisplayProductIDs.h /System/Library/Frameworks/IOKit.framework/Versions/A/PrivateHeaders/graphics/IODisplayProductIDs.h PBXCp /private/var/tmp/IOKitUser/IOKitUser-388.50.sym/BuiltProducts/include/IOKit/graphics/IOAccelSurfaceControl.h /System/Library/Frameworks/IOKit.framework/Versions/A/PrivateHeaders/graphics/IOAccelSurfaceControl.h PBXCp /private/var/tmp/IOKitUser/IOKitUser-388.50.sym/BuiltProducts/include/IOKit/graphics/IOGraphicsLibPrivate.h /System/Library/Frameworks/IOKit.framework/Versions/A/PrivateHeaders/graphics/IOGraphicsLibPrivate.h (3 failures) I googled one of those and discovered it was part of the AppleDisplays project: bash-3.2# darwinbuild AppleDisplays *** Fetching Sources ... Found AppleDisplays-170.0.1.tar.gz in /Volumes/Builds/9G55/Sources [snip] Build log begins here: Makefile:5: /Developer/Makefiles/pb_makefiles/platform.make: No such file or directory make: *** No rule to make target `/Developer/Makefiles/pb_makefiles/platform.make'. Stop. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BUILD TIME: 0h 0m 0s EXIT STATUS: 2 So I copied /Developer/Makefiles/pb_makefiles into the BuildRoot, then: /XCD/loper/usr/bin/g++-4.0 -o /private/var/tmp/AppleDisplays/AppleDisplays-170.0.1.root//System/Library/Extensions/AppleOnboardDisplay.kext/Contents/MacOS/AppleOnboardDisplay "-L/private/var/tmp/AppleDisplays/AppleDisplays-170.0.1.sym/BuiltProducts" "-F/private/var/tmp/AppleDisplays/AppleDisplays-170.0.1.sym/BuiltProducts" -filelist /private/var/tmp/AppleDisplays/AppleDisplays-170.0.1.obj/AppleOnboardDisplay.build/AppleOnboardDisplay.build/Objects-normal/LinkFileList "-arch" "i386" "-arch" "ppc" "-static" "-nostdlib" "-r" "-lkmodc++" "-lkmod" "-lcc_kext" "-lcpp_kext" DynamicLibrary.LinkUsingFileList /private/var/tmp/AppleDisplays/AppleDisplays-170.0.1.root//System/Library/Extensions/AppleOnboardDisplay.kext/Contents/MacOS/AppleOnboardDisplay collect2: cannot find 'ld' collect2: cannot find 'ld' g++-4.0: installation problem, cannot exec 'lipo': No such file or directory ...failed DynamicLibrary.LinkUsingFileList /private/var/tmp/AppleDisplays/AppleDisplays-170.0.1.root//System/Library/Extensions/AppleOnboardDisplay.kext/Contents/MacOS/AppleOnboardDisplay ... So I copied /usr/bin/ld and /usr/bin/lipo into the BuildRoot. During next try ld_classic was missing, so I also copied it. And then I almost fell out of my chair, as the first project finally built successfully :) Two IOKitUSer header problems remained, which I solved with the help of http://www.puredarwin.org/developers/darwinbuild/troubleshooting#TOC-IOKitUs... (third and fourth problem mentioned there, adjusting the version numbers in the solution for the 9G55 build). Next, I got an error about a missing CoreFoundation/CoreFoundation.h error, so I did a darwinbuild CF. This one actually downloaded cctools and ld64 tarballs, so I guess I could/should have installed those instead of manually copying the assemblers/linkers/strip into my buildroot. Anyway, the CF build failed because of a missing AvailabilityMacros.h, and I did not manage to install CarbonHeaders to fix that: # darwinbuild CarbonHeaders *** Fetching Sources ... Downloading http://src.macosforge.org/Projects//CarbonHeaders-9G55.tar.gz ... *** Copying Sources ... tar (child): /Volumes/Builds/9G55/Sources/CarbonHeaders-9G55.tar.gz: Cannot open: No such file or directory tar (child): Error is not recoverable: exiting now tar: Child returned status 2 tar: Error exit delayed from previous errors *** Installing Roots ... *** Installing Headers ... *** Mounting special filesystems ... Mounting devfs ... ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BUILDING CarbonHeaders-9G55~3 on Wed Feb 18 10:33:53 PST 2009 [snip] ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ make install "SRCROOT=/SourceCache/CarbonHeaders/CarbonHeaders-9G55" "OBJROOT=/private/var/tmp/CarbonHeaders/CarbonHeaders-9G55.obj" "SYMROOT=/private/var/tmp/CarbonHeaders/CarbonHeaders-9G55.sym" "DSTROOT=/private/var/tmp/CarbonHeaders/CarbonHeaders-9G55.root" "RC_ProjectName=CarbonHeaders" "RC_ProjectSourceVersion=9G55" "RC_ProjectNameAndSourceVersion=CarbonHeaders-9G55" "RC_ProjectBuildVersion=3" "INSTALLED_PRODUCT_ASIDES=YES" "MACOSX_DEPLOYMENT_TARGET=10.5" "NEXT_ROOT=" "RC_ARCHS=ppc i386" "RC_CFLAGS=-pipe -no-cpp-precomp -arch ppc -arch i386" "RC_JASPER=YES" "RC_NONARCH_CFLAGS=-pipe -no-cpp-precomp" "RC_OS=macos" "RC_PRIVATE=/private" "RC_RELEASE=Leopard" "RC_XBS=YES" "RC_i386=YES" "RC_ppc=YES" "SEPARATE_STRIP=YES" "UNAME_RELEASE=9.0" "UNAME_SYSNAME=Darwin" < /dev/null ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Build log begins here: make: *** No rule to make target `install'. Stop. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BUILD TIME: 0h 0m 0s EXIT STATUS: 2 Jonas ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.