util.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // Copyright 2021 The Android Open Source Project
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package snapshot
  15. import "android/soong/android"
  16. func WriteStringToFileRule(ctx android.SingletonContext, content, out string) android.OutputPath {
  17. outPath := android.PathForOutput(ctx, out)
  18. android.WriteFileRule(ctx, outPath, content)
  19. return outPath
  20. }
  21. type buildContext interface {
  22. Build(pctx android.PackageContext, params android.BuildParams)
  23. }
  24. func CopyFileToOutputPathRule(pctx android.PackageContext, ctx buildContext, path android.Path, outPath android.OutputPath) {
  25. ctx.Build(pctx, android.BuildParams{
  26. Rule: android.Cp,
  27. Input: path,
  28. Output: outPath,
  29. Description: "copy " + path.String() + " -> " + outPath.String(),
  30. Args: map[string]string{
  31. "cpFlags": "-L",
  32. },
  33. })
  34. }
  35. func CopyFileRule(pctx android.PackageContext, ctx android.SingletonContext, path android.Path, out string) android.OutputPath {
  36. outPath := android.PathForOutput(ctx, out)
  37. CopyFileToOutputPathRule(pctx, ctx, path, outPath)
  38. return outPath
  39. }
  40. // zip snapshot
  41. func zipSnapshot(ctx android.SingletonContext, dir string, baseName string, snapshotOutputs android.Paths) android.OptionalPath {
  42. zipPath := android.PathForOutput(
  43. ctx, dir, baseName+".zip")
  44. zipRule := android.NewRuleBuilder(pctx, ctx)
  45. rspFile := android.PathForOutput(
  46. ctx, dir, baseName+"_list.rsp")
  47. zipRule.Command().
  48. BuiltTool("soong_zip").
  49. FlagWithOutput("-o ", zipPath).
  50. FlagWithArg("-C ", android.PathForOutput(ctx, dir).String()).
  51. FlagWithRspFileInputList("-r ", rspFile, snapshotOutputs)
  52. zipRule.Build(zipPath.String(), baseName+" snapshot "+zipPath.String())
  53. return android.OptionalPathForPath(zipPath)
  54. }