Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 339792

Summary: generating buildscript with eclipse.buildScript task: fails on binary cycles
Product: [Eclipse Project] PDE Reporter: Endre Kovács <ekovacs>
Component: BuildAssignee: pde-build-inbox <pde-build-inbox>
Status: RESOLVED WORKSFORME QA Contact:
Severity: enhancement    
Priority: P3 CC: aniefer
Version: 4.0   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:

Description Endre Kovács CLA 2011-03-12 11:06:57 EST
Build Identifier: 20100917-0705


My build script fails to build / generate the buildscript when it trips upon a binary cycle from transitive dependencies:

Here i am generating a build script for a test plugin that depends on a ui plugin. that ui plugin is dependent on a help plugin that grabs in many transitive dependencies intoduced by org.eclipse.help.webapp. 

the build script fails on the Linux build machine  because it sees a cycle in the transitive dependency of the help plugin (but runs fine on my Mac, and not seeing or failing b/c of cycles...)

the log for the failed build looks like this:

A cycle was detected when generating the classpath 
com.mycompany.testplugin_1.0.0.201103111930, 
com.mycompany.uiplugin_0.7.0.201103111926, 
com.mycompany.help.plugin_0.7.0.201103111926, 
org.eclipse.help.webapp_3.5.2.r36_r20100816, 
org.eclipse.help.base_3.5.2.v201009090800, 
org.eclipse.equinox.http.jetty_2.0.0.v20100503, 
org.mortbay.jetty.util_6.1.23.v201004211559, 
org.slf4j.api_1.5.11.v20100519-1910, 
ch.qos.logback.classic_0.9.19.v20100519-1505, 
ch.qos.logback.core_0.9.19.v20100419-1216, 
org.slf4j.api_1.5.11.v20100519-1910.



as we can see there is indeed a cycle:

org.slf4j.api_1.5.11.v20100519-1910, 
ch.qos.logback.classic_0.9.19.v20100519-1505, 
ch.qos.logback.core_0.9.19.v20100419-1216, 
org.slf4j.api_1.5.11.v20100519-1910.

so:
Feature request:
it would be nice to have an attribute allowBinaryCycles implemented in the ant task "eclipse.buildScript" as i can't resolve circular dependencies among bundles that I transitively depending on...

right now I am refactoring code so that cuts of dependency among the our ui and our help plugins, this way the cycle is left of the build.

Reproducible: Always

Steps to Reproduce:
1. write an ant target that uses the pde exposed ant task <eclipse.buildScript .... 
2. make this taks to build a build script for a plugin that depends transitively on org.eclipse.help.webapp
3. there is a cycle in the binary, transitive dependency 
3. running the script causes the build to fail.
Comment 1 Andrew Niefer CLA 2011-03-15 17:29:59 EDT
There is an existing property "allowBinaryCycles".

The <eclipse.buildScript/> task does not take it directly as an attribute, but the task does check the ant project to see if the property is defined.

You should be able to do something like:

<property name="allowBinaryCycles" value="true"/>
<eclipse.buildScript ....../>

Please reopen if this does not work for you.
Comment 2 Endre Kovács CLA 2011-05-03 08:46:39 EDT
Thanks Andrew, it works just as you said.
Endre

(In reply to comment #1)
> There is an existing property "allowBinaryCycles".
> 
> The <eclipse.buildScript/> task does not take it directly as an attribute, but
> the task does check the ant project to see if the property is defined.
> 
> You should be able to do something like:
> 
> <property name="allowBinaryCycles" value="true"/>
> <eclipse.buildScript ....../>
> 
> Please reopen if this does not work for you.