16215 (core changes)
diff --git a/bundles/org.eclipse.core.boot/src/org/eclipse/core/internal/boot/PlatformConfiguration.java b/bundles/org.eclipse.core.boot/src/org/eclipse/core/internal/boot/PlatformConfiguration.java index bbe7958..0e905e5 100644 --- a/bundles/org.eclipse.core.boot/src/org/eclipse/core/internal/boot/PlatformConfiguration.java +++ b/bundles/org.eclipse.core.boot/src/org/eclipse/core/internal/boot/PlatformConfiguration.java
@@ -1906,8 +1906,19 @@ } // load site properties + SiteEntry root = (SiteEntry)getRootSite(); + String rootUrlString = root.getURL().toExternalForm(); SiteEntry se = (SiteEntry) loadSite(props, CFG_SITE+".0", null); //$NON-NLS-1$ - for (int i=1; se != null; i++) { + for (int i=1; se != null; i++) { + + // check if we are forcing "first use" processing with an existing + // platform.cfg. In this case ignore site entry that represents + // the platform install, and use a root site entry in its place. + // This ensures we do not get messed up by an exclusion list that + // is read from the prior state. + if (cmdFirstUse && rootUrlString.equals(se.getURL().toExternalForm())) + se = root; + if (!se.isExternallyLinkedSite()) configureSite(se); else @@ -1950,7 +1961,7 @@ String urlString = loadAttribute(props, name+"."+CFG_URL, null); //$NON-NLS-1$ if (urlString == null) return dflt; - + URL url = null; try { url = new URL(urlString); @@ -2543,7 +2554,8 @@ return args; else { // Will run reconciler. - // Re-insert -application argument with original app + // Re-insert -application argument with original app and optionally + // force "first use" processing int newArgCnt = cmdFirstUse ? 3 : 2; String[] newArgs = new String[args.length+newArgCnt]; newArgs[0] = CMD_APPLICATION; @@ -2551,6 +2563,8 @@ if (cmdFirstUse) newArgs[2] = CMD_FIRSTUSE; System.arraycopy(args,0,newArgs,newArgCnt,args.length); + if (DEBUG) + debug("triggering reconciliation ..."); return newArgs; } } @@ -2581,7 +2595,14 @@ boolean found = false; // check for args without parameters (i.e., a flag arg) - + + // look for forced "first use" processing (triggered by stale + // bootstrap information) + if (args[i].equalsIgnoreCase(CMD_FIRSTUSE)) { + cmdFirstUse = true; + found = true; + } + // look for the update flag if (args[i].equalsIgnoreCase(CMD_UPDATE)) { cmdUpdate = true;