[Bf-blender-cvs] [2aa2bec43a7] master: Fix T52442: bl_app_templates_system not working
Campbell Barton
noreply at git.blender.org
Thu Sep 14 21:48:04 CEST 2017
Commit: 2aa2bec43a7f1fa214833c73d033ae1785c600f3
Author: Campbell Barton
Date: Fri Sep 15 05:46:43 2017 +1000
Branches: master
https://developer.blender.org/rB2aa2bec43a7f1fa214833c73d033ae1785c600f3
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.
===================================================================
M release/scripts/modules/bpy/utils/__init__.py
M source/blender/blenkernel/intern/appdir.c
===================================================================
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,
};
More information about the Bf-blender-cvs
mailing list