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 24type buildContext interface { 25 Build(pctx android.PackageContext, params android.BuildParams) 26} 27 28func CopyFileToOutputPathRule(pctx android.PackageContext, ctx buildContext, path android.Path, outPath android.OutputPath) { 29 ctx.Build(pctx, android.BuildParams{ 30 Rule: android.Cp, 31 Input: path, 32 Output: outPath, 33 Description: "copy " + path.String() + " -> " + outPath.String(), 34 Args: map[string]string{ 35 "cpFlags": "-L", 36 }, 37 }) 38} 39 40func CopyFileRule(pctx android.PackageContext, ctx android.SingletonContext, path android.Path, out string) android.OutputPath { 41 outPath := android.PathForOutput(ctx, out) 42 CopyFileToOutputPathRule(pctx, ctx, path, outPath) 43 return outPath 44} 45 46// zip snapshot 47func zipSnapshot(ctx android.SingletonContext, dir string, baseName string, snapshotOutputs android.Paths) android.OptionalPath { 48 zipPath := android.PathForOutput( 49 ctx, dir, baseName+".zip") 50 51 zipRule := android.NewRuleBuilder(pctx, ctx) 52 rspFile := android.PathForOutput( 53 ctx, dir, baseName+"_list.rsp") 54 55 zipRule.Command(). 56 BuiltTool("soong_zip"). 57 FlagWithOutput("-o ", zipPath). 58 FlagWithArg("-C ", android.PathForOutput(ctx, dir).String()). 59 FlagWithRspFileInputList("-r ", rspFile, snapshotOutputs) 60 61 zipRule.Build(zipPath.String(), baseName+" snapshot "+zipPath.String()) 62 return android.OptionalPathForPath(zipPath) 63} 64