You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by "Luke Renn (Commented) (JIRA)" <ji...@apache.org> on 2012/04/06 20:05:22 UTC
[jira] [Commented] (IVY-1309) Exclude dosn't work in a more complex
build enviroment
[ https://issues.apache.org/jira/browse/IVY-1309?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13248552#comment-13248552 ]
Luke Renn commented on IVY-1309:
--------------------------------
I'm able to fix this issue by making IvyNodeCallers not check the full callers list if it finds the exclusions in the module descriptor. In this case, equinox get re-included when the kernel.userreqion caller is checked (since it's a dependency there). I've got a fix locally, but I'm pretty sure that will break dependency level excludes that really should get reincluded.
The relevant code is:
{code:title=IvyCallers.java|borderStyle=solid}
boolean doesCallersExclude(String rootModuleConf, Artifact artifact, Stack callersStack) {
if (callersStack.contains(node.getId())) {
return false;
}
callersStack.push(node.getId());
try {
Caller[] callers = getCallers(rootModuleConf);
if (callers.length == 0) {
return false;
}
for (int i = 0; i < callers.length; i++) {
if (!callers[i].canExclude()) {
return false;
}
if (!doesExclude(md, rootModuleConf, callers[i].getCallerConfigurations(),
callers[i].getDependencyDescriptor(), artifact, callersStack)) {
// This is what kills us...if it's the a top level exclude, this check shouldn't be happening or it's going to get unexcluded here.
return false;
}
}
return true;
} finally {
callersStack.pop();
}
}
{code}
> Exclude dosn't work in a more complex build enviroment
> ------------------------------------------------------
>
> Key: IVY-1309
> URL: https://issues.apache.org/jira/browse/IVY-1309
> Project: Ivy
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.1.0
> Reporter: Christopher Frost
> Attachments: kernel.zip
>
>
> We are using ant 1.8.2 and Ivy 2.1.0 for our build. When resolving an ivy file the module wide exclude fails to stop a matching transitive dependency from coming in. I have reduced the build down as much as possible to try and make it easy to diagnose but if I strip any more out then the problem goes away. I don't believe there is anything wrong with what's there, it's from a very mature system used to build all the Springsource projects internally. I will upload a zip to reproduce.
> 1. Unzip the zip file.
> 2. At the command line go in to the unzipped, 'kernel' directory.
> 3. run 'ant clean package'
> 4. in the target directory just created there will be a 'org.eclipse.osgi-3.7.0.v20110613' file, this is excluded in the ivy file.
> The ivy and build files are pretty minimal but I can't see anything I've done wrong. The artifacts it's pulling in are in the ivy-cache/integration-repo directories so nothing needs to be downloaded.
> Chris.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira