[darwinbuild-changes] [552] trunk/darwinbuild

source_changes at macosforge.org source_changes at macosforge.org
Thu Sep 3 19:33:12 PDT 2009


Revision: 552
          http://trac.macosforge.org/projects/darwinbuild/changeset/552
Author:   wsiegrist at apple.com
Date:     2009-09-03 19:33:07 -0700 (Thu, 03 Sep 2009)
Log Message:
-----------
First pass at replacing chroots for Xcode projects with a Platform/SDK. The darwinbuild script looks to be getting it right, but the platform still needs some additional pieces.

Modified Paths:
--------------
    trunk/darwinbuild/Makefile
    trunk/darwinbuild/darwinbuild.in
    trunk/darwinbuild/installXcode.in

Added Paths:
-----------
    trunk/darwinbuild/Info.plist
    trunk/darwinbuild/SDKSettings.plist
    trunk/darwinbuild/installXcode32.in

Removed Paths:
-------------
    trunk/darwinbuild/installXcode32

Added: trunk/darwinbuild/Info.plist
===================================================================
--- trunk/darwinbuild/Info.plist	                        (rev 0)
+++ trunk/darwinbuild/Info.plist	2009-09-04 02:33:07 UTC (rev 552)
@@ -0,0 +1,28 @@
+<?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>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleIdentifier</key>
+	<string>org.macosforge.darwinbuild.platforms.%%PLATFORM%%</string>
+	<key>CFBundleName</key>
+	<string>%%PLATFORM%% SDKs</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1</string>
+	<key>Description</key>
+	<string>%%PLATFORM%%</string>
+	<key>FamilyIdentifier</key>
+	<string>%%PLATFORM%%</string>
+	<key>FamilyName</key>
+	<string>%%PLATFORM%%</string>
+	<key>Identifier</key>
+	<string>org.macosforge.darwinbuild.platforms.%%PLATFORM%%</string>
+	<key>Name</key>
+	<string>%%PLATFORM%%</string>
+	<key>Type</key>
+	<string>Platform</string>
+	<key>Version</key>
+	<string>1</string>
+</dict>
+</plist>

Modified: trunk/darwinbuild/Makefile
===================================================================
--- trunk/darwinbuild/Makefile	2009-09-02 18:29:32 UTC (rev 551)
+++ trunk/darwinbuild/Makefile	2009-09-04 02:33:07 UTC (rev 552)
@@ -9,7 +9,8 @@
 		     darwinmaster.sh \
 		     packageRoots.sh \
 		     thinPackages.sh \
-		     installXcode
+		     installXcode \
+		     installXcode32
 
 all: manifest prefixes
 
@@ -33,6 +34,8 @@
 	$(INSTALL) $(INSTALL_EXE_FLAGS) installXcode3 $(DATDIR)
 	$(INSTALL) $(INSTALL_EXE_FLAGS) installXcode31 $(DATDIR)
 	$(INSTALL) $(INSTALL_EXE_FLAGS) installXcode32 $(DATDIR)
+	$(INSTALL) $(INSTALL_DOC_FLAGS) Info.plist $(DATDIR)
+	$(INSTALL) $(INSTALL_DOC_FLAGS) SDKSettings.plist $(DATDIR)
 
 	$(INSTALL) $(INSTALL_EXE_FLAGS) createChroot $(DATDIR)
 	$(INSTALL) $(INSTALL_EXE_FLAGS) $(OBJROOT)/manifest $(DATDIR)
@@ -53,6 +56,8 @@
 	rm -f $(DATDIR)/installXcode3
 	rm -f $(DATDIR)/installXcode31
 	rm -f $(DATDIR)/installXcode32
+	rm -f $(DATDIR)/Info.plist
+	rm -f $(DATDIR)/SDKSettings.plist
 	rm -f $(DATDIR)/createChroot
 	rm -f $(DATDIR)/manifest
 	rm -f $(DATDIR)/ditto

