[darwinbuild-changes] [653] releases/Darwin9

source_changes at macosforge.org source_changes at macosforge.org
Thu Dec 10 15:11:25 PST 2009


Revision: 653
          http://trac.macosforge.org/projects/darwinbuild/changeset/653
Author:   wsiegrist at apple.com
Date:     2009-12-10 15:11:22 -0800 (Thu, 10 Dec 2009)
Log Message:
-----------
Merge PR-7250612 to Darwin9

Modified Paths:
--------------
    releases/Darwin9/darwinup/Depot.cpp
    releases/Darwin9/darwinup/File.cpp
    releases/Darwin9/darwinup/main.cpp
    releases/Darwin9/testing/darwinup/run-tests.sh

Added Paths:
-----------
    releases/Darwin9/testing/darwinup/root4.tar.gz

Property Changed:
----------------
    releases/Darwin9/
    releases/Darwin9/darwinbuild/darwinbuild.in
    releases/Darwin9/darwinbuild/darwinmaster.sh.in
    releases/Darwin9/darwinbuild/installXcode.in
    releases/Darwin9/darwinbuild/packageRoots.sh.in
    releases/Darwin9/darwinbuild/thinPackages.sh.in


Property changes on: releases/Darwin9
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-4841388:399-419
/branches/PR-6358021:442-443
/branches/PR-6392966:423-427
/branches/PR-6398060:433-434
/branches/PR-6493844:460-461
/branches/PR-6497694:466-468,471
/branches/PR-6688645:479-490
/branches/PR-6722857:495-499
/trunk:432-434,602,640
   + /branches/PR-4841388:399-419
/branches/PR-6358021:442-443
/branches/PR-6392966:423-427
/branches/PR-6398060:433-434
/branches/PR-6493844:460-461
/branches/PR-6497694:466-468,471
/branches/PR-6688645:479-490
/branches/PR-6722857:495-499
/branches/PR-7250612:634-648
/trunk:432-434,602,629-633,640


Property changes on: releases/Darwin9/darwinbuild/darwinbuild.in
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-4841388/darwinbuild/darwinbuild:399-419
/branches/PR-6358021/darwinbuild/darwinbuild:442-443
/branches/PR-6392966/darwinbuild/darwinbuild:423-427
/branches/PR-6398060/darwinbuild/darwinbuild:433-434
/branches/PR-6493844/darwinbuild/darwinbuild.in:460-461
/branches/PR-6497694/darwinbuild/darwinbuild.in:466-468,471
/branches/PR-6688645/darwinbuild/darwinbuild.in:479-490
/branches/PR-6722857/darwinbuild/darwinbuild.in:495-499
/trunk/darwinbuild/darwinbuild:432-434
/trunk/darwinbuild/darwinbuild.in:602,640
   + /branches/PR-4841388/darwinbuild/darwinbuild:399-419
/branches/PR-6358021/darwinbuild/darwinbuild:442-443
/branches/PR-6392966/darwinbuild/darwinbuild:423-427
/branches/PR-6398060/darwinbuild/darwinbuild:433-434
/branches/PR-6493844/darwinbuild/darwinbuild.in:460-461
/branches/PR-6497694/darwinbuild/darwinbuild.in:466-468,471
/branches/PR-6688645/darwinbuild/darwinbuild.in:479-490
/branches/PR-6722857/darwinbuild/darwinbuild.in:495-499
/branches/PR-7250612/darwinbuild/darwinbuild.in:634-648
/trunk/darwinbuild/darwinbuild:432-434
/trunk/darwinbuild/darwinbuild.in:602,629-633,640


Property changes on: releases/Darwin9/darwinbuild/darwinmaster.sh.in
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-4841388/darwinbuild/darwinmaster.sh:399-419
/branches/PR-6358021/darwinbuild/darwinmaster.sh:442-443
/branches/PR-6392966/darwinbuild/darwinmaster.sh:423-427
/branches/PR-6398060/darwinbuild/darwinmaster.sh:433-434
/branches/PR-6493844/darwinbuild/darwinmaster.sh.in:460-461
/branches/PR-6497694/darwinbuild/darwinmaster.sh.in:466-468,471
/branches/PR-6688645/darwinbuild/darwinmaster.sh.in:479-490
/branches/PR-6722857/darwinbuild/darwinmaster.sh.in:495-499
/trunk/darwinbuild/darwinmaster.sh:432-434
/trunk/darwinbuild/darwinmaster.sh.in:602,640
   + /branches/PR-4841388/darwinbuild/darwinmaster.sh:399-419
