[yocto] [PATCHv2 4/9] plugins/sdk.ide: Switch to YoctoSDKAutotoolsProjectNature

Zhang, Jessica jessica.zhang at intel.com
Tue Apr 16 22:40:50 PDT 2013


Hi Atanas,



I ask for building the class hierarch is mainly from the Java side class design point of view and I see your point of the relationship consideration from the eclipse plug-in side.  Just purely from the class name and the implementation, it's obviously YoctoSDKAutotoolsProjectNature has a closer relationship to YoctoSDKProjectNature whereas the requirements for autotoolsNatureV2 is less obvious.



My comments regarding eliminate addYoctoSDKAutotoolsNature, but instead just make it the same as addYoctoSDKNature with same signature.  But the implementation of them will be difference via the NATURE_ID value.  But this makes more sense if we make AutotoolsProjectNature subclass ProjectNature, if there's no such relationship between the two classes, with separate method name as in your patch is just fine.



Thoughts?



Jessica



From: Atanas Gegov [mailto:atanas.gegov.oss at gmail.com]
Sent: Tuesday, April 16, 2013 5:39 AM
To: Zhang, Jessica
Cc: yocto at yoctoproject.org
Subject: Re: [yocto] [PATCHv2 4/9] plugins/sdk.ide: Switch to YoctoSDKAutotoolsProjectNature



Hi Jessica,



My idea was that the YoctoSDKAutotoolsProjectNature and the YoctoSDKProjectNature are related through the "requires-nature" tag in plugin.xml. The YoctoSDKAutotoolsProjectNature has also an another  "requires-nature" relation to the org.eclipse.cdt.autotools.core.autotoolsNatureV2. If I make the YoctoSDKAutotoolsProjectNature a subclass of the YoctoSDKProjectNature it would suggest (according to my mind) a stronger connection to the YoctoSDKProjectNature than to the org.eclipse.cdt.autotools.core.autotoolsNatureV2. It would be like YoctoSDKAutotoolsProjectNature "requires more" YoctoSDKProjectNature than org.eclipse.cdt.autotools.core.autotoolsNatureV2...I am not sure if it is a problem or not. So, I can make the YoctoSDKAutotoolsProjectNature a subclass of the YoctoSDKProjectNature if you think that it is a better design.


What do you mean by "In this way, you don't need to introduce the special method of addYoctoSDKAutotoolsNature in YoctoSDKAutotoolsProjectNature which makes the interface a little bit cleaner via encapsulation"? In order to add the two natures to the project I think we need both static methods:
- YoctoSDKProjectNature.addYoctoSDKNature(project, monitor);

- YoctoSDKAutotoolsProjectNature.addYoctoSDKAutotoolsNature(project, monitor);

Or do you mean some other solution?


Looking forward to your feedback!

Best regards,
Atanas

On Mon, Apr 15, 2013 at 9:12 PM, Zhang, Jessica <jessica.zhang at intel.com<mailto:jessica.zhang at intel.com>> wrote:

Hi Atanas,

Everything looks good for the patch series except can we make YoctoSDKAutotoolsProjectNature subclass of YoctoSDKProjectNature by extending it to better show the classes relationship.  In this way, you don't need to introduce the special method of addYoctoSDKAutotoolsNature in YoctoSDKAutotoolsProjectNature which makes the interface a little bit cleaner via encapsulation.

Thanks,
Jessica


-----Original Message-----
From: yocto-bounces at yoctoproject.org<mailto:yocto-bounces at yoctoproject.org> [mailto:yocto-bounces at yoctoproject.org<mailto:yocto-bounces at yoctoproject.org>] On Behalf Of Atanas Gegov
Sent: Thursday, April 11, 2013 4:25 AM
To: yocto at yoctoproject.org<mailto:yocto at yoctoproject.org>
Subject: [yocto] [PATCHv2 4/9] plugins/sdk.ide: Switch to YoctoSDKAutotoolsProjectNature

From: Atanas Gegov <atanas.gegov at bmw-carit.de<mailto:atanas.gegov at bmw-carit.de>>

