Revision: 367 http://trac.macosforge.org/projects/darwinbuild/changeset/367 Author: wsiegrist@apple.com Date: 2008-04-24 14:32:20 -0700 (Thu, 24 Apr 2008) Log Message: ----------- Initial work towards Xcode 3.0 compatibility: * new xcodefiles dir to hold version-specific lists of host files to copy * installXcode now just tries to detect your version and run the appropriate installXcodeN script Modified Paths: -------------- trunk/darwinbuild/Makefile trunk/darwinbuild/darwinbuild Added Paths: ----------- trunk/darwinbuild/installXcode trunk/darwinbuild/installXcode2 trunk/darwinbuild/installXcode3 trunk/darwinbuild/xcodefiles/ trunk/darwinbuild/xcodefiles/Xcode_3.0.txt Removed Paths: ------------- trunk/darwinbuild/installXcodebuild Modified: trunk/darwinbuild/Makefile =================================================================== --- trunk/darwinbuild/Makefile 2008-04-09 20:56:55 UTC (rev 366) +++ trunk/darwinbuild/Makefile 2008-04-24 21:32:20 UTC (rev 367) @@ -4,6 +4,7 @@ ### Variables for the 'install' phase ### DATDIR:=$(DATDIR)/darwinbuild +XCFILEDIR:=$(DATDIR)/xcodefiles all: manifest @@ -17,7 +18,13 @@ [ -d $(DATDIR) ] || $(INSTALL) -d $(INSTALL_DIR_FLAGS) $(DATDIR) $(INSTALL) $(INSTALL_DOC_FLAGS) darwinbuild.common $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) installXcodebuild $(DATDIR) + $(INSTALL) $(INSTALL_EXE_FLAGS) installXcode $(DATDIR) + $(INSTALL) $(INSTALL_EXE_FLAGS) installXcode2 $(DATDIR) + $(INSTALL) $(INSTALL_EXE_FLAGS) installXcode3 $(DATDIR) + + [ -d $(XCFILEDIR) ] || $(INSTALL) -d $(INSTALL_DIR_FLAGS) $(XCFILEDIR) + $(INSTALL) $(INSTALL_DOC_FLAGS) xcodefiles/* $(XCFILEDIR) + $(INSTALL) $(INSTALL_EXE_FLAGS) createChroot $(DATDIR) $(INSTALL) $(INSTALL_EXE_FLAGS) $(OBJROOT)/manifest $(DATDIR) $(INSTALL) $(INSTALL_EXE_FLAGS) ditto.sh $(DATDIR)/ditto @@ -31,9 +38,13 @@ uninstall: rm -f $(BINDIR)/darwinbuild rm -f $(DATDIR)/darwinbuild.common - rm -f $(DATDIR)/installXcodebuild + rm -f $(DATDIR)/installXcode + rm -f $(DATDIR)/installXcode2 + rm -f $(DATDIR)/installXcode3 rm -f $(DATDIR)/createChroot rm -f $(DATDIR)/manifest + rm -f $(XCFILEDIR)/* + -rmdir $(XCFILEDIR) -rmdir $(DATDIR) clean: Modified: trunk/darwinbuild/darwinbuild =================================================================== --- trunk/darwinbuild/darwinbuild 2008-04-09 20:56:55 UTC (rev 366) +++ trunk/darwinbuild/darwinbuild 2008-04-24 21:32:20 UTC (rev 367) @@ -508,6 +508,8 @@ ### Make sure we have at least a minimally functioning root ### by installing bash and its dependencies. ### +### Also install CoreOSMakefiles and Perl for make based projects +### if [ "$CHROOTED" == "YES" -a "$noload" != "YES" ]; then echo "*** Installing Roots ..." receipts="$BuildRoot/usr/local/darwinbuild/receipts" @@ -529,6 +531,16 @@ cp "/usr/bin/dsymutil" "$BuildRoot/usr/bin/dsymutil" fi + ### CoreOSMakefiles + if [ ! -d "$BuildRoot/Developer/Makefiles/CoreOS" ]; then + InstallRoot "$BuildRoot" "CoreOSMakefiles" "$depsbuild" + fi + + ### Perl + if [ ! -x "$BuildRoot/usr/bin/perl" ]; then + InstallRoot "$BuildRoot" "perl" "$depsbuild" + fi + echo "*** Installing Headers ..." deps=$($DARWINXREF dependencies -header "$projnam") for X in $deps ; do @@ -540,7 +552,7 @@ ### we try to install it from the host Mac OS X system if it is required if [ "$buildtool" == "xcodebuild" -a ! -f "$receipts/xcodebuild" ]; then echo "*** Installing Xcode Tools ..." - "$DATADIR/installXcodebuild" "$BuildRoot" + "$DATADIR/installXcode" "$BuildRoot" touch "$receipts/xcodebuild" fi Added: trunk/darwinbuild/installXcode =================================================================== --- trunk/darwinbuild/installXcode (rev 0) +++ trunk/darwinbuild/installXcode 2008-04-24 21:32:20 UTC (rev 367) @@ -0,0 +1,13 @@ +#!/bin/sh + +BINDIR=/usr/local/share/darwinbuild/ + +BROOT=$1 +VER=$(/usr/bin/xcodebuild -version | cut -d "-" -f 2 | cut -d ";" -f 1) + +if [ "$VER" == "921.0" ]; +then + "$BINDIR/installXcode3" "$BROOT"; +else + "$BINDIR/installXcode2" "$BROOT"; +fi \ No newline at end of file Property changes on: trunk/darwinbuild/installXcode ___________________________________________________________________ Name: svn:executable + * Copied: trunk/darwinbuild/installXcode2 (from rev 361, trunk/darwinbuild/installXcodebuild) =================================================================== --- trunk/darwinbuild/installXcode2 (rev 0) +++ trunk/darwinbuild/installXcode2 2008-04-24 21:32:20 UTC (rev 367) @@ -0,0 +1,174 @@ +#!/bin/sh + +FORCE="YES" + +XCODEBUILD=/usr/bin/xcodebuild +BUILDROOT="$1" + +EXTRACOPY=( \ + /usr/lib/dyld \ + /usr/share/icu \ + /System/Library/CoreServices/CharacterSets \ + /Developer/Private \ + /Developer/Tools \ + /usr/bin/xcodebuild \ + /Developer/Makefiles/pbx_jamfiles \ + /Library/Application\ Support/Xcode) + +JAMFILES=/Developer/Makefiles/pbx_jamfiles +XCODESETTINGS="/System/Library/PrivateFrameworks/DevToolsCore.framework/Versions/A/Resources/BuildSettings-macosx.plist" +XCODECOMP="/System/Library/PrivateFrameworks/DevToolsCore.framework/Versions/A/Resources/Built-in compilers.pbcompspec" + +if [ -z "$BUILDROOT" ]; then + echo "Usage: $0 /Volumes/DarwinBuild/BuildRoot" 1>&2 + exit 1 +fi + +mkdir -p "$BUILDROOT" + +### +### 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.$$ + cat /tmp/installXcode.tmplibs.$$ >> /tmp/installXcode.libs.$$ + cat /tmp/installXcode.tmplibs.$$ | 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.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 -n "Copying Xcode and dependencies ..." + cpio -o -c < /tmp/installXcode.files.$$ | \ + sed -e 's,/System,/XCD/SY,g' \ + -e 's,/usr/lib,/XCD/lib,g' \ + -e 's,/usr/share/icu,/XCD/share/icu,g' \ + -e 's,/Developer,/XCD/loper,g' | \ + (cd "$BUILDROOT"; cpio -ium${VERBOSECPIO}d ) + + find ".$JAMFILES" ".$XCODECOMP" | cpio -o -c | \ + sed -e 's,$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks,/XCD/SY///////Library/PrivateFrameworks,g' \ + -e 's,/Developer/Makefiles/pbx_jamfiles,/XCD/loper/Makefiles/pbx_jamfiles,g' \ + -e 's,/System/Library/PrivateFrameworks/DevToolsCore.framework,/XCD/SY/Library/PrivateFrameworks/DevToolsCore.framework,g' | \ + (cd "$BUILDROOT"; cpio -ium${VERBOSECPIO}d ) + + find ".$XCODESETTINGS" | cpio -o -c | \ + sed -e 's,/System/Library/PrivateFrameworks/DevToolsCore.framework,/XCD/SY/Library/PrivateFrameworks/DevToolsCore.framework,g' | \ + (cd "$BUILDROOT"; cpio -ium${VERBOSECPIO}d ) + + echo "done" +} + + + +### +### 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 + +popd > /dev/null + +if [ ! -e "$BUILDROOT/Library/Application Support/Xcode/Specifications/GCC 3.5.xcspec" ]; +then + echo "Generating GCC 3.5.xcspec" + SRC="$BUILDROOT/Library/Application Support/Xcode/Specifications/GCC 4.0.xcspec" + if [ ! -e "$SRC" ]; then + SRC="$BUILDROOT/Library/Application Support/Xcode/Specifications/GCC 4.0.xcplugin/Contents/Resources/GCC 4.0.xcspec" + if [ ! -e "$SRC" ]; then + echo "No template for 3.5 spec" 1>&2 + exit 1 + fi + fi + sed \ + -e 's/4\.0/3.5/g' \ + -e 's/4_0/3_5/g' \ + -e '/DashIFlagAcceptsHeadermaps/d' \ + -e '/SupportsPredictiveCompilation/d' \ + -e '/SupportsSeparateUserHeaderPaths/d' \ + -e '/SupportsSymbolSeparation/d' \ + -e '/SupportsMacOSXMinVersionFlag/d' \ + -e '/SupportsIsysroot/d' \ + -e 's/SupportsHeadermaps = Yes/SupportsHeadermaps = No/' \ + -e '/USE_HEADERMAP/,/}/ s/DefaultValue = YES/DefaultValue = NO/' \ + -e '/USE_HEADER_SYMLINKS/,/}/ s/DefaultValue = NO/DefaultValue = YES/' \ + -e '/Name = GCC_MACOSX_VERSION_MIN/,/},/d' \ + -e '/Name = GCC_ENABLE_SYMBOL_SEPARATION/,/},/d' \ + -e '/Name = GCC_ENABLE_SSE3_EXTENSIONS/,/},/d' \ + -e '/Name = GCC_THREADSAFE_STATICS/,/},/d' \ + -e '/Name = GCC_OBJC_CALL_CXX_CDTORS/,/},/d' \ + -e '/Name = GCC_USE_NASM_FOR_ASM_FILETYPE/,/},/d' \ + -e '/OptionsForSDKPackages/,/};/d' \ + < "$SRC" \ + > "$BUILDROOT/Library/Application Support/Xcode/Specifications/GCC 3.5.xcspec" + +fi + +RemoveTemps Added: trunk/darwinbuild/installXcode3 =================================================================== --- trunk/darwinbuild/installXcode3 (rev 0) +++ trunk/darwinbuild/installXcode3 2008-04-24 21:32:20 UTC (rev 367) @@ -0,0 +1,45 @@ +#!/bin/sh + +XCFILEDIR=/usr/local/share/darwinbuild/xcodefiles +BROOT=$1 + +if [ "x$BROOT" == "x" ]; +then + echo "$0 <build root>"; + exit 1; +fi + +echo "Installing xcodebuild into ${BROOT}"; + +# make initial buildroot and symlinks if needed +echo "Making initial build root..."; +mkdir -p "${BROOT}"; +pushd $BROOT >> /dev/null +for D in etc tmp var ; +do + echo "Symlinking $D"; + ln -s private/$D $D ; +done; +popd >> /dev/null + + +# copy files we need +exec <$XCFILEDIR/Xcode_3.0.txt +while read line; +do + parent=$(dirname $line); + echo "Copying: ${line}"; + mkdir -p "${BROOT}/${parent}" ; + cp -R "${line}" "${BROOT}/${parent}" ; +done; + +# load roots +echo "Loading roots that Xcode needs..."; +darwinbuild -load objc4 +darwinbuild -load ICU +darwinbuild -load libxml2 +darwinbuild -load SQLite +darwinbuild -load libxslt +darwinbuild -load OpenSSL +darwinbuild -load DiskArbitration +darwinbuild -load pb_makefiles \ No newline at end of file Deleted: trunk/darwinbuild/installXcodebuild =================================================================== --- trunk/darwinbuild/installXcodebuild 2008-04-09 20:56:55 UTC (rev 366) +++ trunk/darwinbuild/installXcodebuild 2008-04-24 21:32:20 UTC (rev 367) @@ -1,174 +0,0 @@ -#!/bin/sh - -FORCE="YES" - -XCODEBUILD=/usr/bin/xcodebuild -BUILDROOT="$1" - -EXTRACOPY=( \ - /usr/lib/dyld \ - /usr/share/icu \ - /System/Library/CoreServices/CharacterSets \ - /Developer/Private \ - /Developer/Tools \ - /usr/bin/xcodebuild \ - /Developer/Makefiles/pbx_jamfiles \ - /Library/Application\ Support/Xcode) - -JAMFILES=/Developer/Makefiles/pbx_jamfiles -XCODESETTINGS="/System/Library/PrivateFrameworks/DevToolsCore.framework/Versions/A/Resources/BuildSettings-macosx.plist" -XCODECOMP="/System/Library/PrivateFrameworks/DevToolsCore.framework/Versions/A/Resources/Built-in compilers.pbcompspec" - -if [ -z "$BUILDROOT" ]; then - echo "Usage: $0 /Volumes/DarwinBuild/BuildRoot" 1>&2 - exit 1 -fi - -mkdir -p "$BUILDROOT" - -### -### 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.$$ - cat /tmp/installXcode.tmplibs.$$ >> /tmp/installXcode.libs.$$ - cat /tmp/installXcode.tmplibs.$$ | 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.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 -n "Copying Xcode and dependencies ..." - cpio -o -c < /tmp/installXcode.files.$$ | \ - sed -e 's,/System,/XCD/SY,g' \ - -e 's,/usr/lib,/XCD/lib,g' \ - -e 's,/usr/share/icu,/XCD/share/icu,g' \ - -e 's,/Developer,/XCD/loper,g' | \ - (cd "$BUILDROOT"; cpio -ium${VERBOSECPIO}d ) - - find ".$JAMFILES" ".$XCODECOMP" | cpio -o -c | \ - sed -e 's,$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks,/XCD/SY///////Library/PrivateFrameworks,g' \ - -e 's,/Developer/Makefiles/pbx_jamfiles,/XCD/loper/Makefiles/pbx_jamfiles,g' \ - -e 's,/System/Library/PrivateFrameworks/DevToolsCore.framework,/XCD/SY/Library/PrivateFrameworks/DevToolsCore.framework,g' | \ - (cd "$BUILDROOT"; cpio -ium${VERBOSECPIO}d ) - - find ".$XCODESETTINGS" | cpio -o -c | \ - sed -e 's,/System/Library/PrivateFrameworks/DevToolsCore.framework,/XCD/SY/Library/PrivateFrameworks/DevToolsCore.framework,g' | \ - (cd "$BUILDROOT"; cpio -ium${VERBOSECPIO}d ) - - echo "done" -} - - - -### -### 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 - -popd > /dev/null - -if [ ! -e "$BUILDROOT/Library/Application Support/Xcode/Specifications/GCC 3.5.xcspec" ]; -then - echo "Generating GCC 3.5.xcspec" - SRC="$BUILDROOT/Library/Application Support/Xcode/Specifications/GCC 4.0.xcspec" - if [ ! -e "$SRC" ]; then - SRC="$BUILDROOT/Library/Application Support/Xcode/Specifications/GCC 4.0.xcplugin/Contents/Resources/GCC 4.0.xcspec" - if [ ! -e "$SRC" ]; then - echo "No template for 3.5 spec" 1>&2 - exit 1 - fi - fi - sed \ - -e 's/4\.0/3.5/g' \ - -e 's/4_0/3_5/g' \ - -e '/DashIFlagAcceptsHeadermaps/d' \ - -e '/SupportsPredictiveCompilation/d' \ - -e '/SupportsSeparateUserHeaderPaths/d' \ - -e '/SupportsSymbolSeparation/d' \ - -e '/SupportsMacOSXMinVersionFlag/d' \ - -e '/SupportsIsysroot/d' \ - -e 's/SupportsHeadermaps = Yes/SupportsHeadermaps = No/' \ - -e '/USE_HEADERMAP/,/}/ s/DefaultValue = YES/DefaultValue = NO/' \ - -e '/USE_HEADER_SYMLINKS/,/}/ s/DefaultValue = NO/DefaultValue = YES/' \ - -e '/Name = GCC_MACOSX_VERSION_MIN/,/},/d' \ - -e '/Name = GCC_ENABLE_SYMBOL_SEPARATION/,/},/d' \ - -e '/Name = GCC_ENABLE_SSE3_EXTENSIONS/,/},/d' \ - -e '/Name = GCC_THREADSAFE_STATICS/,/},/d' \ - -e '/Name = GCC_OBJC_CALL_CXX_CDTORS/,/},/d' \ - -e '/Name = GCC_USE_NASM_FOR_ASM_FILETYPE/,/},/d' \ - -e '/OptionsForSDKPackages/,/};/d' \ - < "$SRC" \ - > "$BUILDROOT/Library/Application Support/Xcode/Specifications/GCC 3.5.xcspec" - -fi - -RemoveTemps Added: trunk/darwinbuild/xcodefiles/Xcode_3.0.txt =================================================================== --- trunk/darwinbuild/xcodefiles/Xcode_3.0.txt (rev 0) +++ trunk/darwinbuild/xcodefiles/Xcode_3.0.txt 2008-04-24 21:32:20 UTC (rev 367) @@ -0,0 +1,23 @@ +/Library/Preferences +/Developer/Library/PrivateFrameworks/DevToolsFoundation.framework +/Developer/Library/PrivateFrameworks/DevToolsCParsing.framework +/Developer/Library/PrivateFrameworks/DevToolsCore.framework +/Developer/Library/PrivateFrameworks/DevToolsRemoteClient.framework +/Developer/Library/PrivateFrameworks/DevToolsSupport.framework +/Developer/Library/PrivateFrameworks/JavaKit.framework +/Developer/usr/bin/xcodebuild +/System/Library/Frameworks/Accelerate.framework +/System/Library/Frameworks/ApplicationServices.framework +/System/Library/Frameworks/CoreData.framework +/System/Library/Frameworks/CoreFoundation.framework +/System/Library/Frameworks/CoreServices.framework +/System/Library/Frameworks/Foundation.framework +/System/Library/Frameworks/IOKit.framework +/System/Library/Frameworks/JavaVM.framework +/System/Library/Frameworks/Security.framework +/System/Library/PrivateFrameworks/Symbolication.framework +/usr/bin/xcodebuild +/usr/bin/xcode-select +/usr/share/xcode-select/xcode_dir_path +/usr/lib/libauto.dylib +/usr/lib/libcups.2.dylib