[linux-tools] 02/11: debian/bin, debian/control, debian/lib/python, debian/rules: Use Python 3

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Fri Sep 25 23:40:36 UTC 2015


This is an automated email from the git hooks/post-receive script.

benh pushed a commit to branch master
in repository linux-tools.

commit 277d4945c78ae2474b2b1967d43d6ba79107dda0
Author: Ben Hutchings <ben at decadent.org.uk>
Date:   Fri Sep 25 19:26:03 2015 +0100

    debian/bin,debian/control,debian/lib/python,debian/rules: Use Python 3
    
    debian/lib/python: Sync with linux package
---
 debian/bin/gencontrol.py                     |   4 +-
 debian/bin/genorig.py                        |   4 +-
 debian/changelog                             |   4 +
 debian/lib/python/debian_linux/config.py     |  36 ++++++---
 debian/lib/python/debian_linux/debian.py     | 109 +++++++++++++++------------
 debian/lib/python/debian_linux/gencontrol.py |  32 ++++----
 debian/lib/python/debian_linux/utils.py      |  19 ++---
 debian/rules                                 |   2 +-
 debian/templates/control.source.in           |   2 +-
 9 files changed, 116 insertions(+), 96 deletions(-)

diff --git a/debian/bin/gencontrol.py b/debian/bin/gencontrol.py
index d67f7d5..a26d0ee 100755
--- a/debian/bin/gencontrol.py
+++ b/debian/bin/gencontrol.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import sys
 sys.path.append("debian/lib/python")
@@ -21,7 +21,7 @@ class gencontrol(Gencontrol):
         self.do_source(packages)
         self.do_main(packages, makefile)
 
-        self.write_control(packages.itervalues())
+        self.write_control(packages.values())
         self.write_makefile(makefile)
 
     def do_source(self, packages):
diff --git a/debian/bin/genorig.py b/debian/bin/genorig.py
index 6c4e876..b072e22 100755
--- a/debian/bin/genorig.py
+++ b/debian/bin/genorig.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import sys
 sys.path.append("debian/lib/python")
@@ -186,7 +186,7 @@ class Main(object):
         try:
             if os.spawnv(os.P_WAIT, '/bin/sh', ['sh', '-c', ' '.join(cmdline)]):
                 raise RuntimeError("Can't patch source")
-            os.chmod(out, 0644)
+            os.chmod(out, 0o644)
         except:
             try:
                 os.unlink(out)
diff --git a/debian/changelog b/debian/changelog
index 184c181..885324d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,10 @@ linux-tools (4.2-1) UNRELEASED; urgency=medium
 
   * New upstream release
 
+  [ Ben Hutchings ]
+  * debian/bin,debian/control,debian/lib/python,debian/rules: Use Python 3
+    - debian/lib/python: Sync with linux package
+
  -- Ben Hutchings <ben at decadent.org.uk>  Fri, 25 Sep 2015 18:42:20 +0100
 
 linux-tools (4.2~rc7-1~exp1) experimental; urgency=medium
diff --git a/debian/lib/python/debian_linux/config.py b/debian/lib/python/debian_linux/config.py
index 17211dd..79ef425 100644
--- a/debian/lib/python/debian_linux/config.py
+++ b/debian/lib/python/debian_linux/config.py
@@ -1,9 +1,14 @@
 import os
 import os.path
+import pickle
 import re
 import sys
 import textwrap
