[darwinbuild-dev] -arch ppc

Charles Darwin darwinskernel at gmail.com
Mon Aug 11 12:52:19 PDT 2008


On 11-Aug-08, at 3:19 PM, William Siegrist wrote:

>
> On Aug 1, 2008, at 11:09 AM, Charles Darwin wrote:
>
>>
>> On 1-Aug-08, at 12:12 PM, William Siegrist wrote:
>>
>>>
>>> On Aug 1, 2008, at 4:43 AM, Charles Darwin wrote:
>>>
>>>>
>>>> On 1-Aug-08, at 12:35 AM, William Siegrist wrote:
>>>>
>>>>> On Jul 31, 2008, at 6:50 PM, Charles Darwin wrote:
>>>>>
>>>>>> How do I build for ppc only?
>>>>>>
>>>>>
>>>>> The overall idea is to set the RC_ARCHS environment variable.  
>>>>> But you cant just export it, because its specified in the build  
>>>>> plists. So here's 2 ways to do it:
>>>>>
>>>>> 1. The maintainable/proper way.... Make a new plist that has an  
>>>>> environment key and a RC_ARCHS value. See 9A581.plist for an  
>>>>> example of the environment variables. You only need to specify  
>>>>> what you need to override, so you dont need keys for projects,  
>>>>> macosx, darwin, whatever.  You should just need the build,  
>>>>> inherits, and environment keys. Use "darwinxref loadIndex path/ 
>>>>> to/new.plist" to load it. Use "darwinbuild -build=<build>  
>>>>> <project>" to build. You can see the value of RC_ARCHS scroll by  
>>>>> during the build process.
>>>>
>>>> I am going with this one.
>>>> Did this first:
>>>> $ curl -O http://svn.macosforge.org/repository/darwinbuild/trunk/plists/9A581.plist
>>>>
>>>> Changed this line:
>>>> RC_ARCHS=ppc # at the top (`grep i386 9A581.plist'  returns 132  
>>>> results though but I pretend not to see, or should I? My  
>>>> understanding is that's why we are doing it this way and not the  
>>>> quick/dirty way(?))
>>>>
>>>> <http://svn.macosforge.org/repository/darwinbuild/trunk/README>  
>>>> says something about RC_ppc but I can't find it.
>>>>
>>>> I found some other interesting stuff here too:
>>>> What would happen if I removed individual projects from  
>>>> 9A581.plist? Can I finally get rid of AppleTalk and Chess?  How  
>>>> about AppleRAID? (and where is bluetooth?)
>>>>
>>>> What if I changed source_sites from
>>>> 	http://src.macosforge.org/Projects/
>>>> 		to
>>>> 	http://www.opensource.apple.com/darwinsource/Current/
>>>> Would then darwinbuild do what it's supposed to do but build from  
>>>> Current source? How about binary_sites?
>>>
>>>
>>> You dont need to get the plist manually. Try the following in a  
>>> new directory:
>>>
>>> $ darwinbuild -init 9A581       # this makes some directories and  
>>> downloads the plists
>>> $ ls .build                                   # you should see a  
>>> plist and the database here
>>>
>>> Then create a file at .build/ppc_only.plist  (dont forget the  
>>> leading period) and put this in it:
>>>
>>> // !$*UTF8*$!
>>> {
>>>    build = ppc_only;
>>>    darwin = "Darwin 9.0";
>>>    inherits = 9A581;
>>>    environment = {
>>>            INSTALLED_PRODUCT_ASIDES = YES;
>>>            MACOSX_DEPLOYMENT_TARGET = 10.5;
>>>            NEXT_ROOT = "";
>>>            RC_ARCHS = "ppc";
>>>            RC_JASPER = YES;
>>>            RC_NONARCH_CFLAGS = "-pipe -no-cpp-precomp";
>>>            RC_OS = macos;
>>>            RC_PRIVATE = /private;
>>>            RC_RELEASE = Leopard;
>>>            RC_XBS = YES;
>>>            SEPARATE_STRIP = YES;
>>>            UNAME_RELEASE = 9.0;
>>>            UNAME_SYSNAME = Darwin;
>>>    };
>>>    macosx = "Mac OS X 10.5.0";
>>> }
>>>
>>>
>>> Then load the plist and build stuff....
>>>
>>> $ darwinxref loadIndex .build/ppc_only.plist          # populates  
>>> db with your custom build
>>> $ darwinbuild -build=ppc_only grep                        # builds  
>>> grep for ppc only, for example
>>>
>>> You can make your plist inherit from whatever build you want. For  
>>> example, lets say you want to build 9E17 projects with only ppc .   
>>> And lets say you want to build zlib, and that specifies 4  
>>> architectures normally (see .build/5A581.plist), you would have a  
>>> plist like this to override that:
>>>
>>> // !$*UTF8*$!
>>> {
>>>    build = ppc_only;
>>>    darwin = "Darwin 9.4";
>>>    inherits = 9E17;
>>>    environment = {
>>>            INSTALLED_PRODUCT_ASIDES = YES;
>>>            MACOSX_DEPLOYMENT_TARGET = 10.5;
>>>            NEXT_ROOT = "";
>>>            RC_ARCHS = "ppc";
>>>            RC_JASPER = YES;
>>>            RC_NONARCH_CFLAGS = "-pipe -no-cpp-precomp";
>>>            RC_OS = macos;
>>>            RC_PRIVATE = /private;
>>>            RC_RELEASE = Leopard;
>>>            RC_XBS = YES;
>>>            SEPARATE_STRIP = YES;
>>>            UNAME_RELEASE = 9.0;
>>>            UNAME_SYSNAME = Darwin;
>>>    };
>>>    macosx = "Mac OS X 10.5.4";
>>> 	projects = {
>>> 		zlib = {
>>> 			environment =  {
>>> 				RC_ARCHS = "ppc";
>>> 			};
>>> 		};
>>> 	};
>>> }
>>>
>>
>> I'm using this one. So I copies this part and then:
>>
>> root# pbpaste > .build/ppc_only.plist
>>
>> <ppc_only.plist>
>>
>>
>>> Remember to reload your plist if you make changes to it with the  
>>> loadIndex command above.  The RC_ppc variable is set automatically  
>>> based on RC_ARCHS, so you shouldnt have to worry about it.  As for  
>>> src.macosforge.org versus opensource.apple.com, I run both servers  
>>> and put the source on both at the same time. If something is  
>>> missing, let me know since its probably just an error on my part.  
>>> The binary_sites URL is used for downloading Roots and  
>>> BinaryDrivers. If you have a specially built root hosted  
>>> somewhere, you could use those keys to "darwinbuild -load  
>>> <project>" and populate your build tree with your root.
>>>
>>>
>>> -Bill
>>>
>>>
>>
>> root# darwinbuild -build=ppc_only xnu
>>>>>> mv _WKdmDecompress.o ./WKdmDecompress.o
>> g++ -nostdlib  -static -r  -arch ppc  -force_cpusubtype_ALL  -o  
>> iokit.o ./WKdmCompress.o ./WKdmDecompress.o ./IOHibernateIO.cpo ./ 
>> IOHibernateRestoreKernel.o ./IOLib.cpo ./IOLocks.cpo ./ 
>> IOConditionLock.cpo ./IOSyncer.cpo ./IOStartIOKit.cpo ./ 
>> IODeviceTreeSupport.cpo ./IORegistryEntry.cpo ./IOService.cpo ./ 
>> IOServicePM.cpo ./IOPMinformee.cpo ./IOPMinformeeList.cpo ./ 
>> IOPMPowerStateQueue.cpo ./IOCatalogue.cpo ./IOPMPowerSource.cpo ./ 
>> IOPMPowerSourceList.cpo ./IOWorkLoop.cpo ./IOEventSource.cpo ./ 
>> IOInterruptEventSource.cpo ./IOCommandGate.cpo ./IOCommand.cpo ./ 
>> IOCommandPool.cpo ./IOCommandQueue.cpo ./IODMAEventSource.cpo ./ 
>> IOFilterInterruptEventSource.cpo ./IOTimerEventSource.cpo ./ 
>> IOBufferMemoryDescriptor.cpo ./IODMACommand.cpo ./ 
>> IODeviceMemory.cpo ./IOInterleavedMemoryDescriptor.cpo ./ 
>> IOMapper.cpo ./IOCopyMapper.cpo ./IOMemoryCursor.cpo ./ 
>> IOMemoryDescriptor.cpo ./IOMultiMemoryDescriptor.cpo ./ 
>> IORangeAllocator.cpo ./IOPlatformExpert.cpo ./IOCPU.cpo ./ 
>> IONVRAM.cpo ./IODMAController.cpo ./IOInterruptController.cpo ./ 
>> IOUserClient.cpo ./IOKitDebug.cpo ./IODataQueue.cpo ./ 
>> IOSharedDataQueue.cpo ./IOStringFuncs.o ./KernelConfigTables.cpo ./ 
>> IOKitBSDInit.cpo ./DINetBootHook.cpo ./RootDomainUserClient.cpo ./ 
>> IOPowerConnection.cpo ./IOWatchDogTimer.cpo ./IOAsmSupport.o ./ 
>> IODBDMA.cpo ./IOSharedLock.o ./IONVRAMController.cpo ./ 
>> AppleNVRAM.cpo ./ApplePlatformExpert.cpo ./AppleCPU.cpo ./ 
>> IOPMrootDomain.cpo ./AppleMacIO.cpo ./AppleNMI.cpo
>> g++: Internal error: Bus error (program ld)
>> Please submit a full bug report.
>> See <URL:http://developer.apple.com/bugreporter> for instructions.
>> make[6]: *** [iokit.o] Error 1
>> make[5]: *** [build_all] Error 2
>> make[4]: *** [do_all] Error 2
>> make[3]: *** [build_all] Error 2
>> make[2]: *** [build_all] Error 2
>> make[1]: *** [build_all] Error 2
>> make: *** [all] Error 2
>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
>> ++++++++++++
>> BUILD TIME: 0h 12m 44s
>> EXIT STATUS: 2
>>
>>
>> Your thoughts please.
>>
>
>
> Building 9E17's xnu with your ppc_only plist on a 9E17 PPC host  
> works for me. What hardware and OS version are you trying to build on?
>
> -Bill
>

$ hostinfo && !!
hostinfo && system_profiler SPHardwareDataType
Mach kernel version:
	 Darwin Kernel Version 9.4.0: Mon Jun  9 19:36:17 PDT 2008;  
root:xnu-1228.5.20~1/RELEASE_PPC
Kernel configured for a single processor only.
1 processor is physically available.
1 processor is logically available.
Processor type: ppc7450 (PowerPC 7450)
Processor active: 0
Primary memory available: 1.25 gigabytes
Default processor set: 46 tasks, 225 threads, 1 processors
Load average: 0.33, Mach factor: 0.75
Hardware:

     Hardware Overview:

       Model Name: iBook G4
       Model Identifier: PowerBook6,5
       Processor Name: PowerPC G4  (1.2)
       Processor Speed: 1.2 GHz
       Number Of CPUs: 1
       L2 Cache (per CPU): 512 KB
       Memory: 1.25 GB
       Bus Speed: 133 MHz
       Boot ROM Version: 4.8.7f1
       Serial Number:

$

Charles



More information about the darwinbuild-dev mailing list