From b8a59e504ba19ed3f86f0fcbaf70f29743bdded4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 26 Jul 2016 07:09:39 +1000 Subject: [PATCH] Fix packing windows paths that span drives Reported as T48187 --- bam/blend/blendfile_pack.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/bam/blend/blendfile_pack.py b/bam/blend/blendfile_pack.py index 58f84be..78f879d 100755 --- a/bam/blend/blendfile_pack.py +++ b/bam/blend/blendfile_pack.py @@ -65,7 +65,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