1 #! /usr/bin/env python3
3 # based on https://anonscm.debian.org/viewvc/pkg-boost/boost/
4 # trunk/debian/update-control.py
10 from deb822 import Deb822
17 def __init__(self, version):
18 (self.Major, self.Minor) = version.split('.')
19 self.PackageVersion = self.Major + '.' + self.Minor
22 def replaceVersion(string, ver1, ver2):
23 '''Search 'string' for a DpdkVersion ver1. If
24 SharedObjectVersion or PackageVersion of ver1 is found, replace by
25 corresponding ver2 version string. Return the updated string.'''
26 string = re.sub(ver1.PackageVersion, ver2.PackageVersion, string)
30 def updateVersionedValue(paragraph, key):
31 if key not in paragraph:
33 oldValue = paragraph[key]
34 paragraph[key] = replaceVersion(paragraph[key], gOldVersion, gNewVersion)
35 return (oldValue, paragraph[key])
38 def conflictsWithPrevious(paragraph):
39 if 'Conflicts' not in paragraph:
41 nameRe = re.sub('\d', '\\d', paragraph['Package'])
42 return re.search(nameRe, paragraph['Conflicts']) is not None
45 def updateConflicts(paragraph, oldPkgName):
46 newPkgName = paragraph['Package']
47 needsConflict = ((newPkgName.endswith("-dev")
48 and not newPkgName.endswith("-all-dev"))
49 or conflictsWithPrevious(paragraph))
52 if 'Conflicts' in paragraph:
53 if paragraph['Conflicts'].find(oldPkgName) == -1:
54 paragraph['Conflicts'] += ', ' + oldPkgName
56 paragraph['Conflicts'] = oldPkgName
59 def processSourceParagraph(p):
60 updateVersionedValue(p, 'Source')
63 def processPackageParagraph(p):
64 (oldPkgName, newPkgName) = updateVersionedValue(p, 'Package')
65 updateVersionedValue(p, 'Depends')
66 updateVersionedValue(p, 'Recommends')
67 updateVersionedValue(p, 'Suggests')
68 updateConflicts(p, oldPkgName)
71 def printParagraph(p):
73 print("%s: %s" % (key, p[key]))
78 for paragraph in Deb822.iter_paragraphs(open('control')):
80 processSourceParagraph(paragraph)
81 printParagraph(paragraph)
82 firstParagraph = False
84 processPackageParagraph(paragraph)
86 printParagraph(paragraph)
90 print("Usage: cd debian/; %s <old version> <new version>"
91 " > control_new" % sys.argv[0])
94 gOldVersion = DpdkVersion(sys.argv[1])
95 gNewVersion = DpdkVersion(sys.argv[2])