3 # based on https://anonscm.debian.org/viewvc/pkg-boost/boost/trunk/debian/update-control.py
8 sys.setdefaultencoding('utf-8')
10 from deb822 import Deb822
17 def __init__(self, version):
18 (self.Major,self.Minor) = version.split('.')
19 self.PackageVersion = self.Major + '.' + self.Minor
21 def replaceVersion(string, ver1, ver2):
22 '''Search 'string' for a DpdkVersion ver1. If
23 SharedObjectVersion or PackageVersion of ver1 is found, replace by
24 corresponding ver2 version string. Return the updated string.'''
25 string = re.sub(ver1.PackageVersion, ver2.PackageVersion, string)
28 def updateVersionedValue(paragraph, key):
29 if not paragraph.has_key(key): return
30 oldValue = paragraph[key]
31 paragraph[key] = replaceVersion(paragraph[key], gOldVersion, gNewVersion)
32 return (oldValue, paragraph[key])
34 def conflictsWithPrevious(paragraph):
35 if not paragraph.has_key('Conflicts'): return False
36 nameRe = re.sub('\d', '\\d', paragraph['Package'])
37 return re.search(nameRe, paragraph['Conflicts']) is not None
39 def updateConflicts(paragraph, oldPkgName):
40 newPkgName = paragraph['Package']
41 needsConflict = (newPkgName.endswith("-dev") and not newPkgName.endswith("-all-dev")) or conflictsWithPrevious(paragraph)
42 if not needsConflict: return
43 if paragraph.has_key('Conflicts'):
44 if paragraph['Conflicts'].find(oldPkgName) == -1:
45 paragraph['Conflicts'] += ', ' + oldPkgName
47 paragraph['Conflicts'] = oldPkgName
49 def processSourceParagraph(p):
50 updateVersionedValue(p, 'Source')
52 def processPackageParagraph(p):
53 (oldPkgName, newPkgName) = updateVersionedValue(p, 'Package')
54 updateVersionedValue(p, 'Depends')
55 updateVersionedValue(p, 'Recommends')
56 updateVersionedValue(p, 'Suggests')
57 updateConflicts(p, oldPkgName)
59 def printParagraph(p):
61 print "%s: %s" % (key, p[key])
65 for paragraph in Deb822.iter_paragraphs(open('control')):
67 processSourceParagraph(paragraph)
68 printParagraph(paragraph)
69 firstParagraph = False
71 processPackageParagraph(paragraph)
73 printParagraph(paragraph)
76 print "Usage: cd debian/; %s <old version> <new version> > control_new" % sys.argv[0]
79 gOldVersion = DpdkVersion(sys.argv[1])
80 gNewVersion = DpdkVersion(sys.argv[2])