Limit calls to strip.sh on darwin
strip.sh can use a file descriptor per .o file when run on .a files, which can hit the system file descriptor limit on darwin. This causes failures when manay variants of libgcc_stripped are built simultaneously. Put all strip rules on darwin into a pool that limits them to 10 concurrent processes, which will limit the file descriptor usage to ~7500. Fixes: 132822437 Test: no mention of darwinStripPool in out/soong/build.ninja on linux Test: m libgcc_stripped on darwin Change-Id: I3d4fbbd8d44d2e9059a79df113ab95336ec2c658
This commit is contained in:
@@ -123,12 +123,25 @@ var (
|
|||||||
_ = pctx.SourcePathVariable("stripPath", "build/soong/scripts/strip.sh")
|
_ = pctx.SourcePathVariable("stripPath", "build/soong/scripts/strip.sh")
|
||||||
_ = pctx.SourcePathVariable("xzCmd", "prebuilts/build-tools/${config.HostPrebuiltTag}/bin/xz")
|
_ = pctx.SourcePathVariable("xzCmd", "prebuilts/build-tools/${config.HostPrebuiltTag}/bin/xz")
|
||||||
|
|
||||||
|
// b/132822437: objcopy uses a file descriptor per .o file when called on .a files, which runs the system out of
|
||||||
|
// file descriptors on darwin. Limit concurrent calls to 10 on darwin.
|
||||||
|
darwinStripPool = func() blueprint.Pool {
|
||||||
|
if runtime.GOOS == "darwin" {
|
||||||
|
return pctx.StaticPool("darwinStripPool", blueprint.PoolParams{
|
||||||
|
Depth: 10,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
strip = pctx.AndroidStaticRule("strip",
|
strip = pctx.AndroidStaticRule("strip",
|
||||||
blueprint.RuleParams{
|
blueprint.RuleParams{
|
||||||
Depfile: "${out}.d",
|
Depfile: "${out}.d",
|
||||||
Deps: blueprint.DepsGCC,
|
Deps: blueprint.DepsGCC,
|
||||||
Command: "CROSS_COMPILE=$crossCompile XZ=$xzCmd CLANG_BIN=${config.ClangBin} $stripPath ${args} -i ${in} -o ${out} -d ${out}.d",
|
Command: "CROSS_COMPILE=$crossCompile XZ=$xzCmd CLANG_BIN=${config.ClangBin} $stripPath ${args} -i ${in} -o ${out} -d ${out}.d",
|
||||||
CommandDeps: []string{"$stripPath", "$xzCmd"},
|
CommandDeps: []string{"$stripPath", "$xzCmd"},
|
||||||
|
Pool: darwinStripPool,
|
||||||
},
|
},
|
||||||
"args", "crossCompile")
|
"args", "crossCompile")
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user