[darwinbuild-changes] [90] trunk/darwinbuild

source_changes at macosforge.org source_changes at macosforge.org
Wed Oct 4 01:44:22 PDT 2006


Revision: 90
          http://trac.macosforge.org/projects/darwinbuild/changeset/90
Author:   kevin
Date:     2006-10-04 01:44:22 -0700 (Wed, 04 Oct 2006)

Log Message:
-----------
- move buildroot receipt location to /usr/local/darwinbuild/receipts
- use the register manifest as the receipt

Modified Paths:
--------------
    trunk/darwinbuild/darwinbuild
    trunk/darwinbuild/darwinbuild.common

Modified: trunk/darwinbuild/darwinbuild
===================================================================
--- trunk/darwinbuild/darwinbuild	2005-07-25 20:39:13 UTC (rev 89)
+++ trunk/darwinbuild/darwinbuild	2006-10-04 08:44:22 UTC (rev 90)
@@ -332,7 +332,7 @@
 ###
 if [ "$CHROOTED" == "YES" -a "$noload" != "YES" ]; then
 	echo "*** Installing Roots ..."
-	receipts="$BuildRoot/.chroot.receipts"
+	receipts="$BuildRoot/usr/local/darwinbuild/receipts"
 	mkdir -p "$receipts"
 	bash_deps=$($PREFIX/bin/darwinxref dependencies -run "bash")
 	deps=$($PREFIX/bin/darwinxref dependencies -build "$projnam")
@@ -340,9 +340,9 @@
 	### xcodebuild is a special case because it is not open source
 	### we try to install it from the host Mac OS X system if it is required
 	echo "$deps" | grep "\bxcodebuild-"
-	if [ "$?" == "0" -a ! -f "$receipts/xcodebuild-(null)" ]; then
+	if [ "$?" == "0" -a ! -f "$receipts/xcodebuild" ]; then
 		$DARWIN_BUILDROOT/bin/installXcodebuild
-		touch "$receipts/xcodebuild-(null)"
+		touch "$receipts/xcodebuild"
 	fi
 
 	for X in files bash $bash_vers $deps ; do
@@ -555,8 +555,15 @@
 done
 IFS="$OLDIFS"
 
+### 46 was derived from Tiger ls(1) output.
 cat <<-EOF >> $SCRIPT
 	echo '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'
+	echo 'Installed Roots:'
+	ls -l "/usr/local/darwinbuild/receipts" | cut -c 46- | sort
+EOF
+
+cat <<-EOF >> $SCRIPT
+	echo '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'
 	echo $buildtool $action '$build_string' < /dev/null
 	echo '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'
 	echo ''
@@ -619,15 +626,15 @@
 		echo "devfs appears to exist ..."
 	fi
 
-# 	if [ "$buildtool" == "xcodebuild" ]; then
-# 		echo "Mounting volfs ..."
-# 		[ -d "$BuildRoot/sbin" ] || mkdir -p "$BuildRoot/sbin"
-# 		[ -f "$BuildRoot/sbin/mount_volfs" ] || cp /sbin/mount_volfs "$BuildRoot/sbin/"
-# 		[ -f "$BuildRoot/sbin/umount" ] || cp /sbin/umount "$BuildRoot/sbin/"
-# 		[ -d "$BuildRoot/.vol" ] || mkdir -p "$BuildRoot/.vol"
-# 		## If the directory is empty, assume volfs is not mounted
-# 		[ "$(echo $BuildRoot/.vol/*)" == "$BuildRoot/.vol/*" ] && chroot "$BuildRoot" /sbin/mount_volfs "/.vol"
-# 	fi
+ 	if [ "$buildtool" == "xcodebuild" ]; then
+ 		echo "Mounting volfs ..."
+ 		[ -d "$BuildRoot/sbin" ] || mkdir -p "$BuildRoot/sbin"
+ 		[ -f "$BuildRoot/sbin/mount_volfs" ] || cp /sbin/mount_volfs "$BuildRoot/sbin/"
+ 		[ -f "$BuildRoot/sbin/umount" ] || cp /sbin/umount "$BuildRoot/sbin/"
+ 		[ -d "$BuildRoot/.vol" ] || mkdir -p "$BuildRoot/.vol"
+ 		## If the directory is empty, assume volfs is not mounted
+ 		[ "$(echo $BuildRoot/.vol/*)" == "$BuildRoot/.vol/*" ] && chroot "$BuildRoot" /sbin/mount_volfs "/.vol"
+ 	fi
 
 	###
 	### Actually invoke the build tool here
