Framework matrix set from PLATFORM_SEPOLICY_*
Test: libvintf_test
Test: m framework_compatibility_matrix.xml -j
Bug: 67920434
Change-Id: I37046c2c97ec7f073f02196008de64efab30a105
diff --git a/AssembleVintf.cpp b/AssembleVintf.cpp
index 07ce9f8..96e8537 100644
--- a/AssembleVintf.cpp
+++ b/AssembleVintf.cpp
@@ -472,14 +472,28 @@
return false;
}
- // set sepolicy.sepolicy-version to BOARD_SEPOLICY_VERS when none is specified.
- std::vector<VersionRange>* sepolicyVrs =
- &matrix->framework.mSepolicy.mSepolicyVersionRanges;
- VersionRange sepolicyVr;
- if (!sepolicyVrs->empty()) sepolicyVr = sepolicyVrs->front();
- if (getFlagIfUnset("BOARD_SEPOLICY_VERS", &sepolicyVr,
- deviceLevel == Level::UNSPECIFIED /* log */)) {
- *sepolicyVrs = {{sepolicyVr}};
+ // Add PLATFORM_SEPOLICY_* to sepolicy.sepolicy-version. Remove dupes.
+ std::set<Version> sepolicyVersions;
+ auto sepolicyVersionStrings = getEnvList("PLATFORM_SEPOLICY_COMPAT_VERSIONS");
+ auto currentSepolicyVersionString = getEnv("PLATFORM_SEPOLICY_VERSION");
+ if (!currentSepolicyVersionString.empty()) {
+ sepolicyVersionStrings.push_back(currentSepolicyVersionString);
+ }
+ for (auto&& s : sepolicyVersionStrings) {
+ Version v;
+ if (!parse(s, &v)) {
+ std::cerr << "Error: unknown sepolicy version '" << s << "' specified by "
+ << (s == currentSepolicyVersionString
+ ? "PLATFORM_SEPOLICY_VERSION"
+ : "PLATFORM_SEPOLICY_COMPAT_VERSIONS")
+ << ".";
+ return false;
+ }
+ sepolicyVersions.insert(v);
+ }
+ for (auto&& v : sepolicyVersions) {
+ matrix->framework.mSepolicy.mSepolicyVersionRanges.emplace_back(v.majorVer,
+ v.minorVer);
}
getFlagIfUnset("POLICYVERS", &matrix->framework.mSepolicy.mKernelSepolicyVersion,