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

Atanas Gegov atanas.gegov.oss at gmail.com
Wed Apr 17 05:03:07 PDT 2013


Hi Jessica,

Thanks for the feedback. I got your point and it seems to be the better
solution. We can indeed avoid some duplications in the code.

I will give it a try and resend the patches.

Cheers,
Atanas


On Wed, Apr 17, 2013 at 7:40 AM, Zhang, Jessica <jessica.zhang at intel.com>wrote:

>  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>
> 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] On Behalf Of Atanas Gegov
> Sent: Thursday, April 11, 2013 4:25 AM
> To: yocto at yoctoproject.org
> Subject: [yocto] [PATCHv2 4/9] plugins/sdk.ide: Switch to
> YoctoSDKAutotoolsProjectNature
>
> From: Atanas Gegov <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
> https://lists.yoctoproject.org/listinfo/yocto****
>
> ** **
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20130417/722d05a9/attachment.html>


More information about the yocto mailing list