Fixed 'change_root() to work at all on Windows, and to work correctly on Unix.
diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py
index b660b4b..6063aa6 100644
--- a/Lib/distutils/util.py
+++ b/Lib/distutils/util.py
@@ -86,22 +86,22 @@
 
 
 def change_root (new_root, pathname):
-
     """Return 'pathname' with 'new_root' prepended.  If 'pathname' is
     relative, this is equivalent to "os.path.join(new_root,pathname)".
     Otherwise, it requires making 'pathname' relative and then joining the
-    two, which is tricky on DOS/Windows and Mac OS."""
-
-    if not abspath (pathname):
-        return os.path.join (new_root, pathname)
-
-    elif os.name == 'posix':
-        return os.path.join (new_root, pathname[1:])
+    two, which is tricky on DOS/Windows and Mac OS.
+    """
+    if os.name == 'posix':
+        if not os.path.isabs (pathname):
+            return os.path.join (new_root, pathname)
+        else:
+            return os.path.join (new_root, pathname[1:])
 
     elif os.name == 'nt':
-        (root_drive, root_path) = os.path.splitdrive (new_root)
         (drive, path) = os.path.splitdrive (pathname)
-        raise RuntimeError, "I give up -- not sure how to do this on Windows"
+        if path[0] == '\\':
+            path = path[1:]
+        return os.path.join (new_root, path)
 
     elif os.name == 'mac':
         raise RuntimeError, "no clue how to do this on Mac OS"