/branches/PR-6358021/darwinbuild/darwinmaster.sh:442-443
/branches/PR-6392966/darwinbuild/darwinmaster.sh:423-427
/branches/PR-6398060/darwinbuild/darwinmaster.sh:433-434
/branches/PR-6493844/darwinbuild/darwinmaster.sh.in:460-461
/branches/PR-6497694/darwinbuild/darwinmaster.sh.in:466-468,471
/branches/PR-6688645/darwinbuild/darwinmaster.sh.in:479-490
/branches/PR-6722857/darwinbuild/darwinmaster.sh.in:495-499
/trunk/darwinbuild/darwinmaster.sh:432-434
/trunk/darwinbuild/darwinmaster.sh.in:602,629-633,640


Property changes on: releases/Darwin9/darwinbuild/installXcode.in
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-4841388/darwinbuild/installXcode:399-419
/branches/PR-6358021/darwinbuild/installXcode:442-443
/branches/PR-6392966/darwinbuild/installXcode:423-427
/branches/PR-6398060/darwinbuild/installXcode:433-434
/branches/PR-6493844/darwinbuild/installXcode.in:460-461
/branches/PR-6497694/darwinbuild/installXcode.in:466-468,471
/branches/PR-6688645/darwinbuild/installXcode.in:479-490
/branches/PR-6722857/darwinbuild/installXcode.in:495-499
/trunk/darwinbuild/installXcode:432-434
/trunk/darwinbuild/installXcode.in:602,640
   + /branches/PR-4841388/darwinbuild/installXcode:399-419
/branches/PR-6358021/darwinbuild/installXcode:442-443
/branches/PR-6392966/darwinbuild/installXcode:423-427
/branches/PR-6398060/darwinbuild/installXcode:433-434
/branches/PR-6493844/darwinbuild/installXcode.in:460-461
/branches/PR-6497694/darwinbuild/installXcode.in:466-468,471
/branches/PR-6688645/darwinbuild/installXcode.in:479-490
/branches/PR-6722857/darwinbuild/installXcode.in:495-499
/branches/PR-7250612/darwinbuild/installXcode.in:634-648
/trunk/darwinbuild/installXcode:432-434
/trunk/darwinbuild/installXcode.in:602,629-633,640


Property changes on: releases/Darwin9/darwinbuild/packageRoots.sh.in
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-4841388/darwinbuild/packageRoots.sh:399-419
/branches/PR-6358021/darwinbuild/packageRoots.sh:442-443
/branches/PR-6392966/darwinbuild/packageRoots.sh:423-427
/branches/PR-6398060/darwinbuild/packageRoots.sh:433-434
/branches/PR-6493844/darwinbuild/packageRoots.sh.in:460-461
/branches/PR-6497694/darwinbuild/packageRoots.sh.in:466-468,471
/branches/PR-6688645/darwinbuild/packageRoots.sh.in:479-490
/branches/PR-6722857/darwinbuild/packageRoots.sh.in:495-499
/trunk/darwinbuild/packageRoots.sh:432-434
/trunk/darwinbuild/packageRoots.sh.in:602,640
   + /branches/PR-4841388/darwinbuild/packageRoots.sh:399-419
/branches/PR-6358021/darwinbuild/packageRoots.sh:442-443
/branches/PR-6392966/darwinbuild/packageRoots.sh:423-427
/branches/PR-6398060/darwinbuild/packageRoots.sh:433-434
/branches/PR-6493844/darwinbuild/packageRoots.sh.in:460-461
/branches/PR-6497694/darwinbuild/packageRoots.sh.in:466-468,471
/branches/PR-6688645/darwinbuild/packageRoots.sh.in:479-490
/branches/PR-6722857/darwinbuild/packageRoots.sh.in:495-499
/trunk/darwinbuild/packageRoots.sh:432-434
/trunk/darwinbuild/packageRoots.sh.in:602,629-633,640


