In the process of updating the headless build tools for our CI/CD I've found what appears to be a 'different behavior' of MCUXpresso 11.10.0 compared to 11.4.1. This also might be affecting other people, as I believe this user was experiencing the same thing with 11.9: https://community.nxp.com/t5/MCUXpresso-IDE/Headless-builds-fail-with-latest-mcuxpresso-release-11-9...
In the newer versions of MCUXpresso, if 'Xtext' is enabled for a project, the headless build fails within a docker. Headless build succeeds on any install that has a display (computer, VM, or even docker with a remote display configured). Note that when a build succeeds, no actual window is displayed. It seems eclipse just needs a display available for whatever is happening with xtext. Again, this is different from 11.4.1 where the same project built just fine.
I tested with two different devices/SDKs (LPC54114, SDK v 2.9.0) and RT1051 (SDK v2.16.0)
Log is at the bottom.
Steps to reproduce:
I don't know why the older project (created with 11.4.1) had Xtext enabled, but it passed our CI headless build using 11.4.1 in a docker, so something has definitely changed about the handling of Xtext projects...
!SESSION 2024-09-11 13:30:04.064 -----------------------------------------------
eclipse.buildId=unknown
java.version=17.0.9
java.vendor=Eclipse Adoptium
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments: -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import . -build all
Command-line arguments: -os linux -ws gtk -arch x86_64 -application org.eclipse.cdt.managedbuilder.core.headlessbuild -data /tmp/ -import . -build all
!ENTRY com.nxp.mcuxpresso.core.datamodels 1 0 2024-09-11 13:30:06.127
!MESSAGE Recreating part support. No part support available.
!ENTRY org.eclipse.cdt.core 1 0 2024-09-11 13:30:09.287
!MESSAGE Indexed 'lpcxpresso54114_freertos_hello' (31 sources, 73 headers) in 2.43 sec: 9,497 declarations; 25,986 references; 3 unresolved inclusions; 127 syntax errors; 37 unresolved names (0.1%)
!ENTRY org.eclipse.osgi 4 0 2024-09-11 13:30:11.308
!MESSAGE Application error
!STACK 1
org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
at org.eclipse.swt.SWT.error(SWT.java:4944)
at org.eclipse.swt.widgets.Display.createDisplay(Display.java:1199)
at org.eclipse.swt.widgets.Display.create(Display.java:1123)
at org.eclipse.swt.graphics.Device.<init>(Device.java:167)
at org.eclipse.swt.widgets.Display.<init>(Display.java:632)
at org.eclipse.swt.widgets.Display.<init>(Display.java:623)
at org.eclipse.swt.widgets.Display.getDefault(Display.java:2392)
at org.eclipse.jface.preference.PreferenceConverter.<clinit>(PreferenceConverter.java:100)
at org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants.initializeDefaultValues(AbstractDecoratedTextEditorPreferenceConstants.java:758)
at org.eclipse.ui.editors.text.TextEditorPreferenceConstants.initializeDefaultValues(TextEditorPreferenceConstants.java:291)
at org.eclipse.ui.internal.editors.text.EditorsPluginPreferenceInitializer.initializeDefaultPreferences(EditorsPluginPreferenceInitializer.java:44)
at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper$1.run(PreferenceServiceRegistryHelper.java:319)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper.runInitializer(PreferenceServiceRegistryHelper.java:322)
at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper.applyRuntimeDefaults(PreferenceServiceRegistryHelper.java:138)
at org.eclipse.core.internal.preferences.PreferencesService.applyRuntimeDefaults(PreferencesService.java:385)
at org.eclipse.core.internal.preferences.DefaultPreferences.applyRuntimeDefaults(DefaultPreferences.java:231)
at org.eclipse.core.internal.preferences.DefaultPreferences.load(DefaultPreferences.java:282)
at org.eclipse.core.internal.preferences.EclipsePreferences.create(EclipsePreferences.java:368)
at org.eclipse.core.internal.preferences.EclipsePreferences.internalNode(EclipsePreferences.java:613)
at org.eclipse.core.internal.preferences.EclipsePreferences.node(EclipsePreferences.java:744)
at org.eclipse.core.internal.preferences.AbstractScope.getNode(AbstractScope.java:40)
at org.eclipse.core.runtime.preferences.DefaultScope.getNode(DefaultScope.java:77)
at org.eclipse.ui.preferences.ScopedPreferenceStore.getDefaultPreferences(ScopedPreferenceStore.java:222)
at org.eclipse.ui.preferences.ScopedPreferenceStore.getPreferenceNodes(ScopedPreferenceStore.java:251)
at org.eclipse.ui.preferences.ScopedPreferenceStore.contains(ScopedPreferenceStore.java:308)
at org.eclipse.ui.texteditor.ChainedPreferenceStore.getVisibleStore(ChainedPreferenceStore.java:465)
at org.eclipse.ui.texteditor.ChainedPreferenceStore.contains(ChainedPreferenceStore.java:141)
at org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.getBoolean(EclipseOutputConfigurationProvider.java:173)
at org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.createAndOverlayOutputConfiguration(EclipseOutputConfigurationProvider.java:144)
at org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.createAndOverlayOutputConfiguration(EclipseOutputConfigurationProvider.java:153)
at org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.getOutputConfigurations(EclipseOutputConfigurationProvider.java:112)
at org.eclipse.xtext.builder.BuilderParticipant.getOutputConfigurations(BuilderParticipant.java:652)
at org.eclipse.xtext.builder.BuilderParticipant.build(BuilderParticipant.java:247)
at org.eclipse.xtext.builder.impl.RegistryBuilderParticipant$DeferredBuilderParticipant.build(RegistryBuilderParticipant.java:164)
at org.eclipse.xtext.builder.impl.RegistryBuilderParticipant.build(RegistryBuilderParticipant.java:70)
at org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:525)
at org.eclipse.xtext.builder.impl.XtextBuilder.addInfosFromTaskAndBuild(XtextBuilder.java:455)
at org.eclipse.xtext.builder.impl.XtextBuilder.fullBuild(XtextBuilder.java:562)
at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:333)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1079)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:296)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:468)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:670)
at org.eclipse.core.internal.resources.Project$1.run(Project.java:604)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2453)
at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:642)
at org.eclipse.core.internal.resources.Project.build(Project.java:162)
at org.eclipse.cdt.managedbuilder.core.ManagedBuildManager$2.buildProject(ManagedBuildManager.java:4492)
at org.eclipse.cdt.managedbuilder.core.ManagedBuildManager$2.run(ManagedBuildManager.java:4469)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2453)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2473)
at org.eclipse.cdt.managedbuilder.core.ManagedBuildManager.buildConfigurations(ManagedBuildManager.java:4501)
at org.eclipse.cdt.managedbuilder.core.ManagedBuildManager.buildConfigurations(ManagedBuildManager.java:4381)
at org.eclipse.cdt.managedbuilder.internal.core.HeadlessBuilder.buildConfigurations(HeadlessBuilder.java:324)
at org.eclipse.cdt.managedbuilder.internal.core.HeadlessBuilder.start(HeadlessBuilder.java:724)
at org.eclipse.cdt.managedbuilder.internal.headlessbuilderapp.HeadlessBuilderWrapper.start(HeadlessBuilderWrapper.java:131)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:588)
at org.eclipse.equinox.launcher.Main.run(Main.java:1459)
at org.eclipse.equinox.launcher.Main.main(Main.java:1432)