The YoctoSDKProjectNature remains the basic nature for all Yocto projects in the IDE. The projects using Autotools (all templates) get the YoctoSDKProjectNature and additionally the YoctoSDKAutotoolsProjectNature. The process NewYoctoCProjectTemplate is adapted accordingly.
---
 plugins/org.yocto.sdk.ide/plugin.xml               |    2 +-
 .../natures/YoctoSDKAutotoolsProjectNature.java    |   45 +++++++++++
 .../sdk/ide/natures/YoctoSDKProjectNature.java     |   70 -----------------
 .../src/org/yocto/sdk/ide/utils/YoctoSDKUtils.java |    6 +-
 .../sdk/ide/wizard/NewYoctoCProjectTemplate.java   |   79 ++++++++++++--------
 5 files changed, 96 insertions(+), 106 deletions(-)

diff --git a/plugins/org.yocto.sdk.ide/plugin.xml b/plugins/org.yocto.sdk.ide/plugin.xml
index f21434b..35e34b4 100644
--- a/plugins/org.yocto.sdk.ide/plugin.xml
+++ b/plugins/org.yocto.sdk.ide/plugin.xml
@@ -91,7 +91,7 @@
                            type="org.eclipse.core.resources.IResource">
                         <test
                               property="org.eclipse.core.resources.projectNature"
-                              value="org.yocto.sdk.ide.YoctoSDKNature">
+
+ value="org.yocto.sdk.ide.YoctoSDKAutotoolsNature">
                         </test>
                      </adapt>
                   </iterate>
diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/natures/YoctoSDKAutotoolsProjectNature.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/natures/YoctoSDKAutotoolsProjectNature.java
index ac73878..767c005 100644
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/natures/YoctoSDKAutotoolsProjectNature.java
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/natures/YoctoSDKAu

+++ totoolsProjectNature.java

@@ -10,15 +10,31 @@
  *******************************************************************************/
 package org.yocto.sdk.ide.natures;

+import

+org.eclipse.cdt.internal.autotools.core.configure.AutotoolsConfiguratio
+nManager; import
+org.eclipse.cdt.internal.autotools.core.configure.IAConfiguration;

+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IProjectNature;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.yocto.sdk.ide.YoctoSDKPlugin;

