From f6a3d9943a9e9dfaca48584286b4793ce2080f6b Mon Sep 17 00:00:00 2001 From: aguerre Date: Thu, 13 Jun 2013 15:06:01 +0000 Subject: [PATCH] Fix bug to ensure compatibility with Python < 2.6 --- bin/appliskel/getAppliPath.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/bin/appliskel/getAppliPath.py b/bin/appliskel/getAppliPath.py index d16f50d84..90bb3cac0 100755 --- a/bin/appliskel/getAppliPath.py +++ b/bin/appliskel/getAppliPath.py @@ -23,6 +23,29 @@ # import os +import sys + +###### +# Warning: relpath might be replaced by equivalent os.relpath introduced in +# Python 2.6 (Calibre 7). +# It is still here to ensure compatibility with Calibre 6 (Python 2.5) +def relpath(target, base): + """ Find relative path from base to target + if target== "/local/chris/appli" and base== "/local/chris" the result is appli + if target== /tmp/appli and base /local/chris the result is ../../tmp/appli + """ + target=target.split(os.path.sep) + base=base.split(os.path.sep) + for i in xrange(len(base)): + if base[i] != target[i]: + i=i-1 + #not in base + break + p=['..']*(len(base)-i-1)+target[i+1:] + if p == []: + return '.' + return os.path.join( *p ) +# def get_appli_path(filePath=None): if filePath is None: @@ -31,7 +54,12 @@ def get_appli_path(filePath=None): homePath = os.path.realpath(os.getenv('HOME')) applipath = os.path.relpath(filePath, homePath) return applipath +# if __name__ == "__main__": - applipath = get_appli_path() + if sys.hexversion < 0x02060000: # Python older than 2.6.0 + applipath = relpath(os.path.realpath(os.path.dirname(__file__)),os.path.realpath(os.getenv('HOME'))) + else: + applipath = get_appli_path() print applipath +# -- 2.39.2