[darwinbuild] proposed binary_sites change

Kevin Van Vechten kevin at opendarwin.org
Wed Aug 31 16:43:29 PDT 2005

I'd like to modify DarwinBuild's behavior for downloading binaries to  
better support custom plists, and alleviate a lot of the server-side  
work that's needed to support roots downloads.

In the current scheme, each release needs to have all roots available  
in one HTTP directory (we use symlinks on the server side).  A better  
approach would be to use a search path when downloading roots.  This  
would allow people providing custom plists to only host the roots  
which they've actually modified.

Currently, the binary_sites URLs in the property lists are a base  
path, which DarwinBuild appends a build number to:
         binary_sites = (

Instead, I'd like to make the binary_sites URLs explicit for each build:
         binary_sites = (

The `darwinxref binary_sites` command would only print binary_sites  
URLs when the project being requested is actually present in that  
plist's projects dictionary.  If URLs are printed, darwinbuild will  
attempt to download the root from that site.  Otherwise, it will re- 
run the darwinxref command looking for the binary_sites property in  
the inherited plist.

This scheme should work as long as all inherited builds are ABI  
compatible.  This is certainly true of Apple's software update  
releases, though it would probably be best to never inherit across  
major releases (i.e. 8A48 inheriting from 7W98).  Luckily major  
releases usually have enough differences that it wouldn't make sense  
to inherit in those cases anyway.

I believe this would eliminate the most common cases for using the "- 
depsbuild" argument.

After this change is made, we can maintain compatibility with older  
darwinbuilds by adding server-side symlinks like "8C46 -> ."

- Kevin

More information about the darwinbuild-dev mailing list