mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-05 08:46:02 +02:00
Core fix for [Bug 203160] no warning message for unsupported configuration -
Configuration status info (tool-chain support) exposed to the core
This commit is contained in:
parent
772175ca5d
commit
dc96be8fcc
11 changed files with 117 additions and 1 deletions
|
@ -11,6 +11,7 @@
|
|||
package org.eclipse.cdt.managedbuilder.internal.dataprovider;
|
||||
|
||||
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
|
||||
import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
|
||||
import org.eclipse.cdt.core.settings.model.ICSettingBase;
|
||||
import org.eclipse.cdt.core.settings.model.ICSourceEntry;
|
||||
import org.eclipse.cdt.core.settings.model.extension.CBuildData;
|
||||
|
@ -26,6 +27,7 @@ import org.eclipse.cdt.managedbuilder.core.IFolderInfo;
|
|||
import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
|
||||
import org.eclipse.cdt.managedbuilder.core.ITool;
|
||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
|
||||
import org.eclipse.cdt.managedbuilder.internal.core.Configuration;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
|
@ -151,4 +153,18 @@ public class BuildConfigurationData extends CConfigurationData {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public CConfigurationStatus getStatus() {
|
||||
int flags = 0;
|
||||
String msg = null;
|
||||
if(!fCfg.isSupported()){
|
||||
flags |= CConfigurationStatus.TOOLCHAIN_NOT_SUPPORTED;
|
||||
msg = DataProviderMessages.getString("BuildConfigurationData.0"); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
if(flags != 0)
|
||||
return new CConfigurationStatus(ManagedBuilderCorePlugin.getUniqueIdentifier(), flags, msg, null);
|
||||
|
||||
return CConfigurationStatus.CFG_STATUS_OK;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,3 +22,4 @@ ProjectConverter.6=the project conversion failed
|
|||
ProjectConverter.7=targets conversion
|
||||
ProjectConverter.8=the project conversion failed due to unknown reason
|
||||
ProjectConverter.9=the given project is not a valid CDT project
|
||||
BuildConfigurationData.0=The configuration support is not installed on the system
|
||||
|
|
|
@ -28,6 +28,7 @@ import org.eclipse.cdt.core.internal.index.provider.test.Providers;
|
|||
import org.eclipse.cdt.core.model.CoreModel;
|
||||
import org.eclipse.cdt.core.model.ICProject;
|
||||
import org.eclipse.cdt.core.parser.util.ArrayUtil;
|
||||
import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
|
||||
import org.eclipse.cdt.core.settings.model.ICBuildSetting;
|
||||
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
|
||||
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||
|
@ -683,6 +684,10 @@ class MockConfig implements ICConfigurationDescription {
|
|||
public ICSourceEntry[] getResolvedSourceEntries() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public CConfigurationStatus getConfigurationStatus() {
|
||||
return CConfigurationStatus.CFG_STATUS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2007 Intel Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.core.settings.model;
|
||||
|
||||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.internal.core.settings.model.SettingsModelMessages;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
|
||||
public final class CConfigurationStatus extends Status {
|
||||
// public static final int WRONG_TARGET_ARCH = 1;
|
||||
// public static final int WRONG_TARGET_OS = 1 << 1;
|
||||
public static final int TOOLCHAIN_NOT_SUPPORTED = 1 << 2;
|
||||
public static final int SETTINGS_INVALID = 1 << 3;
|
||||
|
||||
public static final CConfigurationStatus CFG_STATUS_OK = new CConfigurationStatus(0, ""); //$NON-NLS-1$
|
||||
|
||||
public static final CConfigurationStatus CFG_STATUS_ERROR = new CConfigurationStatus(SETTINGS_INVALID, SettingsModelMessages.getString("CConfigurationStatus.1")); //$NON-NLS-1$
|
||||
|
||||
|
||||
public CConfigurationStatus(String pluginId, int code,
|
||||
String message, Throwable exception) {
|
||||
super(calcSeverity(code), pluginId, code, message, exception);
|
||||
}
|
||||
|
||||
public CConfigurationStatus(int code, String message,
|
||||
Throwable exception) {
|
||||
this(CCorePlugin.PLUGIN_ID, code, message, exception);
|
||||
}
|
||||
|
||||
public CConfigurationStatus(int code, String message) {
|
||||
this(CCorePlugin.PLUGIN_ID, code, message, null);
|
||||
}
|
||||
|
||||
private static boolean checkFlags(int flags, int value){
|
||||
return (flags & value) == value;
|
||||
}
|
||||
|
||||
private static int calcSeverity(int flags){
|
||||
if(checkFlags(flags, SETTINGS_INVALID))
|
||||
return IStatus.ERROR;
|
||||
else if(flags != 0)
|
||||
return IStatus.WARNING;
|
||||
return IStatus.OK;
|
||||
}
|
||||
|
||||
}
|
|
@ -387,4 +387,6 @@ public interface ICConfigurationDescription extends ICSettingContainer, ICSettin
|
|||
* @see ICProjectDescriptionManager#updateExternalSettingsProviders(String[])
|
||||
*/
|
||||
void updateExternalSettingsProviders(String[] ids) throws WriteAccessException;
|
||||
|
||||
CConfigurationStatus getConfigurationStatus();
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
package org.eclipse.cdt.core.settings.model.extension;
|
||||
|
||||
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
|
||||
import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
|
||||
import org.eclipse.cdt.core.settings.model.ICSourceEntry;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
|
@ -58,4 +59,8 @@ public abstract class CConfigurationData extends CDataObject {
|
|||
public abstract ICdtVariablesContributor getBuildVariablesContributor();
|
||||
|
||||
public abstract void setName(String name);
|
||||
|
||||
public CConfigurationStatus getStatus(){
|
||||
return CConfigurationStatus.CFG_STATUS_OK;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ import java.util.Arrays;
|
|||
import java.util.HashMap;
|
||||
|
||||
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
|
||||
import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
|
||||
import org.eclipse.cdt.core.settings.model.ICSettingBase;
|
||||
import org.eclipse.cdt.core.settings.model.ICSourceEntry;
|
||||
import org.eclipse.cdt.core.settings.model.extension.CBuildData;
|
||||
|
@ -39,6 +40,7 @@ public class CDefaultConfigurationData extends CConfigurationData {
|
|||
protected ICSourceEntry[] fSourceEntries;
|
||||
private CDataFacroty fFactory;
|
||||
protected boolean fIsModified;
|
||||
private CConfigurationStatus fStatus = CConfigurationStatus.CFG_STATUS_OK;
|
||||
|
||||
protected CDefaultConfigurationData(CDataFacroty factory){
|
||||
if(factory == null)
|
||||
|
@ -103,6 +105,10 @@ public class CDefaultConfigurationData extends CConfigurationData {
|
|||
fSourceEntries = base.getSourceEntries();
|
||||
fBuildData = copyBuildData(base.getBuildData(), clone);
|
||||
|
||||
fStatus = base.getStatus();
|
||||
if(fStatus == null)
|
||||
fStatus = CConfigurationStatus.CFG_STATUS_OK;
|
||||
|
||||
CFolderData baseRootFolderData = base.getRootFolderData();
|
||||
fRootFolderData = copyFolderData(baseRootFolderData.getPath(), baseRootFolderData, clone);
|
||||
addRcData(fRootFolderData);
|
||||
|
@ -304,6 +310,9 @@ public class CDefaultConfigurationData extends CConfigurationData {
|
|||
fFactory.setModified(rcDatas[i], false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public CConfigurationStatus getStatus() {
|
||||
return fStatus;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ import java.util.Map;
|
|||
|
||||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
|
||||
import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
|
||||
import org.eclipse.cdt.core.settings.model.ICBuildSetting;
|
||||
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
|
||||
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||
|
@ -746,4 +747,10 @@ public class CConfigurationDescription extends CDataProxyContainer implements IC
|
|||
ICSourceEntry[] entries = getSourceEntries();
|
||||
return CDataUtil.resolveEntries(entries, this);
|
||||
}
|
||||
|
||||
public CConfigurationStatus getConfigurationStatus() {
|
||||
CConfigurationData data = getConfigurationData(false);
|
||||
CConfigurationStatus status = data.getStatus();
|
||||
return status != null ? status : CConfigurationStatus.CFG_STATUS_OK;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import java.util.Map;
|
|||
|
||||
import org.eclipse.cdt.core.cdtvariables.ICdtVariable;
|
||||
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
|
||||
import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
|
||||
import org.eclipse.cdt.core.settings.model.ICBuildSetting;
|
||||
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
|
||||
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||
|
@ -507,4 +508,10 @@ public class CConfigurationDescriptionCache extends CDefaultConfigurationData
|
|||
}
|
||||
return fResolvedSourceEntries;
|
||||
}
|
||||
|
||||
public CConfigurationStatus getConfigurationStatus() {
|
||||
CConfigurationStatus status = getStatus();
|
||||
return status != null ? status : CConfigurationStatus.CFG_STATUS_OK;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -337,7 +337,10 @@ public class ResourceChangeHandler extends ResourceChangeHandlerBase implements
|
|||
IResourceDelta projDelta = projs[i];
|
||||
if(!shouldVisit((IProject)projDelta.getResource()))
|
||||
continue;
|
||||
|
||||
|
||||
if((projDelta.getFlags() & IResourceDelta.REMOVED) == IResourceDelta.REMOVED)
|
||||
continue;
|
||||
|
||||
IResourceDelta children[] = projDelta.getAffectedChildren();
|
||||
for(int k = 0; k < children.length; k++){
|
||||
IResourceDelta child = children[k];
|
||||
|
@ -349,6 +352,11 @@ public class ResourceChangeHandler extends ResourceChangeHandlerBase implements
|
|||
continue;
|
||||
|
||||
//the .cproject file is changed
|
||||
if((child.getFlags() & IResourceDelta.REMOVED) == IResourceDelta.REMOVED){
|
||||
//project file does not exist or corrupted, remove
|
||||
((RcMoveHandler)handler).setProjectDescription(rc.getProject(), null);
|
||||
}
|
||||
|
||||
try {
|
||||
CProjectDescription des = CProjectDescriptionManager.getInstance().checkExternalProjectFileModification(rc);
|
||||
if(des != null){
|
||||
|
|
|
@ -15,6 +15,7 @@ CConfigurationDescription.0=data was not created
|
|||
CConfigurationDescription.1=expected proxy of type ICFileDescription, but was
|
||||
CConfigurationDescription.2=data was not created
|
||||
CConfigurationDescription.3=expected proxy of type ICFolderDescription, but was
|
||||
CConfigurationStatus.1=configurations settings invalid
|
||||
CConfigurationDescriptionCache.0=description is read only
|
||||
CProjectConverterDesciptor.0=illegal provider implementation
|
||||
CProjectConverterDesciptor.1=no provider defined
|
||||
|
|
Loading…
Add table
Reference in a new issue