[oe-commits] Chris Larson : base.bbclass: Add base_path_relative.
GIT User account
git at amethyst.openembedded.net
Sat Mar 21 19:43:19 UTC 2009
Module: openembedded.git
Branch: org.openembedded.dev
Commit: 4cd7e03d78aed8ee6f3bd18d569a0ee9b2587633
URL: http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=4cd7e03d78aed8ee6f3bd18d569a0ee9b2587633
Author: Chris Larson <clarson at mvista.com>
Date: Fri Mar 13 13:35:56 2009 -0700
base.bbclass: Add base_path_relative.
base_path_relative returns a relative path from src to dest.
Examples:
>>> base_path_relative("/usr/bin", "/tmp/foo/bar")
../../tmp/foo/bar
>>> base_path_relative("/usr/bin", "/usr/lib")
../lib
>>> base_path_relative("/tmp", "/tmp/foo/bar")
foo/bar
Signed-off-by: Chris Larson <clarson at mvista.com>
---
classes/base.bbclass | 29 +++++++++++++++++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/classes/base.bbclass b/classes/base.bbclass
index 11f6554..9bcd2ab 100644
--- a/classes/base.bbclass
+++ b/classes/base.bbclass
@@ -10,6 +10,35 @@ def base_path_join(a, *p):
path += '/' + b
return path
+def base_path_relative(src, dest):
+ """ Return a relative path from src to dest.
+
+ >>> base_path_relative("/usr/bin", "/tmp/foo/bar")
+ ../../tmp/foo/bar
+
+ >>> base_path_relative("/usr/bin", "/usr/lib")
+ ../lib
+
+ >>> base_path_relative("/tmp", "/tmp/foo/bar")
+ foo/bar
+ """
+ from os.path import sep, pardir, normpath, commonprefix
+
+ destlist = normpath(dest).split(sep)
+ srclist = normpath(src).split(sep)
+
+ # Find common section of the path
+ common = 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:]
+
+ return sep.join(relpath)
+
# for MD5/SHA handling
def base_chk_load_parser(config_path):
import ConfigParser, os, bb
More information about the Openembedded-commits
mailing list