[darwinbuild-changes] [961] trunk
source_changes at macosforge.org
source_changes at macosforge.org
Fri Nov 4 15:59:54 PDT 2011
Revision: 961
http://trac.macosforge.org/projects/darwinbuild/changeset/961
Author: mww at apple.com
Date: 2011-11-04 15:59:53 -0700 (Fri, 04 Nov 2011)
Log Message:
-----------
<rdar://problem/10363375> darwinup should rebuild xpc service cache where applicable
Modified Paths:
--------------
trunk/darwinup/Depot.cpp
trunk/darwinup/Depot.h
trunk/darwinup/Utils.cpp
trunk/darwinup/Utils.h
trunk/darwinup/main.cpp
Property Changed:
----------------
trunk/
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-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
/branches/PR-7872907:830-840
/branches/PR-7935095:819-821
/branches/PR-8116613:849
/branches/PR-8279204:854-862
/branches/PR-8416637:870-880
/branches/PR-8486662:885-889
/branches/PR-8488185:894-898
/branches/PR-8604911:903-905
/branches/PR-8817822:917-933
/branches/PR-8908468:912
+ /branches/PR-10363375:959-960
/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
/branches/PR-7872907:830-840
/branches/PR-7935095:819-821
/branches/PR-8116613:849
/branches/PR-8279204:854-862
/branches/PR-8416637:870-880
/branches/PR-8486662:885-889
/branches/PR-8488185:894-898
/branches/PR-8604911:903-905
/branches/PR-8817822:917-933
/branches/PR-8908468:912
Modified: trunk/darwinup/Depot.cpp
===================================================================
--- trunk/darwinup/Depot.cpp 2011-11-04 19:00:16 UTC (rev 960)
+++ trunk/darwinup/Depot.cpp 2011-11-04 22:59:53 UTC (rev 961)
@@ -62,6 +62,7 @@
m_depot_mode = 0750;
m_is_dirty = false;
m_modified_extensions = false;
+ m_modified_xpc_services = false;
}
Depot::Depot(const char* prefix) {
@@ -71,6 +72,7 @@
m_build = NULL;
m_is_dirty = false;
m_modified_extensions = false;
+ m_modified_xpc_services = false;
asprintf(&m_prefix, "%s", prefix);
join_path(&m_depot_path, m_prefix, "/.DarwinDepot");
@@ -98,6 +100,7 @@
const char* Depot::prefix() { return m_prefix; }
bool Depot::is_dirty() { return m_is_dirty; }
bool Depot::has_modified_extensions() { return m_modified_extensions; }
+bool Depot::has_modified_xpc_services(){ return m_modified_xpc_services; }
int Depot::connect() {
m_db = new DarwinupDatabase(m_database_path);
@@ -542,6 +545,17 @@
this->m_modified_extensions = true;
}
+ if (!this->m_modified_xpc_services &&
+ (strstr(file->path(), ".xpc/") != NULL)) {
+
+ bool modified = (has_suffix(file->path(), "Info.plist") ||
+ has_suffix(file->path(), "framework.sb"));
+
+ if (modified) {
+ IF_DEBUG("[analyze] xpc service detected\n");
+ this->m_modified_xpc_services = true;
+ }
+ }
}
// if file == actual, but actual != preceding, then an external
Modified: trunk/darwinup/Depot.h
===================================================================
--- trunk/darwinup/Depot.h 2011-11-04 19:00:16 UTC (rev 960)
+++ trunk/darwinup/Depot.h 2011-11-04 22:59:53 UTC (rev 961)
@@ -133,6 +133,7 @@
bool is_dirty();
bool has_modified_extensions();
+ bool has_modified_xpc_services();
protected:
@@ -183,6 +184,7 @@
int m_is_locked;
bool m_is_dirty; // track if we need to update dyld cache
bool m_modified_extensions; // track if we need to touch /S/L/E
+ bool m_modified_xpc_services; // track if we need to run xpchelper
};
Modified: trunk/darwinup/Utils.cpp
===================================================================
--- trunk/darwinup/Utils.cpp 2011-11-04 19:00:16 UTC (rev 960)
+++ trunk/darwinup/Utils.cpp 2011-11-04 22:59:53 UTC (rev 961)
@@ -361,6 +361,42 @@
return res;
}
+int update_xpc_services_cache(const char* path) {
+ extern uint32_t verbosity;
+ int res;
+ char* base;
+ res = find_base_system_path(&base, path);
+ if (res) return res;
+
+ if (verbosity) {
+ fprintf(stdout, "Updating xpc services cache for %s ...", base);
+ fflush(stdout);
+ }
+
+ char* toolpath;
+ join_path(&toolpath, base, "/usr/libexec/xpchelper");
+
+ struct stat sb;
+ res = stat(toolpath, &sb);
+ if (res) {
+ return 1;
+ }
+
+ const char* args[] = {
+ toolpath,
+ "--rebuild-cache",
+ "--root", base,
+ NULL
+ };
+ res = exec_with_args(args);
+
+ if (verbosity) fprintf(stdout, "Done updating xpc cache\n");
+
+ free(toolpath);
+ free(base);
+ return res;
+}
+
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
int build_number_for_path(char** build, const char* path) {
int res = 0;
Modified: trunk/darwinup/Utils.h
===================================================================
--- trunk/darwinup/Utils.h 2011-11-04 19:00:16 UTC (rev 960)
+++ trunk/darwinup/Utils.h 2011-11-04 22:59:53 UTC (rev 961)
@@ -80,6 +80,7 @@
int find_base_system_path(char** output, const char* path);
int update_dyld_shared_cache(const char* path);
+int update_xpc_services_cache(const char* path);
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
int build_number_for_path(char** build, const char* path);
Modified: trunk/darwinup/main.cpp
===================================================================
--- trunk/darwinup/main.cpp 2011-11-04 19:00:16 UTC (rev 960)
+++ trunk/darwinup/main.cpp 2011-11-04 22:59:53 UTC (rev 961)
@@ -280,6 +280,15 @@
}
free(sle_path);
}
+#endif
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
+ if (!disable_automation && depot->has_modified_xpc_services() && res == 0) {
+ res = update_xpc_services_cache(path);
+ if (res) fprintf(stderr, "Warning: could not update xpc services cache.\n");
+ res = 0;
+ }
+#endif
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
if (restart && res == 0) {
res = tell_finder_to_restart();
if (res) fprintf(stderr, "Warning: tried to tell Finder to restart"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20111104/ea9d4c1f/attachment-0001.html>
More information about the darwinbuild-changes
mailing list