Revision: 325 http://trac.macosforge.org/projects/darwinbuild/changeset/325 Author: ssen Date: 2006-10-04 02:02:42 -0700 (Wed, 04 Oct 2006) Log Message: ----------- add script to build chroot from local root filesystem Modified Paths: -------------- trunk/darwinbuild/Makefile Added Paths: ----------- trunk/darwinbuild/createChroot Modified: trunk/darwinbuild/Makefile =================================================================== --- trunk/darwinbuild/Makefile 2006-08-21 17:32:20 UTC (rev 324) +++ trunk/darwinbuild/Makefile 2006-10-04 09:02:42 UTC (rev 325) @@ -18,6 +18,7 @@ [ -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) createChroot $(DATDIR) $(INSTALL) $(INSTALL_EXE_FLAGS) manifest $(DATDIR) $(INSTALL) $(INSTALL_EXE_FLAGS) ditto.sh $(DATDIR)/ditto $(INSTALL) $(INSTALL_EXE_FLAGS) buildlist.sh $(DATDIR)/buildlist @@ -31,6 +32,7 @@ rm -f $(BINDIR)/darwinbuild rm -f $(DATDIR)/darwinbuild.common rm -f $(DATDIR)/installXcodebuild + rm -f $(DATDIR)/createChroot rm -f $(DATDIR)/manifest -rmdir $(DATDIR) Added: trunk/darwinbuild/createChroot =================================================================== --- trunk/darwinbuild/createChroot (rev 0) +++ trunk/darwinbuild/createChroot 2006-10-04 09:02:42 UTC (rev 325) @@ -0,0 +1,120 @@ +#!/bin/sh + +FORCE="YES" + +XCODEBUILD=/usr/bin/xcodebuild +BUILDROOT="$1" + +EXTRADIR=( \ + /.vol \ + /cores \ + /dev \ + /private/tmp \ + /private/var \ + /private/var/tmp ) + +EXTRACOPY=( \ + /Developer/Makefiles \ + /Library/Application\ Support \ + /System/Library/Frameworks \ + /System/Library/PrivateFrameworks \ + /System/Library/DTDs \ + /System/Library/Fonts \ + /System/Library/Keyboard\ Layouts \ + /System/Library/Perl \ + /System/Library/Tcl \ + /System/Library/CoreServices/CharacterSets \ + /bin \ + /private/etc \ + /sbin \ + /usr/bin \ + /usr/include \ + /usr/lib \ + /usr/libexec \ + /usr/sbin \ + /usr/share ) + +EXTRALINKS=( \ + private/tmp \ + private/var \ + private/etc ) + +if [ -z "$BUILDROOT" ]; then + echo "Usage: $0 /Volumes/DarwinBuild/BuildRoot" 1>&2 + exit 1 +fi + +mkdir -p "$BUILDROOT" + +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 +} + +GenerateFileNames() { + cat /tmp/installXcode.libs.$$ | 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 ".$X" \! \( -name \*_debug\* -o -name \*_profile\* -o -path \*.lproj\* -o -path \*.dict\* \) >> /tmp/installXcode.tmpfiles.$$ + done + sort -u /tmp/installXcode.tmpfiles.$$ > /tmp/installXcode.files.$$ +} + +CopyFiles() { +# VERBOSECPIO="v" + VERBOSECPIO="" + echo -n "Copying system ..." + cpio -o -c < /tmp/installXcode.files.$$ | \ + (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 files to copy into chroot ... +AppendExtraFiles +GenerateFileNames +CopyFiles + +for X in "${EXTRADIR[@]}"; do + mkdir -p $BUILDROOT/$X +done + +for X in "${EXTRALINKS[@]}"; do + ln -sf $X $BUILDROOT/ +done + +# We provide this functionality, at least +mkdir -p $BUILDROOT/usr/local/darwinbuild/receipts +for i in "files" "bash"; do + touch $BUILDROOT/usr/local/darwinbuild/receipts/$i +done + +popd > /dev/null + +RemoveTemps Property changes on: trunk/darwinbuild/createChroot ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native
participants (1)
-
source_changes@macosforge.org