Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2017-09-14 22:46:43 +0300
committerCampbell Barton <ideasman42@gmail.com>2017-09-14 22:57:37 +0300
commit2aa2bec43a7f1fa214833c73d033ae1785c600f3 (patch)
tree743e82da02a3758ee79f5cbaf0b2bca6ef5fe294
parent909da553e347679bf69c7fb0b3ed7570451cf050 (diff)
Fix T52442: bl_app_templates_system not working
Portable builds LOCAL files need to be treated as system instead of using as a fallback to USER templates.
-rw-r--r--release/scripts/modules/bpy/utils/__init__.py35
-rw-r--r--source/blender/blenkernel/intern/appdir.c3
2 files changed, 20 insertions, 18 deletions
diff --git a/release/scripts/modules/bpy/utils/__init__.py b/release/scripts/modules/bpy/utils/__init__.py
index 185a0e73279..c3175f93f4e 100644
--- a/release/scripts/modules/bpy/utils/__init__.py
+++ b/release/scripts/modules/bpy/utils/__init__.py
@@ -400,27 +400,26 @@ def app_template_paths(subdir=None):
:return: app template paths.
:rtype: generator
"""
+ # Note: keep in sync with: Blender's BKE_appdir_app_template_any
- # note: LOCAL, USER, SYSTEM order matches script resolution order.
subdir_tuple = (subdir,) if subdir is not None else ()
- path = _os.path.join(*(
- resource_path('LOCAL'), "scripts", "startup",
- "bl_app_templates_user", *subdir_tuple))
- if _os.path.isdir(path):
- yield path
- else:
- path = _os.path.join(*(
- resource_path('USER'), "scripts", "startup",
- "bl_app_templates_user", *subdir_tuple))
- if _os.path.isdir(path):
- yield path
-
- path = _os.path.join(*(
- resource_path('SYSTEM'), "scripts", "startup",
- "bl_app_templates_system", *subdir_tuple))
- if _os.path.isdir(path):
- yield path
+ # Avoid adding 'bl_app_templates_system' twice.
+ # Either we have a portable build or an installed system build.
+ for resource_type, module_name in (
+ ('USER', "bl_app_templates_user"),
+ ('LOCAL', "bl_app_templates_system"),
+ ('SYSTEM', "bl_app_templates_system"),
+ ):
+ path = resource_path(resource_type)
+ if path:
+ path = _os.path.join(
+ *(path, "scripts", "startup", module_name, *subdir_tuple))
+ if _os.path.isdir(path):
+ yield path
+ # Only load LOCAL or SYSTEM (never both).
+ if resource_type == 'LOCAL':
+ break
def preset_paths(subdir):
diff --git a/source/blender/blenkernel/intern/appdir.c b/source/blender/blenkernel/intern/appdir.c
index d059310a0f8..6dd852c7875 100644
--- a/source/blender/blenkernel/intern/appdir.c
+++ b/source/blender/blenkernel/intern/appdir.c
@@ -691,13 +691,16 @@ bool BKE_appdir_program_python_search(
return is_found;
}
+/** Keep in sync with `bpy.utils.app_template_paths()` */
static const char *app_template_directory_search[2] = {
"startup" SEP_STR "bl_app_templates_user",
"startup" SEP_STR "bl_app_templates_system",
};
static const int app_template_directory_id[2] = {
+ /* Only 'USER' */
BLENDER_USER_SCRIPTS,
+ /* Covers 'LOCAL' & 'SYSTEM'. */
BLENDER_SYSTEM_SCRIPTS,
};