hl2_src-leak-2017/src/utils/source_builder/P4.py

151 lines
5.1 KiB
Python

import sys, os, string, re, time, smtplib, getopt
# syncs the current clientspec
def Sync( szP4SrcFilesToWatch, bForce ):
print "syncing to files " + szP4SrcFilesToWatch + "..."
sForce = ""
if bForce:
sForce = "-f "
aszSyncLines = string.split( szP4SrcFilesToWatch, ";" )
for szLine in aszSyncLines:
if szLine:
print "p4 sync " + sForce + szLine
os.popen('p4 sync ' + sForce + szLine)
print " sync completed"
# current changelist number for this clientspec
def SubmittedChangelist( szP4SrcFilesToWatch ):
szChangeText = os.popen('p4 changes -m1 -s submitted ' + szP4SrcFilesToWatch).read()
line = []
line = string.split( szChangeText )
if len(line) > 0:
return line[1]
# returns a set of changes of range [start, end]
def GetChangelistRange(start, end, szP4SrcFilesToWatch):
if start and end:
szChangeText = os.popen('p4 changes -m10 ' + szP4SrcFilesToWatch + '@' + start + ',' + end).read()
return string.split(szChangeText, '\n');
szResult = []
return szResult
# returns the raw text of a set of the most recent submissions
def GetRecentCheckins( szP4SrcFilesToWatch ):
szChangeText = os.popen('p4 changes -m5 -s submitted ' + szP4SrcFilesToWatch).read()
return "Most recent checkins:\n" + szChangeText
# perforce counter access
def GetCounter(counter):
return string.split(os.popen('p4 counter ' + counter).read(), '\n')[0]
#returns the raw text of all unverified checkins
def GetUnverifiedCheckins( szP4SrcFilesToWatch, szVerifiedCounter, szChangeCounter ):
szCounter = GetCounter( szVerifiedCounter )
szLastVerified = str( int( szCounter ) + 1 )
szCurrentChange = GetCounter( szChangeCounter )
szChangeText = os.popen('p4 changes -s submitted ' + szP4SrcFilesToWatch + '@' + szLastVerified + ',@' + szCurrentChange).read()
return "Unverified checkins:\n" + szChangeText
# extracts an email from a "changes" output line
def GetEmailFromChangeLine(changeline):
change = (string.split(changeline, ' '))[1]
output = os.popen('p4 change -o ' + change).read()
user = string.split(string.split(output, "User:")[2])[0]
output = os.popen('p4 user -o ' + user).read()
return string.split(string.split(output, "Email:")[2])[0]
# perforce counter setting
def SetCounter(counter, value):
os.popen('p4 counter ' + counter + ' ' + value).read()
# checks to see if any update is currently available
def AnyNewCheckins( szChangeCounter, szP4SrcFilesToWatch ):
szChange = GetCounter(szChangeCounter)
if not szChange:
#is this the problem? Every night all these things fail.
return 0
return szChange <> SubmittedChangelist( szP4SrcFilesToWatch )
def LockMutex( szMutex ):
szLogLines = os.popen('newp4mutex lock ' + szMutex + ' 3 steambuilder perforce:1666').read()
count = string.count( szLogLines, '\n' )
if ( count < 3 ):
print szLogLines
print "HERE IS THE WEIRD LOCK ERROR!"
print szMutex + "mutex lock failed."
return 0
szT = string.split(szLogLines, '\n')[2]
successLine = string.split( szT, ' ')
if successLine[0] == "Success:":
print szMutex + " mutex locked."
return 1
else:
print szMutex + " mutex lock failed."
return 0
def LockMutexOld( szMutex ):
szLogLines = os.popen('p4mutex lock ' + szMutex + ' 3 steambuilder perforce:1666').read()
count = string.count( szLogLines, '\n' )
if ( count < 3 ):
print szLogLines
print "HERE IS THE WEIRD LOCK ERROR!"
print szMutex + "mutex lock failed."
return 0
szT = string.split(szLogLines, '\n')[3]
successLine = string.split( szT, ' ')
if successLine[0] == "Success:":
print szMutex + " mutex locked."
return 1
else:
print szMutex + " mutex lock failed."
return 0
def UnlockMutex( szMutex ):
szLogLines = os.popen('newp4mutex release ' + szMutex + ' 3 steambuilder perforce:1666').read()
count = string.count( szLogLines, '\n' )
if ( count < 3 ):
print szLogLines
print "HERE IS THE WEIRD RELEASE ERROR!"
print szMutex + "mutex release failed."
return 0
szT = string.split(szLogLines, '\n')[2]
# print szT
successLine = string.split( szT, ' ')
# print successLine
if successLine[0] == "Success:":
print szMutex + " mutex released."
return 1
else:
print szMutex + " mutex release failed."
return 0
def Integrate( szBranch ):
return os.popen('p4 integ -b ' + szBranch + ' -1 -i' ).read()
def Revert( szFiles ):
return os.popen('p4 revert ' + szFiles).read()
def Resolve():
return os.popen('p4 resolve -am').read()
def Fstat( szFiles ):
szConflicts = os.popen('p4 fstat -Ru ' + szFiles).read()
return szConflicts
def Changes( szFile, iNumResults ):
return os.popen('p4 changes -m' + iNumResults + ' ' + szFile).read()
def Query( szMutex ):
szLines = os.popen( 'p4mutex query ' + szMutex ).read()
count = string.count( szLines, 'HELD' )
if (count == 0 ):
return 1
else:
print "Lock held"
return 0
def SetClient( szClient ):
os.environ['P4CLIENT'] = szClient