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:
Diffstat (limited to 'release/scripts/sysinfo.py')
-rw-r--r--release/scripts/sysinfo.py206
1 files changed, 145 insertions, 61 deletions
diff --git a/release/scripts/sysinfo.py b/release/scripts/sysinfo.py
index 04d31ccec16..daa6867e1a8 100644
--- a/release/scripts/sysinfo.py
+++ b/release/scripts/sysinfo.py
@@ -2,14 +2,14 @@
"""
Name: 'System Information...'
-Blender: 234
+Blender: 236
Group: 'HelpSystem'
Tooltip: 'Information about your Blender environment, useful to diagnose problems.'
"""
__author__ = "Willian P. Germano"
__url__ = ("blender", "elysiun")
-__version__ = "1.0"
+__version__ = "1.1"
__bpydoc__ = """\
This script creates a text in Blender's Text Editor with information
about your OS, video card, OpenGL driver, Blender and Python versions and
@@ -24,7 +24,7 @@ or the program's developers.
# $Id$
#
# --------------------------------------------------------------------------
-# sysinfo.py version 1.0 Jun 09, 2004
+# sysinfo.py version 1.1 Mar 20, 2005
# --------------------------------------------------------------------------
# ***** BEGIN GPL LICENSE BLOCK *****
#
@@ -37,7 +37,7 @@ or the program's developers.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
@@ -48,6 +48,7 @@ or the program's developers.
# --------------------------------------------------------------------------
import Blender
+import Blender.sys as bsys
from Blender.BGL import *
import sys
@@ -55,25 +56,26 @@ Blender.Window.WaitCursor(1)
# has_textwrap = 1 # see commented code below
output_filename = "system-info.txt"
warnings = 0
+notices = 0 # non critical warnings
def cutPoint(text, length):
- "Returns position of the last space found before 'length' chars"
- l = length
- c = text[l]
- while c != ' ':
- l -= 1
- if l == 0: return length # no space found
- c = text[l]
- return l
+ "Returns position of the last space found before 'length' chars"
+ l = length
+ c = text[l]
+ while c != ' ':
+ l -= 1
+ if l == 0: return length # no space found
+ c = text[l]
+ return l
def textWrap(text, length = 70):
- lines = []
- while len(text) > 70:
- cpt = cutPoint(text, length)
- line, text = text[:cpt], text[cpt + 1:]
- lines.append(line)
- lines.append(text)
- return lines
+ lines = []
+ while len(text) > 70:
+ cpt = cutPoint(text, length)
+ line, text = text[:cpt], text[cpt + 1:]
+ lines.append(line)
+ lines.append(text)
+ return lines
## Better use our own text wrap functions here
#try:
@@ -83,7 +85,7 @@ def textWrap(text, length = 70):
# msg = sys.exc_info()[1].__str__().split()[3]
# Blender.Draw.PupMenu("Python error:|This script requires the %s module" %msg)
-header = "= Blender %s System Information =" % Blender.Get("version")
+header = "= Blender %s System Information =" % Blender.Get("version")
lilies = len(header)*"="+"\n"
header = lilies + header + "\n" + lilies
@@ -97,66 +99,148 @@ output.write("Python:\n======\n\n")
output.write("- Version: %s\n\n" % sys.version)
output.write("- Path:\n\n")
for p in sys.path:
- output.write(p + '\n')
+ output.write(p + '\n')
-output.write("\n- Default folder for registered scripts:\n\n")
-scriptsdir = Blender.Get("scriptsdir")
-if not scriptsdir:
- output.write("<WARNING> -- not found")
- warnings += 1
+output.write("\n- Directories:")
+
+if not Blender.Get('homedir'):
+ outmsg = """
+
+<WARNING> - Blender home dir not found!
+ This should probably be "<path>/.blender/"
+ where <path> is usually the user's home dir.
+
+ Blender's home dir is where entries like:
+ folders scripts/, plugins/ and locale/ and
+ files .Blanguages and .bfont.ttf
+ are located.
+
+ It's also where Blender stores the Bpymenus file
+ with information about registered scripts, so it
+ only needs to scan scripts dir(s) when they are
+ modified.
+"""
+ output.write(outmsg)
+ if Blender.Get('scriptsdir').find('release') > 0:
+ output.write("""
+It seems this Blender binary is located at its cvs source tree:
+that's ok, but the scripts registration data will be recreated
+from dir(s) whenever you start the program, instead of only
+when those dirs are modified.
+
+Adding a .blender/ subdir to e. g. your home dir can prevent that.
+""")
+
+dirlist = [
+ ['homedir', 'Blender home dir', 1],
+ ['scriptsdir', 'Default dir for scripts', 1],
+ ['datadir', 'Default "bpydata/" data dir for scripts', 1],
+ ['uscriptsdir', 'User defined dir for scripts', 0],
+ ['udatadir', 'Data dir "bpydata/" inside user defined dir', 0]
+]
+
+for dir in dirlist:
+ dirname, dirstr, is_critical = dir
+ dirpath = Blender.Get(dirname)
+ output.write("\n\n %s:\n" % dirstr)
+ if not dirpath:
+ if is_critical:
+ warnings += 1
+ output.write(" <WARNING> -- not found")
+ else:
+ notices += 1
+ output.write(" <NOTICE> -- not found")
+ else:
+ output.write(" %s" % dirpath)
+
+configdir = bsys.join(Blender.Get('datadir'), 'config')
+output.write('\n\n Default config data "bpydata/config/" dir:')
+if bsys.exists(configdir):
+ output.write(" %s" % configdir)
else:
- output.write(scriptsdir)
+ warnings += 1
+ output.write("""
+ <WARNING> -- not found.
+ config/ should be inside the default scripts *data dir*.
+ It's used by Blender to store scripts configuration data.
+""")
+
+if Blender.Get('udatadir'):
+ uconfigdir = bsys.join(Blender.Get('udatadir'), 'config')
+ output.write("\n\n User defined config data dir:")
+ if bsys.exists(configdir):
+ output.write(" %s" % configdir)
+ else:
+ notices += 1
+ output.write("""
+ <NOTICE> -- not found.
+ bpydata/config/ should be inside the user defined scripts dir.
+ It's used by Blender to store scripts configuration data.
+ (Since it is on the user defined dir, a new Blender installation
+ won't overwrite the data.)
+""")
missing_mods = [] # missing basic modules
try:
- from mod_blender import basic_modules
- for m in basic_modules:
- try: exec ("import %s" % m)
- except: missing_mods.append(m)
-
- if missing_mods:
- output.write("\n\n<WARNING>:\n\nSome expected modules were not found.\n")
- output.write("Because of that some scripts bundled with Blender may not work.\n")
- output.write("Please read the FAQ in the Readme.html file shipped with Blender\n")
- output.write("for information about how to fix the problem.\n\n")
- output.write("The missing modules:\n")
- warnings += 1
- for m in missing_mods:
- output.write('-> ' + m + '\n')
- else:
- output.write("\n\n- Modules: all basic ones were found.\n")
-
-except:
- output.write("\n\n<WARNING>:\nCouldn't find mod_blender.py in scripts dir.")
- output.write("\nBasic modules availability won't be tested.\n")
- warnings += 1
-
+ from BPyBlender import basic_modules
+ for m in basic_modules:
+ try: exec ("import %s" % m)
+ except: missing_mods.append(m)
+
+ if missing_mods:
+ outmsg = """
+
+<WARNING>:
+
+Some expected modules were not found.
+Because of that some scripts bundled with Blender may not work.
+Please read the FAQ in the Readme.html file shipped with Blender
+for information about how to fix the problem.
+Missing modules:"""
+ output.write(outmsg)
+ warnings += 1
+ for m in missing_mods:
+ output.write('-> ' + m + '\n')
+ else:
+ output.write("\n\n- Modules: all basic ones were found.\n")
+
+except ImportError:
+ output.write("\n\n<WARNING>:\n Couldn't find BPyBlender.py in scripts/bpymodules/ dir.")
+ output.write("\n Basic modules availability won't be tested.\n")
+ warnings += 1
output.write("\nOpenGL:\n======\n\n")
-output.write("- Renderer: %s\n" % glGetString(GL_RENDERER))
-output.write("- Vendor: %s\n" % glGetString(GL_VENDOR))
-output.write("- Version: %s\n\n" % glGetString(GL_VERSION))
+output.write("- Renderer: %s\n" % glGetString(GL_RENDERER))
+output.write("- Vendor: %s\n" % glGetString(GL_VENDOR))
+output.write("- Version: %s\n\n" % glGetString(GL_VERSION))
output.write("- Extensions:\n\n")
glext = glGetString(GL_EXTENSIONS)
glext = textWrap(glext, 70)
for l in glext:
- output.write(l + "\n")
+ output.write(l + "\n")
output.write("\n\n- Simplistic almost useless benchmark:\n\n")
t = Blender.sys.time()
nredraws = 10
for i in range(nredraws):
- Blender.Redraw(-1) # redraw all windows
-result = str(Blender.sys.time() - t)
-output.write("Redrawing all areas %s times took %s seconds.\n" % (nredraws, result))
-
-if (warnings):
- output.write("\n(*) Found %d warning" % warnings)
- if (warnings > 1): output.write("s") # (blush)
- output.write(", documented in the text above.")
+ Blender.Redraw(-1) # redraw all windows
+result = Blender.sys.time() - t
+output.write("Redrawing all areas %s times took %.4f seconds.\n" % (nredraws, result))
+
+if warnings or notices:
+ output.write("\n%s%s\n" % (warnings*"#", notices*"."))
+ if warnings:
+ output.write("\n(*) Found %d warning" % warnings)
+ if (warnings > 1): output.write("s") # (blush)
+ output.write(", documented in the text above.\n")
+ if notices:
+ output.write("\n(*) Found %d notice" % notices)
+ if (notices > 1): output.write("s") # (blush)
+ output.write(", documented in the text above.\n")
+
else: output.write("\n==\nNo problems were found (scroll up for details).")
Blender.Window.WaitCursor(0)