Property changes on: releases/Darwin9/darwinbuild/thinPackages.sh.in
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-4841388/darwinbuild/thinPackages.sh:399-419
/branches/PR-6358021/darwinbuild/thinPackages.sh:442-443
/branches/PR-6392966/darwinbuild/thinPackages.sh:423-427
/branches/PR-6398060/darwinbuild/thinPackages.sh:433-434
/branches/PR-6493844/darwinbuild/thinPackages.sh.in:460-461
/branches/PR-6497694/darwinbuild/thinPackages.sh.in:466-468,471
/branches/PR-6688645/darwinbuild/thinPackages.sh.in:479-490
/branches/PR-6722857/darwinbuild/thinPackages.sh.in:495-499
/trunk/darwinbuild/thinPackages.sh:432-434
/trunk/darwinbuild/thinPackages.sh.in:602,640
   + /branches/PR-4841388/darwinbuild/thinPackages.sh:399-419
/branches/PR-6358021/darwinbuild/thinPackages.sh:442-443
/branches/PR-6392966/darwinbuild/thinPackages.sh:423-427
/branches/PR-6398060/darwinbuild/thinPackages.sh:433-434
/branches/PR-6493844/darwinbuild/thinPackages.sh.in:460-461
/branches/PR-6497694/darwinbuild/thinPackages.sh.in:466-468,471
/branches/PR-6688645/darwinbuild/thinPackages.sh.in:479-490
/branches/PR-6722857/darwinbuild/thinPackages.sh.in:495-499
/trunk/darwinbuild/thinPackages.sh:432-434
/trunk/darwinbuild/thinPackages.sh.in:602,629-633,640

Modified: releases/Darwin9/darwinup/Depot.cpp
===================================================================
--- releases/Darwin9/darwinup/Depot.cpp	2009-12-10 22:38:44 UTC (rev 652)
+++ releases/Darwin9/darwinup/Depot.cpp	2009-12-10 23:11:22 UTC (rev 653)
@@ -435,7 +435,7 @@
 	InstallContext* context = (InstallContext*)ctx;
 	int res = 0;
 
