[kernel] r8232 - in dists/trunk/linux-2.6/debian: bin lib/python/debian_linux

Bastian Blank waldi at alioth.debian.org
Sat Jan 27 20:56:57 UTC 2007


Author: waldi
Date: Sat Jan 27 21:56:56 2007
New Revision: 8232

Modified:
   dists/trunk/linux-2.6/debian/bin/gencontrol.py
   dists/trunk/linux-2.6/debian/lib/python/debian_linux/debian.py
   dists/trunk/linux-2.6/debian/lib/python/debian_linux/gencontrol.py
Log:
debian/bin/gencontrol.py, debian/lib/python/debian_linux/debian.py,
debian/lib/python/debian_linux/gencontrol.py:
Make version code object oriented.


Modified: dists/trunk/linux-2.6/debian/bin/gencontrol.py
==============================================================================
--- dists/trunk/linux-2.6/debian/bin/gencontrol.py	(original)
+++ dists/trunk/linux-2.6/debian/bin/gencontrol.py	Sat Jan 27 21:56:56 2007
@@ -13,7 +13,7 @@
         super(gencontrol, self).do_main_setup(vars, makeflags, extra)
         vars.update(self.config['image',])
         makeflags.update({
-            'SOURCEVERSION': self.version['linux']['source'],
+            'SOURCEVERSION': self.version.complete,
         })
 
     def do_main_packages(self, packages, extra):
@@ -215,10 +215,10 @@
         unpatch = self.templates['patch.unpatch']
 
         vars = {
-            'home': '/usr/src/kernel-patches/all/%s/debian' % self.version['linux']['upstream'],
-            'revisions': ' '.join([i['Version']['debian'] for i in self.changelog[::-1]]),
-            'source': "%(upstream)s-%(debian)s" % self.version['linux'],
-            'upstream': self.version['linux']['upstream'],
+            'home': '/usr/src/kernel-patches/all/%s/debian' % self.version.linux_upstream,
+            'revisions': ' '.join([i['Version'].debian for i in self.changelog[::-1]]),
+            'source': "%(linux_upstream)s-%(debian)s" % self.version.__dict__,
+            'upstream': self.version.linux_upstream,
         }
 
         apply = self.substitute(apply, vars)
@@ -228,16 +228,16 @@
         file('debian/bin/patch.unpatch', 'w').write(unpatch)
 
     def process_changelog(self):
-        in_changelog = read_changelog()
-        act_upstream = in_changelog[0]['Version']['linux']['upstream']
+        in_changelog = read_changelog(version = VersionLinux)
+        act_upstream = in_changelog[0]['Version'].linux_upstream
         changelog = []
         for i in in_changelog:
-            if i['Version']['linux']['upstream'] != act_upstream:
+            if i['Version'].linux_upstream != act_upstream:
                 break
             changelog.append(i)
         self.changelog = changelog
         self.version = self.changelog[0]['Version']
-        if self.version['linux']['modifier'] is not None:
+        if self.version.linux_modifier is not None:
             self.abiname = ''
         else:
             self.abiname = '-%s' % self.config['abi',]['abiname']
@@ -258,15 +258,15 @@
 
     def process_real_tree(self, in_entry, vars):
         entry = self.process_package(in_entry, vars)
-        versions = [i['Version']['linux'] for i in self.changelog[::-1]]
+        versions = [i['Version'] for i in self.changelog[::-1]]
         for i in (('Depends', 'Provides')):
             value = package_relation_list()
             value.extend(entry.get(i, []))
             if i == 'Depends':
-                value.append("linux-patch-debian-%(version)s (= %(source)s)" % self.changelog[0]['Version']['linux'])
-                value.append(' | '.join(["linux-source-%(version)s (= %(source)s)" % v for v in versions]))
+                value.append("linux-patch-debian-%(linux_version)s (= %(complete)s)" % self.changelog[0]['Version'].__dict__)
+                value.append(' | '.join(["linux-source-%(linux_version)s (= %(complete)s)" % v.__dict__ for v in versions]))
             elif i == 'Provides':
-                value.extend(["linux-tree-%s" % v['source'].replace('~', '-') for v in versions])
+                value.extend(["linux-tree-%s" % v.complete.replace('~', '-') for v in versions])
             entry[i] = value
         return entry
 

Modified: dists/trunk/linux-2.6/debian/lib/python/debian_linux/debian.py
==============================================================================
--- dists/trunk/linux-2.6/debian/lib/python/debian_linux/debian.py	(original)
+++ dists/trunk/linux-2.6/debian/lib/python/debian_linux/debian.py	Sat Jan 27 21:56:56 2007
@@ -1,6 +1,6 @@
 import itertools, os.path, re, utils
 
-def read_changelog(dir = ''):
+def read_changelog(dir = '', version = None):
     r = re.compile(r"""
 ^
 (
@@ -22,6 +22,8 @@
 )
 )
 """, re.VERBOSE)
