Author: stefano
Date: Thu Aug 12 11:57:54 2004
New Revision: 36295

Modified:
   gump/trunk/gump.py   (contents, props changed)
Log:
fixed CRLF and added executable status

Modified: gump/trunk/gump.py
==============================================================================
--- gump/trunk/gump.py  (original)
+++ gump/trunk/gump.py  Thu Aug 12 11:57:54 2004
@@ -1,306 +1,306 @@
-#!/usr/bin/env python

-

-#

-#   Copyright 2003-2004 The Apache Software Foundation

-#

-#   Licensed under the Apache License, Version 2.0 (the "License");

-#   you may not use this file except in compliance with the License.

-#   You may obtain a copy of the License at

-#

-#       http://www.apache.org/licenses/LICENSE-2.0

-#

-#   Unless required by applicable law or agreed to in writing, software

-#   distributed under the License is distributed on an "AS IS" BASIS,

-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-#   See the License for the specific language governing permissions and

-#   limitations under the License.

-#

-# $Header: $

-

-"""

-

-  This is the commandline entrypoint into Python Gump,

-  used *primarily* by nightly cron jobs.

-  

-  It updates Gump (from CVS) to ensure it (itself) is 

-  latest, does some environment twiddling, and runs the

-  main gump/integration.py. Bit more twiddling with 

-  outputs afterwards...

-

-"""

-

-import os.path

-import os

-import sys

-import socket

-import time

-import signal

-import smtplib

-import StringIO

-from xml.dom import minidom

-

-LINE=' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GUMP'

-

-GUMP_VERSION='2.0.2-alpha-0003'

-

-def runCommand(command,args='',dir=None,outputFile=None):

-    """ Run a command, and check the result... """

-    

-    #    

-    originalCWD=None

-    if dir:     

-        originalCWD=os.getcwd()

-        cwdpath=os.path.abspath(dir)

-        try:

-            sys.stdout.write('Executing with CWD: [' + dir + ']\n')    

-            if not os.path.exists(cwdpath): os.makedirs(dir)

-            os.chdir(cwdpath)

-        except Exception, details :

-            # Log the problem and re-raise

