From d7029115233a3383072dabe7eb36910cc3fcc791 Mon Sep 17 00:00:00 2001 From: Sebastian Hoogen Date: Sun, 16 Feb 2014 12:56:02 +0100 Subject: [PATCH] OpenSCAD binary gives version info on stderr in never versions --- src/Mod/OpenSCAD/OpenSCADUtils.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Mod/OpenSCAD/OpenSCADUtils.py b/src/Mod/OpenSCAD/OpenSCADUtils.py index 064da9effb..ecb5b7585c 100644 --- a/src/Mod/OpenSCAD/OpenSCADUtils.py +++ b/src/Mod/OpenSCAD/OpenSCADUtils.py @@ -83,9 +83,11 @@ def getopenscadversion(osfilename=None): GetString('openscadexecutable') if osfilename and os.path.isfile(osfilename): p=subprocess.Popen([osfilename,'-v'],\ - stdout=subprocess.PIPE,universal_newlines=True) + stdout=subprocess.PIPE,stderr=subprocess.PIPE,universal_newlines=True) p.wait() - return p.stdout.read().strip() + stdout=p.stdout.read().strip() + stderr=p.stderr.read().strip() + return (stdout or stderr) def newtempfilename(): import os,time @@ -103,12 +105,14 @@ def callopenscad(inputfilename,outputfilename=None,outputext='csg',keepname=Fals please delete the file afterwards''' import FreeCAD,os,subprocess,tempfile,time def check_output2(*args,**kwargs): - kwargs.update({'stdout':subprocess.PIPE}) + kwargs.update({'stdout':subprocess.PIPE,'stderr':subprocess.PIPE}) p=subprocess.Popen(*args,**kwargs) stdoutd,stderrd = p.communicate() if p.returncode != 0: - raise OpenSCADError('%s\n' % stdoutd.strip()) + raise OpenSCADError('%s %s\n' % (stdoutd.strip(),stderr.strip())) #raise Exception,'stdout %s\n stderr%s' %(stdoutd,stderrd) + if stderrd.strip(): + FreeCAD.Console.PrintWarning(stderrd+u'\n') if stdoutd.strip(): FreeCAD.Console.PrintMessage(stdoutd+u'\n') return stdoutd @@ -125,8 +129,7 @@ def callopenscad(inputfilename,outputfilename=None,outputext='csg',keepname=Fals else: outputfilename=os.path.join(dir1,'%s.%s' % \ (tempfilenamegen.next(),outputext)) - check_output2([osfilename,'-o',outputfilename, inputfilename],\ - stderr=subprocess.STDOUT) + check_output2([osfilename,'-o',outputfilename, inputfilename]) return outputfilename def callopenscadstring(scadstr,outputext='csg'):