Added: trunk/darwinbuild/SDKSettings.plist
===================================================================
--- trunk/darwinbuild/SDKSettings.plist	                        (rev 0)
+++ trunk/darwinbuild/SDKSettings.plist	2009-09-04 02:33:07 UTC (rev 552)
@@ -0,0 +1,27 @@
+<?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>CanonicalName</key>
+	<string>%%PLATFORM%%</string>
+	<key>DefaultProperties</key>
+	<dict>
+		<key>MACOSX_DEPLOYMENT_TARGET</key>
+		<string>10.6</string>
+		<key>PLATFORM_NAME</key>
+		<string>%%PLATFORM%%</string>
+	</dict>
+	<key>DisplayName</key>
+	<string>%%PLATFORM%%</string>
+	<key>MaximumDeploymentTarget</key>
+	<string>10.6</string>
+	<key>MinimalDisplayName</key>
+	<string>10.6</string>
+	<key>MinimumSupportedToolsVersion</key>
+	<string>3.2</string>
+	<key>Version</key>
+	<string>10.6</string>
+	<key>isBaseSDK</key>
+	<string>YES</string>
+</dict>
+</plist>

Modified: trunk/darwinbuild/darwinbuild.in
===================================================================
--- trunk/darwinbuild/darwinbuild.in	2009-09-02 18:29:32 UTC (rev 551)
+++ trunk/darwinbuild/darwinbuild.in	2009-09-04 02:33:07 UTC (rev 552)
@@ -497,15 +497,6 @@
 REAL_OBJROOT="$BuildRoot/$vartmp/$projnam/$project.obj"
 REAL_SYMROOT="$BuildRoot/$vartmp/$projnam/$project.sym"
 REAL_DSTROOT="$BuildRoot/$vartmp/$projnam/$project.root"
-if [ "$CHROOTED" == "YES" ]; then
-	prefix="$BuildRoot"
-else
-	prefix=""
-fi
-export SRCROOT="${REAL_SRCROOT/$prefix/}"
-export OBJROOT="${REAL_OBJROOT/$prefix/}"
-export SYMROOT="${REAL_SYMROOT/$prefix/}"
-export DSTROOT="${REAL_DSTROOT/$prefix/}"
 
 if [ "$nosource" != "YES" ]; then
 	###
@@ -600,10 +591,11 @@
 ###
 ### Look for the build tool: make, xcodebuild
 ###
-
 numfiles=$(echo *.pbxproj *.pbproj *.xcode *.xcodeproj 2> /dev/null )
 if [ -n "$numfiles" ]; then
 	buildtool="xcodebuild"
+	# we use a platform/sdk instead of chrooting for Xcode projects
+	export CHROOTED="NO"
 else
 	buildtool="make"
 fi
@@ -616,7 +608,11 @@
 ###
 ### Also install CoreOSMakefiles and Perl for make based projects
 ###
-if [ "$CHROOTED" == "YES" -a "$noload" != "YES" ]; then
+if [ "$CHROOTED" == "YES" -o $buildtool == "xcodebuild" ]; then
+	chroot_or_xcode="YES"
+fi
+
+if [ $chroot_or_xcode == "YES" -a "$noload" != "YES" ]; then
 	echo "*** Installing Roots ..."
 	receipts="$BuildRoot/usr/local/darwinbuild/receipts"
 	mkdir -p "$receipts"
@@ -659,6 +655,7 @@
 	if [ "$buildtool" == "xcodebuild" -a ! -f "$receipts/xcodebuild" ]; then
 		echo "*** Installing Xcode Tools ..."
 		"$DATADIR/installXcode" "$BuildRoot"
+		platform=$(cat "${DARWIN_BUILDROOT}/.build/platform")
 		touch "$receipts/xcodebuild"
 	fi
 
@@ -679,6 +676,16 @@
 TRACELOG="$BuildRoot/private/var/tmp/$projnam/$project.trace~$build_version"
 mkdir -p "$DARWIN_BUILDROOT/Logs/$projnam"
 
