ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aprelev <...@git.apache.org>
Subject [GitHub] ant-ivy pull request #74: Fix IVY-982 by subtracting negated entries from wi...
Date Mon, 06 Aug 2018 15:01:55 GMT
GitHub user aprelev opened a pull request:

    https://github.com/apache/ant-ivy/pull/74

    Fix IVY-982 by subtracting negated entries from wildcard bin

    ### Issue
    Configurations negation (exclusion) as in `conf="*, !foo->@"` does not work,
    This issue is reported in [IVY-982](https://issues.apache.org/jira/browse/IVY-982) and
[IVY-1547](https://issues.apache.org/jira/browse/IVY-1547).
    
    ### Why does it happen?
    Resolve engine silently disrespects negation on the left part of maps-to operator because
the exclusion was not implemented. When parsing dependency, e.g. `conf="*, !foo → bar1;
foo → bar2, bar3; % → bar4"`, all dependency configurations are collected into bins (map
entries):
    
    - *all-wildcard bin* with all configurations required for `*` superset, 
    such as `bar1` in bin `*`;
    - *others-wildcard bin* with all configurations required for `%` superset, 
    such as `bar4` in bin `%`;
    - *explicit bins* for all explicit mappings, 
    such as `bar2` and `bar3` in bin `foo`, and `bar1` in bin `!foo`.
    
    Resolving list of dependency configurations required for some target configuration `X`
is done as follows:
    
    1. All configurations from `X`'s *explicit bin* [are added](https://github.com/apache/ant-ivy/blob/89583444040dc5423bb143435f23ae0814f24542/src/java/org/apache/ivy/core/module/descriptor/DefaultDependencyDescriptor.java#L347).
    2. All configurations from *others-wildcard bin* [are added](https://github.com/apache/ant-ivy/blob/89583444040dc5423bb143435f23ae0814f24542/src/java/org/apache/ivy/core/module/descriptor/DefaultDependencyDescriptor.java#L350)
in case `X`'s *explicit bin* is empty.
    3. All configurations from *all-wildcard bin* [are added](https://github.com/apache/ant-ivy/blob/89583444040dc5423bb143435f23ae0814f24542/src/java/org/apache/ivy/core/module/descriptor/DefaultDependencyDescriptor.java#L358).
    
    Note that explicit bins for negated target configurations *are not referenced, and thus
silently ignored*. This fix introduces fourth step:
    
    4. All configurations from `!X`'s *explicit bin* are removed.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/aprelev/ant-ivy issue-ivy-1547-982

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/ant-ivy/pull/74.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #74
    
----
commit 0c2c826e4c316fdcf42fd890097edef478b692a3
Author: Aprelev Arseny <aprelev.arseny@...>
Date:   2018-08-06T14:21:21Z

    Fix IVY-982 by subtracting negated entries from wildcard bin

----


---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


Mime
View raw message