Ivy
  1. Ivy
  2. IVY-999

Ivy deliver fails to replace dynamic revision

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0-RC2, 2.0
    • Fix Version/s: 2.1.0-RC1
    • Component/s: Core
    • Labels:
      None
    • Environment:

      windows xp
      java 1.6
      ant 1.7.1

      Description

      Sometimes ivy:deliver does not replace the dynamic revision correctly.

      My Repository contains four module: junit in revision 3.8 and 4.4. A Modul A that depends on junit 4.4 and a module B that depends on junit "3.8.+". (A Zip with this setup will be appended).

      I do now resolve and deliver the following ivy:
      <?xml version="1.0" encoding="UTF-8"?>
      <ivy-module version="1.4">
      <info organisation="test" module="c"/>
      <publications/>
      <dependencies>
      <!-- THE ORDER OF THIS DEPENDENCIES IS IMPORTEND TO REPRODUCE THE BUG -->
      <dependency org="test" name="a" rev="latest.integration"/>
      <dependency org="test" name="b" rev="latest.integration"/>
      <dependency org="junit" name="junit" conf="default" rev="latest.integration"/>
      </dependencies>
      </ivy-module>

      The delivered Ivy File does not replace the dynamic revision for junit:

      <dependency org="junit" name="junit" conf="default" rev="latest.integration"/>

      The expected outcome would be:
      <dependency org="junit" name="junit" conf="default" rev="4.4" revConstraint="latest.integration"/>

      Please note that moving the dependency to junit on line higher (above "b") leads to the epected outcome.

      The bug was reproduced with rc2 and a private build from trunk.

      The ant log:
      D:\sources.java\Research\ivytest>ant test -v
      Apache Ant version 1.7.1 compiled on June 27 2008
      Buildfile: build.xml
      Detected Java version: 1.6 in: C:\Programme\Java\jdk1.6.0_05\jre
      Detected OS: Windows XP
      parsing buildfile D:\sources.java\Research\ivytest\build.xml with URI = file:/D:/sources.java/Research/ivytest/build.xml
      Project base dir set to: D:\sources.java\Research\ivytest
      Build sequence for target(s) `test' is [init_ivy, test]
      Complete build sequence is [init_ivy, test, ]

      init_ivy:
      [antlib:org.apache.tools.ant] Could not load definitions from resource org/apache/tools/ant/antlib.xml. It could not be found.
      parsing buildfile jar:file:/C:/Dokumente%20und%20Einstellungen/fickerm/.ant/lib/ivy-2.0.0-rc2.jar!/org/apache/ivy/ant/antlib.xml with URI = jar:file:/C:/Dokumente%20und%20Einstellungen/fickerm/.ant/li
      b/ivy-2.0.0-rc2.jar!/org/apache/ivy/ant/antlib.xml
      parsing buildfile jar:file:/D:/sources.java/Research/ivytest/ivy-2.1.x.jar!/org/apache/ivy/ant/antlib.xml with URI = jar:file:/D:/sources.java/Research/ivytest/ivy-2.1.x.jar!/org/apache/ivy/ant/antlib
      .xml
      parsing buildfile jar:file:/C:/Dokumente%20und%20Einstellungen/fickerm/.ant/lib/ivy-2.0.0-rc2.jar!/org/apache/ivy/ant/antlib.xml with URI = jar:file:/C:/Dokumente%20und%20Einstellungen/fickerm/.ant/li
      b/ivy-2.0.0-rc2.jar!/org/apache/ivy/ant/antlib.xml
      Loading jar:file:/C:/Dokumente%20und%20Einstellungen/fickerm/.ant/lib/ivy-2.0.0-rc2.jar!/org/apache/ivy/core/settings/ivy.properties
      [ivy:configure] :: Ivy 2.0.0-rc2 - 20081028224207 :: http://ant.apache.org/ivy/ ::
      :: loading settings :: file = D:\sources.java\Research\ivytest\ivysettings.xml
      no default ivy user dir defined: set to C:\Dokumente und Einstellungen\fickerm\.ivy2
      DEPRECATED: 'ivyconf' element is deprecated, use 'ivysettings' instead (file:/D:/sources.java/Research/ivytest/ivysettings.xml)
      no default cache defined: set to C:\Dokumente und Einstellungen\fickerm\.ivy2\cache
      settings loaded (79ms)
      default cache: C:\Dokumente und Einstellungen\fickerm\.ivy2\cache
      default resolver: local
      – 1 resolvers:
      local [file]

      test:
      [ivy:resolve] using ivy parser to parse file:/D:/sources.java/Research/ivytest/ivy-c.xml
      [ivy:resolve] :: resolving dependencies :: test#c;working@MARTIN
      [ivy:resolve] confs: [default]
      [ivy:resolve] validate = true
      [ivy:resolve] refresh = false
      [ivy:resolve] resolving dependencies for configuration 'default'
      [ivy:resolve] == resolving dependencies for test#c;working@MARTIN [default]
      [ivy:resolve] == resolving dependencies test#c;working@MARTIN->test#a;latest.integration [default->*]
      [ivy:resolve] no cached resolved revision for test#a;latest.integration
      [ivy:resolve] tried D:\sources.java\Research\ivytest/testrepo/test/a/ivy-[revision].xml
      [ivy:resolve] local do not support transaction. ivy pattern does not use revision as a directory
      [ivy:resolve] local: found md file for test#a;latest.integration
      [ivy:resolve] => D:\sources.java\Research\ivytest\testrepo\test\a\ivy-1.xml (1)
      [ivy:resolve] default-cache: revision in cache: test#a;1
      [ivy:resolve] found test#a;1 in local
      [ivy:resolve] [1] test#a;latest.integration
      [ivy:resolve] == resolving dependencies test#a;latest.integration->junit#junit;4.4 [default->*]
      [ivy:resolve] == resolving dependencies test#c;working@MARTIN->test#a;latest.integration [default->default]
      [ivy:resolve] == resolving dependencies test#c;working@MARTIN->test#b;latest.integration [default->*]
      [ivy:resolve] no cached resolved revision for test#b;latest.integration
      [ivy:resolve] tried D:\sources.java\Research\ivytest/testrepo/test/b/ivy-[revision].xml
      [ivy:resolve] local: found md file for test#b;latest.integration
      [ivy:resolve] => D:\sources.java\Research\ivytest\testrepo\test\b\ivy-1.5.xml (1.5)
      [ivy:resolve] default-cache: revision in cache: test#b;1.5
      [ivy:resolve] found test#b;1.5 in local
      [ivy:resolve] [1.5] test#b;latest.integration
      [ivy:resolve] == resolving dependencies test#b;latest.integration->junit#junit;3.8+ [default->default]
      [ivy:resolve] no cached resolved revision for junit#junit;3.8+
      [ivy:resolve] tried D:\sources.java\Research\ivytest/testrepo/junit/junit/ivy-[revision].xml
      [ivy:resolve] local: found md file for junit#junit;3.8+
      [ivy:resolve] => D:\sources.java\Research\ivytest\testrepo\junit\junit\ivy-3.8.xml (3.8)
      [ivy:resolve] default-cache: revision in cache: junit#junit;3.8
      [ivy:resolve] found junit#junit;3.8 in local
      [ivy:resolve] [3.8] junit#junit;3.8+
      [ivy:resolve] == resolving dependencies test#c;working@MARTIN->test#b;latest.integration [default->default]
      [ivy:resolve] == resolving dependencies test#c;working@MARTIN->junit#junit;latest.integration [default->default]
      [ivy:resolve] == resolving dependencies test#c;working@MARTIN->junit#junit;3.8+ [default->default]
      [ivy:resolve] resolved ivy file produced in C:\Dokumente und Einstellungen\fickerm\.ivy2\cache\resolved-test-c-working@MARTIN.xml
      [ivy:resolve] :: downloading artifacts ::
      [ivy:resolve] :: resolution report :: resolve 250ms :: artifacts dl 0ms
      [ivy:resolve] :: evicted modules:
      [ivy:resolve] junit#junit;4.4 by junit#junit;latest.integration in [default]
      [ivy:resolve] in test#c;working@MARTIN with latest-revision
      [ivy:resolve] junit#junit;latest.integration by junit#junit;3.8 in [default]
      [ivy:resolve] in test#c;working@MARTIN with latest-revision
      ---------------------------------------------------------------------

        modules artifacts
      conf number search dwnlded evicted number dwnlded

      ---------------------------------------------------------------------

      default 5 3 0 2 0 0

      ---------------------------------------------------------------------
      [ivy:resolve] report for test#c;working@MARTIN default produced in C:\Dokumente und Einstellungen\fickerm\.ivy2\cache\test-c-default.xml
      [ivy:resolve] resolve done (250ms resolve - 0ms download)
      Overriding previous definition of property "ivy.version"
      [property] Loading C:\DOKUME~1\fickerm\LOKALE~1\Temp\delivery.properties
      [property] Unable to find property file: C:\DOKUME~1\fickerm\LOKALE~1\Temp\delivery.properties
      :: delivering :: test#c;working@MARTIN :: 20090109101230 :: integration :: Fri Jan 09 10:12:30 CET 2009
      delivering ivy file to D:\sources.java\Research\ivytest\distrib\ivys\ivy-20090109101230.xml

      BUILD SUCCESSFUL

      1. ivy-999.zip
        4 kB
        Martin Eigenbrodt
      2. Ivy-999-test.patch
        8 kB
        Martin Eigenbrodt

        Activity

        Hide
        Maarten Coene added a comment -

        thanks for the feedback

        Maarten

        Show
        Maarten Coene added a comment - thanks for the feedback Maarten
        Hide
        Martin Eigenbrodt added a comment -

        Your fix did solve my problem. Thanks!
        I believe IVY-987 (java.lang.IllegalStateException: impossible to get artifacts when data has not been loaded. IvyNode = junit#junit;latest.integration)
        is related to this problem and may have been resolved to, since I had that problem and it disappeared.
        However I can't prove it.

        Show
        Martin Eigenbrodt added a comment - Your fix did solve my problem. Thanks! I believe IVY-987 (java.lang.IllegalStateException: impossible to get artifacts when data has not been loaded. IvyNode = junit#junit;latest.integration) is related to this problem and may have been resolved to, since I had that problem and it disappeared. However I can't prove it.
        Hide
        Maarten Coene added a comment -

        I think I was able to fix your problem and committed a patch into SVN trunk.
        Could you give it a try and provide us your feedback?

        thanks,
        Maarten

        Show
        Maarten Coene added a comment - I think I was able to fix your problem and committed a patch into SVN trunk. Could you give it a try and provide us your feedback? thanks, Maarten
        Hide
        Martin Eigenbrodt added a comment -

        The unittest, this time with "license granted". Previous upload was done with Eclipse & mylyn that hides the checkbox.

        Show
        Martin Eigenbrodt added a comment - The unittest, this time with "license granted". Previous upload was done with Eclipse & mylyn that hides the checkbox.
        Hide
        Maarten Coene added a comment -

        Hi Martin,

        thanks for the junit test.
        Could you please reupload the patch and check the "grant license to ASF" option?

        Maarten

        Show
        Maarten Coene added a comment - Hi Martin, thanks for the junit test. Could you please reupload the patch and check the "grant license to ASF" option? Maarten
        Hide
        Martin Eigenbrodt added a comment -

        I've debuged a bit into this and it seems the root of the problems ist that LatestRevisionStrategy#ArtifactInfoComparator thinks that
        3.8+ > latest.integration.
        However it is not clear to me how to fix this.

        Show
        Martin Eigenbrodt added a comment - I've debuged a bit into this and it seems the root of the problems ist that LatestRevisionStrategy#ArtifactInfoComparator thinks that 3.8+ > latest.integration. However it is not clear to me how to fix this.
        Hide
        Martin Eigenbrodt added a comment -

        A Patch against trunk 733025 that contains a unittest to reproduce the bug.
        This patch does NOT cotnain a fix.

        Show
        Martin Eigenbrodt added a comment - A Patch against trunk 733025 that contains a unittest to reproduce the bug. This patch does NOT cotnain a fix.
        Hide
        Martin Eigenbrodt added a comment -

        Everythingh needed to reproduce the bug.

        Show
        Martin Eigenbrodt added a comment - Everythingh needed to reproduce the bug.

          People

          • Assignee:
            Maarten Coene
            Reporter:
            Martin Eigenbrodt
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development