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

Bastian Blank waldi at alioth.debian.org
Sat Jan 27 20:11:52 CET 2007


Author: waldi
Date: Sat Jan 27 20:11:52 2007
New Revision: 8220

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


Modified: dists/trunk/linux-kbuild-2.6/debian/bin/gencontrol.py
==============================================================================
--- dists/trunk/linux-kbuild-2.6/debian/bin/gencontrol.py	(original)
+++ dists/trunk/linux-kbuild-2.6/debian/bin/gencontrol.py	Sat Jan 27 20:11:52 2007
@@ -37,10 +37,10 @@
 
     def do_main(self, packages, makefile):
         makeflags = {
-            'VERSION': self.version['version'],
-            'SOURCE_UPSTREAM': self.version['source_upstream'],
-            'SOURCEVERSION': self.version['source'],
-            'UPSTREAMVERSION': self.version['upstream'],
+            'VERSION': self.version['linux']['version'],
+            'SOURCE_UPSTREAM': self.version['upstream'],
+            'SOURCEVERSION': self.version['linux']['source'],
+            'UPSTREAMVERSION': self.version['linux']['upstream'],
         }
 
         vars = self.changelog_vars.copy()
@@ -68,10 +68,10 @@
         ret = [None, None]
         ret[0] = version = self.changelog[0]['Version']
         vars = in_vars.copy()
-        vars['upstreamversion'] = version['upstream']
-        vars['version'] = version['version']
-        vars['source_upstream'] = version['source_upstream']
-        vars['major'] = version['major']
+        vars['upstreamversion'] = version['linux']['upstream']
+        vars['version'] = version['linux']['version']
+        vars['source_upstream'] = version['upstream']
+        vars['major'] = version['linux']['major']
         ret[1] = vars
         return ret
 

