From 1315197b695f51e877d3d288a2763f2a1d26945b Mon Sep 17 00:00:00 2001 From: Mikhail Sennikovsky Date: Wed, 16 May 2007 11:31:02 +0000 Subject: [PATCH] 1. Old project update fixes 2. bug-fixing --- .../managedbuilder/internal/core/Builder.java | 2 +- .../internal/core/ManagedBuildInfo.java | 2 +- .../dataprovider/BuildLanguageData.java | 6 ++ .../UpdateManagedProject31.java | 57 ++++++++++++------- 4 files changed, 44 insertions(+), 23 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java index 1310c3a1275..7887b3bbd00 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java @@ -901,7 +901,7 @@ public class Builder extends BuildObject implements IBuilder, IMatchKeyProvider args = addCmd(args, stopOnErrCmd); args = addCmd(args, parallelBuildCmd); - return args; + return args != null ? args.trim() : null; } private String addCmd(String args, String cmd){ diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java index c9b77f9a881..2ea3cf2a2d7 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java @@ -765,7 +765,7 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo { // TODO: This is probably wrong. I'll bet we don't handle the case where all configs are deleted... // But, at least, our UI does not allow the last config to be deleted. // Sanity - if (configuration == null) return; + if (configuration == null || configuration.isExtensionElement()) return; if (!configuration.equals(getDefaultConfiguration())) { IProject project = owner.getProject(); diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/BuildLanguageData.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/BuildLanguageData.java index 1332ccc1421..022aab8d8a8 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/BuildLanguageData.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/BuildLanguageData.java @@ -195,6 +195,12 @@ public class BuildLanguageData extends CLanguageData { } private void initOptionStores(){ + if(!fOptionStoreInited){ + initOptionStoresSynch(); + } + } + + private synchronized void initOptionStoresSynch(){ if(!fOptionStoreInited){ calculateKindToOptionArrayStore(); calculateKindToUndefOptionArrayStore(); diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject31.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject31.java index 2e36e9db251..627b49ac809 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject31.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject31.java @@ -23,6 +23,7 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; public class UpdateManagedProject31 { + private static final String INEXISTEND_PROP_ID = ""; static void doProjectUpdate(IProgressMonitor monitor, final IProject project) throws CoreException { IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project); @@ -46,32 +47,46 @@ public class UpdateManagedProject31 { if(props == null) return; - IToolChain tc = cfg.getToolChain(); - IToolChain extTc = ManagedBuildManager.getExtensionToolChain(tc); - if(tc == null) - return; - String id = extTc.getId(); - if(id == null) + boolean artefactTypeSupported = props.supportsType(ManagedBuildManager.BUILD_ARTEFACT_TYPE_PROPERTY_ID); + boolean buildTypeSupported = props.supportsType(ManagedBuildManager.BUILD_TYPE_PROPERTY_ID); + if(!artefactTypeSupported && !buildTypeSupported) return; - if(props.supportsType(ManagedBuildManager.BUILD_ARTEFACT_TYPE_PROPERTY_ID)){ - String val = getBuildArtefactTypeFromId(id); - if(val != null && props.supportsValue(ManagedBuildManager.BUILD_ARTEFACT_TYPE_PROPERTY_ID, val)){ - try { - props.setProperty(ManagedBuildManager.BUILD_ARTEFACT_TYPE_PROPERTY_ID, val); - } catch (CoreException e) { - ManagedBuilderCorePlugin.log(e); + String artefactType = artefactTypeSupported ? null : INEXISTEND_PROP_ID; + String buildType = buildTypeSupported ? null : INEXISTEND_PROP_ID; + + String id = cfg.getId(); + if(artefactType == null){ + artefactType = getBuildArtefactTypeFromId(id); + } + if(buildType == null){ + buildType = getBuildTypeFromId(id); + } + + if(artefactType == null || buildType == null){ + for(IToolChain tc = cfg.getToolChain(); tc != null && (artefactType == null || buildType == null); tc = tc.getSuperClass()){ + id = tc.getId(); + if(artefactType == null){ + artefactType = getBuildArtefactTypeFromId(id); + } + if(buildType == null){ + buildType = getBuildTypeFromId(id); } } } - if(props.supportsType(ManagedBuildManager.BUILD_TYPE_PROPERTY_ID)){ - String val = getBuildTypeFromId(id); - if(val != null && props.supportsValue(ManagedBuildManager.BUILD_TYPE_PROPERTY_ID, val)){ - try { - props.setProperty(ManagedBuildManager.BUILD_TYPE_PROPERTY_ID, val); - } catch (CoreException e) { - ManagedBuilderCorePlugin.log(e); - } + + if(artefactType != null && artefactType != INEXISTEND_PROP_ID){ + try { + props.setProperty(ManagedBuildManager.BUILD_ARTEFACT_TYPE_PROPERTY_ID, artefactType); + } catch (CoreException e) { + ManagedBuilderCorePlugin.log(e); + } + } + if(buildType != null && buildType != INEXISTEND_PROP_ID){ + try { + props.setProperty(ManagedBuildManager.BUILD_TYPE_PROPERTY_ID, buildType); + } catch (CoreException e) { + ManagedBuilderCorePlugin.log(e); } } }