[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44631] trunk/blender: fix for issue raise by patch [#30154] non utf8 buildinfo, fails to import 'bpy' module.

Campbell Barton ideasman42 at gmail.com
Sun Mar 4 04:14:58 CET 2012


Revision: 44631
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44631
Author:   campbellbarton
Date:     2012-03-04 03:14:38 +0000 (Sun, 04 Mar 2012)
Log Message:
-----------
fix for issue raise by patch [#30154] non utf8 buildinfo, fails to import 'bpy' module.

we cant ensure buildinfo to have utf8 encoding so access it as bytes via python - a different workaround then this patch made.

also use C style string formatting for sys_info.py

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/sys_info.py
    trunk/blender/source/blender/python/intern/bpy_app.c

Modified: trunk/blender/release/scripts/modules/sys_info.py
===================================================================
--- trunk/blender/release/scripts/modules/sys_info.py	2012-03-04 02:43:15 UTC (rev 44630)
+++ trunk/blender/release/scripts/modules/sys_info.py	2012-03-04 03:14:38 UTC (rev 44631)
@@ -57,66 +57,66 @@
     else:
         output = bpy.data.texts.new(name=output_filename)
 
-    header = '= Blender {} System Information =\n'.format(bpy.app.version_string)
-    lilies = '{}\n\n'.format(len(header) * '=')
-    firstlilies = '{}\n'.format(len(header) * '=')
+    header = "= Blender %s System Information =\n" % bpy.app.version_string
+    lilies = "%s\n\n" % (len(header) * "=")
+    firstlilies = "%s\n" % (len(header) * "=")
     output.write(firstlilies)
     output.write(header)
     output.write(lilies)
 
     # build info
-    output.write('\nBlender:\n')
+    output.write("\nBlender:\n")
     output.write(lilies)
-    output.write('version {}, revision {}. {}\n'.format(bpy.app.version_string, bpy.app.build_revision, bpy.app.build_type))
-    output.write('build date: {}, {}\n'.format(bpy.app.build_date, bpy.app.build_time))
-    output.write('platform: {}\n'.format(bpy.app.build_platform))
-    output.write('binary path: {}\n'.format(bpy.app.binary_path))
-    output.write('build cflags: {}\n'.format(bpy.app.build_cflags))
-    output.write('build cxxflags: {}\n'.format(bpy.app.build_cxxflags))
-    output.write('build linkflags: {}\n'.format(bpy.app.build_linkflags))
-    output.write('build system: {}\n'.format(bpy.app.build_system))
+    output.write("version %s, revision %r. %r\n" % (bpy.app.version_string, bpy.app.build_revision, bpy.app.build_type))
+    output.write("build date: %r, %r\n" % (bpy.app.build_date, bpy.app.build_time))
+    output.write("platform: %r\n" % (bpy.app.build_platform))
+    output.write("binary path: %r\n" % (bpy.app.binary_path))
+    output.write("build cflags: %r\n" % (bpy.app.build_cflags))
+    output.write("build cxxflags: %r\n" % (bpy.app.build_cxxflags))
+    output.write("build linkflags: %r\n" % (bpy.app.build_linkflags))
+    output.write("build system: %r\n" % (bpy.app.build_system))
 
     # python info
-    output.write('\nPython:\n')
+    output.write("\nPython:\n")
     output.write(lilies)
-    output.write('version: {}\n'.format(sys.version))
-    output.write('paths:\n')
+    output.write("version: %s\n" % (sys.version))
+    output.write("paths:\n")
     for p in sys.path:
-        output.write('\t{}\n'.format(p))
+        output.write("\t%r\n" % (p))
 
-    output.write('\nDirectories:\n')
+    output.write("\nDirectories:\n")
     output.write(lilies)
-    output.write('scripts: {}\n'.format(bpy.utils.script_paths()))
-    output.write('user scripts: {}\n'.format(bpy.utils.user_script_path()))
-    output.write('datafiles: {}\n'.format(bpy.utils.user_resource('DATAFILES')))
-    output.write('config: {}\n'.format(bpy.utils.user_resource('CONFIG')))
-    output.write('scripts : {}\n'.format(bpy.utils.user_resource('SCRIPTS')))
-    output.write('autosave: {}\n'.format(bpy.utils.user_resource('AUTOSAVE')))
-    output.write('tempdir: {}\n'.format(bpy.app.tempdir))
+    output.write("scripts: %r\n" % (bpy.utils.script_paths()))
+    output.write("user scripts: %r\n" % (bpy.utils.user_script_path()))
+    output.write("datafiles: %r\n" % (bpy.utils.user_resource('DATAFILES')))
+    output.write("config: %r\n" % (bpy.utils.user_resource('CONFIG')))
+    output.write("scripts : %r\n" % (bpy.utils.user_resource('SCRIPTS')))
+    output.write("autosave: %r\n" % (bpy.utils.user_resource('AUTOSAVE')))
+    output.write("tempdir: %r\n" % (bpy.app.tempdir))
 
-    output.write('\nFFmpeg:\n')
+    output.write("\nFFmpeg:\n")
     output.write(lilies)
     ffmpeg = bpy.app.ffmpeg
     if ffmpeg.supported:
         for lib in ['avcodec', 'avdevice', 'avformat', 'avutil', 'swscale']:
-            output.write('{}:{}{}\n'.format(lib, " " * (10 - len(lib)),
-                         getattr(ffmpeg, lib + '_version_string')))
+            output.write("%r:%r%r\n" % (lib, " " * (10 - len(lib)),
+                         getattr(ffmpeg, lib + "_version_string")))
     else:
-        output.write('Blender was built without FFmpeg support\n')
+        output.write("Blender was built without FFmpeg support\n")
 
     if bpy.app.background:
-        output.write('\nOpenGL: missing, background mode\n')
+        output.write("\nOpenGL: missing, background mode\n")
     else:
-        output.write('\nOpenGL\n')
+        output.write("\nOpenGL\n")
         output.write(lilies)
-        output.write('renderer:\t{}\n'.format(bgl.glGetString(bgl.GL_RENDERER)))
-        output.write('vendor:\t\t{}\n'.format(bgl.glGetString(bgl.GL_VENDOR)))
-        output.write('version:\t{}\n'.format(bgl.glGetString(bgl.GL_VERSION)))
-        output.write('extensions:\n')
+        output.write("renderer:\t%r\n" % (bgl.glGetString(bgl.GL_RENDERER)))
+        output.write("vendor:\t\t%r\n" % (bgl.glGetString(bgl.GL_VENDOR)))
+        output.write("version:\t%r\n" % (bgl.glGetString(bgl.GL_VERSION)))
+        output.write("extensions:\n")
 
         glext = bgl.glGetString(bgl.GL_EXTENSIONS)
         glext = textWrap(glext, 70)
         for l in glext:
-            output.write('\t\t{}\n'.format(l))
+            output.write("\t\t%r\n" % (l))
 
     op.report({'INFO'}, "System information generated in 'system-info.txt'")

Modified: trunk/blender/source/blender/python/intern/bpy_app.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_app.c	2012-03-04 02:43:15 UTC (rev 44630)
+++ trunk/blender/source/blender/python/intern/bpy_app.c	2012-03-04 03:14:38 UTC (rev 44631)
@@ -108,6 +108,8 @@
 	PyStructSequence_SET_ITEM(app_info, pos++, PyLong_FromLong(flag))
 #define SetStrItem(str) \
 	PyStructSequence_SET_ITEM(app_info, pos++, PyUnicode_FromString(str))
+#define SetBytesItem(str) \
+	PyStructSequence_SET_ITEM(app_info, pos++, PyBytes_FromString(str))
 #define SetObjItem(obj) \
 	PyStructSequence_SET_ITEM(app_info, pos++, obj)
 
@@ -121,27 +123,28 @@
 	SetStrItem(BLI_program_path());
 	SetObjItem(PyBool_FromLong(G.background));
 
-	/* build info */
+	/* build info, use bytes since we can't assume _any_ encoding:
+	 * see patch [#30154] for issue */
 #ifdef BUILD_DATE
-	SetStrItem(build_date);
-	SetStrItem(build_time);
-	SetStrItem(build_rev);
-	SetStrItem(build_platform);
-	SetStrItem(build_type);
-	SetStrItem(build_cflags);
-	SetStrItem(build_cxxflags);
-	SetStrItem(build_linkflags);
-	SetStrItem(build_system);
+	SetBytesItem(build_date);
+	SetBytesItem(build_time);
+	SetBytesItem(build_rev);
+	SetBytesItem(build_platform);
+	SetBytesItem(build_type);
+	SetBytesItem(build_cflags);
+	SetBytesItem(build_cxxflags);
+	SetBytesItem(build_linkflags);
+	SetBytesItem(build_system);
 #else
-	SetStrItem("Unknown");
-	SetStrItem("Unknown");
-	SetStrItem("Unknown");
-	SetStrItem("Unknown");
-	SetStrItem("Unknown");
-	SetStrItem("Unknown");
-	SetStrItem("Unknown");
-	SetStrItem("Unknown");
-	SetStrItem("Unknown");
+	SetBytesItem("Unknown");
+	SetBytesItem("Unknown");
+	SetBytesItem("Unknown");
+	SetBytesItem("Unknown");
+	SetBytesItem("Unknown");
+	SetBytesItem("Unknown");
+	SetBytesItem("Unknown");
+	SetBytesItem("Unknown");
+	SetBytesItem("Unknown");
 #endif
 
 	SetObjItem(BPY_app_ffmpeg_struct());
@@ -149,6 +152,7 @@
 
 #undef SetIntItem
 #undef SetStrItem
+#undef SetBytesItem
 #undef SetObjItem
 
 	if (PyErr_Occurred()) {




More information about the Bf-blender-cvs mailing list