Add buildDir to WritablePath implementations
First, the buildDir() method was renamed to getBuildDir() to avoid clashing with the buildDir field. Then, a buildDir was added to both `OutputPath` and `InstallPath` but not to `PhonyPath` as it does not contain any path components. Instead the `PhonyPath.getBuildDir()` was changed to simply return "". Bug: 183650682 Test: m droid Change-Id: I12e1854c829b980c5c01205753c62c00dc0a4774
This commit is contained in:
@@ -181,7 +181,7 @@ type WritablePath interface {
|
|||||||
Path
|
Path
|
||||||
|
|
||||||
// return the path to the build directory.
|
// return the path to the build directory.
|
||||||
buildDir() string
|
getBuildDir() string
|
||||||
|
|
||||||
// the writablePath method doesn't directly do anything,
|
// the writablePath method doesn't directly do anything,
|
||||||
// but it allows a struct to distinguish between whether or not it implements the WritablePath interface
|
// but it allows a struct to distinguish between whether or not it implements the WritablePath interface
|
||||||
@@ -1146,6 +1146,10 @@ func (p SourcePath) OverlayPath(ctx ModuleMissingDepsPathContext, path Path) Opt
|
|||||||
// OutputPath is a Path representing an intermediates file path rooted from the build directory
|
// OutputPath is a Path representing an intermediates file path rooted from the build directory
|
||||||
type OutputPath struct {
|
type OutputPath struct {
|
||||||
basePath
|
basePath
|
||||||
|
|
||||||
|
// The soong build directory, i.e. Config.BuildDir()
|
||||||
|
buildDir string
|
||||||
|
|
||||||
fullPath string
|
fullPath string
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1160,8 +1164,8 @@ func (p OutputPath) WithoutRel() OutputPath {
|
|||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p OutputPath) buildDir() string {
|
func (p OutputPath) getBuildDir() string {
|
||||||
return p.config.buildDir
|
return p.buildDir
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p OutputPath) objPathWithExt(ctx ModuleOutPathContext, subdir, ext string) ModuleObjPath {
|
func (p OutputPath) objPathWithExt(ctx ModuleOutPathContext, subdir, ext string) ModuleObjPath {
|
||||||
@@ -1198,7 +1202,7 @@ func PathForOutput(ctx PathContext, pathComponents ...string) OutputPath {
|
|||||||
}
|
}
|
||||||
fullPath := filepath.Join(ctx.Config().buildDir, path)
|
fullPath := filepath.Join(ctx.Config().buildDir, path)
|
||||||
path = fullPath[len(fullPath)-len(path):]
|
path = fullPath[len(fullPath)-len(path):]
|
||||||
return OutputPath{basePath{path, ctx.Config(), ""}, fullPath}
|
return OutputPath{basePath{path, ctx.Config(), ""}, ctx.Config().buildDir, fullPath}
|
||||||
}
|
}
|
||||||
|
|
||||||
// PathsForOutput returns Paths rooted from buildDir
|
// PathsForOutput returns Paths rooted from buildDir
|
||||||
@@ -1433,6 +1437,7 @@ func PathForBazelOut(ctx PathContext, paths ...string) BazelOutPath {
|
|||||||
}
|
}
|
||||||
|
|
||||||
outputPath := OutputPath{basePath{"", ctx.Config(), ""},
|
outputPath := OutputPath{basePath{"", ctx.Config(), ""},
|
||||||
|
ctx.Config().buildDir,
|
||||||
ctx.Config().BazelContext.OutputBase()}
|
ctx.Config().BazelContext.OutputBase()}
|
||||||
|
|
||||||
return BazelOutPath{
|
return BazelOutPath{
|
||||||
@@ -1526,6 +1531,9 @@ func PathForModuleRes(ctx ModuleOutPathContext, pathComponents ...string) Module
|
|||||||
type InstallPath struct {
|
type InstallPath struct {
|
||||||
basePath
|
basePath
|
||||||
|
|
||||||
|
// The soong build directory, i.e. Config.BuildDir()
|
||||||
|
buildDir string
|
||||||
|
|
||||||
// partitionDir is the part of the InstallPath that is automatically determined according to the context.
|
// partitionDir is the part of the InstallPath that is automatically determined according to the context.
|
||||||
// For example, it is host/<os>-<arch> for host modules, and target/product/<device>/<partition> for device modules.
|
// For example, it is host/<os>-<arch> for host modules, and target/product/<device>/<partition> for device modules.
|
||||||
partitionDir string
|
partitionDir string
|
||||||
@@ -1534,8 +1542,8 @@ type InstallPath struct {
|
|||||||
makePath bool
|
makePath bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p InstallPath) buildDir() string {
|
func (p InstallPath) getBuildDir() string {
|
||||||
return p.config.buildDir
|
return p.buildDir
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p InstallPath) ReplaceExtension(ctx PathContext, ext string) OutputPath {
|
func (p InstallPath) ReplaceExtension(ctx PathContext, ext string) OutputPath {
|
||||||
@@ -1550,9 +1558,9 @@ func (p InstallPath) writablePath() {}
|
|||||||
func (p InstallPath) String() string {
|
func (p InstallPath) String() string {
|
||||||
if p.makePath {
|
if p.makePath {
|
||||||
// Make path starts with out/ instead of out/soong.
|
// Make path starts with out/ instead of out/soong.
|
||||||
return filepath.Join(p.config.buildDir, "../", p.path)
|
return filepath.Join(p.buildDir, "../", p.path)
|
||||||
} else {
|
} else {
|
||||||
return filepath.Join(p.config.buildDir, p.path)
|
return filepath.Join(p.buildDir, p.path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1561,9 +1569,9 @@ func (p InstallPath) String() string {
|
|||||||
// The ./soong is dropped if the install path is for Make.
|
// The ./soong is dropped if the install path is for Make.
|
||||||
func (p InstallPath) PartitionDir() string {
|
func (p InstallPath) PartitionDir() string {
|
||||||
if p.makePath {
|
if p.makePath {
|
||||||
return filepath.Join(p.config.buildDir, "../", p.partitionDir)
|
return filepath.Join(p.buildDir, "../", p.partitionDir)
|
||||||
} else {
|
} else {
|
||||||
return filepath.Join(p.config.buildDir, p.partitionDir)
|
return filepath.Join(p.buildDir, p.partitionDir)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1647,6 +1655,7 @@ func pathForInstall(ctx PathContext, os OsType, arch ArchType, partition string,
|
|||||||
|
|
||||||
base := InstallPath{
|
base := InstallPath{
|
||||||
basePath: basePath{partionPath, ctx.Config(), ""},
|
basePath: basePath{partionPath, ctx.Config(), ""},
|
||||||
|
buildDir: ctx.Config().buildDir,
|
||||||
partitionDir: partionPath,
|
partitionDir: partionPath,
|
||||||
makePath: false,
|
makePath: false,
|
||||||
}
|
}
|
||||||
@@ -1657,6 +1666,7 @@ func pathForInstall(ctx PathContext, os OsType, arch ArchType, partition string,
|
|||||||
func pathForNdkOrSdkInstall(ctx PathContext, prefix string, paths []string) InstallPath {
|
func pathForNdkOrSdkInstall(ctx PathContext, prefix string, paths []string) InstallPath {
|
||||||
base := InstallPath{
|
base := InstallPath{
|
||||||
basePath: basePath{prefix, ctx.Config(), ""},
|
basePath: basePath{prefix, ctx.Config(), ""},
|
||||||
|
buildDir: ctx.Config().buildDir,
|
||||||
partitionDir: prefix,
|
partitionDir: prefix,
|
||||||
makePath: false,
|
makePath: false,
|
||||||
}
|
}
|
||||||
@@ -1800,8 +1810,9 @@ type PhonyPath struct {
|
|||||||
|
|
||||||
func (p PhonyPath) writablePath() {}
|
func (p PhonyPath) writablePath() {}
|
||||||
|
|
||||||
func (p PhonyPath) buildDir() string {
|
func (p PhonyPath) getBuildDir() string {
|
||||||
return p.config.buildDir
|
// A phone path cannot contain any / so cannot be relative to the build directory.
|
||||||
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p PhonyPath) ReplaceExtension(ctx PathContext, ext string) OutputPath {
|
func (p PhonyPath) ReplaceExtension(ctx PathContext, ext string) OutputPath {
|
||||||
|
@@ -909,7 +909,7 @@ func NormalizePathForTesting(path Path) string {
|
|||||||
}
|
}
|
||||||
p := path.String()
|
p := path.String()
|
||||||
if w, ok := path.(WritablePath); ok {
|
if w, ok := path.(WritablePath); ok {
|
||||||
rel, err := filepath.Rel(w.buildDir(), p)
|
rel, err := filepath.Rel(w.getBuildDir(), p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@@ -944,7 +944,7 @@ func PathRelativeToTop(path Path) string {
|
|||||||
}
|
}
|
||||||
p := path.String()
|
p := path.String()
|
||||||
if w, ok := path.(WritablePath); ok {
|
if w, ok := path.(WritablePath); ok {
|
||||||
buildDir := w.buildDir()
|
buildDir := w.getBuildDir()
|
||||||
return StringPathRelativeToTop(buildDir, p)
|
return StringPathRelativeToTop(buildDir, p)
|
||||||
}
|
}
|
||||||
return p
|
return p
|
||||||
|
Reference in New Issue
Block a user