@@ -668,11 +675,22 @@
 		mkdir -p "$DARWIN_BUILDROOT/Headers/$projnam/$project.hdrs~$build_version"
 		ditto "$REAL_DSTROOT" "$DARWIN_BUILDROOT/Headers/$projnam/$project.hdrs~$build_version"
 	else
+		### Register the root with the darwinxref database.  This will output a manifest
+		### which can be used to uniquely identify the root.  Store the unique identifier
+		### in the receipts directory after registration.
+		MANIFEST="/tmp/$projnam.$$"
+		"$PREFIX/bin/darwinxref" register "$projnam" "$REAL_DSTROOT" | tee "$MANIFEST"
+		SHA1=$(cat "$MANIFEST" | openssl dgst -sha1)
+		mkdir -p "$REAL_DSTROOT/usr/local/darwinbuild/receipts"
+		cp "$MANIFEST" "$REAL_DSTROOT/usr/local/darwinbuild/receipts/$SHA1"
+		ln -s "$SHA1" "$REAL_DSTROOT/usr/local/darwinbuild/receipts/$projnam"
+		rm -f "$MANIFEST"
+
 		mkdir -p "$DARWIN_BUILDROOT/Symbols/$projnam/$project.sym~$build_version"
 		mkdir -p "$DARWIN_BUILDROOT/Roots/$projnam/$project.root~$build_version"
 		ditto "$REAL_SYMROOT" "$DARWIN_BUILDROOT/Symbols/$projnam/$project.sym~$build_version"
 		ditto "$REAL_DSTROOT" "$DARWIN_BUILDROOT/Roots/$projnam/$project.root~$build_version"
-		"$PREFIX/bin/darwinxref" register "$projnam" "$REAL_DSTROOT"
+
 		if [ "$logdeps" == "YES" ]; then
 			### Log dependencies, but filter out duplicates, relative paths, and temporary files
 			TRACE_TYPES='\(execve\|open\)[[:space:]]\+'

Modified: trunk/darwinbuild/darwinbuild.common
===================================================================
--- trunk/darwinbuild/darwinbuild.common	2005-07-25 20:39:13 UTC (rev 89)
+++ trunk/darwinbuild/darwinbuild.common	2006-10-04 08:44:22 UTC (rev 90)
@@ -111,7 +111,7 @@
 function InstallRoot() {
 	local BuildRoot="$1"
 	local X="$2"
-	local receipts="$BuildRoot/.chroot.receipts"
+	local receipts="$BuildRoot/usr/local/darwinbuild/receipts"
 	mkdir -p "$receipts"
 
 	### Special case for core foundation because the Mac OS X
@@ -120,7 +120,7 @@
 	### the host Mac OS X system.  Save away a copy and restore
 	### it later.
 	CFPATH=/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
-	if [ "${X/-*}" == "CF" -a -f "$receipts/xcodebuild-(null)" ]; then
+	if [ "${X/-*}" == "CF" -a -f "$receipts/xcodebuild" ]; then
 		cp "$BuildRoot/$CFPATH" "$BuildRoot/$CFPATH.bak"
 	fi
 
@@ -129,8 +129,11 @@
 	### project's dependencies.  Therefore don't install something that
 	### has already been installed.  (Test for the presense of a receipt).
 	###
-	bv=$(GetBuildVersion $DARWIN_BUILDROOT/Roots/${X/-*}/$X.root*)
-	local SRCDIR=$DARWIN_BUILDROOT/Roots/${X/-*}/$X.root~$bv
+	if [ -d "$DARWIN_BUILDROOT/Roots/$X" ]; then
+		Y=$($PREFIX/bin/darwinxref $dbfile version $X)
+		bv=$(GetBuildVersion $DARWIN_BUILDROOT/Roots/$X/$Y.root*)
+		local SRCDIR=$DARWIN_BUILDROOT/Roots/$X/$Y.root~$bv
+	fi
 	if [ "$SRCDIR" -nt "$receipts/$X" ]; then
 		echo "Copying $X ..."
 		ditto $SRCDIR $BuildRoot
@@ -166,7 +169,7 @@
 function InstallHeaders() {
 	local BuildRoot="$1"
 	local X="$2"
-	local receipts="$BuildRoot/.chroot.receipts"
+	local receipts="$BuildRoot/usr/local/darwinbuild/receipts"
 
 	if [ ! -f "$receipts/$X.hdrs" -a ! -f "$receipts/$X" ]; then
 	bv=$(GetBuildVersion $DARWIN_BUILDROOT/Headers/${X/-*}/$X.hdrs*)

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


More information about the darwinbuild-changes mailing list