Add DistPath to reference the dist folder
Instead of open-coding the logic of whether there is one, or where to find it. Test: diff out/soong/build.ninja without dist Test: diff out/soong/build.ninja with dist specified Change-Id: Ia3f1ef335e2d6e2175343338d04867d778a50300
This commit is contained in:
parent
54daaf0371
commit
bc0c509267
2 changed files with 43 additions and 4 deletions
|
@ -693,6 +693,46 @@ func PathForIntermediates(ctx PathContext, paths ...string) OutputPath {
|
|||
return PathForOutput(ctx, ".intermediates", path)
|
||||
}
|
||||
|
||||
// DistPath is a Path representing a file path rooted from the dist directory
|
||||
type DistPath struct {
|
||||
basePath
|
||||
}
|
||||
|
||||
func (p DistPath) withRel(rel string) DistPath {
|
||||
p.basePath = p.basePath.withRel(rel)
|
||||
return p
|
||||
}
|
||||
|
||||
var _ Path = DistPath{}
|
||||
|
||||
// PathForDist joins the provided paths and returns a DistPath that is
|
||||
// validated to not escape the dist dir.
|
||||
// On error, it will return a usable, but invalid DistPath, and report a ModuleError.
|
||||
func PathForDist(ctx PathContext, pathComponents ...string) DistPath {
|
||||
path, err := validatePath(pathComponents...)
|
||||
if err != nil {
|
||||
reportPathError(ctx, err)
|
||||
}
|
||||
return DistPath{basePath{path, ctx.Config(), ""}}
|
||||
}
|
||||
|
||||
func (p DistPath) writablePath() {}
|
||||
|
||||
func (p DistPath) Valid() bool {
|
||||
return p.config.ProductVariables.DistDir != nil && *p.config.ProductVariables.DistDir != ""
|
||||
}
|
||||
|
||||
func (p DistPath) String() string {
|
||||
if !p.Valid() {
|
||||
panic("Requesting an invalid path")
|
||||
}
|
||||
return filepath.Join(*p.config.ProductVariables.DistDir, p.path)
|
||||
}
|
||||
|
||||
func (p DistPath) RelPathString() string {
|
||||
return p.path
|
||||
}
|
||||
|
||||
// ModuleSrcPath is a Path representing a file rooted from a module's local source dir
|
||||
type ModuleSrcPath struct {
|
||||
SourcePath
|
||||
|
|
|
@ -200,10 +200,9 @@ var (
|
|||
func(ctx android.PackageRuleContext) blueprint.RuleParams {
|
||||
|
||||
commandStr := "($sAbiDiffer $allowFlags -lib $libName -arch $arch -check-all-apis -o ${out} -new $in -old $referenceDump)"
|
||||
distDir := ctx.Config().ProductVariables.DistDir
|
||||
if distDir != nil && *distDir != "" {
|
||||
distAbiDiffDir := *distDir + "/abidiffs/"
|
||||
commandStr += " || (mkdir -p " + distAbiDiffDir + " && cp ${out} " + distAbiDiffDir + " && exit 1)"
|
||||
distAbiDiffDir := android.PathForDist(ctx, "abidiffs")
|
||||
if distAbiDiffDir.Valid() {
|
||||
commandStr += " || (mkdir -p " + distAbiDiffDir.String() + " && cp ${out} " + distAbiDiffDir.String() + " && exit 1)"
|
||||
}
|
||||
return blueprint.RuleParams{
|
||||
Command: commandStr,
|
||||
|
|
Loading…
Reference in a new issue