Modified: dists/trunk/linux-kbuild-2.6/debian/lib/python/debian_linux/debian.py
==============================================================================
--- dists/trunk/linux-kbuild-2.6/debian/lib/python/debian_linux/debian.py	(original)
+++ dists/trunk/linux-kbuild-2.6/debian/lib/python/debian_linux/debian.py	Sat Jan 27 20:11:52 2007
@@ -47,25 +47,39 @@
     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"""
 ^
 (?P<source>
-    (?P<parent>
-        \d+\.\d+\.\d+\+
-    )?
-    (?P<upstream>
-        (?P<version>
-            (?P<major>\d+\.\d+)
-            \.
-            \d+
-        )
-        (?:
-            -
-            (?P<modifier>
-                .+?
-            )
-        )?
+    (?P<version>
+        (?P<major>\d+\.\d+)
+        \.
+        \d+
     )
+    (?:
+        ~
+        (?P<modifier>
+            .+?
+        )
+    )?
     -
     (?P<debian>[^-]+)
 )
@@ -75,22 +89,24 @@
     if match is None:
         raise ValueError
     ret = match.groupdict()
-    if ret['parent'] is not None:
-        ret['source_upstream'] = ret['parent'] + ret['upstream']
+    if ret['modifier'] is not None:
+        ret['upstream'] = '%s-%s' % (ret['version'], ret['modifier'])
+        ret['source_upstream'] = '%s~%s' % (ret['version'], ret['modifier'])
     else:
-        ret['source_upstream'] = ret['upstream']
+        ret['upstream'] = ret['version']
+        ret['source_upstream'] = ret['version']
     return ret
 
 class package_description(object):
     __slots__ = "short", "long"
 
     def __init__(self, value = None):
+        self.long = []
         if value is not None:
-            self.short, long = value.split ("\n", 1)
-            self.long = long.split ("\n.\n")
+            self.short, long = value.split("\n", 1)
+            self.append(long)
         else:
             self.short = None
-            self.long = []
 
     def __str__(self):
         ret = self.short + '\n'
@@ -100,6 +116,11 @@
             pars.append('\n '.join(w.wrap(i)))
         return self.short + '\n ' + '\n .\n '.join(pars)
 
+    def append(self, str):
+        str = str.strip()
+        if str:
+            self.long.extend(str.split("\n.\n"))
+
 class package_relation(object):
     __slots__ = "name", "version", "arches"
 
@@ -107,16 +128,7 @@
 
     def __init__(self, value = None):
         if value is not None:
-            match = self._re.match(value)
-            if match is None:
-                raise RuntimeError, "Can't parse dependency %s" % value
-            match = match.groups()
-            self.name = match[0]
-            self.version = match[1]
-            if match[2] is not None:
-                self.arches = re.split('\s+', match[2])
-            else:
-                self.arches = []
+            self.parse(value)
         else:
             self.name = None
             self.version = None
@@ -130,11 +142,29 @@
             ret.extend([' [', ' '.join(self.arches), ']'])
         return ''.join(ret)
 
+    def config(self, entry):
+        if self.version is not None or self.arches:
+            return
+        value = entry.get(self.name, None)
+        if value is None:
+            return
+        self.parse(value)
+
+    def parse(self, value):
+        match = self._re.match(value)
+        if match is None:
+            raise RuntimeError, "Can't parse dependency %s" % value
+        match = match.groups()
+        self.name = match[0]
+        self.version = match[1]
+        if match[2] is not None:
+            self.arches = re.split('\s+', match[2])
+        else:
+            self.arches = []
+
 class package_relation_list(list):
     def __init__(self, value = None):
-        if isinstance(value, (list, tuple)):
-            self.extend(value)
-        elif value is not None:
+        if value is not None:
             self.extend(value)
 
     def __str__(self):
@@ -146,31 +176,37 @@
                 return i
         return None
 
+    def append(self, value):
+        if isinstance(value, basestring):
+            value = package_relation_group(value)
+        elif not isinstance(value, package_relation_group):
+            raise ValueError, "got %s" % type(value)
+        j = self._match(value)
+        if j:
+            j._update_arches(value)
+        else:
+            super(package_relation_list, self).append(value)
+
+    def config(self, entry):
+        for i in self:
+            i.config(entry)
+
     def extend(self, value):
         if isinstance(value, basestring):
-            value = [package_relation_group(j.strip()) for j in re.split(',', value.strip())]
+            value = [j.strip() for j in re.split(',', value.strip())]
+        elif not isinstance(value, (list, tuple)):
+            raise ValueError, "got %s" % type(value)
         for i in value:
-            if isinstance(i, basestring):
-                i = package_relation_group(i)
-            j = self._match(i)
-            if j:
-                j._update_arches(i)
-            else:
-                self.append(i)
+            self.append(i)
 
 class package_relation_group(list):
     def __init__(self, value = None):
-        if isinstance(value, package_relation_list):
+        if value is not None:
             self.extend(value)
-        elif value is not None:
-            self._extend(value)
 
     def __str__(self):
         return ' | '.join([str(i) for i in self])
 
-    def _extend(self, value):
-        self.extend([package_relation(j.strip()) for j in re.split('\|', value.strip())])
-
     def _match(self, value):
         for i, j in itertools.izip(self, value):
             if i.name != j.name or i.version != j.version:
@@ -184,6 +220,25 @@
                     if arch not in i.arches:
                         i.arches.append(arch)
 
+    def append(self, value):
+        if isinstance(value, basestring):
+            value = package_relation(value)
+        elif not isinstance(value, package_relation):
+            raise ValueError
+        super(package_relation_group, self).append(value)
+
+    def config(self, entry):
+        for i in self:
+            i.config(entry)
+
+    def extend(self, value):
+        if isinstance(value, basestring):
+            value = [j.strip() for j in re.split('\|', value.strip())]
+        elif not isinstance(value, (list, tuple)):
+            raise ValueError
+        for i in value:
+            self.append(i)
+
 class package(dict):
     _fields = utils.sorted_dict((
         ('Package', str),
@@ -202,7 +257,6 @@
         ('Suggests', package_relation_list),
         ('Replaces', package_relation_list),
         ('Conflicts', package_relation_list),
-        ('Reverse-Depends', package_relation_list), # Some sort of hack
         ('Description', package_description),
     ))
 
@@ -215,17 +269,29 @@
         super(package, self).__setitem__(key, value)
 
     def iterkeys(self):
+        keys = set(self.keys())
         for i in self._fields.iterkeys():
-            if self.has_key(i) and self[i]:
+            if self.has_key(i):
+                keys.remove(i)
                 yield i
+        for i in keys:
+            yield i
 
     def iteritems(self):
+        keys = set(self.keys())
         for i in self._fields.iterkeys():
-            if self.has_key(i) and self[i]:
+            if self.has_key(i):
+                keys.remove(i)
                 yield (i, self[i])
+        for i in keys:
+            yield (i, self[i])
 
     def itervalues(self):
+        keys = set(self.keys())
         for i in self._fields.iterkeys():
-            if self.has_key(i) and self[i]:
+            if self.has_key(i):
+                keys.remove(i)
                 yield self[i]
+        for i in keys:
+            yield self[i]
 



More information about the Kernel-svn-changes mailing list