summaryrefslogtreecommitdiff
path: root/utils/source_builder/P4.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/source_builder/P4.py')
-rw-r--r--utils/source_builder/P4.py150
1 files changed, 150 insertions, 0 deletions
diff --git a/utils/source_builder/P4.py b/utils/source_builder/P4.py
new file mode 100644
index 0000000..0eac203
--- /dev/null
+++ b/utils/source_builder/P4.py
@@ -0,0 +1,150 @@
+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