-import cPickle
+
+try:
+    from configparser import RawConfigParser
+except ImportError:
+    from ConfigParser import RawConfigParser
 
 __all__ = [
     'ConfigCoreDump',
@@ -22,6 +27,14 @@ class SchemaItemBoolean(object):
         raise Error
 
 
+class SchemaItemInteger(object):
+    def __call__(self, i):
+        try:
+            return int(i.strip(), 0)
+        except ValueError:
+            raise Error
+
+
 class SchemaItemList(object):
     def __init__(self, type="\s+"):
         self.type = type
@@ -78,12 +91,12 @@ class ConfigCore(dict):
         return ret
 
     def dump(self, fp):
-        cPickle.dump(self, fp, 0)
+        pickle.dump(self, fp, 0)
 
 
 class ConfigCoreDump(object):
     def __new__(self, fp):
-        return cPickle.load(fp)
+        return pickle.load(fp)
 
 
 class ConfigCoreHierarchy(object):
@@ -98,7 +111,7 @@ class ConfigCoreHierarchy(object):
 
     def __new__(cls, schema, dirs=[]):
         schema_complete = cls.schema_base.copy()
-        for key, value in schema.iteritems():
+        for key, value in schema.items():
             schema_complete.setdefault(key, {}).update(value)
         return cls.Reader(dirs, schema_complete)()
 
@@ -195,7 +208,6 @@ class ConfigParser(object):
     def __init__(self, schemas):
         self.schemas = schemas
 
-        from ConfigParser import RawConfigParser
         self._config = config = RawConfigParser()
 
     def __getitem__(self, key):
@@ -225,7 +237,7 @@ class ConfigParser(object):
 
     def _convert_one(self, schema, data):
         ret = {}
-        for key, value in data.iteritems():
+        for key, value in data.items():
             if key in schema:
                 value = schema[key](value)
             ret[key] = value
@@ -241,9 +253,9 @@ class ConfigParser(object):
 if __name__ == '__main__':
     import sys
     sys.path.append('debian/lib/python')
-    config = ConfigCoreDump(open('debian/config.defines.dump'))
-    for section, items in sorted(config.iteritems()):
-        print u"[%s]" % (section,)
-        for item, value in sorted(items.iteritems()):
-            print u"%s: %s" % (item, value)
-        print
+    config = ConfigCoreDump(open('debian/config.defines.dump', 'rb'))
+    for section, items in sorted(config.items(), key=lambda a:tuple(i or '' for i in a[0])):
+        print(u"[%s]" % (section,))
+        for item, value in sorted(items.items()):
+            print(u"%s: %s" % (item, value))
+        print()
diff --git a/debian/lib/python/debian_linux/debian.py b/debian/lib/python/debian_linux/debian.py
index a577526..00db2c3 100644
--- a/debian/lib/python/debian_linux/debian.py
+++ b/debian/lib/python/debian_linux/debian.py
@@ -1,5 +1,4 @@
 import collections
-import itertools
 import os.path
 import re
 
@@ -35,7 +34,7 @@ class Changelog(list):
     def __init__(self, dir='', version=None):
         if version is None:
             version = Version
-        f = file(os.path.join(dir, "debian/changelog"))
+        f = open(os.path.join(dir, "debian/changelog"), encoding="UTF-8")
         while True:
             line = f.readline()
             if not line:
@@ -53,7 +52,7 @@ class Changelog(list):
 
 
 class Version(object):
-    _version_rules = ur"""
+    _version_rules = r"""
 ^
 (?:
     (?P<epoch>
@@ -82,7 +81,7 @@ $
         self.upstream = match.group("upstream")
         self.revision = match.group("revision")
 
-    def __unicode__(self):
+    def __str__(self):
         return self.complete
 
     @property
@@ -105,14 +104,15 @@ $
 
 
 class VersionLinux(Version):
-    _version_linux_rules = ur"""
+    _version_linux_rules = r"""
 ^
 (?P<version>
     \d+\.\d+
 )
 (?P<update>
-    \.\d+
-)?
+    (?:\.\d+)?
+    (?:-[a-z]+\d+)?
+)
 (?:
     ~
     (?P<modifier>
@@ -130,13 +130,20 @@ class VersionLinux(Version):
 (\.\d+)?
 (?:
     (?P<revision_experimental>
-        ~experimental\.\d+
+        ~exp\d+
     )
     |
+    (?P<revision_security>
+        [~+]deb\d+u\d+
+    )?
+    (?P<revision_backports>
+        ~bpo\d+\+\d+
+    )?
+    |
     (?P<revision_other>
         [^-]+
     )
-)?
+)
 $
 """
     _version_linux_re = re.compile(_version_linux_rules, re.X)
@@ -151,12 +158,14 @@ $
         self.linux_version = d['version']
         if d['modifier'] is not None:
             assert not d['update']
-            self.linux_upstream = u'-'.join((d['version'], d['modifier']))
+            self.linux_upstream = '-'.join((d['version'], d['modifier']))
         else:
             self.linux_upstream = d['version']
-        self.linux_upstream_full = self.linux_upstream + (d['update'] or u'')
+        self.linux_upstream_full = self.linux_upstream + d['update']
         self.linux_dfsg = d['dfsg']
         self.linux_revision_experimental = match.group('revision_experimental') and True
+        self.linux_revision_security = match.group('revision_security') and True
+        self.linux_revision_backports = match.group('revision_backports') and True
         self.linux_revision_other = match.group('revision_other') and True
 
 
@@ -177,8 +186,8 @@ class PackageArchitecture(collections.MutableSet):
     def __len__(self):
         return self._data.__len__()
 
-    def __unicode__(self):
-        return u' '.join(sorted(self))
+    def __str__(self):
+        return ' '.join(sorted(self))
 
     def add(self, value):
         self._data.add(value)
@@ -187,7 +196,7 @@ class PackageArchitecture(collections.MutableSet):
         self._data.discard(value)
 
     def extend(self, value):
-        if isinstance(value, basestring):
+        if isinstance(value, str):
             for i in re.split('\s', value.strip()):
                 self.add(i)
         else:
@@ -205,14 +214,14 @@ class PackageDescription(object):
             self.append(long)
             self.append_short(short)
 
-    def __unicode__(self):
+    def __str__(self):
         wrap = utils.TextWrapper(width=74, fix_sentence_endings=True).wrap
-        short = u', '.join(self.short)
+        short = ', '.join(self.short)
         long_pars = []
         for i in self.long:
             long_pars.append(wrap(i))
-        long = u'\n .\n '.join([u'\n '.join(i) for i in long_pars])
-        return short + u'\n ' + long
+        long = '\n .\n '.join(['\n '.join(i) for i in long_pars])
+        return short + '\n ' + long
 
     def append(self, str):
         str = str.strip()
@@ -237,8 +246,8 @@ class PackageRelation(list):
         if value:
             self.extend(value, override_arches)
 
-    def __unicode__(self):
-        return u', '.join((unicode(i) for i in self))
+    def __str__(self):
+        return ', '.join(str(i) for i in self)
 
     def _search_value(self, value):
         for i in self:
@@ -247,7 +256,7 @@ class PackageRelation(list):
         return None
 
     def append(self, value, override_arches=None):
-        if isinstance(value, basestring):
+        if isinstance(value, str):
             value = PackageRelationGroup(value, override_arches)
         elif not isinstance(value, PackageRelationGroup):
             raise ValueError(u"got %s" % type(value))
@@ -258,8 +267,8 @@ class PackageRelation(list):
             super(PackageRelation, self).append(value)
 
     def extend(self, value, override_arches=None):
-        if isinstance(value, basestring):
-            value = (j.strip() for j in re.split(u',', value.strip()))
+        if isinstance(value, str):
+            value = (j.strip() for j in re.split(',', value.strip()))
         for i in value:
             self.append(i, override_arches)
 
@@ -269,31 +278,31 @@ class PackageRelationGroup(list):
         if value:
             self.extend(value, override_arches)
 
-    def __unicode__(self):
-        return u' | '.join((unicode(i) for i in self))
+    def __str__(self):
+        return ' | '.join(str(i) for i in self)
 
     def _search_value(self, value):
-        for i, j in itertools.izip(self, value):
+        for i, j in zip(self, value):
             if i.name != j.name or i.version != j.version:
                 return None
         return self
 
     def _update_arches(self, value):
-        for i, j in itertools.izip(self, value):
+        for i, j in zip(self, value):
             if i.arches:
                 for arch in j.arches:
                     if arch not in i.arches:
                         i.arches.append(arch)
 
     def append(self, value, override_arches=None):
-        if isinstance(value, basestring):
+        if isinstance(value, str):
             value = PackageRelationEntry(value, override_arches)
         elif not isinstance(value, PackageRelationEntry):
             raise ValueError
         super(PackageRelationGroup, self).append(value)
 
     def extend(self, value, override_arches=None):
-        if isinstance(value, basestring):
+        if isinstance(value, str):
             value = (j.strip() for j in re.split('\|', value.strip()))
         for i in value:
             self.append(i, override_arches)
@@ -313,12 +322,12 @@ class PackageRelationEntry(object):
         OP_GT = 6
 
         operators = {
-                u'<<': OP_LT,
-                u'<=': OP_LE,
-                u'=': OP_EQ,
-                u'!=': OP_NE,
-                u'>=': OP_GE,
-                u'>>': OP_GT,
+                '<<': OP_LT,
+                '<=': OP_LE,
+                '=': OP_EQ,
+                '!=': OP_NE,
+                '>=': OP_GE,
+                '>>': OP_GT,
         }
 
         operators_neg = {
@@ -330,7 +339,7 @@ class PackageRelationEntry(object):
                 OP_GT: OP_LE,
         }
 
-        operators_text = dict([(b, a) for a, b in operators.iteritems()])
+        operators_text = dict((b, a) for a, b in operators.items())
 
         __slots__ = '_op',
 
@@ -340,11 +349,11 @@ class PackageRelationEntry(object):
         def __neg__(self):
             return self.__class__(self.operators_text[self.operators_neg[self._op]])
 
-        def __unicode__(self):
+        def __str__(self):
             return self.operators_text[self._op]
 
     def __init__(self, value=None, override_arches=None):
-        if not isinstance(value, basestring):
+        if not isinstance(value, str):
             raise ValueError
 
         self.parse(value)
@@ -352,13 +361,13 @@ class PackageRelationEntry(object):
         if override_arches:
             self.arches = list(override_arches)
 
-    def __unicode__(self):
+    def __str__(self):
         ret = [self.name]
         if self.operator is not None and self.version is not None:
-            ret.extend((u' (', unicode(self.operator), u' ', self.version, u')'))
+            ret.extend((' (', str(self.operator), ' ', self.version, ')'))
         if self.arches:
-            ret.extend((u' [', u' '.join(self.arches), u']'))
-        return u''.join(ret)
+            ret.extend((' [', ' '.join(self.arches), ']'))
+        return ''.join(ret)
 
     def parse(self, value):
         match = self._re.match(value)
@@ -379,14 +388,14 @@ class PackageRelationEntry(object):
 
 class Package(dict):
     _fields = collections.OrderedDict((
-        ('Package', unicode),
-        ('Source', unicode),
+        ('Package', str),
+        ('Source', str),
         ('Architecture', PackageArchitecture),
-        ('Section', unicode),
-        ('Priority', unicode),
-        ('Maintainer', unicode),
-        ('Uploaders', unicode),
-        ('Standards-Version', unicode),
+        ('Section', str),
+        ('Priority', str),
+        ('Maintainer', str),
+        ('Uploaders', str),
+        ('Standards-Version', str),
         ('Build-Depends', PackageRelation),
         ('Build-Depends-Indep', PackageRelation),
         ('Provides', PackageRelation),
@@ -411,7 +420,7 @@ class Package(dict):
 
     def iterkeys(self):
         keys = set(self.keys())
-        for i in self._fields.iterkeys():
+        for i in self._fields.keys():
             if i in self:
                 keys.remove(i)
                 yield i
diff --git a/debian/lib/python/debian_linux/gencontrol.py b/debian/lib/python/debian_linux/gencontrol.py
index aac564c..ec139ff 100644
--- a/debian/lib/python/debian_linux/gencontrol.py
+++ b/debian/lib/python/debian_linux/gencontrol.py
@@ -29,9 +29,7 @@ class Makefile(object):
                     self.rules[i] = self.Rule(i)
 
     def write(self, out):
-        r = self.rules.keys()
-        r.sort()
-        for i in r:
+        for i in sorted(self.rules.keys()):
             self.rules[i].write(out)
 
     class Rule(object):
@@ -70,7 +68,7 @@ class MakeFlags(dict):
         return "%s(%s)" % (self.__class__.__name__, repr)
 
     def __str__(self):
-        return ' '.join(["%s='%s'" % i for i in sorted(self.iteritems())])
+        return ' '.join("%s='%s'" % i for i in sorted(self.items()))
 
     def copy(self):
         return self.__class__(super(MakeFlags, self).copy())
@@ -129,25 +127,21 @@ class Gencontrol(object):
         if templates_extra is None:
             return
 
-        packages.extend(self.process_packages(templates_extra, {}))
+        packages_extra = self.process_packages(templates_extra, self.vars)
+        packages.extend(packages_extra)
         extra_arches = {}
-        for package in templates_extra:
+        for package in packages_extra:
             arches = package['Architecture']
             for arch in arches:
                 i = extra_arches.get(arch, [])
                 i.append(package)
                 extra_arches[arch] = i
-        archs = extra_arches.keys()
-        archs.sort()
-        for arch in archs:
+        for arch in sorted(extra_arches.keys()):
             cmds = []
             for i in extra_arches[arch]:
-                tmp = []
-                if 'X-Version-Overwrite-Epoch' in i:
-                        tmp.append("-v1:%s" % self.version['source'])
-                cmds.append("$(MAKE) -f debian/rules.real install-dummy DH_OPTIONS='-p%s' GENCONTROL_ARGS='%s'" % (i['Package'], ' '.join(tmp)))
-            makefile.add('binary-arch_%s' % arch['binary-arch_%s_extra' % arch])
-            makefile.add("binary-arch_%s_extra" % arch, cmds=cmds)
+                cmds.append("$(MAKE) -f debian/rules.real install-dummy ARCH='%s' DH_OPTIONS='-p%s'" % (arch, i['Package']))
+            makefile.add('binary-arch_%s' % arch, ['binary-arch_%s_extra' % arch])
+            makefile.add("binary-arch_%s_extra" % arch, cmds = cmds)
 
     def do_arch(self, packages, makefile, arch, vars, makeflags, extra):
         vars['arch'] = arch
@@ -280,10 +274,10 @@ class Gencontrol(object):
         def subst(match):
             return vars[match.group(1)]
 
-        return re.sub(r'@([-_a-z]+)@', subst, unicode(s))
+        return re.sub(r'@([-_a-z0-9]+)@', subst, str(s))
 
     def write(self, packages, makefile):
-        self.write_control(packages.itervalues())
+        self.write_control(packages.values())
         self.write_makefile(makefile)
 
     def write_config(self):
@@ -295,7 +289,7 @@ class Gencontrol(object):
         self.write_rfc822(codecs.open("debian/control", 'w', 'utf-8'), list)
 
     def write_makefile(self, makefile):
-        f = file("debian/rules.gen", 'w')
+        f = open("debian/rules.gen", 'w')
         makefile.write(f)
         f.close()
 
@@ -303,4 +297,4 @@ class Gencontrol(object):
         for entry in list:
             for key, value in entry.iteritems():
                 f.write(u"%s: %s\n" % (key, value))
-            f.write(u'\n')
+            f.write('\n')
diff --git a/debian/lib/python/debian_linux/utils.py b/debian/lib/python/debian_linux/utils.py
index 563104e..5f34b6e 100644
--- a/debian/lib/python/debian_linux/utils.py
+++ b/debian/lib/python/debian_linux/utils.py
@@ -19,13 +19,14 @@ class Templates(object):
     def _read(self, name):
         prefix, id = name.split('.', 1)
 
-        for dir in self.dirs:
-            filename = "%s/%s.in" % (dir, name)
-            if os.path.exists(filename):
-                f = codecs.open(filename, 'r', 'utf-8')
-                if prefix == 'control':
-                    return read_control(f)
-                return f.read()
+        for suffix in ['.in', '']:
+            for dir in self.dirs:
+                filename = "%s/%s%s" % (dir, name, suffix)
+                if os.path.exists(filename):
+                    f = codecs.open(filename, 'r', 'utf-8')
+                    if prefix == 'control':
+                        return read_control(f)
+                    return f.read()
 
     def get(self, key, default=None):
         if key in self._cache:
@@ -57,11 +58,11 @@ def read_control(f):
                 break
             if line[0] in ' \t':
                 if not last:
-                    raise ValueError(u'Continuation line seen before first header')
+                    raise ValueError('Continuation line seen before first header')
                 lines.append(line.lstrip())
                 continue
             if last:
-                e[last] = u'\n'.join(lines)
+                e[last] = '\n'.join(lines)
             i = line.find(':')
             if i < 0:
                 raise ValueError(u"Not a header, not a continuation: ``%s''" % line)
diff --git a/debian/rules b/debian/rules
index e873488..b01412c 100755
--- a/debian/rules
+++ b/debian/rules
@@ -41,7 +41,7 @@ maintainerclean:
 clean: debian/control
 	dh_testdir
 	make -C $(BUILD_DIR) clean top_srcdir=$(CURDIR)
-	rm -rf $(STAMPS_DIR) debian/lib/python/debian_linux/*.pyc
+	rm -rf $(STAMPS_DIR) debian/lib/python/debian_linux/__pycache__
 	dh_clean
 
 binary-indep:
diff --git a/debian/templates/control.source.in b/debian/templates/control.source.in
index 74af0c3..6837272 100644
--- a/debian/templates/control.source.in
+++ b/debian/templates/control.source.in
@@ -5,7 +5,7 @@ Maintainer: Debian Kernel Team <debian-kernel at lists.debian.org>
 Uploaders: Bastian Blank <waldi at debian.org>, Ben Hutchings <ben at decadent.org.uk>, Jonathan Nieder <jrnieder at gmail.com>
 Standards-Version: 3.9.4
 Build-Depends:
- debhelper (>> 7), python,
+ debhelper (>> 7), python3,
  asciidoc, bison, flex, gcc-multilib [amd64 ppc64 s390x sparc64], libaudit-dev, libdw-dev, libelf-dev, libiberty-dev | binutils-dev (<< 2.23.91.20131123-1), libnewt-dev, libnuma-dev [amd64 arm64 hppa i386 mips mips64 mips64el mipsel powerpc powerpcspe ppc64 ppc64el sparc x32], libperl-dev, libunwind8-dev [amd64 armel armhf arm64 i386], python-dev, xmlto,
  autoconf, automake, libtool, libglib2.0-dev, libudev-dev, libwrap0-dev,
  dh-systemd

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/linux-tools.git



More information about the Kernel-svn-changes mailing list