Bug 7211

Summary: Exception Eclipse Plugin 1.7 / kepler Windows using MinGW can x-comp. No options are stored after configuration.
Product: [Yocto Project Subprojects] Eclipse Plugin Reporter: J.J. Garcia <sm0ketst>
Component: eclipse-pluginAssignee: Todor Minchev <todor.minchev>
Status: RESOLVED FIXED QA Contact:
Severity: critical    
Priority: Medium+ CC: ioanax.grigoropol, yp.ep.watcher, yp.watcher
Version: 1.7   
Target Milestone: 1.7.2   
Hardware: x86   
OS: x86_64   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: No (bug/feature does not impact docs)

Description J.J. Garcia 2015-01-21 06:50:43 UTC
Hi all,

When using the Yocto plugin in Kepler/Windos/X86_64 and MinGW/Toolchain deployed in /opt/poky/1.7, after setting up the options as:
- Standard pre-built toolchain
- Toolchain Root Location: C:\MinGW\msys\1.0\opt\poky\1.7
- Sysroot Location: C:\MinGW\msys\1.0\opt\poky\1.7\sysroots\i686-pokysdk-mingw32
and
- Target options set to "External HW"

I'm able to see how the Target Architecture is preset automatically to "core2-32-poky-linux" but when I apply the changes an error message is raised and the changes are lost if i come back to the plug propierties.

The error log shows the following details:
===============================================================================================
- Messsage: Unhandled event loop exception
===============================================================================================
- Exception Stack Trace:
java.lang.NullPointerException
	at org.yocto.sdk.ide.YoctoSDKChecker.checkYoctoSDK(Unknown Source)
	at org.yocto.sdk.ide.YoctoUISetting.validateInput(Unknown Source)
	at org.yocto.sdk.ide.preferences.YoctoSDKPreferencePage.performOk(Unknown Source)
	at org.eclipse.jface.preference.PreferencePage.performApply(PreferencePage.java:432)
	at org.eclipse.jface.preference.PreferencePage$2.widgetSelected(PreferencePage.java:281)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4170)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3759)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:826)
	at org.eclipse.jface.window.Window.open(Window.java:802)
	at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.open(WorkbenchPreferenceDialog.java:215)
	at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:65)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:499)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4170)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3759)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:140)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:611)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
===============================================================================================
- Session Data:
eclipse.buildId=4.3.2.M20140221-1700
java.version=1.6.0_29
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments:  -product org.eclipse.epp.package.standard.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.standard.product
===============================================================================================

Thanks in advance,

Regards

JJ
Comment 1 Todor Minchev 2015-01-25 19:07:50 UTC
This particular exception is caused the form validator which calls Linux specific commands do to some of the environment validation (in this case "uname -m" to get the machine architecture). There are quite a few other dependencies on Linux, I am working on them.
Comment 2 Todor Minchev 2015-01-27 14:13:25 UTC
Hi JJ,

This bug should be fixed by this commit:

31b6bc2 org.yocto.sdk.ide: add platform validation methods

This should allow you to configure your toolchain and sysroot, but you still won't be able to build binaries because the build environment setup is not yet fully supported on Windows.

Also if you are using a 64-bit build host, please use this variable in your local.conf when generating your SDK.

SDKMACHINE ?= "x86_64-mingw32"

Regards,

Todor
Comment 3 J.J. Garcia 2015-01-27 20:41:33 UTC
Thanks a lot Todor,

I'll check it tomorrow. By the way I was able to setup the toolchain just by editing and giving the values by hand in the builder C/C++ options. First i checked the "$CC -v" in Mingw and then adjusted the values in eclipse accordingly for the x-compiler and linker. GDB is also working. As a workaround it seems to be working and i can get the binary for the target platform. The host is a W7/64. Target is an intel Atom in this case.

If I can help in any way please let me know.

Regards

JJ