diff options
Diffstat (limited to 'apex/apex_singleton.go')
-rw-r--r-- | apex/apex_singleton.go | 74 |
1 files changed, 17 insertions, 57 deletions
diff --git a/apex/apex_singleton.go b/apex/apex_singleton.go index afb739cef..83a56a2b5 100644 --- a/apex/apex_singleton.go +++ b/apex/apex_singleton.go @@ -17,9 +17,9 @@ package apex import ( - "android/soong/android" - "github.com/google/blueprint" + + "android/soong/android" ) func init() { @@ -27,79 +27,39 @@ func init() { } type apexDepsInfoSingleton struct { - allowedApexDepsInfoCheckResult android.OutputPath + // Output file with all flatlists from updatable modules' deps-info combined + updatableFlatListsPath android.OutputPath } func apexDepsInfoSingletonFactory() android.Singleton { return &apexDepsInfoSingleton{} } -var ( - // Generate new apex allowed_deps.txt by merging all internal dependencies. - generateApexDepsInfoFilesRule = pctx.AndroidStaticRule("generateApexDepsInfoFilesRule", blueprint.RuleParams{ - Command: "cat $out.rsp | xargs cat" + - // Only track non-external dependencies, i.e. those that end up in the binary - " | grep -v '(external)'" + - // Ignore comments in any of the files - " | grep -v '^#'" + - " | sort -u -f >$out", +var combineFilesRule = pctx.AndroidStaticRule("combineFilesRule", + blueprint.RuleParams{ + Command: "cat $out.rsp | xargs cat > $out", Rspfile: "$out.rsp", RspfileContent: "$in", - }) - - // 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}", - Command: ` - if grep -v '^#' ${allowed_deps} | diff -B - ${new_allowed_deps}; then - touch ${out}; - else - echo -e "\n******************************"; - echo "ERROR: go/apex-allowed-deps-error"; - echo "******************************"; - echo "Detected changes to allowed dependencies in updatable modules."; - echo "To fix and update build/soong/apex/allowed_deps.txt, please run:"; - echo "$$ (croot && build/soong/scripts/update-apex-allowed-deps.sh)"; - echo "Members of mainline-modularization@google.com will review the changes."; - echo -e "******************************\n"; - exit 1; - fi; - `, - }, "allowed_deps", "new_allowed_deps") + }, ) func (s *apexDepsInfoSingleton) GenerateBuildActions(ctx android.SingletonContext) { updatableFlatLists := android.Paths{} ctx.VisitAllModules(func(module android.Module) { if binaryInfo, ok := module.(android.ApexBundleDepsInfoIntf); ok { - if path := binaryInfo.FlatListPath(); path != nil && binaryInfo.Updatable() { - updatableFlatLists = append(updatableFlatLists, path) + if path := binaryInfo.FlatListPath(); path != nil { + if binaryInfo.Updatable() { + updatableFlatLists = append(updatableFlatLists, path) + } } } }) - allowedDeps := android.ExistentPathForSource(ctx, "build/soong/apex/allowed_deps.txt").Path() - - newAllowedDeps := android.PathForOutput(ctx, "apex", "depsinfo", "new-allowed-deps.txt") - ctx.Build(pctx, android.BuildParams{ - Rule: generateApexDepsInfoFilesRule, - Inputs: append(updatableFlatLists, allowedDeps), - Output: newAllowedDeps, - }) - - s.allowedApexDepsInfoCheckResult = android.PathForOutput(ctx, newAllowedDeps.Rel()+".check") + s.updatableFlatListsPath = android.PathForOutput(ctx, "apex", "depsinfo", "updatable-flatlists.txt") 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(), - }, + Rule: combineFilesRule, + Description: "Generate " + s.updatableFlatListsPath.String(), + Inputs: updatableFlatLists, + Output: s.updatableFlatListsPath, }) } - -func (s *apexDepsInfoSingleton) MakeVars(ctx android.MakeVarsContext) { - // Export check result to Make. The path is added to droidcore. - ctx.Strict("APEX_ALLOWED_DEPS_CHECK", s.allowedApexDepsInfoCheckResult.String()) -} |