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

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

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 2.4.0
    • Fix Version/s: 2.5.0-rc1
    • Component/s: Core
    • Labels:
      None

      Description

      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();

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                hibou Nicolas Lalevée
                Reporter:
                netappbluedevil Daniel Holmes
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: