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. 14package snapshot 15 16import "android/soong/android" 17 18func WriteStringToFileRule(ctx android.SingletonContext, content, out string) android.OutputPath { 19 outPath := android.PathForOutput(ctx, out) 20 android.WriteFileRule(ctx, outPath, content) 21 return outPath 22} 23 24func CopyFileRule(pctx android.PackageContext, ctx android.SingletonContext, path android.Path, out string) android.OutputPath { 25 outPath := android.PathForOutput(ctx, out) 26 ctx.Build(pctx, android.BuildParams{ 27 Rule: android.Cp, 28 Input: path, 29 Output: outPath, 30 Description: "copy " + path.String() + " -> " + out, 31 Args: map[string]string{ 32 "cpFlags": "-f -L", 33 }, 34 }) 35 return outPath 36} 37 38// zip snapshot 39func zipSnapshot(ctx android.SingletonContext, dir string, baseName string, snapshotOutputs android.Paths) android.OptionalPath { 40 zipPath := android.PathForOutput( 41 ctx, dir, baseName+".zip") 42 43 zipRule := android.NewRuleBuilder(pctx, ctx) 44 rspFile := android.PathForOutput( 45 ctx, dir, baseName+"_list.rsp") 46 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 53 zipRule.Build(zipPath.String(), baseName+" snapshot "+zipPath.String()) 54 return android.OptionalPathForPath(zipPath) 55} 56