mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-07 01:36:01 +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;
|
package org.eclipse.cdt.managedbuilder.internal.dataprovider;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
|
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.ICSettingBase;
|
||||||
import org.eclipse.cdt.core.settings.model.ICSourceEntry;
|
import org.eclipse.cdt.core.settings.model.ICSourceEntry;
|
||||||
import org.eclipse.cdt.core.settings.model.extension.CBuildData;
|
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.IResourceInfo;
|
||||||
import org.eclipse.cdt.managedbuilder.core.ITool;
|
import org.eclipse.cdt.managedbuilder.core.ITool;
|
||||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
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.cdt.managedbuilder.internal.core.Configuration;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IPath;
|
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.7=targets conversion
|
||||||
ProjectConverter.8=the project conversion failed due to unknown reason
|
ProjectConverter.8=the project conversion failed due to unknown reason
|
||||||
ProjectConverter.9=the given project is not a valid CDT project
|
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.CoreModel;
|
||||||
import org.eclipse.cdt.core.model.ICProject;
|
import org.eclipse.cdt.core.model.ICProject;
|
||||||
import org.eclipse.cdt.core.parser.util.ArrayUtil;
|
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.ICBuildSetting;
|
||||||
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
|
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
|
||||||
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||||
|
@ -683,6 +684,10 @@ class MockConfig implements ICConfigurationDescription {
|
||||||
public ICSourceEntry[] getResolvedSourceEntries() {
|
public ICSourceEntry[] getResolvedSourceEntries() {
|
||||||
return null;
|
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[])
|
* @see ICProjectDescriptionManager#updateExternalSettingsProviders(String[])
|
||||||
*/
|
*/
|
||||||
void updateExternalSettingsProviders(String[] ids) throws WriteAccessException;
|
void updateExternalSettingsProviders(String[] ids) throws WriteAccessException;
|
||||||
|
|
||||||
|
CConfigurationStatus getConfigurationStatus();
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
package org.eclipse.cdt.core.settings.model.extension;
|
package org.eclipse.cdt.core.settings.model.extension;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
|
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.cdt.core.settings.model.ICSourceEntry;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
|
@ -58,4 +59,8 @@ public abstract class CConfigurationData extends CDataObject {
|
||||||
public abstract ICdtVariablesContributor getBuildVariablesContributor();
|
public abstract ICdtVariablesContributor getBuildVariablesContributor();
|
||||||
|
|
||||||
public abstract void setName(String name);
|
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 java.util.HashMap;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
|
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.ICSettingBase;
|
||||||
import org.eclipse.cdt.core.settings.model.ICSourceEntry;
|
import org.eclipse.cdt.core.settings.model.ICSourceEntry;
|
||||||
import org.eclipse.cdt.core.settings.model.extension.CBuildData;
|
import org.eclipse.cdt.core.settings.model.extension.CBuildData;
|
||||||
|
@ -39,6 +40,7 @@ public class CDefaultConfigurationData extends CConfigurationData {
|
||||||
protected ICSourceEntry[] fSourceEntries;
|
protected ICSourceEntry[] fSourceEntries;
|
||||||
private CDataFacroty fFactory;
|
private CDataFacroty fFactory;
|
||||||
protected boolean fIsModified;
|
protected boolean fIsModified;
|
||||||
|
private CConfigurationStatus fStatus = CConfigurationStatus.CFG_STATUS_OK;
|
||||||
|
|
||||||
protected CDefaultConfigurationData(CDataFacroty factory){
|
protected CDefaultConfigurationData(CDataFacroty factory){
|
||||||
if(factory == null)
|
if(factory == null)
|
||||||
|
@ -103,6 +105,10 @@ public class CDefaultConfigurationData extends CConfigurationData {
|
||||||
fSourceEntries = base.getSourceEntries();
|
fSourceEntries = base.getSourceEntries();
|
||||||
fBuildData = copyBuildData(base.getBuildData(), clone);
|
fBuildData = copyBuildData(base.getBuildData(), clone);
|
||||||
|
|
||||||
|
fStatus = base.getStatus();
|
||||||
|
if(fStatus == null)
|
||||||
|
fStatus = CConfigurationStatus.CFG_STATUS_OK;
|
||||||
|
|
||||||
CFolderData baseRootFolderData = base.getRootFolderData();
|
CFolderData baseRootFolderData = base.getRootFolderData();
|
||||||
fRootFolderData = copyFolderData(baseRootFolderData.getPath(), baseRootFolderData, clone);
|
fRootFolderData = copyFolderData(baseRootFolderData.getPath(), baseRootFolderData, clone);
|
||||||
addRcData(fRootFolderData);
|
addRcData(fRootFolderData);
|
||||||
|
@ -304,6 +310,9 @@ public class CDefaultConfigurationData extends CConfigurationData {
|
||||||
fFactory.setModified(rcDatas[i], false);
|
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.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
|
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.ICBuildSetting;
|
||||||
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
|
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
|
||||||
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||||
|
@ -746,4 +747,10 @@ public class CConfigurationDescription extends CDataProxyContainer implements IC
|
||||||
ICSourceEntry[] entries = getSourceEntries();
|
ICSourceEntry[] entries = getSourceEntries();
|
||||||
return CDataUtil.resolveEntries(entries, this);
|
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.ICdtVariable;
|
||||||
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
|
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.ICBuildSetting;
|
||||||
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
|
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
|
||||||
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||||
|
@ -507,4 +508,10 @@ public class CConfigurationDescriptionCache extends CDefaultConfigurationData
|
||||||
}
|
}
|
||||||
return fResolvedSourceEntries;
|
return fResolvedSourceEntries;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CConfigurationStatus getConfigurationStatus() {
|
||||||
|
CConfigurationStatus status = getStatus();
|
||||||
|
return status != null ? status : CConfigurationStatus.CFG_STATUS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -338,6 +338,9 @@ public class ResourceChangeHandler extends ResourceChangeHandlerBase implements
|
||||||
if(!shouldVisit((IProject)projDelta.getResource()))
|
if(!shouldVisit((IProject)projDelta.getResource()))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if((projDelta.getFlags() & IResourceDelta.REMOVED) == IResourceDelta.REMOVED)
|
||||||
|
continue;
|
||||||
|
|
||||||
IResourceDelta children[] = projDelta.getAffectedChildren();
|
IResourceDelta children[] = projDelta.getAffectedChildren();
|
||||||
for(int k = 0; k < children.length; k++){
|
for(int k = 0; k < children.length; k++){
|
||||||
IResourceDelta child = children[k];
|
IResourceDelta child = children[k];
|
||||||
|
@ -349,6 +352,11 @@ public class ResourceChangeHandler extends ResourceChangeHandlerBase implements
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//the .cproject file is changed
|
//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 {
|
try {
|
||||||
CProjectDescription des = CProjectDescriptionManager.getInstance().checkExternalProjectFileModification(rc);
|
CProjectDescription des = CProjectDescriptionManager.getInstance().checkExternalProjectFileModification(rc);
|
||||||
if(des != null){
|
if(des != null){
|
||||||
|
|
|
@ -15,6 +15,7 @@ CConfigurationDescription.0=data was not created
|
||||||
CConfigurationDescription.1=expected proxy of type ICFileDescription, but was
|
CConfigurationDescription.1=expected proxy of type ICFileDescription, but was
|
||||||
CConfigurationDescription.2=data was not created
|
CConfigurationDescription.2=data was not created
|
||||||
CConfigurationDescription.3=expected proxy of type ICFolderDescription, but was
|
CConfigurationDescription.3=expected proxy of type ICFolderDescription, but was
|
||||||
|
CConfigurationStatus.1=configurations settings invalid
|
||||||
CConfigurationDescriptionCache.0=description is read only
|
CConfigurationDescriptionCache.0=description is read only
|
||||||
CProjectConverterDesciptor.0=illegal provider implementation
|
CProjectConverterDesciptor.0=illegal provider implementation
|
||||||
CProjectConverterDesciptor.1=no provider defined
|
CProjectConverterDesciptor.1=no provider defined
|
||||||
|
|
Loading…
Add table
Reference in a new issue