-            sys.stdout.write('Failed to create/change CWD [' + cwdpath + ']. Details: 
' + str(details) + '\n')

-            return 0

-              

-    try:              

-        fullCommand = command + ' ' + args  

-        sys.stdout.write('Execute : ' + fullCommand + '\n')

-       

-        # Execute Command & Calculate Exit Code

-        systemReturn=os.system(fullCommand)

-        

-        if not os.name == 'dos' and not os.name == 'nt':

-            waitcode=systemReturn

-        

-            #

-            # The return code (from system = from wait) is (on Unix):

-            #

-            #    a 16 bit number

-            #    top byte    =    exit status

-            #    low byte    =    signal that killed it

-            #

-            exit_code=(((waitcode & 0xFF00) >> 8) & 0xFF)

-        

-        else:

-            exit_code=systemReturn

-    

-        if exit_code:

-            sys.stdout.write('Process Exit Code : ' + `exit_code` + '\n')

-    

-    finally:

-        if originalCWD: os.chdir(originalCWD)

-      

-    return exit_code

-

-def catFile(output,file,title=None):

-    """ Cat a file to a stream... """

-    if title:

-        output.write(LINE + '\n')    

-        output.write(title + '\n\n')

-        

-    input=open(file,'r')

-    line = input.readline()

-    while line:

-        output.write(line)

-        # Next...

-        line = input.readline()

-        

-def establishLock(lockFile):

-

-    failed=0

-    info=''

-    if 'posix'==os.name:

-        import fcntl

-                

-        try:            

-            lock=open(lockFile,'a+')

-            fcntl.flock(lock.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)

-        except:            

-            failed=1

-            info=', and is locked.'

-        

-    else:

-        if os.path.exists(lockFile):

-            failed=1

-        

-        # Write this PID into a lock file

-        lock=open(lockFile,'w')

-            

-    if failed:

-        print """The lock file [%s] exists%s. 

-Either Gump is still running, or it terminated very abnormally.    

-Please resolve this (waiting or removing the lock file) before retrying.

-        """ % (lockFile, info)

-        sys.exit(1)

-    

-    # Leave a mark...

-    lock.write(`os.getpid()`)

-    lock.flush()

-        

-    return lock

-        

-def releaseLock(lock,lockFile):

-      

-    if 'posix'==os.name:

-        import fcntl            

-        try:

-            fcntl.flock(lockFile.fileno(), fcntl.LOCK_UN)

-        except:

-            pass

-    

-    # Close it, so we can dispose of it

-    lock.close()    

-    

-    # Others might be blocked on this

-    try:

-        os.remove(lockFile)

-    except:

-        # Somehow another could delete this, even if locked...

-        pass

-             

-# Ensure we start in the correct directory, setting GUMP_HOME

-gumpHome=os.path.abspath(os.getcwd())

-os.environ['GUMP_HOME']=gumpHome     

-os.chdir(gumpHome)

-

-# Allow a lock    

-lockFile=os.path.abspath('gump.lock')

-lock=establishLock(lockFile)        

-    

-hostname='Unknown'

-workspaceName='Unknown'

-        

-args=sys.argv

-result=0

-svnExit = -1

-cvsExit = -1

-integrationExit = -1

-        

-try:

-

-    try:

-        

-        # Process Environment

-        hostname = socket.gethostname()

-

-        sys.stdout.write('- ************************************\n')

-        sys.stdout.write('-            Apache Gump \n')

-        sys.stdout.write('- ************************************\n')

-        sys.stdout.write('- GUMP run on host   : ' + hostname + '\n')

-        sys.stdout.write('- GUMP run @         : ' + time.strftime('%d %b %y 
%H:%M:%S', time.localtime()) + '\n')

-        sys.stdout.write('- GUMP run @  UTC    : ' + time.strftime('%d %b %y 
%H:%M:%S', time.gmtime()) + '\n')

-        sys.stdout.write('- GUMP run by Python : ' + `sys.version` + '\n')

-        sys.stdout.write('- GUMP run by Python : ' + `sys.executable` + '\n')

-        sys.stdout.write('- GUMP run by Gump   : ' + GUMP_VERSION + '\n')

-        sys.stdout.write('- GUMP run on OS     : ' + `os.name` + '\n')

-        

-        #sys.stdout.write('- GUMP run in env    : \n')        

-        #for envkey in os.environ.keys():

-        #    envval=os.environ[envkey]

-        #    sys.stdout.write('      ' + envkey + ' -> [' + envval + ']\n')

-        

-        # Workspace is the hostname, unless overridden

-        workspaceName = 'metadata/' + hostname + '.xml'

-        if len(args)>2 and args[1] in ['-w','--workspace']:

-            workspaceName=args[2]

-            del args[1:3]     

-        workspacePath = os.path.abspath(workspaceName)

-            

-        projectsExpr='all'

-        if len(args)>1:

-            projectsExpr=args[1]

-            del args[1:2]      

-            

-        # Check version information

-        (major, minor, micro, releaselevel, serial) = sys.version_info

-        if not major >=2 and minor >= 3:

-            raise RuntimeError('Gump requires Python 2.3 or above. [' + sys.version() 
+ ']')

-            

-        # Nope, can't find the workspace...

-        if not os.path.exists(workspacePath):

-            raise RuntimeError('No such workspace at ' + str(workspacePath))

-   

-        # Add Gump to Python Path...

-        pythonPath=''

-        if os.environ.has_key('PYTHONPATH'):

-            pythonPath=os.environ['PYTHONPATH']

-            pythonPath+=os.pathsep

-        pythonDir=str(os.path.abspath(os.path.join(os.getcwd(),'python')))

-        pythonPath+=pythonDir

-        sys.stdout.write('- GUMP PYTHONPATH  :  ' + pythonPath + '\n')

-        os.environ['PYTHONPATH']=pythonPath

-        

-        # Wipe all *.pyc from the pythonPath (so we don't

-        # have old code lying around as compiled zombies)

-        for root, dirs, files in os.walk(pythonDir):

-            for name in files:

-                if name.endswith('.pyc'):

-                    fullname=os.path.join(root, name)

-                    # sys.stdout.write('- Remove PYC : ' + fullname + '\n')    

-                    os.remove(fullname)       

-        

-        # Update Gump code from SVN

-        if not os.environ.has_key('GUMP_NO_SVN_UPDATE') and \

-            not os.environ.has_key('GUMP_NO_SCM_UPDATE'):

-            svnExit = runCommand('svn','update --non-interactive')

-        else:

-            sys.stdout.write('SVN update skipped per environment setting.\n')

-            svnExit=0

-        if svnExit:

-            result=1     

-        

-        if not result:

-            # Update Gump metadata from CVS

-            if not os.environ.has_key('GUMP_NO_CVS_UPDATE') and \

-                not os.environ.has_key('GUMP_NO_SCM_UPDATE'):

-                cvsroot=':pserver:[EMAIL PROTECTED]:/home/cvspublic'

-                os.environ['CVSROOT']=cvsroot

-                # :TODO: ??? delete os.environ['CVS_RSH']

-                cvsExit = runCommand('cvs','-q update -dP','metadata')

-            else:

-                sys.stdout.write('CVS update skipped per environment setting.\n')

-                cvsExit=0

-            if cvsExit:

-                result=1

-            

-        # :TODO: Need to remove all *.pyc (other than this one)

-        # because a Gump refactor can leave old/stale compiled

-        # classes around.

-            

-        # :TODO: Is this a CVS thing, or a Gump historical thing?

-        if os.path.exists('.timestamp'): 

-            os.remove('.timestamp')            

-    

-        if not result:

-            # Process/build command line

-            iargs = '-w ' + workspaceName + ' ' + projectsExpr + ' ' + ' 
'.join(args[1:])

-            

-            # Allow a check not an integrate

-            check=0

-            if '--check' in args:

-                check=0

-            

-            #

-            # Run the main Gump...

-            #    

-            command='bin/integrate.py'

-            if check:

-                command='bin/check.py'

-            integrationExit = runCommand(sys.executable+ ' '+command, iargs)

-            if integrationExit:

-                result=1

-

-    except KeyboardInterrupt:    

-        sys.stdout.write('Terminated by user interrupt...\n')

-        result = 1

-        raise

-        

-    except:    

-        sys.stdout.write('Terminated unintentionally...\n')

-        result = 1

-        raise

-    

-finally:

- 

-    releaseLock(lock,lockFile) 

-       

-# bye!

-sys.exit(result)

+#!/usr/bin/env python
+
+#
+#   Copyright 2003-2004 The Apache Software Foundation
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+#
+# $Header: $
+
+"""
+
+  This is the commandline entrypoint into Python Gump,
+  used *primarily* by nightly cron jobs.
+  
+  It updates Gump (from CVS) to ensure it (itself) is 
+  latest, does some environment twiddling, and runs the
+  main gump/integration.py. Bit more twiddling with 
+  outputs afterwards...
+
+"""
+
+import os.path
+import os
+import sys
+import socket
+import time
+import signal
+import smtplib
+import StringIO
+from xml.dom import minidom
+
+LINE=' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GUMP'
+
+GUMP_VERSION='2.0.2-alpha-0003'
+
+def runCommand(command,args='',dir=None,outputFile=None):
+    """ Run a command, and check the result... """
+    
+    #    
+    originalCWD=None
+    if dir:     
+        originalCWD=os.getcwd()
+        cwdpath=os.path.abspath(dir)
+        try:
+            sys.stdout.write('Executing with CWD: [' + dir + ']\n')    
+            if not os.path.exists(cwdpath): os.makedirs(dir)
+            os.chdir(cwdpath)
+        except Exception, details :
+            # Log the problem and re-raise
+            sys.stdout.write('Failed to create/change CWD [' + cwdpath + ']. Details: 
' + str(details) + '\n')
+            return 0
+              
+    try:              
+        fullCommand = command + ' ' + args  
+        sys.stdout.write('Execute : ' + fullCommand + '\n')
+       
+        # Execute Command & Calculate Exit Code
+        systemReturn=os.system(fullCommand)
+        
+        if not os.name == 'dos' and not os.name == 'nt':
+            waitcode=systemReturn
+        
+            #
+            # The return code (from system = from wait) is (on Unix):
+            #
+            #    a 16 bit number
+            #    top byte    =    exit status
+            #    low byte    =    signal that killed it
+            #
+            exit_code=(((waitcode & 0xFF00) >> 8) & 0xFF)
+        
+        else:
+            exit_code=systemReturn
+    
+        if exit_code:
+            sys.stdout.write('Process Exit Code : ' + `exit_code` + '\n')
+    
+    finally:
+        if originalCWD: os.chdir(originalCWD)
+      
+    return exit_code
+
+def catFile(output,file,title=None):
+    """ Cat a file to a stream... """
+    if title:
+        output.write(LINE + '\n')    
+        output.write(title + '\n\n')
+        
+    input=open(file,'r')
+    line = input.readline()
+    while line:
+        output.write(line)
+        # Next...
+        line = input.readline()
+        
+def establishLock(lockFile):
+
+    failed=0
+    info=''
+    if 'posix'==os.name:
+        import fcntl
+                
+        try:            
+            lock=open(lockFile,'a+')
+            fcntl.flock(lock.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)
+        except:            
+            failed=1
+            info=', and is locked.'
+        
+    else:
+        if os.path.exists(lockFile):
+            failed=1
+        
+        # Write this PID into a lock file
+        lock=open(lockFile,'w')
+            
+    if failed:
+        print """The lock file [%s] exists%s. 
+Either Gump is still running, or it terminated very abnormally.    
+Please resolve this (waiting or removing the lock file) before retrying.
+        """ % (lockFile, info)
+        sys.exit(1)
+    
+    # Leave a mark...
+    lock.write(`os.getpid()`)
+    lock.flush()
+        
+    return lock
+        
+def releaseLock(lock,lockFile):
+      
+    if 'posix'==os.name:
+        import fcntl            
+        try:
+            fcntl.flock(lockFile.fileno(), fcntl.LOCK_UN)
+        except:
+            pass
+    
+    # Close it, so we can dispose of it
+    lock.close()    
+    
+    # Others might be blocked on this
+    try:
+        os.remove(lockFile)
+    except:
+        # Somehow another could delete this, even if locked...
+        pass
+             
+# Ensure we start in the correct directory, setting GUMP_HOME
+gumpHome=os.path.abspath(os.getcwd())
+os.environ['GUMP_HOME']=gumpHome     
+os.chdir(gumpHome)
+
+# Allow a lock    
+lockFile=os.path.abspath('gump.lock')
+lock=establishLock(lockFile)        
+    
+hostname='Unknown'
+workspaceName='Unknown'
+        
+args=sys.argv
+result=0
+svnExit = -1
+cvsExit = -1
+integrationExit = -1
+        
+try:
+
+    try:
+        
+        # Process Environment
+        hostname = socket.gethostname()
+
+        sys.stdout.write('- ************************************\n')
+        sys.stdout.write('-            Apache Gump \n')
+        sys.stdout.write('- ************************************\n')
+        sys.stdout.write('- GUMP run on host   : ' + hostname + '\n')
+        sys.stdout.write('- GUMP run @         : ' + time.strftime('%d %b %y 
%H:%M:%S', time.localtime()) + '\n')
+        sys.stdout.write('- GUMP run @  UTC    : ' + time.strftime('%d %b %y 
%H:%M:%S', time.gmtime()) + '\n')
+        sys.stdout.write('- GUMP run by Python : ' + `sys.version` + '\n')
+        sys.stdout.write('- GUMP run by Python : ' + `sys.executable` + '\n')
+        sys.stdout.write('- GUMP run by Gump   : ' + GUMP_VERSION + '\n')
+        sys.stdout.write('- GUMP run on OS     : ' + `os.name` + '\n')
+        
+        #sys.stdout.write('- GUMP run in env    : \n')        
+        #for envkey in os.environ.keys():
+        #    envval=os.environ[envkey]
+        #    sys.stdout.write('      ' + envkey + ' -> [' + envval + ']\n')
+        
+        # Workspace is the hostname, unless overridden
+        workspaceName = 'metadata/' + hostname + '.xml'
+        if len(args)>2 and args[1] in ['-w','--workspace']:
+            workspaceName=args[2]
+            del args[1:3]     
+        workspacePath = os.path.abspath(workspaceName)
+            
+        projectsExpr='all'
+        if len(args)>1:
+            projectsExpr=args[1]
+            del args[1:2]      
+            
+        # Check version information
+        (major, minor, micro, releaselevel, serial) = sys.version_info
+        if not major >=2 and minor >= 3:
+            raise RuntimeError('Gump requires Python 2.3 or above. [' + sys.version() 
+ ']')
+            
+        # Nope, can't find the workspace...
+        if not os.path.exists(workspacePath):
+            raise RuntimeError('No such workspace at ' + str(workspacePath))
+   
+        # Add Gump to Python Path...
+        pythonPath=''
+        if os.environ.has_key('PYTHONPATH'):
+            pythonPath=os.environ['PYTHONPATH']
+            pythonPath+=os.pathsep
+        pythonDir=str(os.path.abspath(os.path.join(os.getcwd(),'python')))
+        pythonPath+=pythonDir
+        sys.stdout.write('- GUMP PYTHONPATH  :  ' + pythonPath + '\n')
+        os.environ['PYTHONPATH']=pythonPath
+        
+        # Wipe all *.pyc from the pythonPath (so we don't
+        # have old code lying around as compiled zombies)
+        for root, dirs, files in os.walk(pythonDir):
+            for name in files:
+                if name.endswith('.pyc'):
+                    fullname=os.path.join(root, name)
+                    # sys.stdout.write('- Remove PYC : ' + fullname + '\n')    
+                    os.remove(fullname)       
+        
+        # Update Gump code from SVN
+        if not os.environ.has_key('GUMP_NO_SVN_UPDATE') and \
+            not os.environ.has_key('GUMP_NO_SCM_UPDATE'):
+            svnExit = runCommand('svn','update --non-interactive')
+        else:
+            sys.stdout.write('SVN update skipped per environment setting.\n')
+            svnExit=0
+        if svnExit:
+            result=1     
+        
+        if not result:
+            # Update Gump metadata from CVS
+            if not os.environ.has_key('GUMP_NO_CVS_UPDATE') and \
+                not os.environ.has_key('GUMP_NO_SCM_UPDATE'):
+                cvsroot=':pserver:[EMAIL PROTECTED]:/home/cvspublic'
+                os.environ['CVSROOT']=cvsroot
+                # :TODO: ??? delete os.environ['CVS_RSH']
+                cvsExit = runCommand('cvs','-q update -dP','metadata')
+            else:
+                sys.stdout.write('CVS update skipped per environment setting.\n')
+                cvsExit=0
+            if cvsExit:
+                result=1
+            
+        # :TODO: Need to remove all *.pyc (other than this one)
+        # because a Gump refactor can leave old/stale compiled
+        # classes around.
+            
+        # :TODO: Is this a CVS thing, or a Gump historical thing?
+        if os.path.exists('.timestamp'): 
+            os.remove('.timestamp')            
+    
+        if not result:
+            # Process/build command line
+            iargs = '-w ' + workspaceName + ' ' + projectsExpr + ' ' + ' 
'.join(args[1:])
+            
+            # Allow a check not an integrate
+            check=0
+            if '--check' in args:
+                check=0
+            
+            #
+            # Run the main Gump...
+            #    
+            command='bin/integrate.py'
+            if check:
+                command='bin/check.py'
+            integrationExit = runCommand(sys.executable+ ' '+command, iargs)
+            if integrationExit:
+                result=1
+
+    except KeyboardInterrupt:    
+        sys.stdout.write('Terminated by user interrupt...\n')
+        result = 1
+        raise
+        
+    except:    
+        sys.stdout.write('Terminated unintentionally...\n')
+        result = 1
+        raise
+    
+finally:
+ 
+    releaseLock(lock,lockFile) 
+       
+# bye!
+sys.exit(result)

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to