[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