From 2155eb58531f97fef7f5e60b612d6436d083ebff Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 20 Jul 2016 03:52:59 +1000 Subject: Fix T48187: Packing files on MS-Windows fails Using paths on different drives caused packing to fail since its not possible to make one path relative to another. --- io_blend_utils/blendfile_pack.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/io_blend_utils/blendfile_pack.py b/io_blend_utils/blendfile_pack.py index 225a941d..dee2bfa1 100755 --- a/io_blend_utils/blendfile_pack.py +++ b/io_blend_utils/blendfile_pack.py @@ -55,7 +55,18 @@ def _relpath_remap( raise Exception("Internal error 'path_src' -> %r must be absolute" % path_src) path_src = os.path.normpath(path_src) - path_dst = os.path.relpath(path_src, base_dir_src) + if os.name != "nt": + path_dst = os.path.relpath(path_src, base_dir_src) + else: + # exception for windows, we need to support mapping between drives + try: + path_dst = os.path.relpath(path_src, base_dir_src) + except ValueError: + # include the absolute path when the file is on a different drive. + path_dst = os.path.relpath( + os.path.join(base_dir_src, b'__' + path_src.replace(b':', b'\\')), + base_dir_src, + ) if blendfile_src_dir_fakeroot is None: # /foo/../bar.png --> /foo/__/bar.png -- cgit v1.2.3