diff options
author | 2024-09-04 22:19:51 +0000 | |
---|---|---|
committer | 2024-10-07 21:24:21 +0000 | |
commit | 8609a5569c7d93efc983e7c5f091fbdd4f955567 (patch) | |
tree | a1a1a01f7fda0aff2a4721703d7cdd7662067441 /apex/apex_singleton.go | |
parent | 0fdc7558f78f57ad4d1d4d9544b204d008a874f1 (diff) |
Added EXTRA_ALLOWED_DEPS_TXT to allow arbitrary allowedlist text files that enforces min_sdk_version for apex dependencies to avoid regression
Test: Ran APEX soong tests and manual test
Bug: 333868045
Merged-In: I7b0c7f32687d922dde41150f947c1b993998338f
Change-Id: I7b0c7f32687d922dde41150f947c1b993998338f
Diffstat (limited to 'apex/apex_singleton.go')
-rw-r--r-- | apex/apex_singleton.go | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/apex/apex_singleton.go b/apex/apex_singleton.go index f405cb2fe..00dd44648 100644 --- a/apex/apex_singleton.go +++ b/apex/apex_singleton.go @@ -18,6 +18,7 @@ package apex import ( "encoding/json" + "strings" "github.com/google/blueprint" @@ -58,9 +59,9 @@ var ( // Diff two given lists while ignoring comments in the allowed deps file. diffAllowedApexDepsInfoRule = pctx.AndroidStaticRule("diffAllowedApexDepsInfoRule", blueprint.RuleParams{ - Description: "Diff ${allowed_deps} and ${new_allowed_deps}", + Description: "Diff ${allowed_deps_list} and ${new_allowed_deps}", Command: ` - if grep -v '^#' ${allowed_deps} | diff -B - ${new_allowed_deps}; then + if grep -v -h '^#' ${allowed_deps_list} | sort -u -f| diff -B -u - ${new_allowed_deps}; then touch ${out}; else echo -e "\n******************************"; @@ -81,10 +82,15 @@ var ( exit 1; fi; `, - }, "allowed_deps", "new_allowed_deps") + }, "allowed_deps_list", "new_allowed_deps") ) func (s *apexDepsInfoSingleton) GenerateBuildActions(ctx android.SingletonContext) { + allowedDepsSources := []android.OptionalPath{android.ExistentPathForSource(ctx, "packages/modules/common/build/allowed_deps.txt")} + extraAllowedDepsPath := ctx.Config().ExtraAllowedDepsTxt() + if extraAllowedDepsPath != "" { + allowedDepsSources = append(allowedDepsSources, android.ExistentPathForSource(ctx, extraAllowedDepsPath)) + } updatableFlatLists := android.Paths{} ctx.VisitAllModules(func(module android.Module) { if binaryInfo, ok := module.(android.ApexBundleDepsInfoIntf); ok { @@ -96,37 +102,42 @@ func (s *apexDepsInfoSingleton) GenerateBuildActions(ctx android.SingletonContex } } }) - - allowedDepsSource := android.ExistentPathForSource(ctx, "packages/modules/common/build/allowed_deps.txt") newAllowedDeps := android.PathForOutput(ctx, "apex", "depsinfo", "new-allowed-deps.txt") s.allowedApexDepsInfoCheckResult = android.PathForOutput(ctx, newAllowedDeps.Rel()+".check") - - if !allowedDepsSource.Valid() { + hasOneValidDepsPath := false + for _, allowedDepsSource := range allowedDepsSources { + if allowedDepsSource.Valid() { + hasOneValidDepsPath = true + updatableFlatLists = append(updatableFlatLists, allowedDepsSource.Path()) + } + } + allowedDepsStrList := make([]string, len(allowedDepsSources)) + for _, value := range allowedDepsSources { + allowedDepsStrList = append(allowedDepsStrList, value.String()) + } + allowedDepsListString := strings.Join(allowedDepsStrList, " ") + if !hasOneValidDepsPath { // Unbundled projects may not have packages/modules/common/ checked out; ignore those. ctx.Build(pctx, android.BuildParams{ Rule: android.Touch, Output: s.allowedApexDepsInfoCheckResult, }) } else { - allowedDeps := allowedDepsSource.Path() - ctx.Build(pctx, android.BuildParams{ Rule: generateApexDepsInfoFilesRule, - Inputs: append(updatableFlatLists, allowedDeps), + Inputs: updatableFlatLists, Output: newAllowedDeps, }) - ctx.Build(pctx, android.BuildParams{ Rule: diffAllowedApexDepsInfoRule, Input: newAllowedDeps, Output: s.allowedApexDepsInfoCheckResult, Args: map[string]string{ - "allowed_deps": allowedDeps.String(), - "new_allowed_deps": newAllowedDeps.String(), + "allowed_deps_list": allowedDepsListString, + "new_allowed_deps": newAllowedDeps.String(), }, }) } - ctx.Phony("apex-allowed-deps-check", s.allowedApexDepsInfoCheckResult) } |