Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bc0c5092 authored by Dan Willemsen's avatar Dan Willemsen
Browse files

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
parent 54daaf03
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -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
+3 −4
Original line number Diff line number Diff line
@@ -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,