+import org.yocto.sdk.ide.YoctoUIElement; import
+org.yocto.sdk.ide.utils.YoctoSDKUtils;


 public class YoctoSDKAutotoolsProjectNature implements IProjectNature {
        public static final  String YoctoSDK_AUTOTOOLS_NATURE_ID = YoctoSDKPlugin.getUniqueIdentifier() + ".YoctoSDKAutotoolsNature";

+       private static final String DEFAULT_HOST_STR = "host";
+       private static final String DEFAULT_TARGET_STR = "target";
+       private static final String DEFAULT_BUILD_STR = "build";
+       private static final String DEFAULT_AUTOGEN_OPT_STR = "autogenOpts";
+
+       private static final String DEFAULT_CONFIGURE_STR = "configure";
+       private static final String DEFAULT_AUTOGEN_STR = "autogen";
+       private static final String DEFAULT_LIBTOOL_SYSROOT_PREFIX = "

+--with-libtool-sysroot=";

+
        private IProject proj;

        public void configure() throws CoreException { @@ -38,4 +54,33 @@ public class YoctoSDKAutotoolsProjectNature implements IProjectNature {
        public static void addYoctoSDKAutotoolsNature(IProject project, IProgressMonitor monitor) throws CoreException {
                YoctoSDKNatureUtils.addNature(project, YoctoSDK_AUTOTOOLS_NATURE_ID, monitor);
        }
+
+       public static void configureAutotoolsOptions(IProject project) {
+               IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+               IConfiguration icfg = info.getDefaultConfiguration();
+               YoctoUIElement elem = YoctoSDKUtils.getElemFromProjectEnv(project);
+               String sysroot_str = elem.getStrSysrootLoc();
+               String id = icfg.getId();
+               String CFLAGS_str = YoctoSDKUtils.getEnvValue(project, "CFLAGS");
+               String CXXFLAGS_str = YoctoSDKUtils.getEnvValue(project, "CXXFLAGS");
+               String CPPFLAGS_str = YoctoSDKUtils.getEnvValue(project, "CPPFLAGS");
+               String LDFLAGS_str = YoctoSDKUtils.getEnvValue(project, "LDFLAGS");
+
+               String command_prefix = "CFLAGS=\" -g -O0 " + CFLAGS_str + "\" CXXFLAGS=\" -g -O0 "
+                               + CXXFLAGS_str + "\" LDFLAGS=\"" + LDFLAGS_str + "\" CPPFLAGS=\"" + CPPFLAGS_str + "\"";
+               String autogen_setting = command_prefix+" autogen.sh" + DEFAULT_LIBTOOL_SYSROOT_PREFIX + sysroot_str;
+               String configure_setting = command_prefix + " configure" + DEFAULT_LIBTOOL_SYSROOT_PREFIX + sysroot_str;
+               IAConfiguration cfg = AutotoolsConfigurationManager.getInstance().getConfiguration(project, id);
+               String strConfigure = YoctoSDKUtils.getEnvValue(project,

+"CONFIGURE_FLAGS");

+
+               cfg.setOption(DEFAULT_CONFIGURE_STR, configure_setting);
+               cfg.setOption(DEFAULT_BUILD_STR, YoctoSDKUtils.splitString(strConfigure, "--build="));
+               cfg.setOption(DEFAULT_HOST_STR, YoctoSDKUtils.splitString(strConfigure, "--host="));
+               cfg.setOption(DEFAULT_TARGET_STR, YoctoSDKUtils.splitString(strConfigure, "--target="));
+               cfg.setOption(DEFAULT_AUTOGEN_STR, autogen_setting);
+               cfg.setOption(DEFAULT_AUTOGEN_OPT_STR, strConfigure);
+
+               AutotoolsConfigurationManager.getInstance().addConfiguration(project, cfg);
+               AutotoolsConfigurationManager.getInstance().saveConfigs(project);
+       }
 }
diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/natures/YoctoSDKProjectNature.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/natures/YoctoSDKProjectNature.java
index fcb296d..51926fb 100644
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/natures/YoctoSDKProjectNature.java
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/natures/YoctoSDKPr

+++ ojectNature.java

@@ -10,39 +10,15 @@
  *******************************************************************************/
 package org.yocto.sdk.ide.natures;

-import org.eclipse.cdt.internal.autotools.core.configure.AutotoolsConfigurationManager;
-import org.eclipse.cdt.internal.autotools.core.configure.IAConfiguration;
-import org.eclipse.cdt.managedbuilder.core.IConfiguration;
-import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
-import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IProjectNature;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.yocto.sdk.ide.YoctoGeneralException;
-import org.yocto.sdk.ide.YoctoProfileElement;
-import org.yocto.sdk.ide.YoctoSDKChecker;
 import org.yocto.sdk.ide.YoctoSDKPlugin; -import org.yocto.sdk.ide.YoctoUIElement; -import org.yocto.sdk.ide.YoctoSDKChecker.SDKCheckRequestFrom;
-import org.yocto.sdk.ide.YoctoSDKChecker.SDKCheckResults;
-import org.yocto.sdk.ide.utils.YoctoSDKUtils;

-
- at SuppressWarnings("restriction")
 public class YoctoSDKProjectNature implements IProjectNature {
        public static final  String YoctoSDK_NATURE_ID = YoctoSDKPlugin.getUniqueIdentifier() + ".YoctoSDKNature";

-       private static final String DEFAULT_HOST_STR = "host";
-       private static final String DEFAULT_TARGET_STR = "target";
-       private static final String DEFAULT_BUILD_STR = "build";
-       private static final String DEFAULT_AUTOGEN_OPT_STR = "autogenOpts";
-
-       private static final String DEFAULT_CONFIGURE_STR = "configure";
-       private static final String DEFAULT_AUTOGEN_STR = "autogen";
-       private static final String DEFAULT_LIBTOOL_SYSROOT_PREFIX = " --with-libtool-sysroot=";
-
        private IProject proj;

        public void configure() throws CoreException { @@ -62,50 +38,4 @@ public class YoctoSDKProjectNature implements IProjectNature {
        public static void addYoctoSDKNature(IProject project, IProgressMonitor monitor) throws CoreException {
                YoctoSDKNatureUtils.addNature(project, YoctoSDK_NATURE_ID, monitor);
        }
-
-       public static void configureAutotoolsOptions(IProject project) {
-               IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
-               IConfiguration icfg = info.getDefaultConfiguration();
-               YoctoUIElement elem = YoctoSDKUtils.getElemFromProjectEnv(project);
-               String sysroot_str = elem.getStrSysrootLoc();
-               String id = icfg.getId();
-               String CFLAGS_str = YoctoSDKUtils.getEnvValue(project, "CFLAGS");
-               String CXXFLAGS_str = YoctoSDKUtils.getEnvValue(project, "CXXFLAGS");
-               String CPPFLAGS_str = YoctoSDKUtils.getEnvValue(project, "CPPFLAGS");
-               String LDFLAGS_str = YoctoSDKUtils.getEnvValue(project, "LDFLAGS");
-
-               String command_prefix = "CFLAGS=\" -g -O0 " + CFLAGS_str + "\" CXXFLAGS=\" -g -O0 "
-               + CXXFLAGS_str + "\" LDFLAGS=\"" + LDFLAGS_str + "\" CPPFLAGS=\"" + CPPFLAGS_str + "\"";
-               String autogen_setting = command_prefix+" autogen.sh" + DEFAULT_LIBTOOL_SYSROOT_PREFIX + sysroot_str;
-               String configure_setting = command_prefix + " configure" + DEFAULT_LIBTOOL_SYSROOT_PREFIX + sysroot_str;
-               IAConfiguration cfg = AutotoolsConfigurationManager.getInstance().getConfiguration(project, id);
-               String strConfigure = YoctoSDKUtils.getEnvValue(project, "CONFIGURE_FLAGS");
-
-               cfg.setOption(DEFAULT_CONFIGURE_STR, configure_setting);
-               cfg.setOption(DEFAULT_BUILD_STR, YoctoSDKUtils.splitString(strConfigure, "--build="));
-               cfg.setOption(DEFAULT_HOST_STR, YoctoSDKUtils.splitString(strConfigure, "--host="));
-               cfg.setOption(DEFAULT_TARGET_STR, YoctoSDKUtils.splitString(strConfigure, "--target="));
-               cfg.setOption(DEFAULT_AUTOGEN_STR, autogen_setting);
-               cfg.setOption(DEFAULT_AUTOGEN_OPT_STR, strConfigure);
-
-               AutotoolsConfigurationManager.getInstance().addConfiguration(project, cfg);
-               AutotoolsConfigurationManager.getInstance().saveConfigs(project);
-       }
-
-       public static void configureAutotools(IProject project) throws YoctoGeneralException {
-               YoctoProfileElement profileElement = YoctoSDKUtils.getProfilesFromDefaultStore();
-               YoctoSDKUtils.saveProfilesToProjectPreferences(profileElement, project);
-               IPreferenceStore selecteProfileStore = YoctoSDKPlugin.getProfilePreferenceStore(profileElement.getSelectedProfile());
-               YoctoUIElement elem = YoctoSDKUtils.getElemFromStore(selecteProfileStore);
-               SDKCheckResults result = YoctoSDKChecker.checkYoctoSDK(elem);
-               if (result != SDKCheckResults.SDK_PASS){
-                       String strErrorMsg =  YoctoSDKChecker.getErrorMessage(result, SDKCheckRequestFrom.Wizard);
-                       throw new YoctoGeneralException(strErrorMsg);
-               }
-               else
-               {
-                       YoctoSDKUtils.setEnvironmentVariables(project, elem);
-                       configureAutotoolsOptions(project);
-               }
-       }
 }
diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/utils/YoctoSDKUtils.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/utils/YoctoSDKUtils.java
index bd781b3..1e2e424 100644
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/utils/YoctoSDKUtils.java
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/utils/YoctoSDKUtil

+++ s.java

@@ -54,8 +54,8 @@ import org.yocto.sdk.ide.YoctoProfileElement;
 import org.yocto.sdk.ide.YoctoSDKMessages;
 import org.yocto.sdk.ide.YoctoSDKPlugin;  import org.yocto.sdk.ide.YoctoUIElement;
+import org.yocto.sdk.ide.natures.YoctoSDKAutotoolsProjectNature;
 import org.yocto.sdk.ide.natures.YoctoSDKEmptyProjectNature;
-import org.yocto.sdk.ide.natures.YoctoSDKProjectNature;
 import org.yocto.sdk.ide.preferences.PreferenceConstants;

 public class YoctoSDKUtils {
@@ -427,7 +427,9 @@ public class YoctoSDKUtils {

                try {
                        setEnvironmentVariables(project, elem);
-                       YoctoSDKProjectNature.configureAutotoolsOptions(project);
+                       if(project.hasNature(YoctoSDKAutotoolsProjectNature.YoctoSDK_AUTOTOOLS_NATURE_ID)) {
+                               YoctoSDKAutotoolsProjectNature.configureAutotoolsOptions(project);
+                       }
                        IConsole console = CCorePlugin.getDefault().getConsole("org.yocto.sdk.ide.YoctoConsole");
                        console.start(project);
                        consoleOutStream = console.getOutputStream(); diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java
index 73531e5..239cbf8 100644
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCPr

+++ ojectTemplate.java

@@ -28,6 +28,7 @@ import org.eclipse.cdt.make.core.MakeCorePlugin;
 import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager;
 import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo;
 import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerProjectDiscoveredPathInfo;
+import

+org.eclipse.cdt.make.internal.core.scannerconfig.util.SymbolEntry;

 import org.eclipse.cdt.managedbuilder.core.BuildException;
 import org.eclipse.cdt.managedbuilder.core.IConfiguration;
 import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
@@ -56,6 +57,7 @@ import org.yocto.sdk.ide.YoctoSDKChecker.SDKCheckResults;
 import org.yocto.sdk.ide.YoctoSDKMessages;
 import org.yocto.sdk.ide.YoctoSDKPlugin;  import org.yocto.sdk.ide.YoctoUIElement;
+import org.yocto.sdk.ide.natures.YoctoSDKAutotoolsProjectNature;
 import org.yocto.sdk.ide.natures.YoctoSDKEmptyProjectNature;
 import org.yocto.sdk.ide.natures.YoctoSDKProjectNature;
 import org.yocto.sdk.ide.utils.YoctoSDKUtils;
@@ -88,7 +90,7 @@ public class NewYoctoCProjectTemplate extends ProcessRunner {
                String isEmptyProjetValue = args[4].getSimpleValue();
                String isAutotoolsProjectValue = args[5].getSimpleValue();
                boolean isCProject = Boolean.valueOf(isCProjectValue).booleanValue();
-               boolean isEmptryProject = Boolean.valueOf(isEmptyProjetValue).booleanValue();
+               boolean isEmptyProject =

+Boolean.valueOf(isEmptyProjetValue).booleanValue();

                boolean isAutotoolsProject = Boolean.valueOf(isAutotoolsProjectValue).booleanValue();

                IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
@@ -126,19 +128,8 @@ public class NewYoctoCProjectTemplate extends ProcessRunner {
                                pca.setArtifactExtension(artifactExtension);
                                info = pca.createProject(monitor, CCorePlugin.DEFAULT_INDEXER, isCProject);

-                               AutotoolsNewProjectNature.addAutotoolsNature(project, monitor);
-                               // For each IConfiguration, create a corresponding Autotools Configuration
-                               IConfiguration[] cfgs = pca.getConfigs();
-                               for (int i = 0; i < cfgs.length; ++i) {
-                                       IConfiguration cfg = cfgs[i];
-                                       AutotoolsConfigurationManager.getInstance().getConfiguration(project, cfg.getName(), true);
-                               }
-                               AutotoolsConfigurationManager.getInstance().saveConfigs(project);
-                               if(isEmptryProject) {
-                                       YoctoSDKEmptyProjectNature.addYoctoSDKEmptyNature(project, monitor);
-                               }
-                               YoctoSDKProjectNature.addYoctoSDKNature(project, monitor);
-                               YoctoSDKProjectNature.configureAutotools(project);
+                               addNatures(project, false, isEmptyProject, isAutotoolsProject,

+monitor);

+
                                info.setValid(true);
                                ManagedBuildManager.saveBuildInfo(project, true);

@@ -147,31 +138,19 @@ public class NewYoctoCProjectTemplate extends ProcessRunner {

                                IWorkspace workspace = ResourcesPlugin.getWorkspace();
                                turnOffAutoBuild(workspace);
-                               YoctoProfileElement profileElement = YoctoSDKUtils.getProfilesFromDefaultStore();
-                               IPreferenceStore selecteProfileStore = YoctoSDKPlugin.getProfilePreferenceStore(profileElement.getSelectedProfile());
-                               YoctoUIElement elem = YoctoSDKUtils.getElemFromStore(selecteProfileStore);
-                               SDKCheckResults result = YoctoSDKChecker.checkYoctoSDK(elem);
-                               if (result != SDKCheckResults.SDK_PASS){
-                                       String strErrorMsg =  YoctoSDKChecker.getErrorMessage(result, SDKCheckRequestFrom.Wizard);
-                                       throw new YoctoGeneralException(strErrorMsg);
-                               }
-                               AutotoolsNewProjectNature.addAutotoolsNature(project, monitor);
-                               if(isEmptryProject) {
-                                       YoctoSDKEmptyProjectNature.addYoctoSDKEmptyNature(project, monitor);
-                               }
-
-                               YoctoSDKProjectNature.addYoctoSDKNature(project, monitor);
-                               YoctoSDKProjectNature.configureAutotools(project);
-
-                               AutotoolsConfigurationManager.getInstance().saveConfigs(project);
+
+                               YoctoSDKChecker.checkIfGloballySelectedYoctoProfileIsValid();
+
+                               addNatures(project, true, isEmptyProject, isAutotoolsProject,

+monitor);

+
                                //restoreAutoBuild(workspace);
                                IDiscoveredPathManager manager = MakeCorePlugin.getDefault().getDiscoveryManager();
                                IDiscoveredPathInfo pathInfo = manager.getDiscoveredInfo(project);
                                if (pathInfo instanceof IPerProjectDiscoveredPathInfo) {
                                    IPerProjectDiscoveredPathInfo projectPathInfo =
                                        (IPerProjectDiscoveredPathInfo) pathInfo;
-                                   projectPathInfo.setIncludeMap(new LinkedHashMap());
-                                   projectPathInfo.setSymbolMap(new LinkedHashMap());
+                                   projectPathInfo.setIncludeMap(new LinkedHashMap<String, Boolean>());
+                                   projectPathInfo.setSymbolMap(new LinkedHashMap<String,

+SymbolEntry>());

                                    manager.removeDiscoveredInfo(project);
                                }
                        }
@@ -200,6 +179,40 @@ public class NewYoctoCProjectTemplate extends ProcessRunner {
                return matcher.find();
 }

+       private void addNatures(IProject project, boolean projectExists, boolean isEmptyProject,
+                       boolean isAutotoolsProject, IProgressMonitor monitor)
+                                       throws CoreException, YoctoGeneralException {
+               YoctoSDKProjectNature.addYoctoSDKNature(project, monitor);
+
+               YoctoSDKChecker.checkIfGloballySelectedYoctoProfileIsValid();
+
+               YoctoProfileElement profileElement = YoctoSDKUtils.getProfilesFromDefaultStore();
+               YoctoSDKUtils.saveProfilesToProjectPreferences(profileElement,

+project);

+
+               IPreferenceStore selecteProfileStore = YoctoSDKPlugin.getProfilePreferenceStore(profileElement.getSelectedProfile());
+               YoctoUIElement elem = YoctoSDKUtils.getElemFromStore(selecteProfileStore);
+               YoctoSDKUtils.setEnvironmentVariables(project, elem);
+
+               if (isEmptyProject) {
+                       YoctoSDKEmptyProjectNature.addYoctoSDKEmptyNature(project, monitor);
+               }
+
+               if (isAutotoolsProject) {
+                       AutotoolsNewProjectNature.addAutotoolsNature(project, monitor);
+
+                       if(!projectExists) {
+                               // For each IConfiguration, create a corresponding Autotools Configuration
+                               for (IConfiguration cfg : pca.getConfigs()) {
+                                       AutotoolsConfigurationManager.getInstance().getConfiguration(project, cfg.getName(), true);
+                               }
+                               AutotoolsConfigurationManager.getInstance().saveConfigs(project);
+                       }
+
+                       YoctoSDKAutotoolsProjectNature.addYoctoSDKAutotoolsNature(project, monitor);
+                       YoctoSDKAutotoolsProjectNature.configureAutotoolsOptions(project);
+               }
+       }
+
        protected final void turnOffAutoBuild(IWorkspace workspace) throws CoreException {
                IWorkspaceDescription workspaceDesc = workspace.getDescription();
                savedAutoBuildingValue = workspaceDesc.isAutoBuilding();
--
1.7.9.5

_______________________________________________
yocto mailing list
yocto at yoctoproject.org<mailto:yocto at yoctoproject.org>
https://lists.yoctoproject.org/listinfo/yocto



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20130417/ef33c441/attachment.html>


More information about the yocto mailing list