@ -215,94 +215,6 @@ def CreatePatches(start, count, series):
else :
return None , files
def ApplyPatch ( verbose , fname ) :
""" Apply a patch with git am to test it
TODO : Convert these to use command , with stderr option
Args :
fname : filename of patch file to apply
"""
col = terminal . Color ( )
cmd = [ ' git ' , ' am ' , fname ]
pipe = subprocess . Popen ( cmd , stdout = subprocess . PIPE ,
stderr = subprocess . PIPE )
stdout , stderr = pipe . communicate ( )
re_error = re . compile ( ' ^error: patch failed: (.+):( \ d+) ' )
for line in stderr . splitlines ( ) :
if verbose :
print line
match = re_error . match ( line )
if match :
print checkpatch . GetWarningMsg ( col , ' warning ' , match . group ( 1 ) ,
int ( match . group ( 2 ) ) , ' Patch failed ' )
return pipe . returncode == 0 , stdout
def ApplyPatches ( verbose , args , start_point ) :
""" Apply the patches with git am to make sure all is well
Args :
verbose : Print out ' git am ' output verbatim
args : List of patch files to apply
start_point : Number of commits back from HEAD to start applying .
Normally this is len ( args ) , but it can be larger if a start
offset was given .
"""
error_count = 0
col = terminal . Color ( )
# Figure out our current position
cmd = [ ' git ' , ' name-rev ' , ' HEAD ' , ' --name-only ' ]
pipe = subprocess . Popen ( cmd , stdout = subprocess . PIPE )
stdout , stderr = pipe . communicate ( )
if pipe . returncode :
str = ' Could not find current commit name '
print col . Color ( col . RED , str )
print stdout
return False
old_head = stdout . splitlines ( ) [ 0 ]
if old_head == ' undefined ' :
str = " Invalid HEAD ' %s ' " % stdout . strip ( )
print col . Color ( col . RED , str )
return False
# Checkout the required start point
cmd = [ ' git ' , ' checkout ' , ' HEAD~ %d ' % start_point ]
pipe = subprocess . Popen ( cmd , stdout = subprocess . PIPE ,
stderr = subprocess . PIPE )
stdout , stderr = pipe . communicate ( )
if pipe . returncode :
str = ' Could not move to commit before patch series '
print col . Color ( col . RED , str )
print stdout , stderr
return False
# Apply all the patches
for fname in args :
ok , stdout = ApplyPatch ( verbose , fname )
if not ok :
print col . Color ( col . RED , ' git am returned errors for %s : will '
' skip this patch ' % fname )
if verbose :
print stdout
error_count + = 1
cmd = [ ' git ' , ' am ' , ' --skip ' ]
pipe = subprocess . Popen ( cmd , stdout = subprocess . PIPE )
stdout , stderr = pipe . communicate ( )
if pipe . returncode != 0 :
print col . Color ( col . RED , ' Unable to skip patch! Aborting... ' )
print stdout
break
# Return to our previous position
cmd = [ ' git ' , ' checkout ' , old_head ]
pipe = subprocess . Popen ( cmd , stdout = subprocess . PIPE , stderr = subprocess . PIPE )
stdout , stderr = pipe . communicate ( )
if pipe . returncode :
print col . Color ( col . RED , ' Could not move back to head commit ' )
print stdout , stderr
return error_count == 0
def BuildEmailList ( in_list , tag = None , alias = None , raise_on_error = True ) :
""" Build a list of email addresses based on an input list.