[darwinbuild-changes] [814] trunk
source_changes at macosforge.org
source_changes at macosforge.org
Tue Apr 20 14:19:36 PDT 2010
Revision: 814
http://trac.macosforge.org/projects/darwinbuild/changeset/814
Author: wsiegrist at apple.com
Date: 2010-04-20 14:19:34 -0700 (Tue, 20 Apr 2010)
Log Message:
-----------
Merge PR-6973110
Modified Paths:
--------------
trunk/darwinbuild.xcodeproj/project.pbxproj
trunk/darwinup/Archive.cpp
trunk/darwinup/Database.cpp
trunk/darwinup/Database.h
trunk/darwinup/Depot.cpp
trunk/darwinup/Utils.cpp
Added Paths:
-----------
trunk/darwinup/darwinup.1
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-7341154:682-694
/branches/PR-7431723:660-664
/branches/PR-7461534:650-664
/branches/PR-7482850:670-671
/branches/PR-7489777:676-731
/branches/PR-7529688:692-694
/branches/PR-7593824:739-772
/branches/PR-7598640:703-731
/branches/PR-7748469:777-785
/branches/PR-7765119:790-791
/branches/PR-7798586:796-799
+ /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-6973110:804-813
/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-7489777:676-731
/branches/PR-7529688:692-694
/branches/PR-7593824:739-772
/branches/PR-7598640:703-731
/branches/PR-7748469:777-785
/branches/PR-7765119:790-791
/branches/PR-7798586:796-799
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-7341154/darwinbuild/darwinbuild.in:682-694
/branches/PR-7431723/darwinbuild/darwinbuild.in:660-664
/branches/PR-7461534/darwinbuild/darwinbuild.in:650-664
/branches/PR-7489777/darwinbuild/darwinbuild.in:676-731
/branches/PR-7529688/darwinbuild/darwinbuild.in:692-694
/branches/PR-7593824/darwinbuild/darwinbuild.in:739-772
/branches/PR-7598640/darwinbuild/darwinbuild.in:703-731
/branches/PR-7748469/darwinbuild/darwinbuild.in:777-785
/branches/PR-7765119/darwinbuild/darwinbuild.in:790-791
/branches/PR-7798586/darwinbuild/darwinbuild.in:796-799
+ /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-6973110/darwinbuild/darwinbuild.in:804-813
/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-7489777/darwinbuild/darwinbuild.in:676-731
/branches/PR-7529688/darwinbuild/darwinbuild.in:692-694
/branches/PR-7593824/darwinbuild/darwinbuild.in:739-772
/branches/PR-7598640/darwinbuild/darwinbuild.in:703-731
/branches/PR-7748469/darwinbuild/darwinbuild.in:777-785
/branches/PR-7765119/darwinbuild/darwinbuild.in:790-791
/branches/PR-7798586/darwinbuild/darwinbuild.in:796-799
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-7341154/darwinbuild/darwinmaster.in:682-694
/branches/PR-7431723/darwinbuild/darwinmaster.in:660-664
/branches/PR-7461534/darwinbuild/darwinmaster.in:650-664
/branches/PR-7489777/darwinbuild/darwinmaster.in:676-731
/branches/PR-7529688/darwinbuild/darwinmaster.in:692-694
/branches/PR-7593824/darwinbuild/darwinmaster.in:739-772
/branches/PR-7598640/darwinbuild/darwinmaster.in:703-731
/branches/PR-7748469/darwinbuild/darwinmaster.in:777-785
/branches/PR-7765119/darwinbuild/darwinmaster.in:790-791
/branches/PR-7798586/darwinbuild/darwinmaster.in:796-799
+ /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-6973110/darwinbuild/darwinmaster.in:804-813
/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-7489777/darwinbuild/darwinmaster.in:676-731
/branches/PR-7529688/darwinbuild/darwinmaster.in:692-694
/branches/PR-7593824/darwinbuild/darwinmaster.in:739-772
/branches/PR-7598640/darwinbuild/darwinmaster.in:703-731
/branches/PR-7748469/darwinbuild/darwinmaster.in:777-785
/branches/PR-7765119/darwinbuild/darwinmaster.in:790-791
/branches/PR-7798586/darwinbuild/darwinmaster.in:796-799
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-7341154/darwinbuild/installXcode.in:682-694
/branches/PR-7431723/darwinbuild/installXcode.in:660-664
/branches/PR-7461534/darwinbuild/installXcode.in:650-664
/branches/PR-7489777/darwinbuild/installXcode.in:676-731
/branches/PR-7529688/darwinbuild/installXcode.in:692-694
/branches/PR-7593824/darwinbuild/installXcode.in:739-772
/branches/PR-7598640/darwinbuild/installXcode.in:703-731
/branches/PR-7748469/darwinbuild/installXcode.in:777-785
/branches/PR-7765119/darwinbuild/installXcode.in:790-791
/branches/PR-7798586/darwinbuild/installXcode.in:796-799
+ /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-6973110/darwinbuild/installXcode.in:804-813
/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-7489777/darwinbuild/installXcode.in:676-731
/branches/PR-7529688/darwinbuild/installXcode.in:692-694
/branches/PR-7593824/darwinbuild/installXcode.in:739-772
/branches/PR-7598640/darwinbuild/installXcode.in:703-731
/branches/PR-7748469/darwinbuild/installXcode.in:777-785
/branches/PR-7765119/darwinbuild/installXcode.in:790-791
/branches/PR-7798586/darwinbuild/installXcode.in:796-799
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-7341154/darwinbuild/packageRoots.in:682-694
/branches/PR-7431723/darwinbuild/packageRoots.in:660-664
/branches/PR-7461534/darwinbuild/packageRoots.in:650-664
/branches/PR-7489777/darwinbuild/packageRoots.in:676-731
/branches/PR-7529688/darwinbuild/packageRoots.in:692-694
/branches/PR-7593824/darwinbuild/packageRoots.in:739-772
/branches/PR-7598640/darwinbuild/packageRoots.in:703-731
/branches/PR-7748469/darwinbuild/packageRoots.in:777-785
/branches/PR-7765119/darwinbuild/packageRoots.in:790-791
/branches/PR-7798586/darwinbuild/packageRoots.in:796-799
+ /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-6973110/darwinbuild/packageRoots.in:804-813
/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-7489777/darwinbuild/packageRoots.in:676-731
/branches/PR-7529688/darwinbuild/packageRoots.in:692-694
/branches/PR-7593824/darwinbuild/packageRoots.in:739-772
/branches/PR-7598640/darwinbuild/packageRoots.in:703-731
/branches/PR-7748469/darwinbuild/packageRoots.in:777-785
/branches/PR-7765119/darwinbuild/packageRoots.in:790-791
/branches/PR-7798586/darwinbuild/packageRoots.in:796-799
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-7341154/darwinbuild/thinPackages.in:682-694
/branches/PR-7431723/darwinbuild/thinPackages.in:660-664
/branches/PR-7461534/darwinbuild/thinPackages.in:650-664
/branches/PR-7489777/darwinbuild/thinPackages.in:676-731
/branches/PR-7529688/darwinbuild/thinPackages.in:692-694
/branches/PR-7593824/darwinbuild/thinPackages.in:739-772
/branches/PR-7598640/darwinbuild/thinPackages.in:703-731
/branches/PR-7748469/darwinbuild/thinPackages.in:777-785
/branches/PR-7765119/darwinbuild/thinPackages.in:790-791
/branches/PR-7798586/darwinbuild/thinPackages.in:796-799
+ /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-6973110/darwinbuild/thinPackages.in:804-813
/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-7489777/darwinbuild/thinPackages.in:676-731
/branches/PR-7529688/darwinbuild/thinPackages.in:692-694
/branches/PR-7593824/darwinbuild/thinPackages.in:739-772
/branches/PR-7598640/darwinbuild/thinPackages.in:703-731
/branches/PR-7748469/darwinbuild/thinPackages.in:777-785
/branches/PR-7765119/darwinbuild/thinPackages.in:790-791
/branches/PR-7798586/darwinbuild/thinPackages.in:796-799
Modified: trunk/darwinbuild.xcodeproj/project.pbxproj
===================================================================
--- trunk/darwinbuild.xcodeproj/project.pbxproj 2010-04-19 23:32:00 UTC (rev 813)
+++ trunk/darwinbuild.xcodeproj/project.pbxproj 2010-04-20 21:19:34 UTC (rev 814)
@@ -167,6 +167,7 @@
DFC9772D11138F9400CAE084 /* Column.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFC9772711138F9400CAE084 /* Column.cpp */; };
DFC9772E11138F9400CAE084 /* Database.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFC9772911138F9400CAE084 /* Database.cpp */; };
DFC9772F11138F9400CAE084 /* Table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFC9772B11138F9400CAE084 /* Table.cpp */; };
+ DFCAA3C61178E1A1008DCF37 /* darwinup.1 in Install Manpage */ = {isa = PBXBuildFile; fileRef = DFCAA39C1178E05B008DCF37 /* darwinup.1 */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -629,6 +630,17 @@
);
runOnlyForDeploymentPostprocessing = 1;
};
+ DFCAA3C51178E10E008DCF37 /* Install Manpage */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 8;
+ dstPath = "$(DATDIR)/man/man1";
+ dstSubfolderSpec = 0;
+ files = (
+ DFCAA3C61178E1A1008DCF37 /* darwinup.1 in Install Manpage */,
+ );
+ name = "Install Manpage";
+ runOnlyForDeploymentPostprocessing = 1;
+ };
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
@@ -753,6 +765,7 @@
DFC9772A11138F9400CAE084 /* Database.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Database.h; path = darwinup/Database.h; sourceTree = "<group>"; };
DFC9772B11138F9400CAE084 /* Table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Table.cpp; path = darwinup/Table.cpp; sourceTree = "<group>"; };
DFC9772C11138F9400CAE084 /* Table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Table.h; path = darwinup/Table.h; sourceTree = "<group>"; };
+ DFCAA39C1178E05B008DCF37 /* darwinup.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; name = darwinup.1; path = darwinup/darwinup.1; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -1018,6 +1031,7 @@
72C86BD710965DD800C66E90 /* darwinup */ = {
isa = PBXGroup;
children = (
+ DFCAA39C1178E05B008DCF37 /* darwinup.1 */,
DFC9772711138F9400CAE084 /* Column.cpp */,
DFC9772811138F9400CAE084 /* Column.h */,
DFC9772911138F9400CAE084 /* Database.cpp */,
@@ -1679,6 +1693,7 @@
buildPhases = (
72C86C451096609500C66E90 /* Sources */,
72C86C461096609500C66E90 /* Frameworks */,
+ DFCAA3C51178E10E008DCF37 /* Install Manpage */,
);
buildRules = (
);
Modified: trunk/darwinup/Archive.cpp
===================================================================
--- trunk/darwinup/Archive.cpp 2010-04-19 23:32:00 UTC (rev 813)
+++ trunk/darwinup/Archive.cpp 2010-04-20 21:19:34 UTC (rev 814)
@@ -281,16 +281,26 @@
return NULL;
}
} else if (is_userhost_path(path)) {
- actpath = fetch_userhost(path, tmppath);
+ char* cleanpath;
+ // join with / to ensure all single slashes and a single trailing slash
+ int res = join_path(&cleanpath, path, "/");
+ assert(res==0);
+ size_t pathlen = strlen(cleanpath);
+ // remove trailing slash so rsync behavior is predictable
+ cleanpath[pathlen - 1] = '\0';
+
+ IF_DEBUG("fetching userhost path from: %s to: %s \n", cleanpath, tmppath);
+ actpath = fetch_userhost(cleanpath, tmppath);
+ IF_DEBUG("fetched %s \n", actpath);
if (!actpath) {
fprintf(stderr, "Error: could not fetch remote file from: %s \n", path);
return NULL;
}
+ free(cleanpath);
} else {
actpath = (char *)path;
}
-
// make sure the archive exists
struct stat sb;
int res = stat(actpath, &sb);
@@ -328,7 +338,7 @@
} else {
fprintf(stderr, "Error: unknown archive type: %s\n", path);
}
-
+
if (actpath && actpath != path) free(actpath);
return archive;
}
Modified: trunk/darwinup/Database.cpp
===================================================================
--- trunk/darwinup/Database.cpp 2010-04-19 23:32:00 UTC (rev 813)
+++ trunk/darwinup/Database.cpp 2010-04-20 21:19:34 UTC (rev 814)
@@ -121,8 +121,22 @@
fprintf(stderr, "Error: pre-connection failed.\n");
return res;
}
-
+
+ // test our access level
int exists = is_regular_file(m_path);
+ bool readonly = false;
+ if (!exists && access(dirname(m_path), W_OK | X_OK)) {
+ // does not exist and we cannot write to the directory
+ fprintf(stderr,
+ "Error: Unable to create new darwinup database. "
+ "Try running as root.");
+ return DB_ERROR;
+ }
+ if (exists && access(m_path, W_OK)) {
+ // db exists already but we cannot write to it
+ readonly = true;
+ }
+
res = sqlite3_open(m_path, &m_db);
if (res) {
sqlite3_close(m_db);
@@ -137,7 +151,7 @@
fprintf(stderr, "Error: post-connection failed.\n");
return res;
}
-
+
if (!exists) {
// create schema since it is empty
assert(this->create_tables() == 0);
@@ -150,12 +164,23 @@
}
if (version < this->m_schema_version) {
+ if (readonly) {
+ fprintf(stderr,
+ "Error: the darwinup database needs to be upgraded "
+ "but darwinup cannot write to database. "
+ "Try running as root.\n");
+ sqlite3_close(m_db);
+ m_db = NULL;
+ return DB_ERROR;
+ }
IF_DEBUG("Upgrading schema from %u to %u \n", version, this->m_schema_version);
assert(this->upgrade_schema(version) == 0);
assert(this->set_schema_version(this->m_schema_version) == 0);
}
if (version > this->m_schema_version) {
fprintf(stderr, "Error: this client is too old!\n");
+ sqlite3_close(m_db);
+ m_db = NULL;
return DB_ERROR;
}
}
@@ -203,6 +228,10 @@
return this->connect();
}
+bool Database::is_connected() {
+ return m_db != NULL;
+}
+
int Database::begin_transaction() {
return this->execute(m_begin_transaction);
}
Modified: trunk/darwinup/Database.h
===================================================================
--- trunk/darwinup/Database.h 2010-04-19 23:32:00 UTC (rev 813)
+++ trunk/darwinup/Database.h 2010-04-20 21:19:34 UTC (rev 814)
@@ -136,6 +136,7 @@
const char* error();
int connect();
int connect(const char* path);
+ bool is_connected();
int begin_transaction();
int rollback_transaction();
Modified: trunk/darwinup/Depot.cpp
===================================================================
--- trunk/darwinup/Depot.cpp 2010-04-19 23:32:00 UTC (rev 813)
+++ trunk/darwinup/Depot.cpp 2010-04-20 21:19:34 UTC (rev 814)
@@ -98,8 +98,8 @@
int Depot::connect() {
m_db = new DarwinupDatabase(m_database_path);
- if (!m_db) {
- fprintf(stderr, "Error: unable to connect to database in Depot::connect().\n");
+ if (!m_db || !m_db->is_connected()) {
+ fprintf(stderr, "Error: unable to connect to database.\n");
return 1;
}
return 0;
Modified: trunk/darwinup/Utils.cpp
===================================================================
--- trunk/darwinup/Utils.cpp 2010-04-19 23:32:00 UTC (rev 813)
+++ trunk/darwinup/Utils.cpp 2010-04-20 21:19:34 UTC (rev 814)
@@ -257,18 +257,28 @@
char* fetch_userhost(const char* srcpath, const char* dstpath) {
extern uint32_t verbosity;
+
char* localfile;
int res = join_path(&localfile, dstpath, basename((char*)srcpath));
if (!localfile) return NULL;
+
+ // make sure dstpath has a trailing slash
+ char* cleanpath;
+ res = join_path(&cleanpath, dstpath, "/");
+ if (!cleanpath) return NULL;
+ IF_DEBUG("rsync %s %s %s \n", (verbosity ? "-v" : "-q"), srcpath, cleanpath);
+
const char* args[] = {
"/usr/bin/rsync",
(verbosity ? "-v" : "-q"),
- "-a", srcpath,
- localfile,
+ "-a", "--delete",
+ srcpath,
+ cleanpath,
NULL
};
+ free(cleanpath);
if (res == 0) res = exec_with_args(args);
if (res == 0) return localfile;
return NULL;
Copied: trunk/darwinup/darwinup.1 (from rev 813, branches/PR-6973110/darwinup/darwinup.1)
===================================================================
--- trunk/darwinup/darwinup.1 (rev 0)
+++ trunk/darwinup/darwinup.1 2010-04-20 21:19:34 UTC (rev 814)
@@ -0,0 +1,232 @@
+.ig
+Copyright (c) 2010 Apple Inc. All rights reserved.
+ at APPLE_BSD_LICENSE_HEADER_START@
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ its contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ at APPLE_BSD_LICENSE_HEADER_END@
+..
+.Dd 16 Apr, 2010
+.Dt darwinup 1
+.Os Darwin
+.Sh NAME
+.Nm darwinup
+.Nd Install, uninstall, and manage roots
+.Sh SYNOPSIS
+.Nm
+.Op Fl dfnv
+.Op Fl p Ar path
+.Ar subcommand
+.Op Ar arguments ...
+.Sh DESCRIPTION
+.Nm
+allows you to manage roots, or
+archives, of files that replace parts of your system. This is useful
+for installing a new version of a library or tool on your system while
+allowing you to uninstall the files and revert back to the originals
+safely and easily.
+.Sh OPTIONS
+.Bl -tag -width -indent
+.It \-d
+Do not update dyld cache. Darwinup normally runs update_dyld_shared_cache
+if the operation actually changes files on disk. To ensure this does not
+happen, you can provide this option.
+.It \-f
+Force. Some operations will fail gracefully due to potentially unsafe
+situations, such as a root that installs a file where a directory is.
+In order to have darwinup continue through such a situation, you can
+pass the -f option.
+.It \-n
+Dry run. Darwinup will go through an operation, including analyzing
+the root(s) and printing the state/change symbol, but no files will
+be modified on your system and no records will be added to the depot.
+.It \-p Op Ar path
+Prefix path. Normally, darwinup will operate on the boot partition. You
+can use the -p option to have darwinup work on another partition. You
+can provide any arbitrary path, it does not need to be a mount point.
+.It \-v
+Verbose. This option causes darwinup to print extra information. You can
+pass 2 or 3 v's for even more information, but that is usually only needed
+for development and debugging of darwinup itself.
+.El
+.Sh SUBCOMMANDS
+Note that the
+.Ar path
+and
+.Ar archive
+options listed below support globbing and multiple items. See the EXAMPLES
+section below for more details.
+.Bl -tag -width -indent
+.It Ar files Ar archives
+List the files and directories in the
+.Ar archive .
+.It Ar install Ar path
+Install the root at
+.Ar path .
+.It Ar list Op Ar archive
+List archives that are installed. You may optionally provide an
+archive specification to limit which archives get listed.
+.It Ar uninstall Ar archives
+Uninstall the specified archive.
+.It Ar upgrade Ar path
+Find the last archive that was installed with the same name (basename of
+path), and replace it with the root at
+.Ar path .
+.It Ar verify Ar archive
+List all of the information about
+.Ar archive .
+This includes status letters
+detailing how the archive differs from whats on disk
+.El
+.Sh STATE/CHANGE SYMBOLS
+.Bl -tag -width -indent
+.It ?
+Unknown state. Probably a bug.
+.It !
+Missing file during uninstall. Darwinup expected a file or directory to
+exist, but it did not. This could be a bug in darwinup, but most likely
+another tool or software update removed a file that darwinup had been
+tracking. It can also be caused by an installation failing due to an
+object changing type (see FORCING OPERATIONS below), and the subsequent
+rollback finding the root only partially installed. Since these all
+happen during uninstall, they are typically safe to ignore, since darwinup
+was going to delete the object anyway.
+.It A
+Added. No previous file or directory existed so the file or directory was
+added to your system.
+.It E
+External change. The file you are installing is different than the
+last file you installed, but it is identical to what was actually found
+on disk. This probably means something manually installed a root or software
+update without darwinup knowing about it. This is usually harmless.
+.It M
+Mode change. Only changes to permission or ownership were needed to
+uninstall the file or directory.
+.It R
+Removed. No previous file or directory existed, so the uninstall process
+removed the file.
+.It U
+Updated. During installation, the file or directory replaces an existing
+object at the same path. During uninstallation, the previous version of
+the file was restored.
+.El
+.Sh SUPPORTED PATHS
+.Bl -tag -width -indent
+.It /path/to/local/file-or-directory
+You can install files from one of your locally mounted filesystems. The path
+can be a directory, in which case all files below it will be installed, or
+it can be a archive file. The supported file formats are listed in the usage
+statement, but typical formats are .tgz, .tbz2, or .zip.
+.It user at host:/path/to/remote/file-or-directory
+You can install files from a remote machine via rsync/ssh. The remote files
+will be copied to your local depot and then installed like any other local
+root.
+.It http[s]://host/path/to/remote/file
+You can install files from an archive hosted on an HTTP/HTTPS server. The
+archive file will be downloaded using curl to your local depot and then
+installed like any other local archive. You can not point darwinup at a
+directory hosted via HTTP or HTTPS, only archive files such as tarballs.
+.El
+.Sh ARCHIVE SPECIFICATIONS
+When running a subcommand which takes an
+.Ar archive
+argument, you can use one or more of the following items to specify which
+archive to operate on. You can mix and match any of them as needed.
+You can use the list subcommand with these specifications to see what will
+match.
+.Bl -tag -width -indent
+.It Ar serial
+You can specify an archive with its serial number, which can be found using
+the list subcommand.
+.It Ar uuid
+You can specify an archive with its UUID, which can be found using the
+list subcommand.
+.It Ar name
+You can specify an archive with its name, which can be found using the
+list subcommand.
+.It newest
+The newest keyword will match the one archive which was most recently
+installed. This should always be the first archive listed.
+.It oldest
+The oldest keyword will match the one archive which was installed the
+longest time ago. This should always be the last archive listed.
+.It superseded
+The superseded keyword will match zero or more archives. An archive is
+superseded if every file it contains is contained in an archive that was
+(and still is) installed after it. A file in an archive can also be superseded
+by external changes, such as operating system updates. When uninstalling a
+superseded archive, you should never see any status symbols, since being
+superseded means there is a newer file on disk.
+.It all
+The all keyword will match all archives. If you specify extra verbosity
+with -vv, then rollback archives will also be matched by the all keyword. This
+means that
+.Nm darwinup -vv uninstall all
+will attempt to uninstall rollback archives, which will print a message
+about not being able to uninstall rollback archives. This is normal and
+not a problem.
+.El
+.Sh FORCING OPERATIONS
+There are 2 cases where darwinup will require you to pass the force (-f)
+option before proceeding with an operation.
+.Bl -tag -width -indent
+.It Object Type Change
+If you install an archive which contains a file with the same path as a
+directory on your system, or vice versa, darwinup will give you a error
+about not doing that unless you really want to force it. If you do force
+the operation, darwinup will delete the existing object and replace it with
+the object from the root. This can happen when a directory full of files
+gets packaged up in some opaque file, like xibs/nibs. If you expect this
+"type change", then it is probably safe to force the operation.
+.It Uninstall a root from an older base system
+Darwinup remembers the version (build) of the operating system when a root
+is installed. The reason for this is darwinup saves the old (replaced)
+files during the installation procedure. Those backups may have come from
+the older operating system, and thus are not necessarily compatible with
+the current build of the operating system. So if you try to uninstall an
+archive that had been installed on a different version of the operating
+system, darwinup will stop and provide a message asking you to force the
+operation if you really want to. If the files you are uninstalling are all
+superseded, then you should not get this error as the backup copies will
+not be used anyway.
+.El
+.Sh EXAMPLES
+.Bl -tag -width -indent
+.It Install files from a tarball
+$ darwinup install library-1.2.3.tar.gz
+.It Install several directories from /tmp/
+$ darwinup install /tmp/*/*~dst/
+.It Uninstall everything
+$ darwinup uninstall all
+.It See what archives have been superseded and then uninstall them
+$ darwinup list superseded
+$ darwinup uninstall superseded
+.It Uninstall several archives by serial, the oldest one, and one named myroot
+$ darwinup uninstall 9 16 myroot oldest
+.It Install a root from src.macosforge.org
+$ darwinup install http://src.macosforge.org/Roots/10D573/zlib.root.tar.gz
+.El
+.Sh SEE ALSO
+.Xr rsync 1 ,
+.Xr curl 1 ,
+.Xr tar 1 ,
+.Xr gzip 1 ,
+.Xr ditto 1
\ No newline at end of file
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20100420/f2914355/attachment-0001.html>
More information about the darwinbuild-changes
mailing list