From a567dd20c0a1ecfd690af40474640b8a3d9afa50 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Sun, 18 Aug 2013 15:17:33 +0000 Subject: More "relpath" try/except protection... --- .../scripts/modules/bl_i18n_utils/bl_extract_messages.py | 15 ++++++++++++--- release/scripts/modules/bl_i18n_utils/settings.py | 9 ++++++--- release/scripts/modules/bpy_extras/io_utils.py | 5 ++++- 3 files changed, 22 insertions(+), 7 deletions(-) (limited to 'release') diff --git a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py index 3d00815b70e..e9ed9a8de5b 100644 --- a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py +++ b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py @@ -410,9 +410,15 @@ def dump_py_messages_from_files(msgs, reports, files, settings): def make_rel(path): for rp in root_paths: if path.startswith(rp): - return os.path.relpath(path, rp) + try: # can't always find the relative path (between drive letters on windows) + return os.path.relpath(path, rp) + except ValueError: + return path # Use binary's dir as fallback... - return os.path.relpath(path, os.path.dirname(bpy.app.binary_path)) + try: # can't always find the relative path (between drive letters on windows) + return os.path.relpath(path, os.path.dirname(bpy.app.binary_path)) + except ValueError: + return path # Helper function def extract_strings_ex(node, is_split=False): @@ -768,7 +774,10 @@ def dump_src_messages(msgs, reports, settings): if os.path.splitext(fname)[1] not in settings.PYGETTEXT_ALLOWED_EXTS: continue path = os.path.join(root, fname) - rel_path = os.path.relpath(path, settings.SOURCE_DIR) + try: # can't always find the relative path (between drive letters on windows) + rel_path = os.path.relpath(path, settings.SOURCE_DIR) + except ValueError: + rel_path = path if rel_path in forbidden: continue elif rel_path not in forced: diff --git a/release/scripts/modules/bl_i18n_utils/settings.py b/release/scripts/modules/bl_i18n_utils/settings.py index 001f044f1c4..e40b067f552 100644 --- a/release/scripts/modules/bl_i18n_utils/settings.py +++ b/release/scripts/modules/bl_i18n_utils/settings.py @@ -467,9 +467,12 @@ def _do_set(ref, path): path = os.path.normpath(path) # If given path is absolute, make it relative to current ref one (else we consider it is already the case!) if os.path.isabs(path): - return os.path.relpath(path, ref) - else: - return path + # can't always find the relative path (between drive letters on windows) + try: + return os.path.relpath(path, ref) + except ValueError: + pass + return path def _gen_get_set_path(ref, name): def _get(self): diff --git a/release/scripts/modules/bpy_extras/io_utils.py b/release/scripts/modules/bpy_extras/io_utils.py index eeaa6408268..790233c40af 100644 --- a/release/scripts/modules/bpy_extras/io_utils.py +++ b/release/scripts/modules/bpy_extras/io_utils.py @@ -409,7 +409,10 @@ def path_reference(filepath, if mode == 'ABSOLUTE': return filepath_abs elif mode == 'RELATIVE': - return os.path.relpath(filepath_abs, base_dst) + try: # can't always find the relative path (between drive letters on windows) + return os.path.relpath(filepath_abs, base_dst) + except ValueError: + return filepath_abs elif mode == 'STRIP': return os.path.basename(filepath_abs) -- cgit v1.2.3