From: Mario Domenech Goulart Date: Tue, 12 May 2015 14:03:40 +0000 (-0300) Subject: native.bbclass: avoid unintended substring replacement when setting PROVIDES X-Git-Tag: 2015-10~1840 X-Git-Url: https://code.ossystems.io/gitweb?a=commitdiff_plain;h=c28291f1fb07fbc80275d9bceefed642c963e204;p=openembedded-core.git native.bbclass: avoid unintended substring replacement when setting PROVIDES The way native_virtclass_handler was implemented leaded to unintended substring replacements when setting PROVIDES for native providers, in case the original PROVIDES value contains providees with common substrings. Here's a practical case where the old behavior was problematic: the oracle-jse-jdk-x86-64 recipe provides both virtual/java and virtual/javac: Before: $ bitbake -e oracle-jse-jdk-x86-64-native | grep ^PROVIDES= PROVIDES="oracle-jse-jdk-x86-64-native virtual/java-native virtual/java-nativec" After: $ bitbake -e oracle-jse-jdk-x86-64-native | grep ^PROVIDES= PROVIDES="oracle-jse-jdk-x86-64-native virtual/java-native virtual/javac-native" Change-Id: I8186992dae58e37c2a2364586360ff9b7da9198f Signed-off-by: Mario Domenech Goulart Signed-off-by: Ross Burton --- diff --git a/meta/classes/native.bbclass b/meta/classes/native.bbclass index 5ca5c95b4d..1f8139bec8 100644 --- a/meta/classes/native.bbclass +++ b/meta/classes/native.bbclass @@ -151,12 +151,13 @@ python native_virtclass_handler () { map_dependencies("RREPLACES", e.data, pkg) provides = e.data.getVar("PROVIDES", True) + nprovides = [] for prov in provides.split(): if prov.find(pn) != -1: continue if not prov.endswith("-native"): - provides = provides.replace(prov, prov + "-native") - e.data.setVar("PROVIDES", provides) + nprovides.append(prov.replace(prov, prov + "-native")) + e.data.setVar("PROVIDES", ' '.join(nprovides)) e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + ":virtclass-native") }