aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2018-10-20 21:33:41 -0700
committerDan Willemsen <dwillemsen@google.com>2018-10-20 21:33:41 -0700
commit2d31a44b8a4ec24e98052bd8f5aac29ba2ec912c (patch)
tree38b67f36b954ffe7fd36af197d8e815a5d9459ed
parentd4ad1da3d772b346b5858fc5bee96e6996990e6f (diff)
downloadbuild_soong-2d31a44b8a4ec24e98052bd8f5aac29ba2ec912c.tar.gz
build_soong-2d31a44b8a4ec24e98052bd8f5aac29ba2ec912c.tar.bz2
build_soong-2d31a44b8a4ec24e98052bd8f5aac29ba2ec912c.zip
Stop using DIST_DIR in Soong
We're only using it to distribute files in case of failure, which isn't well supported currently, but can be handled for now by using the DIST_DIR environment variable during the command execution. This was at least one cause that we'd be re-running Soong during every build server build, as the DIST_DIR values are unique. Test: m dist Change-Id: Ibd5e6b6c46695350de80b745bfb6a6aa685033a0
-rw-r--r--android/paths.go40
-rw-r--r--android/variable.go1
-rw-r--r--cc/builder.go5
-rw-r--r--ui/build/config.go22
-rw-r--r--ui/build/kati.go9
-rw-r--r--ui/build/ninja.go2
6 files changed, 19 insertions, 60 deletions
diff --git a/android/paths.go b/android/paths.go
index daaf857d..b22e3c7d 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -725,46 +725,6 @@ 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
diff --git a/android/variable.go b/android/variable.go
index 5c4d491b..8faeb037 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -228,7 +228,6 @@ type productVariables struct {
Product_is_iot *bool `json:",omitempty"`
DeviceKernelHeaders []string `json:",omitempty"`
- DistDir *string `json:",omitempty"`
ExtraVndkVersions []string `json:",omitempty"`
diff --git a/cc/builder.go b/cc/builder.go
index d9a6caec..3d125381 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -191,11 +191,8 @@ var (
func(ctx android.PackageRuleContext) blueprint.RuleParams {
// TODO(b/78139997): Add -check-all-apis back
commandStr := "($sAbiDiffer $allowFlags -lib $libName -arch $arch -o ${out} -new $in -old $referenceDump)"
- distAbiDiffDir := android.PathForDist(ctx, "abidiffs")
commandStr += "|| (echo ' ---- Please update abi references by running $$ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py -l ${libName} ----'"
- if distAbiDiffDir.Valid() {
- commandStr += " && (mkdir -p " + distAbiDiffDir.String() + " && cp ${out} " + distAbiDiffDir.String() + ")"
- }
+ commandStr += " && (mkdir -p $$DIST_DIR/abidiffs && cp ${out} $$DIST_DIR/abidiff/)"
commandStr += " && exit 1)"
return blueprint.RuleParams{
Command: commandStr,
diff --git a/ui/build/config.go b/ui/build/config.go
index 1008b2e1..840f505b 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -34,6 +34,7 @@ type configImpl struct {
arguments []string
goma bool
environ *Environment
+ distDir string
// From the arguments
parallel int
@@ -86,8 +87,11 @@ func NewConfig(ctx Context, args ...string) Config {
ret.environ.Set("OUT_DIR", outDir)
}
- // Make sure DIST_DIR is set appropriately
- ret.environ.Set("DIST_DIR", ret.DistDir())
+ if distDir, ok := ret.environ.Get("DIST_DIR"); ok {
+ ret.distDir = filepath.Clean(distDir)
+ } else {
+ ret.distDir = filepath.Join(ret.OutDir(), "dist")
+ }
ret.environ.Unset(
// We're already using it
@@ -110,6 +114,9 @@ func NewConfig(ctx Context, args ...string) Config {
// We handle this above
"OUT_DIR_COMMON_BASE",
+ // This is handled above too, and set for individual commands later
+ "DIST_DIR",
+
// Variables that have caused problems in the past
"CDPATH",
"DISPLAY",
@@ -251,10 +258,10 @@ func (c *configImpl) parseArgs(ctx Context, args []string) {
}
} else if k, v, ok := decodeKeyValue(arg); ok && len(k) > 0 {
c.environ.Set(k, v)
+ } else if arg == "dist" {
+ c.dist = true
} else {
- if arg == "dist" {
- c.dist = true
- } else if arg == "checkbuild" {
+ if arg == "checkbuild" {
c.checkbuild = true
}
c.arguments = append(c.arguments, arg)
@@ -378,10 +385,7 @@ func (c *configImpl) OutDir() string {
}
func (c *configImpl) DistDir() string {
- if distDir, ok := c.environ.Get("DIST_DIR"); ok {
- return filepath.Clean(distDir)
- }
- return filepath.Join(c.OutDir(), "dist")
+ return c.distDir
}
func (c *configImpl) NinjaArgs() []string {
diff --git a/ui/build/kati.go b/ui/build/kati.go
index b3e820e2..56e9a88a 100644
--- a/ui/build/kati.go
+++ b/ui/build/kati.go
@@ -129,9 +129,7 @@ func runKatiBuild(ctx Context, config Config) {
"TARGET_DEVICE_DIR="+config.TargetDeviceDir(),
"KATI_PACKAGE_MK_DIR="+config.KatiPackageMkDir())
- runKati(ctx, config, katiBuildSuffix, args, func(env *Environment) {
- env.Unset("DIST_DIR")
- })
+ runKati(ctx, config, katiBuildSuffix, args, func(env *Environment) {})
}
func runKatiPackage(ctx Context, config Config) {
@@ -170,6 +168,7 @@ func runKatiPackage(ctx Context, config Config) {
if config.Dist() {
env.Set("DIST", "true")
+ env.Set("DIST_DIR", config.DistDir())
}
})
}
@@ -184,7 +183,5 @@ func runKatiCleanSpec(ctx Context, config Config) {
"-f", "build/make/core/cleanbuild.mk",
"SOONG_MAKEVARS_MK=" + config.SoongMakeVarsMk(),
"TARGET_DEVICE_DIR=" + config.TargetDeviceDir(),
- }, func(env *Environment) {
- env.Unset("DIST_DIR")
- })
+ }, func(env *Environment) {})
}
diff --git a/ui/build/ninja.go b/ui/build/ninja.go
index 91cb4756..c8f19d10 100644
--- a/ui/build/ninja.go
+++ b/ui/build/ninja.go
@@ -60,6 +60,8 @@ func runNinja(ctx Context, config Config) {
cmd.Environment.AppendFromKati(config.KatiEnvFile())
}
+ cmd.Environment.Set("DIST_DIR", config.DistDir())
+
// Allow both NINJA_ARGS and NINJA_EXTRA_ARGS, since both have been
// used in the past to specify extra ninja arguments.
if extra, ok := cmd.Environment.Get("NINJA_ARGS"); ok {