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 <mario@ossystems.com.br>
Signed-off-by: Ross Burton <ross.burton@intel.com>
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")
}