angstrom: prefer the git version of tslib
[openembedded.git] / classes / package_dbg.bbclass
blob24040f4bed737773ed39372cb5e39d955d5be809
1 # package_dbg.bbclass: populate -dbg versions for each package in PACKAGES
3 # Copyright (c) 2009 MontaVista Software, Inc.  All rights reserved.
5 # Released under the MIT license (see LICENSE.MIT for the terms)
8 inherit package
11 PACKAGE_DBG_DESC = "Debugging files for %s"
12 PACKAGE_DBG_EXCLUDE = "${PN}-locale* ${PN}-doc ${PN}-dev *-dbg"
15 def add_dbg_packages(d):
16     from fnmatch import fnmatch
18     packages = d.getVar("PACKAGES", True).split()
19     excludes = d.getVar("PACKAGE_DBG_EXCLUDE", True).split()
21     for pkg in tuple(packages):
22         if any(fnmatch(pkg, excluded) for excluded in excludes):
23             continue
25         dbgpkg = "%s-dbg" % pkg
26         if not dbgpkg in packages:
27             packages.insert(0, dbgpkg)
29     d.setVar("PACKAGES", " ".join(packages))
32 # Add the -dbg packages to PACKAGES
33 python () {
34     from bb.data import inherits_class as inherits
36     # Task handles its own -dbg versions of its packages at the moment
37     if not inherits("task", d):
38         dynpkgs = d.getVar("PACKAGES_DYNAMIC", True).split()
39         dynpkgs += ["%s-dbg" % dyn for dyn in dynpkgs]
40         d.setVar("PACKAGES_DYNAMIC", " ".join(dynpkgs))
42         add_dbg_packages(d)
45 python populate_packages_prepend () {
46         from bb.data import inherits_class as inherits
48         if not inherits("task", d):
49                 bb.build.exec_func("package_do_dbg", d)
52 # Populate the -dbg subpackage metadata
53 python package_do_dbg() {
54     """ Populate the -dbg subpackage metadata. """
56     import oe.package
57     from os.path import join, basename, dirname
59     def setVar(key, val):
60         if d.getVar(key, val) is None:
61             d.setVar(key, val)
63     add_dbg_packages(d)
64     packages = d.getVar("PACKAGES", True).split()
65     desc = d.getVar("PACKAGE_DBG_DESC", True)
67     done = []
68     for pkgname in tuple(packages):
69         files = tuple(oe.package.files(pkgname, d))
70         dbg = [join(dirname(file), ".debug", basename(file))
71                for file in files
72                if not file in done]
73         done.extend(files)
75         if dbg:
76             setVar("FILES_%s-dbg" % pkgname, " ".join(dbg))
77             setVar("DESCRIPTION_%s-dbg" % pkgname, desc % pkgname)
78             setVar("RDEPENDS_%s-dbg" % pkgname, pkgname)
79         else:
80             try:
81                 packages.remove("%s-dbg" % pkgname)
82             except ValueError:
83                 pass
84     d.setVar("PACKAGES", " ".join(packages))