summaryrefslogtreecommitdiff
path: root/meta/classes/blacklist.bbclass
blob: 39b3f828c61cd1949a06bda4efb56d01f00543cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# anonymous support class from originally from angstrom
# 
# To use the blacklist, a distribution should include this
# class in the INHERIT_DISTRO
#
# No longer use ANGSTROM_BLACKLIST, instead use a table of
# recipes in PNBLACKLIST
#
# Features:
#
# * To add a package to the blacklist, set:
#   PNBLACKLIST[pn] = "message"
#

# Cope with PNBLACKLIST flags for multilib case
addhandler blacklist_multilib_eventhandler
blacklist_multilib_eventhandler[eventmask] = "bb.event.ConfigParsed"
python blacklist_multilib_eventhandler() {
    multilibs = e.data.getVar('MULTILIBS', True)
    if not multilibs:
        return

    # this block has been copied from base.bbclass so keep it in sync
    prefixes = []
    for ext in multilibs.split():
        eext = ext.split(':')
        if len(eext) > 1 and eext[0] == 'multilib':
            prefixes.append(eext[1])

    blacklists = e.data.getVarFlags('PNBLACKLIST') or {}
    # Remove PNBLACKLIST[doc]
    blacklists.pop('doc', None)
    for pkg, reason in blacklists.items():
        if pkg.endswith(("-native", "-crosssdk")) or pkg.startswith(("nativesdk-", "virtual/nativesdk-")) or 'cross-canadian' in pkg:
            continue
        for p in prefixes:
            newpkg = p + "-" + pkg
            if not e.data.getVarFlag('PNBLACKLIST', newpkg, True):
                e.data.setVarFlag('PNBLACKLIST', newpkg, reason)
}

python () {
    blacklist = d.getVarFlag('PNBLACKLIST', d.getVar('PN', True), True)

    if blacklist:
        raise bb.parse.SkipPackage("Recipe is blacklisted: %s" % (blacklist))
}