diff options
| -rw-r--r-- | meta/classes/base.bbclass | 10 | ||||
| -rw-r--r-- | meta/classes/blacklist.bbclass | 25 |
2 files changed, 25 insertions, 10 deletions
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index 99748796e6..98b823e7eb 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass | |||
| @@ -141,7 +141,6 @@ def pkgarch_mapping(d): | |||
| 141 | def preferred_ml_updates(d): | 141 | def preferred_ml_updates(d): |
| 142 | # If any PREFERRED_PROVIDER or PREFERRED_VERSION are set, | 142 | # If any PREFERRED_PROVIDER or PREFERRED_VERSION are set, |
| 143 | # we need to mirror these variables in the multilib case; | 143 | # we need to mirror these variables in the multilib case; |
| 144 | # likewise the PNBLACKLIST flags. | ||
| 145 | multilibs = d.getVar('MULTILIBS', True) or "" | 144 | multilibs = d.getVar('MULTILIBS', True) or "" |
| 146 | if not multilibs: | 145 | if not multilibs: |
| 147 | return | 146 | return |
| @@ -154,21 +153,12 @@ def preferred_ml_updates(d): | |||
| 154 | 153 | ||
| 155 | versions = [] | 154 | versions = [] |
| 156 | providers = [] | 155 | providers = [] |
| 157 | blacklists = d.getVarFlags('PNBLACKLIST') or {} | ||
| 158 | for v in d.keys(): | 156 | for v in d.keys(): |
| 159 | if v.startswith("PREFERRED_VERSION_"): | 157 | if v.startswith("PREFERRED_VERSION_"): |
| 160 | versions.append(v) | 158 | versions.append(v) |
| 161 | if v.startswith("PREFERRED_PROVIDER_"): | 159 | if v.startswith("PREFERRED_PROVIDER_"): |
| 162 | providers.append(v) | 160 | providers.append(v) |
| 163 | 161 | ||
| 164 | for pkg, reason in blacklists.items(): | ||
| 165 | if pkg.endswith(("-native", "-crosssdk")) or pkg.startswith(("nativesdk-", "virtual/nativesdk-")) or 'cross-canadian' in pkg: | ||
| 166 | continue | ||
| 167 | for p in prefixes: | ||
| 168 | newpkg = p + "-" + pkg | ||
| 169 | if not d.getVarFlag('PNBLACKLIST', newpkg, True): | ||
| 170 | d.setVarFlag('PNBLACKLIST', newpkg, reason) | ||
| 171 | |||
| 172 | for v in versions: | 162 | for v in versions: |
| 173 | val = d.getVar(v, False) | 163 | val = d.getVar(v, False) |
| 174 | pkg = v.replace("PREFERRED_VERSION_", "") | 164 | pkg = v.replace("PREFERRED_VERSION_", "") |
diff --git a/meta/classes/blacklist.bbclass b/meta/classes/blacklist.bbclass index 75abd99c29..a0141a82c0 100644 --- a/meta/classes/blacklist.bbclass +++ b/meta/classes/blacklist.bbclass | |||
| @@ -12,6 +12,31 @@ | |||
| 12 | # PNBLACKLIST[pn] = "message" | 12 | # PNBLACKLIST[pn] = "message" |
| 13 | # | 13 | # |
| 14 | 14 | ||
| 15 | # Cope with PNBLACKLIST flags for multilib case | ||
| 16 | addhandler blacklist_multilib_eventhandler | ||
| 17 | blacklist_multilib_eventhandler[eventmask] = "bb.event.ConfigParsed" | ||
| 18 | python blacklist_multilib_eventhandler() { | ||
| 19 | multilibs = e.data.getVar('MULTILIBS', True) | ||
| 20 | if not multilibs: | ||
| 21 | return | ||
| 22 | |||
| 23 | # this block has been copied from base.bbclass so keep it in sync | ||
| 24 | prefixes = [] | ||
| 25 | for ext in multilibs.split(): | ||
| 26 | eext = ext.split(':') | ||
| 27 | if len(eext) > 1 and eext[0] == 'multilib': | ||
| 28 | prefixes.append(eext[1]) | ||
| 29 | |||
| 30 | blacklists = e.data.getVarFlags('PNBLACKLIST') or {} | ||
| 31 | for pkg, reason in blacklists.items(): | ||
| 32 | if pkg.endswith(("-native", "-crosssdk")) or pkg.startswith(("nativesdk-", "virtual/nativesdk-")) or 'cross-canadian' in pkg: | ||
| 33 | continue | ||
| 34 | for p in prefixes: | ||
| 35 | newpkg = p + "-" + pkg | ||
| 36 | if not e.data.getVarFlag('PNBLACKLIST', newpkg, True): | ||
| 37 | e.data.setVarFlag('PNBLACKLIST', newpkg, reason) | ||
| 38 | } | ||
| 39 | |||
| 15 | python () { | 40 | python () { |
| 16 | blacklist = d.getVarFlag('PNBLACKLIST', d.getVar('PN', True), True) | 41 | blacklist = d.getVarFlag('PNBLACKLIST', d.getVar('PN', True), True) |
| 17 | 42 | ||