-	IF_DEBUG("[DEBUG] backup_file: %s , %s \n", file->path(), context->archive->m_name);
+	IF_DEBUG("[backup] backup_file: %s , %s \n", file->path(), context->archive->m_name);
 
 	if (INFO_TEST(file->info(), FILE_INFO_ROLLBACK_DATA)) {
 	        char *path;        // the file's path
@@ -462,41 +462,17 @@
 		join_path(&dstpath, uuidpath, relpath);
 		assert(dstpath != NULL);
 
-		IF_DEBUG("[DEBUG] \npath = %s \nrelpath = %s \ndstpath = %s \nuuidpath = %s \n[/DEBUG]\n", path, relpath, dstpath, uuidpath); 
+		IF_DEBUG("[backup] path = %s \n", path);
+		IF_DEBUG("[backup] relpath = %s \n", relpath);
+		IF_DEBUG("[backup] dstpath = %s \n", dstpath);
+		IF_DEBUG("[backup] uuidpath = %s \n", uuidpath);
 
 		++context->files_modified;
 
 		// XXX: res = file->backup()
+		IF_DEBUG("[backup] copyfile(%s, %s)\n", path, dstpath);
+		res = copyfile(path, dstpath, NULL, COPYFILE_ALL);
 
-		// copy files used by gnutar and libarchive instead of moving them
-		//  since we use tar during the archive process
-		size_t i = 0;
-		bool docopy = false;
-		const char* tarfiles[] = {"/usr/bin/tar",
-					  "/usr/bin/gnutar",
-					  "/usr/bin/bsdtar",
-					  "/usr/lib/dyld",
-					  "/usr/lib/libarchive",
-					  "/usr/lib/libbz2",
-					  "/usr/lib/libz",
-					  "/usr/lib/libSystem",
-					  "/usr/lib/libiconv",
-					  "/usr/lib/libgcc_s"};
-		size_t numfiles = sizeof(tarfiles)/sizeof(*tarfiles);
-		for (i = 0; i < numfiles; i++) {
-		        if (strncmp(tarfiles[i], relpath, strlen(tarfiles[i])) == 0) {
-			        docopy = true;
-				break;
-			}
-		}
-		if (docopy) {
-		        IF_DEBUG("[backup] copyfile(%s, %s)\n", path, dstpath);
-			res = copyfile(path, dstpath, NULL, COPYFILE_ALL);
-		} else {
-		        IF_DEBUG("[backup] rename(%s, %s)\n", path, dstpath);
-			res = rename(path, dstpath);
-		}
-
 		if (res != 0) fprintf(stderr, "%s:%d: backup failed: %s: %s (%d)\n", __FILE__, __LINE__, dstpath, strerror(errno), errno);
 		free(path);
 		free(dstpath);

Modified: releases/Darwin9/darwinup/File.cpp
===================================================================
--- releases/Darwin9/darwinup/File.cpp	2009-12-10 22:38:44 UTC (rev 652)
+++ releases/Darwin9/darwinup/File.cpp	2009-12-10 23:11:22 UTC (rev 653)
@@ -32,6 +32,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <removefile.h>
 
 File::File() {
 	m_serial = 0;
@@ -133,6 +134,7 @@
 }
 
 int File::install(const char* prefix, const char* dest) {
+	extern uint32_t force;
 	int res = 0;
 	Archive* archive = this->archive();
 	assert(archive != NULL);
@@ -150,29 +152,57 @@
 			fprintf(stderr, "ERROR: [install] path too long: %s/%s\n", dirpath, path);
 			return -1;
 		}
-		IF_DEBUG("[install] about to rename %s to %s\n", srcpath, dstpath);
+		IF_DEBUG("[install] rename(%s, %s)\n", srcpath, dstpath);
 		res = rename(srcpath, dstpath);
 		if (res == -1) {
 			if (errno == ENOENT) {
 				// the file wasn't found, try to do on-demand
 				// expansion of the archive that contains it.
 				if (is_directory(dirpath) == 0) {
+					IF_DEBUG("[install] File::install on-demand archive expansion \n");
 					res = archive->expand_directory(prefix);
 					if (res == 0) res = this->install(prefix, dest);
 				} else {
 					// archive was already expanded, so
 					// the file is truly missing (worry).
+					IF_DEBUG("[install] File::install missing file in archive \n");
 					fprintf(stderr, "%s:%d: %s: %s (%d)\n", __FILE__, __LINE__, srcpath, strerror(errno), errno);
 				}
-			//} else if (errno == ENOTDIR) {
+			} else if (force && errno == ENOTDIR) {
 				// a) some part of destination path does not exist
 				// b) from is a directory, but to is not
-			//} else if (errno == EISDIR) {
+				IF_DEBUG("[install] File::install ENOTDIR\n");
+				fprintf(stderr, "%s:%d: %s: %s (%d)\n", __FILE__, __LINE__, dstpath, strerror(errno), errno);
+			} else if (force && errno == EISDIR) {
 				// to is a directory, but from is not
-			//} else if (errno == ENOTEMPTY) {
+				IF_DEBUG("[install] replacing directory with a file\n");
+				IF_DEBUG("[install] removefile(%s)\n", dstpath);
+				removefile_state_t rmstate;
+				rmstate = removefile_state_alloc();
+				res = removefile(dstpath, rmstate, REMOVEFILE_RECURSIVE);
+				removefile_state_free(rmstate);
+				if (res == -1) fprintf(stderr, "%s:%d: %s: %s (%d)\n", __FILE__, __LINE__, dstpath, strerror(errno), errno);
+				IF_DEBUG("[install] rename(%s, %s)\n", srcpath, dstpath);
+				res = rename(srcpath, dstpath);
+				if (res == -1) fprintf(stderr, "%s:%d: %s: %s (%d)\n", __FILE__, __LINE__, dstpath, strerror(errno), errno);
+			} else if (force && errno == ENOTEMPTY) {
 				// to is a directory and is not empty
+				IF_DEBUG("[install] File::install ENOTEMPTY\n");
+				fprintf(stderr, "%s:%d: %s: %s (%d)\n", __FILE__, __LINE__, dstpath, strerror(errno), errno);
 			} else {
+				if (!force) {
+					fprintf(stderr,
+							"-------------------------------------------------------------------------------\n"
+							"darwinup has encountered a potentially unsafe mismatch between the root and    \n"
+							"destination. For example, you may be trying to install a file where a directory\n" 
+							"currently exists. darwinup will not install this root by default since it could\n"
+							"cause damage to your system. You can use the force (-f) option to allow        \n"
+							"darwinup to attempt the install anyway.                                        \n"
+							"-------------------------------------------------------------------------------\n"
+							);
+				}
 				fprintf(stderr, "%s:%d: %s: %s (%d)\n", __FILE__, __LINE__, dstpath, strerror(errno), errno);
+				fprintf(stderr, "ERROR: fatal error during File::install. Cannot continue.\n");
 			}
 		} else {
 			IF_DEBUG("[install] rename(%s, %s)\n", srcpath, dstpath);
@@ -266,14 +296,17 @@
 
 int Symlink::install_info(const char* dest) {
 	int res = 0;
-	const char* path = this->path();
+	char* path;
+	join_path(&path, dest, this->path());
 	//mode_t mode = this->mode() & ALLPERMS;
 	uid_t uid = this->uid();
 	gid_t gid = this->gid();
 	IF_DEBUG("[install] lchown(%d, %d)\n", uid, gid);
 	if (res == 0) res = lchown(path, uid, gid);
+	if (res == -1) fprintf(stderr, "%s:%d: %s: %s (%d)\n", __FILE__, __LINE__, path, strerror(errno), errno);
 	//IF_DEBUG("[install] lchmod(%o)\n", mode);
 	//if (res == 0) res = lchmod(path, mode);
+	free(path);
 	return res;
 }
 
@@ -286,7 +319,7 @@
 	// existing one, since that would move the entire
 	// sub-tree, and lead to a lot of ENOENT errors.
 	int res = 0;
-	
+	extern uint32_t force;
 	char* dstpath;
 	join_path(&dstpath, dest, this->path());
 	
@@ -296,10 +329,38 @@
 	
 	IF_DEBUG("[install] mkdir(%s, %04o)\n", dstpath, mode);
 	if (res == 0) res = mkdir(dstpath, mode);
-	if (res != 0) fprintf(stderr, "ERROR: %s:%d: %s: %s (%d)\n", __FILE__, __LINE__, dstpath, strerror(errno), errno);
-	if (res == 0) res = chown(dstpath, uid, gid);
-	if (res != 0) fprintf(stderr, "ERROR: %s:%d: %s: %s (%d)\n", __FILE__, __LINE__, dstpath, strerror(errno), errno);
 
+	if (res && errno == EEXIST) {
+		if (is_directory(dstpath)) {
+			// this is expected in normal cases, so no need to force
+			IF_DEBUG("[install] directory already exists, setting mode \n");
+			res = chmod(dstpath, mode);
+			if (res == -1) fprintf(stderr, "%s:%d: %s: %s (%d)\n", __FILE__, __LINE__, dstpath, strerror(errno), errno);
+		} else if (force) {
+			// this could be bad, so require the force option
+			IF_DEBUG("[install] original node is a file, we need to replace with a directory \n");
+			IF_DEBUG("[install] unlink(%s)\n", dstpath);
+			res = unlink(dstpath);
+			IF_DEBUG("[install] mkdir(%s, %04o)\n", dstpath, mode);
+			res = mkdir(dstpath, mode);
+			if (res == -1) fprintf(stderr, "%s:%d: %s: %s (%d)\n", __FILE__, __LINE__, dstpath, strerror(errno), errno);
+		}
+	} else if (force && res == -1 && errno == ENOTDIR) {
+		// some part of destination path is not a directory
+		IF_DEBUG("[install] Directory::install ENOTDIR \n");
+	} else if (res == -1) {
+		fprintf(stderr, "ERROR: %s:%d: %s: %s (%d)\n", __FILE__, __LINE__, dstpath, strerror(errno), errno);
+		fprintf(stderr, "ERROR: unable to create %s \n", dstpath);
+	}
+	
+	if (res == 0) {
+		res = chown(dstpath, uid, gid);
+		if (res != 0) {
+			fprintf(stderr, "ERROR: %s:%d: %s: %s (%d)\n", __FILE__, __LINE__, dstpath, strerror(errno), errno);
+			fprintf(stderr, "ERROR: unable to change ownership of %s \n", dstpath);
+		}
+	}
+
 	free(dstpath);
 	return res;
 }
@@ -376,12 +437,22 @@
 	File* file = NULL;
 	struct stat sb;
 	int res = 0;
+	extern uint32_t force;
 	
 	res = lstat(path, &sb);
 	if (res == -1 && errno == ENOENT) {
+		// destination does not have a matching node
 		return NULL;
-	} else if (res == -1) {
+	} else if (force && res == -1 && errno == ENOTDIR) {
+		// some part of destination path does not exist
+		// or is a file. This gets handled by Directory::install 
+		// eventually
+		IF_DEBUG("[factory]    parents do not exist or contain a file\n");
+		return NULL;
+	}	
+	if (res == -1) {
 		fprintf(stderr, "%s:%d: %s: %s (%d)\n", __FILE__, __LINE__, path, strerror(errno), errno);
+		fprintf(stderr, "ERROR: unable to stat %s \n", path);
 		return NULL;
 	}
 	

Modified: releases/Darwin9/darwinup/main.cpp
===================================================================
--- releases/Darwin9/darwinup/main.cpp	2009-12-10 22:38:44 UTC (rev 652)
+++ releases/Darwin9/darwinup/main.cpp	2009-12-10 23:11:22 UTC (rev 653)
@@ -36,6 +36,7 @@
 	fprintf(stderr, "usage:    %s [-v] [-p DIR] [command] [args]          \n", progname);
 	fprintf(stderr, "                                                               \n");
 	fprintf(stderr, "options:                                                       \n");
+	fprintf(stderr, "          -f         force operation to succeed at all costs   \n");
 	fprintf(stderr, "          -p DIR     operate on roots under DIR (default: /)   \n");
 	fprintf(stderr, "          -v         verbose (use -vv for extra verbosity)     \n");
 	fprintf(stderr, "                                                               \n");
@@ -50,6 +51,7 @@
 
 // our globals
 uint32_t verbosity;
+uint32_t force;
 
 int main(int argc, char* argv[]) {
 	char* progname = strdup(basename(argv[0]));      
@@ -57,22 +59,30 @@
 	char* path = NULL;
 
 	int ch;
-	while ((ch = getopt(argc, argv, "p:v")) != -1) {
+	while ((ch = getopt(argc, argv, "fp:v")) != -1) {
 		switch (ch) {
+		case 'f':
+				IF_DEBUG("forcing operations\n");
+				force = 1;
+				break;
+		case 'p':
+				if (optarg[0] != '/') {
+					fprintf(stderr, "Error: -p option must be an absolute path\n");
+					exit(4);
+				}
+				if (strlen(optarg) > (PATH_MAX - 1)) {
+					fprintf(stderr, "Error: -p option value is too long \n");
+					exit(4);
+				}
+				join_path(&path, optarg, "/");
+				break;
 		case 'v':
-			verbosity <<= 1;
-			verbosity |= VERBOSE;
-			break;
-		case 'p':
-		        if (strlen(optarg) > (PATH_MAX - 1)) {
-			        fprintf(stderr, "Error: -p option value is too long \n");
-				exit(3);
-			}
-			join_path(&path, optarg, "/");
-			break;
+				verbosity <<= 1;
+				verbosity |= VERBOSE;
+				break;
 		case '?':
 		default:
-			usage(progname);
+				usage(progname);
 		}
 	}
 	argc -= optind;
@@ -101,7 +111,14 @@
 				uuid_unparse_upper(archive->uuid(), uuid);
 				fprintf(stdout, "%s\n", uuid);
 			} else {
-				fprintf(stderr, "An error occurred.\n");
+				fprintf(stderr, "Error: Install failed. Rolling back installation.\n");
+				res = depot->uninstall(archive);
+				if (res) {
+					fprintf(stderr, "Error: Unable to rollback installation. "
+							"Your system is in an inconsistent state! File a bug!\n");
+				} else {
+					fprintf(stderr, "Rollback successful.\n");
+				}
 				res = 1;
 			}
 		} else {

Copied: releases/Darwin9/testing/darwinup/root4.tar.gz (from rev 648, branches/PR-7250612/testing/darwinup/root4.tar.gz)
===================================================================
(Binary files differ)

Modified: releases/Darwin9/testing/darwinup/run-tests.sh
===================================================================
--- releases/Darwin9/testing/darwinup/run-tests.sh	2009-12-10 22:38:44 UTC (rev 652)
+++ releases/Darwin9/testing/darwinup/run-tests.sh	2009-12-10 23:11:22 UTC (rev 653)
@@ -22,6 +22,7 @@
 do
 	tar zxvf $R.tar.gz -C $PREFIX
 done;
+tar zxvf root4.tar.gz -C $PREFIX
 
 mkdir -p $ORIG
 cp -R $DEST/* $ORIG/
@@ -108,6 +109,11 @@
 echo "DIFF: diffing original test files to dest (should be no diffs) ..."
 diff -qru $ORIG $DEST 2>&1 | grep -v \\.DarwinDepot
 
+echo "TEST: Trying a root that will fail due to object change ..."
+darwinup -vv -p $DEST install $PREFIX/root4
+if [ $? -ne 1 ]; then exit 1; fi
+echo "DIFF: diffing original test files to dest (should be no diffs) ..."
+diff -qru $ORIG $DEST 2>&1 | grep -v \\.DarwinDepot
 
 echo "INFO: Done testing!"
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20091210/892c091f/attachment-0001.html>


More information about the darwinbuild-changes mailing list