These files are a subset of the python-2.7.2.tgz distribution from python.org. Changed files from PyMod-2.7.2 have been copied into the corresponding directories of this tree, replacing the original files in the distribution. Signed-off-by: daryl.mcdaniel@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13197 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			99 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """pyversioncheck - Module to help with checking versions"""
 | |
| import types
 | |
| import rfc822
 | |
| import urllib
 | |
| import sys
 | |
| 
 | |
| # Verbose options
 | |
| VERBOSE_SILENT=0        # Single-line reports per package
 | |
| VERBOSE_NORMAL=1        # Single-line reports per package, more info if outdated
 | |
| VERBOSE_EACHFILE=2      # Report on each URL checked
 | |
| VERBOSE_CHECKALL=3      # Check each URL for each package
 | |
| 
 | |
| # Test directory
 | |
| ## urllib bug: _TESTDIR="ftp://ftp.cwi.nl/pub/jack/python/versiontestdir/"
 | |
| _TESTDIR="http://www.cwi.nl/~jack/versiontestdir/"
 | |
| 
 | |
| def versioncheck(package, url, version, verbose=0):
 | |
|     ok, newversion, fp = checkonly(package, url, version, verbose)
 | |
|     if verbose > VERBOSE_NORMAL:
 | |
|         return ok
 | |
|     if ok < 0:
 | |
|         print '%s: No correctly formatted current version file found'%(package)
 | |
|     elif ok == 1:
 | |
|         print '%s: up-to-date (version %s)'%(package, version)
 | |
|     else:
 | |
|         print '%s: version %s installed, version %s found:' % \
 | |
|                         (package, version, newversion)
 | |
|         if verbose > VERBOSE_SILENT:
 | |
|             while 1:
 | |
|                 line = fp.readline()
 | |
|                 if not line: break
 | |
|                 sys.stdout.write('\t'+line)
 | |
|     return ok
 | |
| 
 | |
| def checkonly(package, url, version, verbose=0):
 | |
|     if verbose >= VERBOSE_EACHFILE:
 | |
|         print '%s:'%package
 | |
|     if type(url) == types.StringType:
 | |
|         ok, newversion, fp = _check1version(package, url, version, verbose)
 | |
|     else:
 | |
|         for u in url:
 | |
|             ok, newversion, fp = _check1version(package, u, version, verbose)
 | |
|             if ok >= 0 and verbose < VERBOSE_CHECKALL:
 | |
|                 break
 | |
|     return ok, newversion, fp
 | |
| 
 | |
| def _check1version(package, url, version, verbose=0):
 | |
|     if verbose >= VERBOSE_EACHFILE:
 | |
|         print '  Checking %s'%url
 | |
|     try:
 | |
|         fp = urllib.urlopen(url)
 | |
|     except IOError, arg:
 | |
|         if verbose >= VERBOSE_EACHFILE:
 | |
|             print '    Cannot open:', arg
 | |
|         return -1, None, None
 | |
|     msg = rfc822.Message(fp, seekable=0)
 | |
|     newversion = msg.getheader('current-version')
 | |
|     if not newversion:
 | |
|         if verbose >= VERBOSE_EACHFILE:
 | |
|             print '    No "Current-Version:" header in URL or URL not found'
 | |
|         return -1, None, None
 | |
|     version = version.lower().strip()
 | |
|     newversion = newversion.lower().strip()
 | |
|     if version == newversion:
 | |
|         if verbose >= VERBOSE_EACHFILE:
 | |
|             print '    Version identical (%s)'%newversion
 | |
|         return 1, version, fp
 | |
|     else:
 | |
|         if verbose >= VERBOSE_EACHFILE:
 | |
|             print '    Versions different (installed: %s, new: %s)'% \
 | |
|                         (version, newversion)
 | |
|         return 0, newversion, fp
 | |
| 
 | |
| 
 | |
| def _test():
 | |
|     print '--- TEST VERBOSE=1'
 | |
|     print '--- Testing existing and identical version file'
 | |
|     versioncheck('VersionTestPackage', _TESTDIR+'Version10.txt', '1.0', verbose=1)
 | |
|     print '--- Testing existing package with new version'
 | |
|     versioncheck('VersionTestPackage', _TESTDIR+'Version11.txt', '1.0', verbose=1)
 | |
|     print '--- Testing package with non-existing version file'
 | |
|     versioncheck('VersionTestPackage', _TESTDIR+'nonexistent.txt', '1.0', verbose=1)
 | |
|     print '--- Test package with 2 locations, first non-existing second ok'
 | |
|     versfiles = [_TESTDIR+'nonexistent.txt', _TESTDIR+'Version10.txt']
 | |
|     versioncheck('VersionTestPackage', versfiles, '1.0', verbose=1)
 | |
|     print '--- TEST VERBOSE=2'
 | |
|     print '--- Testing existing and identical version file'
 | |
|     versioncheck('VersionTestPackage', _TESTDIR+'Version10.txt', '1.0', verbose=2)
 | |
|     print '--- Testing existing package with new version'
 | |
|     versioncheck('VersionTestPackage', _TESTDIR+'Version11.txt', '1.0', verbose=2)
 | |
|     print '--- Testing package with non-existing version file'
 | |
|     versioncheck('VersionTestPackage', _TESTDIR+'nonexistent.txt', '1.0', verbose=2)
 | |
|     print '--- Test package with 2 locations, first non-existing second ok'
 | |
|     versfiles = [_TESTDIR+'nonexistent.txt', _TESTDIR+'Version10.txt']
 | |
|     versioncheck('VersionTestPackage', versfiles, '1.0', verbose=2)
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     _test()
 |