+if [ "$CHROOTED" == "YES" ]; then
+	prefix="$BuildRoot"
+else
+	prefix=""
+fi
+export SRCROOT="${REAL_SRCROOT/$prefix/}"
+export OBJROOT="${REAL_OBJROOT/$prefix/}"
+export SYMROOT="${REAL_SYMROOT/$prefix/}"
+export DSTROOT="${REAL_DSTROOT/$prefix/}"
+
 # Hide this variable from the unset
 export -n SRCROOT OBJROOT SYMROOT DSTROOT
 export -n DARWIN_BUILDROOT DARWINBUILD_BUILD DARWINXREF_DB_FILE
@@ -699,12 +706,6 @@
 export CHROOTED
 
 export PATH=/bin:/sbin:/usr/bin:/usr/sbin/:/usr/local/bin:/usr/local/sbin
-
-# sets the install path to xcode tools if we're chrooted
-if [ "$CHROOTED" == "YES" ]; then
-	export DEVELOPER_DIR="/XCD/loper"
-fi
-
 export SHELL="/bin/sh"
 export HOME="/var/root"
 export LOGNAME="root"
@@ -713,7 +714,7 @@
 
 build_string=""
 if [ "$buildtool" == "xcodebuild" -a "$target" != "" ]; then
-	build_string="-target $target"
+	build_string="-sdk $platform -target $target"
 elif [ "$target" != "" ]; then
 	action="$target"
 fi
@@ -923,9 +924,8 @@
 	###
 	### Actually invoke the build tool here
 	###
-	chroot -u root -g wheel $BuildRoot $vartmp/$projnam/build-$project~$build_version.sh 2>&1 | tee -a "$LOG"
+	chroot -u root -g wheel $BuildRoot $vartmp/$projnam/build-$project~$build_version.sh 2>&1 | tee -a "$LOG";
 	EXIT_STATUS="${PIPESTATUS[0]}"
-
 else
 	###
 	### Actually invoke the build tool here

Modified: trunk/darwinbuild/installXcode.in
===================================================================
--- trunk/darwinbuild/installXcode.in	2009-09-02 18:29:32 UTC (rev 551)
+++ trunk/darwinbuild/installXcode.in	2009-09-04 02:33:07 UTC (rev 552)
@@ -10,7 +10,12 @@
 then
 	if [ "$VER" -gt "1000" ];
 	then
-		"$BINDIR/installXcode31" "$BROOT";	
+		if [ "$VER" -gt "1600" ];
+		then
+			"$BINDIR/installXcode32" "$BROOT";
+		else
+			"$BINDIR/installXcode31" "$BROOT";	
+		fi
 	else
 		"$BINDIR/installXcode3" "$BROOT";	
 	fi

