[kernel] r9081 - dists/trunk/firmware-nonfree/debian/bin
Bastian Blank
waldi at alioth.debian.org
Fri Jul 6 19:45:21 UTC 2007
Author: waldi
Date: Fri Jul 6 19:45:21 2007
New Revision: 9081
Log:
debian/bin/gencontrol.py
- Generate contents list.
- Find files themself.
Modified:
dists/trunk/firmware-nonfree/debian/bin/gencontrol.py
Modified: dists/trunk/firmware-nonfree/debian/bin/gencontrol.py
==============================================================================
--- dists/trunk/firmware-nonfree/debian/bin/gencontrol.py (original)
+++ dists/trunk/firmware-nonfree/debian/bin/gencontrol.py Fri Jul 6 19:45:21 2007
@@ -1,10 +1,41 @@
#!/usr/bin/env python2.4
-import sys
+import os, sys
sys.path.append(sys.argv[2]+ "/lib/python")
import debian_linux.config
from debian_linux.debian import *
from debian_linux.utils import *
+class PackageDescription(object):
+ __slots__ = "short", "long"
+
+ _wrap = wrap(width = 74, fix_sentence_endings = True).wrap
+
+ def __init__(self, value = None):
+ self.long = []
+ if value is not None:
+ self.short, long = value.split("\n", 1)
+ self.append(long)
+ else:
+ self.short = None
+
+ def __str__(self):
+ ret = self.short + '\n'
+ pars = []
+ for t in self.long:
+ pars.append('\n '.join(t))
+ return self.short + '\n ' + '\n .\n '.join(pars)
+
+ def append(self, str):
+ str = str.strip()
+ if str:
+ for t in str.split("\n.\n"):
+ self.long.append(self._wrap(t))
+
+ def append_pre(self, l):
+ self.long.append(l)
+
+package._fields['Description'] = PackageDescription
+
class packages_list(sorted_dict):
def append(self, package):
self[package['Package']] = package
@@ -15,7 +46,7 @@
class gencontrol(object):
def __init__(self, kernelversion):
- self.config = config_reader()
+ self.config = ConfigReader()
self.templates = templates()
self.kernelversion = kernelversion
@@ -54,27 +85,41 @@
makeflags['PACKAGE'] = package
- makeflags_string = ' '.join(["%s='%s'" % i for i in makeflags.iteritems()])
-
- cmds_binary_indep = []
- cmds_binary_indep.append(("$(MAKE) -f debian/rules.real binary-indep %s" % makeflags_string))
- makefile.append(("binary-indep::", cmds_binary_indep))
-
binary = self.templates["control.binary"]
binary_udeb = self.templates["control.binary.udeb"]
copyright = self.templates["copyright.binary"]
- packages_binary = self.process_packages(binary, vars)
- packages_binary_udeb = self.process_packages(binary_udeb, vars)
vars['license'] = file("%s/LICENSE" % package).read()
file("debian/firmware-%s.copyright" % package, 'w').write(self.substitute(copyright, vars))
- install = []
- install.append("%s /lib/firmware" % ' '.join(["%s/%s" % (package, i) for i in config_entry['files']]))
+ files_orig = set(config_entry['files'])
+ files = {}
+ for r in os.walk(package):
+ for t in r[2]:
+ t1 = t.rsplit('-', 1)
+ if len(t1) == 1:
+ t1.append("unknown")
+ if t1[0] in files_orig:
+ if t1[0] in files:
+ raise RuntimeError("Multiple files for %s" % t1[0])
+ files[t1[0]] = t, t1[1]
vars['files_real'] = ' '.join(["/lib/firmware/%s" % i for i in config_entry['files']])
+ files_desc = ["Contents:"]
+
+ for f in config_entry['files']:
+ f_in, version = files[f]
+ c = self.config.get(('base', package, f), {})
+ desc = c.get('desc', f)
+ files_desc.append("* %s, version %s" % (desc, version))
+
+ packages_binary = self.process_packages(binary, vars)
+ packages_binary_udeb = self.process_packages(binary_udeb, vars)
+
+ packages_binary[0]['Description'].append_pre(files_desc)
+
if 'initramfs-tools' in config_entry.get('support', []):
hook = self.templates['hook.initramfs-tools']
hook_filename = "debian/firmware-%s.hook.initramfs-tools" % package
@@ -85,12 +130,15 @@
file("debian/firmware-%s.dirs" % package, 'w').write("/usr/share/initramfs-tools/hooks\n")
- file("debian/firmware-%s.install" % package, 'w').write('\n'.join(install) + '\n')
- file("debian/firmware-%s-di.install" % package, 'w').write('\n'.join(install) + '\n')
-
packages.extend(packages_binary)
packages.extend(packages_binary_udeb)
+ makeflags_string = ' '.join(["%s='%s'" % i for i in makeflags.iteritems()])
+
+ cmds_binary_indep = []
+ cmds_binary_indep.append(("$(MAKE) -f debian/rules.real binary-indep %s" % makeflags_string))
+ makefile.append(("binary-indep::", cmds_binary_indep))
+
def process_relation(self, key, e, in_e, vars):
in_dep = in_e[key]
dep = package_relation_list()
@@ -110,8 +158,8 @@
in_desc = in_e['Description']
desc = in_desc.__class__()
desc.short = self.substitute(in_desc.short, vars)
- for i in in_desc.long:
- desc.long.append(self.substitute(i, vars))
+ for l in in_desc.long:
+ desc.long.append([self.substitute(i, vars) for i in l])
e['Description'] = desc
def process_package(self, in_entry, vars):
@@ -164,7 +212,7 @@
f.write("%s: %s\n" % (key, value))
f.write('\n')
-class config_reader(debian_linux.config.config_reader):
+class ConfigReader(debian_linux.config.config_reader):
schema = {
'files': debian_linux.config.schema_item_list(),
'packages': debian_linux.config.schema_item_list(),
@@ -172,10 +220,10 @@
}
def __init__(self):
- super(config_reader, self).__init__(['.'])
- self._read_base()
+ super(ConfigReader, self).__init__(['.'])
+ self._readBase()
- def _read_base(self):
+ def _readBase(self):
files = self._get_files(self.config_name)
config = debian_linux.config.config_parser(self.schema, files)
@@ -190,20 +238,20 @@
self[tuple(real)] = config[section]
for package in packages:
- self._read_package(package)
+ self._readPackage(package)
- def _read_package(self, package):
+ def _readPackage(self, package):
files = self._get_files("%s/%s" % (package, self.config_name))
config = debian_linux.config.config_parser(self.schema, files)
+ self['base', package] = config['base',]
+
+ files = config['base',].get('files', [])
+
for section in iter(config):
- real = list(section)
- real[0:0] = [real.pop()]
- real[1:1] = [package]
- real = tuple(real)
- s = self.get(real, {})
- s.update(config[section])
- self[tuple(real)] = s
+ real = ['_'.join(section)]
+ real[0:0] = ['base', package]
+ self[tuple(real)] = config[section]
if __name__ == '__main__':
gencontrol(sys.argv[1])()
More information about the Kernel-svn-changes
mailing list