forked from bartvdbraak/blender
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
This commit is contained in:
parent
6c37e0a442
commit
4f2976941f
@ -57,66 +57,66 @@ def write_sysinfo(op):
|
|||||||
else:
|
else:
|
||||||
output = bpy.data.texts.new(name=output_filename)
|
output = bpy.data.texts.new(name=output_filename)
|
||||||
|
|
||||||
header = '= Blender {} System Information =\n'.format(bpy.app.version_string)
|
header = "= Blender %s System Information =\n" % bpy.app.version_string
|
||||||
lilies = '{}\n\n'.format(len(header) * '=')
|
lilies = "%s\n\n" % (len(header) * "=")
|
||||||
firstlilies = '{}\n'.format(len(header) * '=')
|
firstlilies = "%s\n" % (len(header) * "=")
|
||||||
output.write(firstlilies)
|
output.write(firstlilies)
|
||||||
output.write(header)
|
output.write(header)
|
||||||
output.write(lilies)
|
output.write(lilies)
|
||||||
|
|
||||||
# build info
|
# build info
|
||||||
output.write('\nBlender:\n')
|
output.write("\nBlender:\n")
|
||||||
output.write(lilies)
|
output.write(lilies)
|
||||||
output.write('version {}, revision {}. {}\n'.format(bpy.app.version_string, bpy.app.build_revision, bpy.app.build_type))
|
output.write("version %s, revision %r. %r\n" % (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("build date: %r, %r\n" % (bpy.app.build_date, bpy.app.build_time))
|
||||||
output.write('platform: {}\n'.format(bpy.app.build_platform))
|
output.write("platform: %r\n" % (bpy.app.build_platform))
|
||||||
output.write('binary path: {}\n'.format(bpy.app.binary_path))
|
output.write("binary path: %r\n" % (bpy.app.binary_path))
|
||||||
output.write('build cflags: {}\n'.format(bpy.app.build_cflags))
|
output.write("build cflags: %r\n" % (bpy.app.build_cflags))
|
||||||
output.write('build cxxflags: {}\n'.format(bpy.app.build_cxxflags))
|
output.write("build cxxflags: %r\n" % (bpy.app.build_cxxflags))
|
||||||
output.write('build linkflags: {}\n'.format(bpy.app.build_linkflags))
|
output.write("build linkflags: %r\n" % (bpy.app.build_linkflags))
|
||||||
output.write('build system: {}\n'.format(bpy.app.build_system))
|
output.write("build system: %r\n" % (bpy.app.build_system))
|
||||||
|
|
||||||
# python info
|
# python info
|
||||||
output.write('\nPython:\n')
|
output.write("\nPython:\n")
|
||||||
output.write(lilies)
|
output.write(lilies)
|
||||||
output.write('version: {}\n'.format(sys.version))
|
output.write("version: %s\n" % (sys.version))
|
||||||
output.write('paths:\n')
|
output.write("paths:\n")
|
||||||
for p in sys.path:
|
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(lilies)
|
||||||
output.write('scripts: {}\n'.format(bpy.utils.script_paths()))
|
output.write("scripts: %r\n" % (bpy.utils.script_paths()))
|
||||||
output.write('user scripts: {}\n'.format(bpy.utils.user_script_path()))
|
output.write("user scripts: %r\n" % (bpy.utils.user_script_path()))
|
||||||
output.write('datafiles: {}\n'.format(bpy.utils.user_resource('DATAFILES')))
|
output.write("datafiles: %r\n" % (bpy.utils.user_resource('DATAFILES')))
|
||||||
output.write('config: {}\n'.format(bpy.utils.user_resource('CONFIG')))
|
output.write("config: %r\n" % (bpy.utils.user_resource('CONFIG')))
|
||||||
output.write('scripts : {}\n'.format(bpy.utils.user_resource('SCRIPTS')))
|
output.write("scripts : %r\n" % (bpy.utils.user_resource('SCRIPTS')))
|
||||||
output.write('autosave: {}\n'.format(bpy.utils.user_resource('AUTOSAVE')))
|
output.write("autosave: %r\n" % (bpy.utils.user_resource('AUTOSAVE')))
|
||||||
output.write('tempdir: {}\n'.format(bpy.app.tempdir))
|
output.write("tempdir: %r\n" % (bpy.app.tempdir))
|
||||||
|
|
||||||
output.write('\nFFmpeg:\n')
|
output.write("\nFFmpeg:\n")
|
||||||
output.write(lilies)
|
output.write(lilies)
|
||||||
ffmpeg = bpy.app.ffmpeg
|
ffmpeg = bpy.app.ffmpeg
|
||||||
if ffmpeg.supported:
|
if ffmpeg.supported:
|
||||||
for lib in ['avcodec', 'avdevice', 'avformat', 'avutil', 'swscale']:
|
for lib in ['avcodec', 'avdevice', 'avformat', 'avutil', 'swscale']:
|
||||||
output.write('{}:{}{}\n'.format(lib, " " * (10 - len(lib)),
|
output.write("%r:%r%r\n" % (lib, " " * (10 - len(lib)),
|
||||||
getattr(ffmpeg, lib + '_version_string')))
|
getattr(ffmpeg, lib + "_version_string")))
|
||||||
else:
|
else:
|
||||||
output.write('Blender was built without FFmpeg support\n')
|
output.write("Blender was built without FFmpeg support\n")
|
||||||
|
|
||||||
if bpy.app.background:
|
if bpy.app.background:
|
||||||
output.write('\nOpenGL: missing, background mode\n')
|
output.write("\nOpenGL: missing, background mode\n")
|
||||||
else:
|
else:
|
||||||
output.write('\nOpenGL\n')
|
output.write("\nOpenGL\n")
|
||||||
output.write(lilies)
|
output.write(lilies)
|
||||||
output.write('renderer:\t{}\n'.format(bgl.glGetString(bgl.GL_RENDERER)))
|
output.write("renderer:\t%r\n" % (bgl.glGetString(bgl.GL_RENDERER)))
|
||||||
output.write('vendor:\t\t{}\n'.format(bgl.glGetString(bgl.GL_VENDOR)))
|
output.write("vendor:\t\t%r\n" % (bgl.glGetString(bgl.GL_VENDOR)))
|
||||||
output.write('version:\t{}\n'.format(bgl.glGetString(bgl.GL_VERSION)))
|
output.write("version:\t%r\n" % (bgl.glGetString(bgl.GL_VERSION)))
|
||||||
output.write('extensions:\n')
|
output.write("extensions:\n")
|
||||||
|
|
||||||
glext = bgl.glGetString(bgl.GL_EXTENSIONS)
|
glext = bgl.glGetString(bgl.GL_EXTENSIONS)
|
||||||
glext = textWrap(glext, 70)
|
glext = textWrap(glext, 70)
|
||||||
for l in glext:
|
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'")
|
op.report({'INFO'}, "System information generated in 'system-info.txt'")
|
||||||
|
@ -108,6 +108,8 @@ static PyObject *make_app_info(void)
|
|||||||
PyStructSequence_SET_ITEM(app_info, pos++, PyLong_FromLong(flag))
|
PyStructSequence_SET_ITEM(app_info, pos++, PyLong_FromLong(flag))
|
||||||
#define SetStrItem(str) \
|
#define SetStrItem(str) \
|
||||||
PyStructSequence_SET_ITEM(app_info, pos++, PyUnicode_FromString(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) \
|
#define SetObjItem(obj) \
|
||||||
PyStructSequence_SET_ITEM(app_info, pos++, obj)
|
PyStructSequence_SET_ITEM(app_info, pos++, obj)
|
||||||
|
|
||||||
@ -121,27 +123,28 @@ static PyObject *make_app_info(void)
|
|||||||
SetStrItem(BLI_program_path());
|
SetStrItem(BLI_program_path());
|
||||||
SetObjItem(PyBool_FromLong(G.background));
|
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
|
#ifdef BUILD_DATE
|
||||||
SetStrItem(build_date);
|
SetBytesItem(build_date);
|
||||||
SetStrItem(build_time);
|
SetBytesItem(build_time);
|
||||||
SetStrItem(build_rev);
|
SetBytesItem(build_rev);
|
||||||
SetStrItem(build_platform);
|
SetBytesItem(build_platform);
|
||||||
SetStrItem(build_type);
|
SetBytesItem(build_type);
|
||||||
SetStrItem(build_cflags);
|
SetBytesItem(build_cflags);
|
||||||
SetStrItem(build_cxxflags);
|
SetBytesItem(build_cxxflags);
|
||||||
SetStrItem(build_linkflags);
|
SetBytesItem(build_linkflags);
|
||||||
SetStrItem(build_system);
|
SetBytesItem(build_system);
|
||||||
#else
|
#else
|
||||||
SetStrItem("Unknown");
|
SetBytesItem("Unknown");
|
||||||
SetStrItem("Unknown");
|
SetBytesItem("Unknown");
|
||||||
SetStrItem("Unknown");
|
SetBytesItem("Unknown");
|
||||||
SetStrItem("Unknown");
|
SetBytesItem("Unknown");
|
||||||
SetStrItem("Unknown");
|
SetBytesItem("Unknown");
|
||||||
SetStrItem("Unknown");
|
SetBytesItem("Unknown");
|
||||||
SetStrItem("Unknown");
|
SetBytesItem("Unknown");
|
||||||
SetStrItem("Unknown");
|
SetBytesItem("Unknown");
|
||||||
SetStrItem("Unknown");
|
SetBytesItem("Unknown");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SetObjItem(BPY_app_ffmpeg_struct());
|
SetObjItem(BPY_app_ffmpeg_struct());
|
||||||
@ -149,6 +152,7 @@ static PyObject *make_app_info(void)
|
|||||||
|
|
||||||
#undef SetIntItem
|
#undef SetIntItem
|
||||||
#undef SetStrItem
|
#undef SetStrItem
|
||||||
|
#undef SetBytesItem
|
||||||
#undef SetObjItem
|
#undef SetObjItem
|
||||||
|
|
||||||
if (PyErr_Occurred()) {
|
if (PyErr_Occurred()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user