[darwinbuild-changes] [695] trunk
source_changes at macosforge.org
source_changes at macosforge.org
Fri Feb 5 13:55:10 PST 2010
Revision: 695
http://trac.macosforge.org/projects/darwinbuild/changeset/695
Author: wsiegrist at apple.com
Date: 2010-02-05 13:55:06 -0800 (Fri, 05 Feb 2010)
Log Message:
-----------
Merge PR-7341154 and PR-7529688
Modified Paths:
--------------
trunk/darwinup/Depot.cpp
trunk/darwinup/Depot.h
trunk/darwinup/main.cpp
trunk/testing/darwinup/dest.tar.gz
trunk/testing/darwinup/run-tests.sh
Added Paths:
-----------
trunk/testing/darwinup/symlink_update.tar.gz
trunk/testing/darwinup/symlinks.tar.gz
Property Changed:
----------------
trunk/
trunk/darwinbuild/darwinbuild.in
trunk/darwinbuild/darwinmaster.in
trunk/darwinbuild/installXcode.in
trunk/darwinbuild/packageRoots.in
trunk/darwinbuild/thinPackages.in
Property changes on: trunk
___________________________________________________________________
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-6634286:632-650
/branches/PR-6688645:479-490
/branches/PR-6722857:495-499
/branches/PR-6729491:655-664
/branches/PR-7250612:635-650
/branches/PR-7431723:660-664
/branches/PR-7461534:650-664
/branches/PR-7482850:670-671
/trunk:432-434
+ /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-6634286:632-650
/branches/PR-6688645:479-490
/branches/PR-6722857:495-499
/branches/PR-6729491:655-664
/branches/PR-7250612:635-650
/branches/PR-7341154:682-694
/branches/PR-7431723:660-664
/branches/PR-7461534:650-664
/branches/PR-7482850:670-671
/branches/PR-7529688:692-694
/trunk:432-434
Property changes on: trunk/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-6634286/darwinbuild/darwinbuild.in:632-650
/branches/PR-6688645/darwinbuild/darwinbuild.in:479-490
/branches/PR-6722857/darwinbuild/darwinbuild.in:495-499
/branches/PR-6729491/darwinbuild/darwinbuild.in:655-664
/branches/PR-7250612/darwinbuild/darwinbuild.in:635-650
/branches/PR-7431723/darwinbuild/darwinbuild.in:660-664
/branches/PR-7461534/darwinbuild/darwinbuild.in:650-664
/trunk/darwinbuild/darwinbuild:432-434
+ /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-6634286/darwinbuild/darwinbuild.in:632-650
/branches/PR-6688645/darwinbuild/darwinbuild.in:479-490
/branches/PR-6722857/darwinbuild/darwinbuild.in:495-499
/branches/PR-6729491/darwinbuild/darwinbuild.in:655-664
/branches/PR-7250612/darwinbuild/darwinbuild.in:635-650
/branches/PR-7341154/darwinbuild/darwinbuild.in:682-694
/branches/PR-7431723/darwinbuild/darwinbuild.in:660-664
/branches/PR-7461534/darwinbuild/darwinbuild.in:650-664
/branches/PR-7529688/darwinbuild/darwinbuild.in:692-694
/trunk/darwinbuild/darwinbuild:432-434
Property changes on: trunk/darwinbuild/darwinmaster.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-6634286/darwinbuild/darwinmaster.in:632-650
/branches/PR-6688645/darwinbuild/darwinmaster.sh.in:479-490
/branches/PR-6722857/darwinbuild/darwinmaster.sh.in:495-499
/branches/PR-6729491/darwinbuild/darwinmaster.in:655-664
/branches/PR-7250612/darwinbuild/darwinmaster.in:635-650
/branches/PR-7431723/darwinbuild/darwinmaster.in:660-664
/branches/PR-7461534/darwinbuild/darwinmaster.in:650-664
/trunk/darwinbuild/darwinmaster.sh:432-434
+ /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-6634286/darwinbuild/darwinmaster.in:632-650
/branches/PR-6688645/darwinbuild/darwinmaster.sh.in:479-490
/branches/PR-6722857/darwinbuild/darwinmaster.sh.in:495-499
/branches/PR-6729491/darwinbuild/darwinmaster.in:655-664
/branches/PR-7250612/darwinbuild/darwinmaster.in:635-650
/branches/PR-7341154/darwinbuild/darwinmaster.in:682-694
/branches/PR-7431723/darwinbuild/darwinmaster.in:660-664
/branches/PR-7461534/darwinbuild/darwinmaster.in:650-664
/branches/PR-7529688/darwinbuild/darwinmaster.in:692-694
/trunk/darwinbuild/darwinmaster.sh:432-434
Property changes on: trunk/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-6634286/darwinbuild/installXcode.in:632-650
/branches/PR-6688645/darwinbuild/installXcode.in:479-490
/branches/PR-6722857/darwinbuild/installXcode.in:495-499
/branches/PR-6729491/darwinbuild/installXcode.in:655-664
/branches/PR-7250612/darwinbuild/installXcode.in:635-650
/branches/PR-7431723/darwinbuild/installXcode.in:660-664
/branches/PR-7461534/darwinbuild/installXcode.in:650-664
/trunk/darwinbuild/installXcode:432-434
+ /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-6634286/darwinbuild/installXcode.in:632-650
/branches/PR-6688645/darwinbuild/installXcode.in:479-490
/branches/PR-6722857/darwinbuild/installXcode.in:495-499
/branches/PR-6729491/darwinbuild/installXcode.in:655-664
/branches/PR-7250612/darwinbuild/installXcode.in:635-650
/branches/PR-7341154/darwinbuild/installXcode.in:682-694
/branches/PR-7431723/darwinbuild/installXcode.in:660-664
/branches/PR-7461534/darwinbuild/installXcode.in:650-664
/branches/PR-7529688/darwinbuild/installXcode.in:692-694
/trunk/darwinbuild/installXcode:432-434
Property changes on: trunk/darwinbuild/packageRoots.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-6634286/darwinbuild/packageRoots.in:632-650
/branches/PR-6688645/darwinbuild/packageRoots.sh.in:479-490
/branches/PR-6722857/darwinbuild/packageRoots.sh.in:495-499
/branches/PR-6729491/darwinbuild/packageRoots.in:655-664
/branches/PR-7250612/darwinbuild/packageRoots.in:635-650
/branches/PR-7431723/darwinbuild/packageRoots.in:660-664
/branches/PR-7461534/darwinbuild/packageRoots.in:650-664
/trunk/darwinbuild/packageRoots.sh:432-434
+ /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-6634286/darwinbuild/packageRoots.in:632-650
/branches/PR-6688645/darwinbuild/packageRoots.sh.in:479-490
/branches/PR-6722857/darwinbuild/packageRoots.sh.in:495-499
/branches/PR-6729491/darwinbuild/packageRoots.in:655-664
/branches/PR-7250612/darwinbuild/packageRoots.in:635-650
/branches/PR-7341154/darwinbuild/packageRoots.in:682-694
/branches/PR-7431723/darwinbuild/packageRoots.in:660-664
/branches/PR-7461534/darwinbuild/packageRoots.in:650-664
/branches/PR-7529688/darwinbuild/packageRoots.in:692-694
/trunk/darwinbuild/packageRoots.sh:432-434
Property changes on: trunk/darwinbuild/thinPackages.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-6634286/darwinbuild/thinPackages.in:632-650
/branches/PR-6688645/darwinbuild/thinPackages.sh.in:479-490
/branches/PR-6722857/darwinbuild/thinPackages.sh.in:495-499
/branches/PR-6729491/darwinbuild/thinPackages.in:655-664
/branches/PR-7250612/darwinbuild/thinPackages.in:635-650
/branches/PR-7431723/darwinbuild/thinPackages.in:660-664
/branches/PR-7461534/darwinbuild/thinPackages.in:650-664
/trunk/darwinbuild/thinPackages.sh:432-434
+ /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-6634286/darwinbuild/thinPackages.in:632-650
/branches/PR-6688645/darwinbuild/thinPackages.sh.in:479-490
/branches/PR-6722857/darwinbuild/thinPackages.sh.in:495-499
/branches/PR-6729491/darwinbuild/thinPackages.in:655-664
/branches/PR-7250612/darwinbuild/thinPackages.in:635-650
/branches/PR-7341154/darwinbuild/thinPackages.in:682-694
/branches/PR-7431723/darwinbuild/thinPackages.in:660-664
/branches/PR-7461534/darwinbuild/thinPackages.in:650-664
/branches/PR-7529688/darwinbuild/thinPackages.in:692-694
/trunk/darwinbuild/thinPackages.sh:432-434
Modified: trunk/darwinup/Depot.cpp
===================================================================
--- trunk/darwinup/Depot.cpp 2010-02-05 21:09:45 UTC (rev 694)
+++ trunk/darwinup/Depot.cpp 2010-02-05 21:55:06 UTC (rev 695)
@@ -656,7 +656,7 @@
// XXX: res = file->backup()
IF_DEBUG("[backup] copyfile(%s, %s)\n", path, dstpath);
- res = copyfile(path, dstpath, NULL, COPYFILE_ALL);
+ res = copyfile(path, dstpath, NULL, COPYFILE_ALL|COPYFILE_NOFOLLOW);
if (res != 0) fprintf(stderr, "%s:%d: backup failed: %s: %s (%d)\n", __FILE__, __LINE__, dstpath, strerror(errno), errno);
free(path);
@@ -683,6 +683,34 @@
}
+int Depot::install(const char* path) {
+ int res = 0;
+ char uuid[37];
+ Archive* archive = ArchiveFactory(path, this->downloads_path());
+ if (archive) {
+ res = this->install(archive);
+ if (res == 0) {
+ uuid_unparse_upper(archive->uuid(), uuid);
+ fprintf(stdout, "%s\n", uuid);
+ } else {
+ fprintf(stderr, "Error: Install failed. Rolling back installation.\n");
+ res = this->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 {
+ fprintf(stderr, "Archive not found: %s\n", path);
+ }
+
+ return res;
+}
+
+
int Depot::install(Archive* archive) {
int res = 0;
Archive* rollback = new RollbackArchive();
@@ -733,7 +761,7 @@
if (res == 0 && rollback_files == 0) {
res = this->remove(rollback);
}
-
+
// Commit the archive and its list of files to the database.
// Note that the archive's "active" flag is still not set.
if (res == 0) {
@@ -770,8 +798,9 @@
// Remove the stage and rollback directories (save disk space)
remove_directory(archive_path);
remove_directory(rollback_path);
- if (rollback_path) free(rollback_path);
- if (archive_path) free(archive_path);
+
+ free(rollback_path);
+ free(archive_path);
(void)this->lock(LOCK_SH);
Modified: trunk/darwinup/Depot.h
===================================================================
--- trunk/darwinup/Depot.h 2010-02-05 21:09:45 UTC (rev 694)
+++ trunk/darwinup/Depot.h 2010-02-05 21:55:06 UTC (rev 695)
@@ -82,6 +82,7 @@
int list();
static int list_archive(Archive* archive, void* context);
+ int install(const char* path);
int install(Archive* archive);
static int install_file(File* file, void* context);
static int backup_file(File* file, void* context);
Modified: trunk/darwinup/main.cpp
===================================================================
--- trunk/darwinup/main.cpp 2010-02-05 21:09:45 UTC (rev 694)
+++ trunk/darwinup/main.cpp 2010-02-05 21:55:06 UTC (rev 695)
@@ -50,10 +50,11 @@
fprintf(stderr, " -v verbose (use -vv for extra verbosity) \n");
fprintf(stderr, " \n");
fprintf(stderr, "commands: \n");
+ fprintf(stderr, " files <archive> \n");
fprintf(stderr, " install <path> \n");
fprintf(stderr, " list \n");
- fprintf(stderr, " files <archive> \n");
fprintf(stderr, " uninstall <archive> \n");
+ fprintf(stderr, " upgrade <path> \n");
fprintf(stderr, " verify <archive> \n");
fprintf(stderr, " \n");
fprintf(stderr, "<path> is one of: \n");
@@ -139,27 +140,18 @@
}
if (argc == 2 && strcmp(argv[0], "install") == 0) {
- char uuid[37];
- Archive* archive = ArchiveFactory(argv[1], depot->downloads_path());
- if (archive) {
- res = depot->install(archive);
- if (res == 0) {
- uuid_unparse_upper(archive->uuid(), uuid);
- fprintf(stdout, "%s\n", uuid);
- } else {
- 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 {
- fprintf(stderr, "Archive not found: %s\n", argv[1]);
+ res = depot->install(argv[1]);
+ } else if (argc == 2 && strcmp(argv[0], "upgrade") == 0) {
+ // find most recent matching archive by name
+ Archive* old = depot->get_archive(basename(argv[1]));
+ if (!old) {
+ fprintf(stderr, "Error: unable to find a matching root to upgrade.\n");
+ res = 5;
}
+ // install new archive
+ if (res == 0) res = depot->install(argv[1]);
+ // uninstall old archive
+ if (res == 0) res = depot->uninstall(old);
} else if (argc == 1 && strcmp(argv[0], "list") == 0) {
depot->list();
} else if (argc == 1 && strcmp(argv[0], "dump") == 0) {
Modified: trunk/testing/darwinup/dest.tar.gz
===================================================================
(Binary files differ)
Modified: trunk/testing/darwinup/run-tests.sh
===================================================================
--- trunk/testing/darwinup/run-tests.sh 2010-02-05 21:09:45 UTC (rev 694)
+++ trunk/testing/darwinup/run-tests.sh 2010-02-05 21:55:06 UTC (rev 695)
@@ -11,7 +11,7 @@
DEST=$PREFIX/dest
DESTTAR=dest.tar.gz
-DIFF="diff -x .DarwinDepot -qru"
+DIFF="diff -x .DarwinDepot -x broken -qru"
ROOTS="root root2 root3"
@@ -27,7 +27,7 @@
tar zxvf $R.tar.gz -C $PREFIX
done;
-for R in root4 root5 root6 root7;
+for R in root4 root5 root6 root7 symlinks symlink_update;
do
tar zxvf $R.tar.gz -C $PREFIX
done;
@@ -35,7 +35,7 @@
mkdir -p $ORIG
cp -R $DEST/* $ORIG/
-echo "TEST: Trying roots one at a time ..."
+echo "========== TEST: Trying roots one at a time =========="
for R in $ROOTS;
do
echo "INFO: Installing $R ...";
@@ -47,7 +47,7 @@
$DIFF $ORIG $DEST 2>&1
done
-echo "TEST: Trying all roots at once, uninstall in reverse ...";
+echo "========== TEST: Trying all roots at once, uninstall in reverse ==========";
for R in $ROOTS;
do
echo "INFO: Installing $R ...";
@@ -62,7 +62,7 @@
echo "DIFF: diffing original test files to dest (should be no diffs) ..."
$DIFF $ORIG $DEST 2>&1
-echo "TEST: Trying all roots at once, uninstall in install order ..."
+echo "========== TEST: Trying all roots at once, uninstall in install order =========="
for R in $ROOTS;
do
echo "INFO: Installing $R ...";
@@ -77,7 +77,7 @@
echo "DIFF: diffing original test files to dest (should be no diffs) ..."
$DIFF $ORIG $DEST 2>&1
-echo "TEST: Trying all roots at once, uninstall root2, root3, root ..."
+echo "========== TEST: Trying all roots at once, uninstall root2, root3, root =========="
for R in $ROOTS;
do
echo "INFO: Installing $R ...";
@@ -92,7 +92,7 @@
echo "DIFF: diffing original test files to dest (should be no diffs) ..."
$DIFF $ORIG $DEST 2>&1
-echo "TEST: Trying roots in reverse, uninstall in install order ..."
+echo "========== TEST: Trying roots in reverse, uninstall in install order =========="
for R in root3 root2 root;
do
echo "INFO: Installing $R ...";
@@ -107,7 +107,7 @@
echo "DIFF: diffing original test files to dest (should be no diffs) ..."
$DIFF $ORIG $DEST 2>&1
-echo "TEST: Try uninstalling with user data in rollback"
+echo "========== TEST: Try uninstalling with user data in rollback =========="
echo "INFO: Installing root5 ...";
darwinup -vv -p $DEST install $PREFIX/root5
darwinup -vv -p $DEST install $PREFIX/root6
@@ -116,11 +116,25 @@
darwinup -vv -p $DEST uninstall root6
darwinup -vv -p $DEST uninstall root5
darwinup -vv -p $DEST uninstall root7
+stat $DEST/d/file
+rm $DEST/d/file
+rmdir $DEST/d
+echo "========== TEST: Testing broken symlink handling =========="
+darwinup -vv -p $DEST install $PREFIX/symlinks
+darwinup -vv -p $DEST uninstall symlinks
+echo "DIFF: diffing original test files to dest (should be no diffs) ..."
+$DIFF $ORIG $DEST 2>&1
+darwinup -vv -p $DEST install $PREFIX/symlink_update
+stat -L $DEST/broken
+darwinup -vv -p $DEST uninstall newest
+echo "DIFF: diffing original test files to dest (should be no diffs) ..."
+$DIFF $ORIG $DEST 2>&1
+
+# expected failures
set +e
-
-echo "TEST: Trying a root that will fail due to object change ..."
+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) ..."
Copied: trunk/testing/darwinup/symlink_update.tar.gz (from rev 694, branches/PR-7529688/testing/darwinup/symlink_update.tar.gz)
===================================================================
(Binary files differ)
Copied: trunk/testing/darwinup/symlinks.tar.gz (from rev 694, branches/PR-7529688/testing/darwinup/symlinks.tar.gz)
===================================================================
(Binary files differ)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20100205/963ab362/attachment-0001.html>
More information about the darwinbuild-changes
mailing list