Limit the number of the Java source files in a single compilation unit
KYTHE_JAVA_SOURCE_BATCH_SIZE environment variable controls this setting. The limit is 1000 if this variable is not set. Fixes: 179932118 Test: run prebuilts/build-tools/build-prebuilts.sh, use it to build kzips, check Change-Id: I9ad57dfd1d2c2dce5cff755b1bd61cf933420bd3
This commit is contained in:
parent
36eb24b3ab
commit
b0addafd93
3 changed files with 26 additions and 1 deletions
|
@ -24,6 +24,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
@ -911,6 +912,25 @@ func (c *config) XrefCuEncoding() string {
|
||||||
return "json"
|
return "json"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// XrefCuJavaSourceMax returns the maximum number of the Java source files
|
||||||
|
// in a single compilation unit
|
||||||
|
const xrefJavaSourceFileMaxDefault = "1000"
|
||||||
|
|
||||||
|
func (c Config) XrefCuJavaSourceMax() string {
|
||||||
|
v := c.Getenv("KYTHE_JAVA_SOURCE_BATCH_SIZE")
|
||||||
|
if v == "" {
|
||||||
|
return xrefJavaSourceFileMaxDefault
|
||||||
|
}
|
||||||
|
if _, err := strconv.ParseUint(v, 0, 0); err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr,
|
||||||
|
"bad KYTHE_JAVA_SOURCE_BATCH_SIZE value: %s, will use %s",
|
||||||
|
err, xrefJavaSourceFileMaxDefault)
|
||||||
|
return xrefJavaSourceFileMaxDefault
|
||||||
|
}
|
||||||
|
return v
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func (c *config) EmitXrefRules() bool {
|
func (c *config) EmitXrefRules() bool {
|
||||||
return c.XrefCorpusName() != ""
|
return c.XrefCorpusName() != ""
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,14 +7,16 @@
|
||||||
# BUILD_NUMBER build number, used to generate unique ID (will use UUID if not set)
|
# BUILD_NUMBER build number, used to generate unique ID (will use UUID if not set)
|
||||||
# DIST_DIR where the resulting all.kzip will be placed
|
# DIST_DIR where the resulting all.kzip will be placed
|
||||||
# KYTHE_KZIP_ENCODING proto or json (proto is default)
|
# KYTHE_KZIP_ENCODING proto or json (proto is default)
|
||||||
|
# KYTHE_JAVA_SOURCE_BATCH_SIZE maximum number of the Java source files in a compilation unit
|
||||||
# OUT_DIR output directory (out if not specified})
|
# OUT_DIR output directory (out if not specified})
|
||||||
# TARGET_BUILD_VARIANT variant, e.g., `userdebug`
|
# TARGET_BUILD_VARIANT variant, e.g., `userdebug`
|
||||||
# TARGET_PRODUCT target device name, e.g., 'aosp_blueline'
|
# TARGET_PRODUCT target device name, e.g., 'aosp_blueline'
|
||||||
# XREF_CORPUS source code repository URI, e.g., 'android.googlesource.com/platform/superproject'
|
# XREF_CORPUS source code repository URI, e.g., 'android.googlesource.com/platform/superproject'
|
||||||
|
|
||||||
: ${BUILD_NUMBER:=$(uuidgen)}
|
: ${BUILD_NUMBER:=$(uuidgen)}
|
||||||
|
: ${KYTHE_JAVA_SOURCE_BATCH_SIZE:=500}
|
||||||
: ${KYTHE_KZIP_ENCODING:=proto}
|
: ${KYTHE_KZIP_ENCODING:=proto}
|
||||||
export KYTHE_KZIP_ENCODING
|
export KYTHE_JAVA_SOURCE_BATCH_SIZE KYTHE_KZIP_ENCODING
|
||||||
|
|
||||||
# The extraction might fail for some source files, so run with -k and then check that
|
# The extraction might fail for some source files, so run with -k and then check that
|
||||||
# sufficiently many files were generated.
|
# sufficiently many files were generated.
|
||||||
|
|
|
@ -80,6 +80,8 @@ var (
|
||||||
func(ctx android.PackageVarContext) string { return ctx.Config().XrefCorpusName() })
|
func(ctx android.PackageVarContext) string { return ctx.Config().XrefCorpusName() })
|
||||||
_ = pctx.VariableFunc("kytheCuEncoding",
|
_ = pctx.VariableFunc("kytheCuEncoding",
|
||||||
func(ctx android.PackageVarContext) string { return ctx.Config().XrefCuEncoding() })
|
func(ctx android.PackageVarContext) string { return ctx.Config().XrefCuEncoding() })
|
||||||
|
_ = pctx.VariableFunc("kytheCuJavaSourceMax",
|
||||||
|
func(ctx android.PackageVarContext) string { return ctx.Config().XrefCuJavaSourceMax() })
|
||||||
_ = pctx.SourcePathVariable("kytheVnames", "build/soong/vnames.json")
|
_ = pctx.SourcePathVariable("kytheVnames", "build/soong/vnames.json")
|
||||||
// Run it with -add-opens=java.base/java.nio=ALL-UNNAMED to avoid JDK9's warning about
|
// Run it with -add-opens=java.base/java.nio=ALL-UNNAMED to avoid JDK9's warning about
|
||||||
// "Illegal reflective access by com.google.protobuf.Utf8$UnsafeProcessor ...
|
// "Illegal reflective access by com.google.protobuf.Utf8$UnsafeProcessor ...
|
||||||
|
@ -93,6 +95,7 @@ var (
|
||||||
`KYTHE_CORPUS=${kytheCorpus} ` +
|
`KYTHE_CORPUS=${kytheCorpus} ` +
|
||||||
`KYTHE_VNAMES=${kytheVnames} ` +
|
`KYTHE_VNAMES=${kytheVnames} ` +
|
||||||
`KYTHE_KZIP_ENCODING=${kytheCuEncoding} ` +
|
`KYTHE_KZIP_ENCODING=${kytheCuEncoding} ` +
|
||||||
|
`KYTHE_JAVA_SOURCE_BATCH_SIZE=${kytheCuJavaSourceMax} ` +
|
||||||
`${config.SoongJavacWrapper} ${config.JavaCmd} ` +
|
`${config.SoongJavacWrapper} ${config.JavaCmd} ` +
|
||||||
`--add-opens=java.base/java.nio=ALL-UNNAMED ` +
|
`--add-opens=java.base/java.nio=ALL-UNNAMED ` +
|
||||||
`-jar ${config.JavaKytheExtractorJar} ` +
|
`-jar ${config.JavaKytheExtractorJar} ` +
|
||||||
|
|
Loading…
Reference in a new issue