Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 360220 - Multiplatform feature build fails with resolution problem
Summary: Multiplatform feature build fails with resolution problem
Status: RESOLVED INVALID
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: Tycho (show other bugs)
Version: unspecified   Edit
Hardware: PC All
: P3 major (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-10-07 08:09 EDT by Timo Rohrberg CLA
Modified: 2021-04-28 16:54 EDT (History)
0 users

See Also:


Attachments
Sample projects to reproduce. (4.38 KB, application/zip)
2011-10-07 08:11 EDT, Timo Rohrberg CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Timo Rohrberg CLA 2011-10-07 08:09:57 EDT
Build Identifier: M20110909-1335

Trying to build an Eclipse feature listing platform-specific fragments for different platforms than the current one fails with the following resolution problem:

[INFO] Cannot complete the request.  Generating details.
[INFO] Cannot complete the request.  Generating details.
[INFO] {org.osgi.framework.executionenvironment=OSGi/Minimum-1.0,OSGi/Minimum-1.1, osgi.ws=win32, osgi.arch=x86, osgi.os=win32, org.eclipse.update.install.features=true, org.osgi.framework.system.packages=}
[ERROR] Cannot resolve project dependencies:
[ERROR]   Software being installed: com.example.feature.feature.group 1.0.0.qualifier
[ERROR]   Missing requirement: com.example.feature.feature.group 1.0.0.qualifier requires 'org.eclipse.equinox.launcher.win32.win32.x86_64 0.0.0' but it could not be found
[ERROR] 
[ERROR] Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from com.example.feature.feature.group 1.0.0.qualifier to org.eclipse.equinox.launcher.win32.win32.x86_64 0.0.0.", "Unable to satisfy dependency from com.example.feature.feature.group 1.0.0.qualifier to org.eclipse.swt.win32.win32.x86_64 0.0.0.", "No solution found because the problem is unsatisfiable."] -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from com.example.feature.feature.group 1.0.0.qualifier to org.eclipse.equinox.launcher.win32.win32.x86_64 0.0.0.", "Unable to satisfy dependency from com.example.feature.feature.group 1.0.0.qualifier to org.eclipse.swt.win32.win32.x86_64 0.0.0.", "No solution found because the problem is unsatisfiable."]
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:168)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:534)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from com.example.feature.feature.group 1.0.0.qualifier to org.eclipse.equinox.launcher.win32.win32.x86_64 0.0.0.", "Unable to satisfy dependency from com.example.feature.feature.group 1.0.0.qualifier to org.eclipse.swt.win32.win32.x86_64 0.0.0.", "No solution found because the problem is unsatisfiable."]
	at org.eclipse.tycho.p2.impl.resolver.ProjectorResolutionStrategy.resolve(ProjectorResolutionStrategy.java:106)
	at org.eclipse.tycho.p2.impl.resolver.P2ResolverImpl.resolveProject(P2ResolverImpl.java:102)
	at org.eclipse.tycho.p2.impl.resolver.P2ResolverImpl.resolveProject(P2ResolverImpl.java:69)
	at org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.doResolvePlatform(P2TargetPlatformResolver.java:342)
	at org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.resolvePlatform(P2TargetPlatformResolver.java:162)
	at org.eclipse.tycho.core.resolver.DefaultTychoDependencyResolver.resolveProject(DefaultTychoDependencyResolver.java:85)
	at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:91)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:273)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
	... 11 more
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/InternalErrorException

This happens even if the platforms for which to resolve plugins are specified in the pom.xml as follows:

<plugin>
  <groupId>org.eclipse.tycho</groupId>
  <artifactId>target-platform-configuration</artifactId>
  <version>${tycho-version}</version>
  <configuration>
    <resolver>p2</resolver>
    <environments>
      <environment>
        <os>win32</os>
        <ws>win32</ws>
        <arch>x86</arch>
      </environment>
      <environment>
        <os>win32</os>
        <ws>win32</ws>
        <arch>x86_64</arch>
      </environment>
    </environments>
  </configuration>
</plugin>

It seems tycho only uses the IUs for the platform which is defined first:

[INFO] {org.osgi.framework.executionenvironment=OSGi/Minimum-1.0,OSGi/Minimum-1.1, osgi.ws=win32, osgi.arch=x86, osgi.os=win32, org.eclipse.update.install.features=true, org.osgi.framework.system.packages=}

I did not find a way to tell tycho to resolve the IUs for *both* platforms defined, i.e. x86 *and* x86_64. See the attached projects to reproduce the error.

Reproducible: Always

Steps to Reproduce:
1. Extract the attached projects into a new workspace.
2. Run Maven - Install on com.example.parent. This works.
3. Run maven - Install on com.example.feature. This fails with the error described above.
Comment 1 Timo Rohrberg CLA 2011-10-07 08:11:55 EDT
Created attachment 204742 [details]
Sample projects to reproduce.
Comment 2 Tobias Oberlies CLA 2011-10-10 09:39:57 EDT
Tycho has to resolve separately per platform, and since you get an error in the first iteration, it seems that Tycho only uses the first environment.

The root cause of your problem is an invalid feature.xml: You try to unconditionally include fragments wich are not applicable for all platforms. This doesn't work. You need to define a platform filter for the inclusions ("Plug-ins" tab, right-hand side of the editor).