Uploaded image for project: 'Ivy'
  1. Ivy
  2. IVY-1522

Ivy 2.4.0 improperly handles modules with colon (:) in version



    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • 2.4.0
    • 2.5.0-rc1
    • Core
    • None


      This was not an issue in 2.2.0.

      I have some modules in my project which produce debian .deb files and those modules versions include a colon ':' in the version because the version scheme was reset, so an epoch is set.

      Also for this module the ivy.xml declaration uses extends tag, and in processing the parent location, this code in FileUtil which is called during a FileUtil.normalize() is causing the : in the resolve parent file name to have the ':' replaced with a ':/'.

      The comment on the it seems to explain that it is trying to handle a Windows/NetWare case, but the assumption to process any colon in the path is too broad and is negatively affecting my case which is executing on a linux system. Even on windows, this would only be attempting to address a drive letter case, right, where colon would occur only after a single letter in the path?

      private static String[] dissect(String path) {
      char sep = File.separatorChar;
      path = path.replace('/', sep).replace('
      ', sep);

      // // make sure we are dealing with an absolute path
      // if (!isAbsolutePath(path))

      { // throw new BuildException(path + " is not an absolute path"); // }

      String root = null;
      int colon = path.indexOf(':');
      if (colon > 0) { // && (ON_DOS || ON_NETWARE)) {

      int next = colon + 1;
      root = path.substring(0, next);
      char[] ca = path.toCharArray();
      root += sep;
      // remove the initial separator; the root has it.
      next = (ca[next] == sep) ? next + 1 : next;

      StringBuffer sbPath = new StringBuffer();
      // Eliminate consecutive slashes after the drive spec:
      for (int i = next; i < ca.length; i++) {
      if (ca[i] != sep || ca[i - 1] != sep)

      { sbPath.append(ca[i]); }

      path = sbPath.toString();


        Issue Links



              hibou Nicolas Lalevée
              netappbluedevil Daniel Holmes
              0 Vote for this issue
              2 Start watching this issue