[oe-commits] Chris Larson : oe.path.relative: leverage os.path.relpath if available

git version control git at git.openembedded.org
Fri Apr 23 21:20:46 UTC 2010


Module: openembedded.git
Branch: org.openembedded.dev
Commit: 707bbb0667edfc9df15863286a02f64adfb5544d
URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=707bbb0667edfc9df15863286a02f64adfb5544d

Author: Chris Larson <chris_larson at mentor.com>
Date:   Wed Apr 14 18:25:58 2010 -0700

oe.path.relative: leverage os.path.relpath if available

Signed-off-by: Chris Larson <chris_larson at mentor.com>

---

 lib/oe/path.py |   27 +++++++++++++++------------
 1 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/lib/oe/path.py b/lib/oe/path.py
index 7dafdb1..48c4b9b 100644
--- a/lib/oe/path.py
+++ b/lib/oe/path.py
@@ -15,22 +15,25 @@ def relative(src, dest):
     >>> relative("/tmp", "/tmp/foo/bar")
     foo/bar
     """
-    from os.path import sep, pardir, normpath, commonprefix
+    import os.path
 
-    destlist = normpath(dest).split(sep)
-    srclist = normpath(src).split(sep)
+    if hasattr(os.path, "relpath"):
+        return os.path.relpath(dest, src)
+    else:
+        destlist = os.path.normpath(dest).split(os.path.sep)
+        srclist = os.path.normpath(src).split(os.path.sep)
 
-    # Find common section of the path
-    common = commonprefix([destlist, srclist])
-    commonlen = len(common)
+        # Find common section of the path
+        common = os.path.commonprefix([destlist, srclist])
+        commonlen = len(common)
 
-    # Climb back to the point where they differentiate
-    relpath = [ pardir ] * (len(srclist) - commonlen)
-    if commonlen < len(destlist):
-        # Add remaining portion
-        relpath += destlist[commonlen:]
+        # Climb back to the point where they differentiate
+        relpath = [ pardir ] * (len(srclist) - commonlen)
+        if commonlen < len(destlist):
+            # Add remaining portion
+            relpath += destlist[commonlen:]
 
-    return sep.join(relpath)
+        return sep.join(relpath)
 
 def format_display(path, metadata):
     """ Prepare a path for display to the user. """





More information about the Openembedded-commits mailing list