CompatibilityMatrix::addAllHalsAsOptional: avoid duplicate versions.
Make a copy of the <hal> tag that contains only that <version>.
For example, if level=1 requires foo@1.0, and level=2 requires
foo@{1.0 OR 2.0}, then in the output matrix:
- 1.0 required
- 2.0 optional
(Previous behavior is
- 1.0 required
- {1.0 OR 2.0} optional
where 1.0 is stated twice.)
Test: build without duplicate versions
Change-Id: I7b4f32e6c131dd77f4308e7cd8b8b78a30a2169f
diff --git a/CompatibilityMatrix.cpp b/CompatibilityMatrix.cpp
index 7afaa9b..c43c483 100644
--- a/CompatibilityMatrix.cpp
+++ b/CompatibilityMatrix.cpp
@@ -108,8 +108,10 @@
std::tie(existingHal, existingVr) = getHalWithMajorVersion(name, vr.majorVer);
if (existingHal == nullptr) {
- halToAdd.optional = true;
- if (!add(std::move(halToAdd))) {
+ MatrixHal optionalHalToAdd(halToAdd);
+ optionalHalToAdd.optional = true;
+ optionalHalToAdd.versionRanges = {vr};
+ if (!add(std::move(optionalHalToAdd))) {
if (error) {
*error = "Cannot add HAL " + name + " for unknown reason.";
}