[darwinbuild-changes] [325] trunk/darwinbuild

source_changes at macosforge.org source_changes at macosforge.org
Wed Oct 4 02:02:43 PDT 2006


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20061004/b8e64808/attachment-0001.html


More information about the darwinbuild-changes mailing list