+    if version is None:
+        version = Version
     f = file(os.path.join(dir, "debian/changelog"))
     entries = []
     while True:
@@ -36,58 +38,91 @@
             e = {}
             e['Distribution'] = match.group('header_distribution')
             e['Source'] = match.group('header_source')
-            version = parse_version(match.group('header_version'))
-            e['Version'] = version
+            try:
+                e['Version'] = version(match.group('header_version'))
+            except Exception:
+                if not len(entries):
+                    raise
+                e['Version'] = Version(match.group('header_version'))
             entries.append(e)
     return entries
 
-def parse_version(version):
-    ret = {
-        'complete': version,
-        'upstream': version,
-        'debian': None,
-        'linux': None,
-    }
-    try:
-        i = len(version) - version[::-1].index('-')
-    except ValueError:
-        return ret
-    ret['upstream'] = version[:i-1]
-    ret['debian'] = version[i:]
-    try:
-        ret['linux'] = parse_version_linux(version)
-    except ValueError:
-        pass
-    return ret
-
-def parse_version_linux(version):
-    version_re = ur"""
+class Version(object):
+    _version_rules = ur"""
 ^
-(?P<source>
-    (?P<version>
-        (?P<major>\d+\.\d+)
-        \.
+(
+    (?P<epoch>
         \d+
     )
-    (?:
-        ~
-        (?P<modifier>
-            .+?
-        )
-    )?
-    (?:
-        \.dfsg\.\d+
-    )?
+    :
+)?
+(?P<upstream>
+    .+?
+)   
+(
     -
     (?P<debian>[^-]+)
+)?
+$
+"""
+    _version_re = re.compile(_version_rules, re.X)
+
+    def __init__(self, version):
+        match = self._version_re.match(version)
+        if match is None:
+            raise RuntimeError, "Invalid debian version"
+        self.complete = version
+        self.epoch = None
+        if match.group("epoch") is not None:
+            self.epoch = int(match.group("epoch"))
+        self.upstream = match.group("upstream")
+        self.debian = match.group("debian")
+
+        if self.debian is not None:
+            self.complete_noepoch = "%s-%s" % (self.upstream, self.debian)
+        else:
+            self.complete_noepoch = self.upstream
+
+    def __str__(self):
+        return self.complete
+
+class VersionLinux(Version):
+    _version_linux_rules = ur"""
+^
+(?P<version>
+    (?P<major>\d+\.\d+)
+    \.
+    \d+
 )
+(?:
+    ~
+    (?P<modifier>
+        .+?
+    )
+)?
+(?:
+    \.dfsg\.\d+
+)?
+-
+(?:[^-]+)
 $
 """
-    match = re.match(version_re, version, re.X)
-    if match is None:
-        raise ValueError
-    return match.groupdict()
+    _version_linux_re = re.compile(_version_linux_rules, re.X)
 
+    def __init__(self, version):
+        super(VersionLinux, self).__init__(version)
+        match = self._version_linux_re.match(version)
+        if match is None:
+            raise RuntimeError, "Invalid debian linux version"
+        d = match.groupdict()
+        self.linux_major = d['major']
+        self.linux_modifier = d['modifier']
+        self.linux_version = d['version']
+        if d['modifier'] is not None:
+            self.linux_upstream = '-'.join((d['version'], d['modifier']))
+        else:
+            self.linux_upstream = d['version']
+ 
 class package_description(object):
     __slots__ = "short", "long"
 

Modified: dists/trunk/linux-2.6/debian/lib/python/debian_linux/gencontrol.py
==============================================================================
--- dists/trunk/linux-2.6/debian/lib/python/debian_linux/gencontrol.py	(original)
+++ dists/trunk/linux-2.6/debian/lib/python/debian_linux/gencontrol.py	Sat Jan 27 21:56:56 2007
@@ -60,9 +60,9 @@
 
     def do_main_setup(self, vars, makeflags, extra):
         makeflags.update({
-            'MAJOR': self.version['linux']['major'],
-            'VERSION': self.version['linux']['version'],
-            'UPSTREAMVERSION': self.version['linux']['upstream'],
+            'MAJOR': self.version.linux_major,
+            'VERSION': self.version.linux_version,
+            'UPSTREAMVERSION': self.version.linux_upstream,
             'ABINAME': self.abiname,
         })
 
@@ -239,10 +239,10 @@
 
     def process_version_linux(self, version, abiname):
         return {
-            'upstreamversion': version['linux']['upstream'],
-            'version': version['linux']['version'],
-            'source_upstream': version['upstream'],
-            'major': version['linux']['major'],
+            'upstreamversion': version.linux_upstream,
+            'version': version.linux_version,
+            'source_upstream': version.upstream,
+            'major': version.linux_major,
             'abiname': abiname,
         }
 



More information about the Kernel-svn-changes mailing list