Deleted: trunk/darwinbuild/installXcode32
===================================================================
--- trunk/darwinbuild/installXcode32	2009-09-02 18:29:32 UTC (rev 551)
+++ trunk/darwinbuild/installXcode32	2009-09-04 02:33:07 UTC (rev 552)
@@ -1,255 +0,0 @@
-#!/bin/sh
-
-FORCE="YES"
-
-XCODEBUILD=/Developer/usr/bin/xcodebuild
-BUILDROOT="$1"
-
-EXTRACOPY=( \
-    /usr/lib/dyld \
-    /usr/share/icu \
-    /Developer/Private \
-    /Developer/Tools \
-    /usr/bin/xcodebuild \
-    /usr/bin/xcode-select \
-    /Developer/Library/version.plist \
-    /Developer/usr/bin/xcodebuild)
-    
-BINSYMLINKS=( \
-    cc \
-    dsymutil \
-    gcc \
-    gcc-4.0 \
-    gcc-4.2 \
-    gcov \
-    gcov-4.0 \
-    gcov-4.2 \
-    g++ \
-    g++-4.0 \
-    g++-4.2 \
-    lex \
-    libtool \
-    mig \
-    ranlib \
-    strip \
-    yacc)
-    
-LIBEXECLINKS=( \
-    migcom)
-
-RPATH=/Developer/Library/PrivateFrameworks
-
-if [ -z "$BUILDROOT" ]; then
-    echo "Usage: $0 <BuildRoot>" 1>&2
-    exit 1
-fi
-
-mkdir -p "$BUILDROOT"
-
-###
-### Symlink opensource binaries used by Xcode to /usr/bin
-###  so the opensource-built binary can be used instead
-###  of the one that ships with Xcode
-###
-SymlinkBinaries() {
-    echo "Creating symlinks for binaries ..."
-	
-    BIN_DIR="$BUILDROOT/XCD/loper/usr/bin/"
-    mkdir -p $BIN_DIR
-    pushd $BIN_DIR > /dev/null
-    for B in "${BINSYMLINKS[@]}"; do
-	ln -s "/usr/bin/$B" "$B"
-    done
-    popd > /dev/null
-
-    LIBEXEC_DIR="$BUILDROOT/XCD/loper/usr/libexec/"
-    mkdir -p $LIBEXEC_DIR
-    pushd $LIBEXEC_DIR > /dev/null
-    for L in "${LIBEXECLINKS[@]}"; do
-	ln -s "/usr/libexec/$L" "$L"
-    done
-    popd > /dev/null
-	
-
-}
-
-###
-### Load opensource binaries if they dont exist so we can symlink to them
-###  
-LoadBinaries() {
-    echo "Loading binaries ..."
-    if [ ! -f "$BUILDROOT/usr/bin/gcc" ]; then
-	darwinbuild -load gcc
-    fi
-    if [ ! -f "$BUILDROOT/usr/bin/gcc-4.2" ]; then
-	darwinbuild -load gcc_42
-    fi
-}
-
-###
-### Recurse through frameworks and libraries looking for dependencies
-###
-RecurseLibs() {
-	echo $1 >> /tmp/installXcode.seen.$$
-	otool -L $1 | tail -n +2 | awk '{ print $1 }' > /tmp/installXcode.tmplibs.$$
-	sed -e s, at rpath,${RPATH}, < /tmp/installXcode.tmplibs.$$ > /tmp/installXcode.outlibs.$$
-	cat /tmp/installXcode.outlibs.$$ >> /tmp/installXcode.libs.$$
-	cat /tmp/installXcode.outlibs.$$ | while read X; do
-		if ! grep -q "^$X\$" /tmp/installXcode.seen.$$ ; then
-			RecurseLibs $X
-		fi
-	done
-}
-
-RemoveTemps() {
-	rm -f /tmp/installXcode.libs.$$
-	rm -f /tmp/installXcode.outlibs.$$
-	rm -f /tmp/installXcode.seen.$$
-	rm -f /tmp/installXcode.tmplibs.$$
-	rm -f /tmp/installXcode.tmpfiles.$$
-	rm -f /tmp/installXcode.files.$$
-}
-
-AppendExtraFiles() {
-    for X in "${EXTRACOPY[@]}"; do
-	echo "$X" >> /tmp/installXcode.libs.$$
-    done
-}
-
-TransformLibs() {
-#    set -x
-    while read X; do
-	NEWX=$(echo $X | sed -n 's/\(.*\.framework\).*/\1/p')
-	if [ -n "$NEWX" ]; then
-	    # if we're copying a framework binary, copy the entire bundle
-	    echo "$NEWX"
-	    continue
-	fi
-
-	NEWX=$(echo $X | sed -n 's/\([^.]*\)\..*dylib$/\1/p')
-	if [ -n "$NEWX" ]; then
-	    # if we're copying a dylib, copy associate symlinks and stuff
-	    for Y in "$NEWX"*.dylib; do
-		echo "$Y"
-	    done
-	    continue
-	fi
-
-	echo "$X"
-    done
-#    set +x
-}
-
-GenerateFileNames() {
-    cat /tmp/installXcode.libs.$$ | sort -u | TransformLibs | sort -u | while read X; do
-	# echo adding children for "$X"
-
-	# first mkdir parent directories
-	PARENT=$(dirname "$X")
-	while [ "$PARENT" != "/" -a "$PARENT" != "." ]; do
-	    echo ".$PARENT" >> /tmp/installXcode.tmpfiles.$$
-	    PARENT=$(dirname "$PARENT")
-	done
-	find ".$X" \! \( -name \*_debug\* -o -name \*_profile\* -o -path \*/Headers\* -o -path \*/PrivateHeaders\* -o -path \*.dict\* \) >> /tmp/installXcode.tmpfiles.$$
-    done
-    sort -u /tmp/installXcode.tmpfiles.$$ > /tmp/installXcode.files.$$
-}
-
-CopyFiles() {
-#    VERBOSECPIO="v"
-    VERBOSECPIO=""
-    echo "Copying Xcode and dependencies ..."
-
-    # copy files and use sed to rewrite paths during copy
-    cpio -o -c < /tmp/installXcode.files.$$ | \
-	sed -e 's,/System,/XCD/SY,g' \
-	-e 's,CoreServices/XCD/SY,CoreServices/System,g' \
-	-e 's,Resources/XCD/SY,Resources/System,g' \
-	-e 's,/usr/lib,/XCD/lib,g' \
-	-e 's,/usr/share/icu,/XCD/share/icu,g' \
-        -e 's, at rpath,/XCD/R,g' \
-	-e 's,/Developer,/XCD/loper,g' \
-	-e 's,platform/XCD/loper,platform/Developer,g' | \
-    (cd "$BUILDROOT"; cpio -ium${VERBOSECPIO}d )
-
-    echo "Symlinking for RPATH ..."
-    # symlink R to @rpath so we can replace uses of @rpath
-    pushd "$BUILDROOT/XCD" > /dev/null
-    ln -s loper/Library/PrivateFrameworks R
-    popd > /dev/null
-
-    echo "Copying Jamfiles ..."
-    find ".$JAMFILES" | cpio -o -c | \
-        sed -e 's,$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks,/XCD/SY///////Library/PrivateFrameworks,g' \
-        -e 's,/Developer/Library/PrivateFrameworks/DevToolsCore.framework,/XCD/loper/Library/PrivateFrameworks/DevToolsCore.framework,g' | \
-    (cd "$BUILDROOT"; cpio -ium${VERBOSECPIO}d )
-
-
-    echo "Copying CoreServices ..."
-    find ./System/Library/CoreServices/System*.{plist,bundle} \
-	 ./System/Library/CoreServices/CoreTypes.bundle/ \
-	| cpio -o -c | \
-	sed -e 's,/System,/XCD/SY,g' \
-	-e 's,CoreServices/XCD/SY,CoreServices/System,g' \
-	-e 's,Resources/XCD/SY,Resources/System,g' \
-	-e 's,/usr/lib,/XCD/lib,g' \
-	-e 's,/usr/share/icu,/XCD/share/icu,g' \
-        -e 's, at rpath,/XCD/R,g' \
-	-e 's,/Developer,/XCD/loper,g' \
-	-e 's,platform/XCD/loper,platform/Developer,g' | \
-    (cd "$BUILDROOT"; cpio -ium${VERBOSECPIO}d )
-
-    # copy xcode support files such as plugins
-    #   but do not copy svn plugins since they are unecessary
-    echo "Copying Xcode library support files ..."
-    find "./Developer/Library/Xcode/" \! -ipath '*subversion*' \
-	| cpio -o -c | \
-	sed -e 's,/System,/XCD/SY,g' \
-	-e 's,CoreServices/XCD/SY,CoreServices/System,g' \
-	-e 's,Resources/XCD/SY,Resources/System,g' \
-	-e 's,/usr/lib,/XCD/lib,g' \
-	-e 's,/usr/share/icu,/XCD/share/icu,g' \
-        -e 's, at rpath,/XCD/R,g' \
-	-e 's,/Developer,/XCD/loper,g' \
-	-e 's,platform/XCD/loper,platform/Developer,g' | \
-    (cd "$BUILDROOT"; cpio -ium${VERBOSECPIO}d )           
-
-    # Platform
-    echo "Copying Mac OS X Platform ..."
-    find "./Developer/Platforms/MacOSX.platform" | cpio -o -c | \
-        sed -e 's,/System,/XCD/SY,g' \
-        -e 's,CoreServices/XCD/SY,CoreServices/System,g' \
-        -e 's,Resources/XCD/SY,Resources/System,g' \
-        -e 's,/usr/lib,/XCD/lib,g' \
-        -e 's,/usr/share/icu,/XCD/share/icu,g' \
-        -e 's, at rpath,/XCD/R,g' \
-        -e 's,/Developer,/XCD/loper,g' \
-        -e 's,platform/XCD/loper,platform/Developer,g' | \
-    (cd "$BUILDROOT"; cpio -ium${VERBOSECPIO}d )
-
-}
-
-
-
-###
-### Find all the framework and library dependencies of Xcode build
-### For frameworks, copy over all supporting files.
-###
-
-pushd / > /dev/null
-
-RemoveTemps
-touch /tmp/installXcode.seen.$$
-echo Analyzing Xcode dependencies ...
-RecurseLibs $XCODEBUILD
-AppendExtraFiles
-GenerateFileNames
-CopyFiles
-LoadBinaries
-SymlinkBinaries
-
-popd > /dev/null
-
-#RemoveTemps
-
-echo "Completed Xcode installation!"

