[Bf-blender-cvs] [2dce13d] master: Python: Remove deprecated uses of os.popen

Campbell Barton noreply at git.blender.org
Thu Jun 19 18:01:17 CEST 2014


Commit: 2dce13d213f6c02b97a62bb1d7a8661998e22a53
Author: Campbell Barton
Date:   Fri Jun 20 01:57:06 2014 +1000
https://developer.blender.org/rB2dce13d213f6c02b97a62bb1d7a8661998e22a53

Python: Remove deprecated uses of os.popen

T40415 by Lawrence D'Oliveiro

===================================================================

M	SConstruct
M	build_files/scons/tools/Blender.py
M	build_files/scons/tools/btools.py
M	intern/cycles/kernel/SConscript
M	release/scripts/startup/bl_operators/wm.py

===================================================================

diff --git a/SConstruct b/SConstruct
index 251f7ea..f27ba17 100644
--- a/SConstruct
+++ b/SConstruct
@@ -285,8 +285,7 @@ if env['OURPLATFORM']=='darwin':
     import subprocess
 
     command = ["%s"%env['CC'], "--version"]
-    process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=None, shell=False)
-    line = process.communicate()[0]
+    line = subprocess.check_output(command)
     ver = re.search(r'[0-9]+(\.[0-9]+[svn]+)+', line) or re.search(r'[0-9]+(\.[0-9]+)+', line) # read the "based on LLVM x.xsvn" version here, not the Apple version
     if ver:
         env['CCVERSION'] = ver.group(0).strip('svn')
diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py
index ee35586..a506d2c 100644
--- a/build_files/scons/tools/Blender.py
+++ b/build_files/scons/tools/Blender.py
@@ -406,55 +406,58 @@ def buildinfo(lenv, build_type):
     """
     Generate a buildinfo object
     """
+    import subprocess
+
     build_date = time.strftime ("%Y-%m-%d")
     build_time = time.strftime ("%H:%M:%S")
 
     if os.path.isdir(os.path.abspath('.git')):
-        build_commit_timestamp = os.popen('git log -1 --format=%ct').read().strip()
+        build_commit_timestamp = subprocess.check_output(args=['git', 'log', '-1', '--format=%ct']).strip()
         if not build_commit_timestamp:
             # Git command not found
             build_hash = 'unknown'
             build_commit_timestamp = '0'
             build_branch = 'unknown'
         else:
-            import subprocess
             no_upstream = False
 
-            process = subprocess.Popen(['git', 'rev-parse', '--short', '@{u}'],
-                                        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-            build_hash, stderr = process.communicate()
-            build_hash = build_hash.strip()
-            build_branch = os.popen('git rev-parse --abbrev-ref HEAD').read().strip()
+            try :
+                build_hash = subprocess.check_output(['git', 'rev-parse', '--short', '@{u}']).strip()
+            except subprocess.CalledProcessError:
+                # assume branch has no upstream configured
+                build_hash = ''
+
+            build_branch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).strip()
 
             if build_branch == 'HEAD':
-                master_check = os.popen('git branch --list master --contains ' + build_hash).read().strip()
+                master_check = subprocess.check_output(['git', 'branch', '--list', 'master', '--contains', build_hash]).strip()
                 if master_check == 'master':
                     build_branch = 'master'
                 else:
-                    head_hash = os.popen('git rev-parse HEAD').read().strip()
-                    tag_hashes = os.popen('git show-ref --tags -d').read()
+                    head_hash = subprocess.check_output(['git', 'rev-parse', 'HEAD']).strip()
+                    tag_hashes = subprocess.check_output(['git', 'show-ref', '--tags', '-d'])
                     if tag_hashes.find(head_hash) != -1:
                         build_branch = 'master'
 
             if build_hash == '':
-                build_hash = os.popen('git rev-parse --short HEAD').read().strip()
+                build_hash = subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).strip()
                 no_upstream = True
             else:
-                older_commits = os.popen('git log --oneline HEAD..@{u}').read().strip()
+                older_commits = subprocess.check_output(['git', 'log', '--oneline', 'HEAD..@{u}']).strip()
                 if older_commits:
-                    build_hash = os.popen('git rev-parse --short HEAD').read().strip()
+                    build_hash = subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).strip()
 
             # ## Check for local modifications
             has_local_changes = False
 
             # Update GIT index before getting dirty files
             os.system('git update-index -q --refresh')
-            changed_files = os.popen('git diff-index --name-only HEAD --').read().strip()
+            changed_files = subprocess.check_output(['git', 'diff-index', '--name-only', 'HEAD', '--']).strip()
 
             if changed_files:
                 has_local_changes = True
             elif no_upstream == False:
-                unpushed_log = os.popen('git log --oneline @{u}..').read().strip()
+                unpushed_log = subprocess.check_output(['git', 'log', '--oneline', '@{u}..']).strip()
                 has_local_changes = unpushed_log != ''
 
             if build_branch.startswith('blender-v'):
diff --git a/build_files/scons/tools/btools.py b/build_files/scons/tools/btools.py
index 6eff3dd..08a3eec 100644
--- a/build_files/scons/tools/btools.py
+++ b/build_files/scons/tools/btools.py
@@ -56,7 +56,7 @@ def get_version():
     raise Exception("%s: missing version string" % fname)
 
 def get_hash():
-    build_hash = os.popen('git rev-parse --short HEAD').read().strip()
+    build_hash = subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).strip()
     if build_hash == '' or build_hash == None:
         build_hash = 'UNKNOWN'
 
diff --git a/intern/cycles/kernel/SConscript b/intern/cycles/kernel/SConscript
index ef28f7b..bceab7e 100644
--- a/intern/cycles/kernel/SConscript
+++ b/intern/cycles/kernel/SConscript
@@ -64,8 +64,7 @@ if env['WITH_BF_CYCLES_CUDA_BINARIES']:
     closure_dir = os.path.join(source_dir, "../closure")
 
     # get CUDA version
-    nvcc_pipe = subprocess.Popen([nvcc, "--version"],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
-    output, erroroutput = nvcc_pipe.communicate()
+    output = subprocess.check_output([nvcc, "--version"])
     cuda_major_minor = re.findall(r'release (\d+).(\d+)', output)[0]
     cuda_version = int(cuda_major_minor[0])*10 + int(cuda_major_minor[1])
 
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index 86ae8fd..4281c90 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -802,13 +802,14 @@ class WM_OT_path_open(Operator):
         if sys.platform[:3] == "win":
             os.startfile(filepath)
         elif sys.platform == "darwin":
-            subprocess.Popen(["open", filepath])
+            subprocess.check_call(["open", filepath])
         else:
             try:
-                subprocess.Popen(["xdg-open", filepath])
-            except OSError:
+                subprocess.check_call(["xdg-open", filepath])
+            except:
                 # xdg-open *should* be supported by recent Gnome, KDE, Xfce
-                pass
+                import traceback
+                traceback.print_exc()
 
         return {'FINISHED'}




More information about the Bf-blender-cvs mailing list