Skip to contentSkip to conversation

classes/insane: add check for PN in OVERRIDES

PATCH In review Paul Eggleton 2 participants 2 messages May 9, 2013

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 classes/insane: add check for PN in OVERRIDES

If a recipe is named such that its PN value matches something already in OVERRIDES (such as when PN happens to be the same as MACHINE or DISTRO), it can have unexpected consequences. Assignments such as FILES_${PN} = "xyz" effectively turn into FILES = "xyz".

Implements [YOCTO #4288].

---
 meta/classes/insane.bbclass | 5 +++++
 1 file changed, 5 insertions(+)
meta/classes/insane.bbclass +5 -0
index 809aa45..c19af84 100644
@@ -904,6 +904,11 @@ python () {
     if d.getVar('do_stage', True) is not None:
         bb.fatal("Legacy staging found for %s as it has a do_stage function. This will need conversion to a do_install or often simply removal to work with OE-core" % d.getVar("FILE", True))
 
+    overrides = d.getVar('OVERRIDES', True).split(':')
+    pn = d.getVar('PN', True)
+    if pn in overrides:
+        bb.warn('Recipe %s has PN of "%s" which is in OVERRIDES, this can result in unexpected behaviour.' % (d.getVar("FILE", True), pn))
+
     issues = []
     if (d.getVar('PACKAGES', True) or "").split():
         for var in 'RDEPENDS', 'RRECOMMENDS', 'RSUGGESTS', 'RCONFLICTS', 'RPROVIDES', 'RREPLACES', 'FILES', 'pkg_preinst', 'pkg_postinst', 'pkg_prerm', 'pkg_postrm', 'ALLOW_EMPTY':
Signature · 1 line
1.8.1.2
#1 lore raw
Quoted 4 lines · Paul Eggleton

If a recipe is named such that its PN value matches something already in OVERRIDES (such as when PN happens to be the same as MACHINE or DISTRO), it can have unexpected consequences. Assignments such as FILES_${PN} = "xyz" effectively turn into FILES = "xyz".

I think this patch is a fine one, but it makes me wonder whether we should try to come up with a roadmap for changing the existing, non-namespaced OVERRIDES into something less prone to namespace collisions. As a first step, we could just add namespaced equivalents to the OVERRIDES in oe-core, i.e.:

MACHINEOVERRIDES ?= "${MACHINE}:machine-${MACHINE}"

etc, and then convert any usages of those within oe-core to use the new style. Then at some later date we can come up with a plan to remove the old ones.

p.