Copied: trunk/darwinbuild/installXcode32.in (from rev 551, trunk/darwinbuild/installXcode32)
===================================================================
--- trunk/darwinbuild/installXcode32.in	                        (rev 0)
+++ trunk/darwinbuild/installXcode32.in	2009-09-04 02:33:07 UTC (rev 552)
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+FORCE="YES"
+XCODEBUILD=/Developer/usr/bin/xcodebuild
+BUILDROOT="$1"
+DBROOT=$(dirname $BUILDROOT)
+PLATFORMDIR="${DBROOT}/Platform"
+STAMP=$(date +%Y%m%d%H%M%S)
+BUILD=$(cat $DBROOT/.build/build)
+PLATFORM="Darwinbuild_${BUILD}_${STAMP}"
+INFOPLIST=%%PREFIX%%/share/darwinbuild/Info.plist
+SDKPLIST=%%PREFIX%%/share/darwinbuild/SDKSettings.plist
+
+echo $PLATFORM > "${DBROOT}/.build/platform"
+echo "Installing Platform/SDK $PLATFORM for Xcode 3.2" 
+
+mkdir -p "${PLATFORMDIR}/Developer/SDKs"
+
+sed -e "s,%%PLATFORM%%,${PLATFORM}," $INFOPLIST > "${PLATFORMDIR}/Info.plist"
+sed -e "s,%%PLATFORM%%,${PLATFORM}," $SDKPLIST > "${BUILDROOT}/SDKSettings.plist"
+
+pushd "${PLATFORMDIR}/Developer" > /dev/null
+ln -s ../../BuildRoot/usr/ usr
+popd > /dev/null
+
+pushd "${PLATFORMDIR}/Developer/SDKs" > /dev/null
+ln -s ../../../BuildRoot/ "${PLATFORM}.sdk"
+popd > /dev/null
+
+pushd "/Developer/Platforms" > /dev/null
+ln -s "$PLATFORMDIR" "${PLATFORM}.platform"
+popd > /dev/null
+
+echo "Completed Platform/SDK install"
+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20090903/6e85aff0/attachment-0001.html>


More information about the darwinbuild-changes mailing list