summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'parse_xml.cpp')
-rw-r--r--parse_xml.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/parse_xml.cpp b/parse_xml.cpp
index f524fb8..3e495fd 100644
--- a/parse_xml.cpp
+++ b/parse_xml.cpp
@@ -887,6 +887,21 @@ struct CompatibilityMatrixConverter : public XmlNodeConverter<CompatibilityMatri
887 !parseOptionalChild(root, avbConverter, {}, &object->framework.mAvbMetaVersion)) { 887 !parseOptionalChild(root, avbConverter, {}, &object->framework.mAvbMetaVersion)) {
888 return false; 888 return false;
889 } 889 }
890
891 std::set<Version> seenKernelVersions;
892 for (const auto& kernel : object->framework.mKernels) {
893 Version minLts(kernel.minLts().version, kernel.minLts().majorRev);
894 if (seenKernelVersions.find(minLts) != seenKernelVersions.end()) {
895 continue;
896 }
897 if (!kernel.conditions().empty()) {
898 this->mLastError = "First <kernel> for version " + to_string(minLts) +
899 " must have empty <conditions> for backwards compatibility.";
900 return false;
901 }
902 seenKernelVersions.insert(minLts);
903 }
904
890 } else if (object->mType == SchemaType::DEVICE) { 905 } else if (object->mType == SchemaType::DEVICE) {
891 // <vndk> can be missing because it can be determined at build time, not hard-coded 906 // <vndk> can be missing because it can be determined at build time, not hard-coded
892 // in the XML file. 907 // in the XML file.