X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=source%2Futils.py;h=b6b51c84677ee5d84c21afe24ca07a8a04d646da;hb=37388b93f7ef01f73393a26e0db22dc80b74a620;hp=429038dec9c2581143ad29d2cfa2dc5226d477ea;hpb=1e66e08233fce852facdb97268843e6becb1a1e4;p=bootmanager.git diff --git a/source/utils.py b/source/utils.py index 429038d..b6b51c8 100644 --- a/source/utils.py +++ b/source/utils.py @@ -11,7 +11,8 @@ # expected /proc/partitions format import os, sys, shutil -import popen2 +import subprocess +import shlex import socket import fcntl import string @@ -131,37 +132,23 @@ def sysexec( cmd, log= None ): """ if VERBOSE_MODE: print ("sysexec >>> %s" % cmd) - prog= popen2.Popen4( cmd, 0 ) - if prog is None: + + try: + prog = subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except OSError: raise BootManagerException, \ - "Unable to create instance of popen2.Popen4 " \ + "Unable to create instance of subprocess.Popen " \ "for command: %s" % cmd + (stdoutdata, stderrdata) = prog.communicate() if log is not None: - try: - for line in prog.fromchild: - log.write( line ) - except KeyboardInterrupt: - raise BootManagerException, "Interrupted by user" - - returncode= prog.wait() - # revert http://git.planet-lab.org/?p=bootmanager.git;a=commitdiff;h=cca3a2cd2096c0235dddb5982b1f05c8d4c7f916 - # as 256 returned by Python - # - ## cat test.py - #import popen2 - # - #cmd = "false" - #prog = popen2.Popen4( cmd, 0 ) - #returncode = prog.wait() - #print returncode - # - ## python test.py - # 256 + log.write(stdoutdata) + + returncode = prog.wait() if returncode != 0: raise BootManagerException, "Running %s failed (rc=%d)" % (cmd,returncode) - prog= None + prog = None return 1