[darwinbuild-dev] -arch ppc

Charles Darwin darwinskernel at gmail.com
Mon Aug 11 13:33:17 PDT 2008


On 11-Aug-08, at 4:21 PM, William Siegrist wrote:

>
> On Aug 11, 2008, at 1:12 PM, Charles Darwin wrote:
>
>>
>> On 11-Aug-08, at 3:25 PM, William Siegrist wrote:
>>
>>> On Aug 9, 2008, at 12:48 PM, 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";
>>>>> 			};
>>>>> 		};
>>>>> 	};
>>>>> }
>>>>>
>>>>> 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
>>>>>
>>>>>
>>>>
>>>> I did all of the above and whatever was in the README then ran  
>>>> this:
>>>>
>>>> ibook-g4:Build9E17 root# darwinbuild -build=ppc_only xnu	# but  
>>>> `ctfconvert' seems to be missing.
>>>
>>>> /bin/sh: /usr/local/bin/ctfconvert: No such file or directory	#  
>>>> so build fails. Then I tried this:
>>>>
>>>
>>> I get the same error, but my build continues and succeeds, so I  
>>> dont think this is your problem.
>>>
>>>
>>>
>>>
>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
>>>> ++++++++++++++
>>>> BUILD TIME: 0h 25m 49s
>>>> EXIT STATUS: 2
>>>>
>>>> # Then I tried this:
>>>> ibook-g4:Build9E17 root# darwinbuild -build=ppc_only dtrace
>>>>
>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
>>>> ++++++++++++++
>>>> xcodebuild install  "SRCROOT=/SourceCache/dtrace/dtrace-48"  
>>>> "OBJROOT=/private/var/tmp/dtrace/dtrace-48.obj" "SYMROOT=/private/ 
>>>> var/tmp/dtrace/dtrace-48.sym" "DSTROOT=/private/var/tmp/dtrace/ 
>>>> dtrace-48.root" "RC_ProjectName=dtrace"  
>>>> "RC_ProjectSourceVersion=48"  
>>>> "RC_ProjectNameAndSourceVersion=dtrace-48"  
>>>> "RC_ProjectBuildVersion=1" "INSTALLED_PRODUCT_ASIDES=YES"  
>>>> "MACOSX_DEPLOYMENT_TARGET=10.5" "NEXT_ROOT=" "RC_ARCHS=ppc ppc64  
>>>> i386 x86_64" "RC_CFLAGS=-pipe -no-cpp-precomp -arch ppc -arch  
>>>> ppc64 -arch i386 -arch x86_64" "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" "RC_ppc64=YES" "RC_x86_64=YES"  
>>>> "SEPARATE_STRIP=YES" "UNAME_RELEASE=9.0" "UNAME_SYSNAME=Darwin"  
>>>> < /dev/null
>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
>>>> ++++++++++++++
>>>>
>>>> Build log begins here:
>>>>
>>>> Error: /usr/bin/xcode-select not found.
>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
>>>> ++++++++++++++
>>>> BUILD TIME: 0h 0m 0s
>>>> EXIT STATUS: 1
>>>> ibook-g4:Build9E17 root# which xcode-select	# but xcode-select is  
>>>> there
>>>> /usr/bin/xcode-select
>>>>
>>>
>>>
>>> DarwinBuild runs in a chroot, so you really need to look for ./ 
>>> BuildRoot/usr/bin/xcode-select.
>>
>> root# ls ./BuildRoot/usr/bin/xcode-select
>> ls: ./BuildRoot/usr/bin/xcode-select: No such file or directory
>> root# pwd
>> /Volumes/Builds/Build9E17
>>
>>> That file should be copied into your buildroot when DarwinBuild  
>>> first tried to build an xcode project. Do you have Xcode installed  
>>> on your host OS?
>>
>> Yes I do.
>> root# cat /Developer/Applications/Xcode.app/Contents/version.plist
>> <?xml version="1.0" encoding="UTF-8"?>
>> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd 
>> ">
>> <plist version="1.0">
>> <dict>
>> 	<key>BuildVersion</key>
>> 	<string>1</string>
>> 	<key>CFBundleShortVersionString</key>
>> 	<string>3.1</string>
>>
>
> Xcode 3.1? I havnt had a chance to work on 3.1 compatibility, so all  
> I can suggest is try copying xcode-select from your host's partition  
> into your buildroot. You may need to copy supporting libraries and  
> frameworks as well.  DarwinBuild should have ran the Xcode 3.0  
> "install", which does include xcode-select, so something changed  
> enough in 3.1 to break that.
>

Xcode 3.0 is being downloaded right now. I'm going to give it a spin  
and see how it goes. I will post back the results here. Thanks for  
your time and info.

Charles

>
>>> DarwinBuild cannot build Xcode for you since its not open source.
>>>
>>> -Bill
>>>
>>
>> Now I am confused. What is this then?
>>
>> http://www.opensource.apple.com/darwinsource/DevToolsMar2008/
>
>
>
> Xcode contains some open source components (like gcc), so those are  
> posted. Its not enough to generate the entire xcodebuild system.
>
>
> -Bill
>
>



More information about the darwinbuild-dev mailing list