Python: Remove deprecated uses of os.popen
authorCampbell Barton <ideasman42@gmail.com>
Thu, 19 Jun 2014 15:57:06 +0000 (01:57 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 19 Jun 2014 16:00:46 +0000 (02:00 +1000)
T40415 by Lawrence D'Oliveiro

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

index 251f7eae92e118d4e7ea1293457e548fd0e7ad49..f27ba1754c12c6a70c08c89e2d83535fd45959ab 100644 (file)
@@ -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')
index ee35586814dc69ceedbd181d507495982020996c..a506d2c08f9fb4880cbfe32fc332c77991468fae 100644 (file)
@@ -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'):
index 6eff3dd682b3a644051fa0446a67fb8de2444ddb..08a3eec45ba722064aee7d5c906fbe4d0f21b988 100644 (file)
@@ -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'
 
index ef28f7b6d91d547ea237fd830718710be313d403..bceab7e2b0f499698df085b054fa43186b671f54 100644 (file)
@@ -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])
 
index 86ae8fdc4e6ba584697058cf6a09d5abc8f5c703..4281c908afd11c78b68414c34ab9d275d3fa33ba 100644 (file)
@@ -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'}