Merge changes from topics "errProne_bp2build_manually_enabled", "error_prone_config" into main am: 2a779ea829
am: 77a01c4809
am: 87dd2019a0
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2631710 Change-Id: Ic4b48b5b550e20ca0dbd3c2ccc12114f81feee83 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -74,6 +74,8 @@ const (
|
|||||||
|
|
||||||
InApex = "in_apex"
|
InApex = "in_apex"
|
||||||
NonApex = "non_apex"
|
NonApex = "non_apex"
|
||||||
|
|
||||||
|
ErrorproneDisabled = "errorprone_disabled"
|
||||||
)
|
)
|
||||||
|
|
||||||
func PowerSetWithoutEmptySet[T any](items []T) [][]T {
|
func PowerSetWithoutEmptySet[T any](items []T) [][]T {
|
||||||
@@ -216,6 +218,11 @@ var (
|
|||||||
NonApex: "//build/bazel/rules/apex:non_apex",
|
NonApex: "//build/bazel/rules/apex:non_apex",
|
||||||
ConditionsDefaultConfigKey: ConditionsDefaultSelectKey,
|
ConditionsDefaultConfigKey: ConditionsDefaultSelectKey,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
errorProneMap = map[string]string{
|
||||||
|
ErrorproneDisabled: "//build/bazel/rules/java/errorprone:errorprone_globally_disabled",
|
||||||
|
ConditionsDefaultConfigKey: ConditionsDefaultSelectKey,
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// basic configuration types
|
// basic configuration types
|
||||||
@@ -229,6 +236,7 @@ const (
|
|||||||
productVariables
|
productVariables
|
||||||
osAndInApex
|
osAndInApex
|
||||||
inApex
|
inApex
|
||||||
|
errorProneDisabled
|
||||||
)
|
)
|
||||||
|
|
||||||
func osArchString(os string, arch string) string {
|
func osArchString(os string, arch string) string {
|
||||||
@@ -237,13 +245,14 @@ func osArchString(os string, arch string) string {
|
|||||||
|
|
||||||
func (ct configurationType) String() string {
|
func (ct configurationType) String() string {
|
||||||
return map[configurationType]string{
|
return map[configurationType]string{
|
||||||
noConfig: "no_config",
|
noConfig: "no_config",
|
||||||
arch: "arch",
|
arch: "arch",
|
||||||
os: "os",
|
os: "os",
|
||||||
osArch: "arch_os",
|
osArch: "arch_os",
|
||||||
productVariables: "product_variables",
|
productVariables: "product_variables",
|
||||||
osAndInApex: "os_in_apex",
|
osAndInApex: "os_in_apex",
|
||||||
inApex: "in_apex",
|
inApex: "in_apex",
|
||||||
|
errorProneDisabled: "errorprone_disabled",
|
||||||
}[ct]
|
}[ct]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -274,6 +283,10 @@ func (ct configurationType) validateConfig(config string) {
|
|||||||
if _, ok := inApexMap[config]; !ok {
|
if _, ok := inApexMap[config]; !ok {
|
||||||
panic(fmt.Errorf("Unknown in_apex config: %s", config))
|
panic(fmt.Errorf("Unknown in_apex config: %s", config))
|
||||||
}
|
}
|
||||||
|
case errorProneDisabled:
|
||||||
|
if _, ok := errorProneMap[config]; !ok {
|
||||||
|
panic(fmt.Errorf("Unknown errorprone config: %s", config))
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("Unrecognized ConfigurationType %d", ct))
|
panic(fmt.Errorf("Unrecognized ConfigurationType %d", ct))
|
||||||
}
|
}
|
||||||
@@ -303,6 +316,8 @@ func (ca ConfigurationAxis) SelectKey(config string) string {
|
|||||||
return config
|
return config
|
||||||
case inApex:
|
case inApex:
|
||||||
return inApexMap[config]
|
return inApexMap[config]
|
||||||
|
case errorProneDisabled:
|
||||||
|
return errorProneMap[config]
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("Unrecognized ConfigurationType %d", ca.configurationType))
|
panic(fmt.Errorf("Unrecognized ConfigurationType %d", ca.configurationType))
|
||||||
}
|
}
|
||||||
@@ -321,6 +336,8 @@ var (
|
|||||||
OsAndInApexAxis = ConfigurationAxis{configurationType: osAndInApex}
|
OsAndInApexAxis = ConfigurationAxis{configurationType: osAndInApex}
|
||||||
// An axis for in_apex-specific configurations
|
// An axis for in_apex-specific configurations
|
||||||
InApexAxis = ConfigurationAxis{configurationType: inApex}
|
InApexAxis = ConfigurationAxis{configurationType: inApex}
|
||||||
|
|
||||||
|
ErrorProneAxis = ConfigurationAxis{configurationType: errorProneDisabled}
|
||||||
)
|
)
|
||||||
|
|
||||||
// ProductVariableConfigurationAxis returns an axis for the given product variable
|
// ProductVariableConfigurationAxis returns an axis for the given product variable
|
||||||
|
@@ -766,7 +766,7 @@ func (lla *LabelListAttribute) SetSelectValue(axis ConfigurationAxis, config str
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
lla.Value = list
|
lla.Value = list
|
||||||
case arch, os, osArch, productVariables, osAndInApex, inApex:
|
case arch, os, osArch, productVariables, osAndInApex, inApex, errorProneDisabled:
|
||||||
if lla.ConfigurableValues == nil {
|
if lla.ConfigurableValues == nil {
|
||||||
lla.ConfigurableValues = make(configurableLabelLists)
|
lla.ConfigurableValues = make(configurableLabelLists)
|
||||||
}
|
}
|
||||||
@@ -782,7 +782,7 @@ func (lla *LabelListAttribute) SelectValue(axis ConfigurationAxis, config string
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
return lla.Value
|
return lla.Value
|
||||||
case arch, os, osArch, productVariables, osAndInApex, inApex:
|
case arch, os, osArch, productVariables, osAndInApex, inApex, errorProneDisabled:
|
||||||
return lla.ConfigurableValues[axis][config]
|
return lla.ConfigurableValues[axis][config]
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
|
panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
|
||||||
@@ -1346,7 +1346,7 @@ func (sla *StringListAttribute) SetSelectValue(axis ConfigurationAxis, config st
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
sla.Value = list
|
sla.Value = list
|
||||||
case arch, os, osArch, productVariables, osAndInApex:
|
case arch, os, osArch, productVariables, osAndInApex, errorProneDisabled:
|
||||||
if sla.ConfigurableValues == nil {
|
if sla.ConfigurableValues == nil {
|
||||||
sla.ConfigurableValues = make(configurableStringLists)
|
sla.ConfigurableValues = make(configurableStringLists)
|
||||||
}
|
}
|
||||||
@@ -1362,7 +1362,7 @@ func (sla *StringListAttribute) SelectValue(axis ConfigurationAxis, config strin
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
return sla.Value
|
return sla.Value
|
||||||
case arch, os, osArch, productVariables, osAndInApex:
|
case arch, os, osArch, productVariables, osAndInApex, errorProneDisabled:
|
||||||
return sla.ConfigurableValues[axis][config]
|
return sla.ConfigurableValues[axis][config]
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
|
panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
|
||||||
|
@@ -183,8 +183,8 @@ func TestJavaLibraryJavaVersion(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestJavaLibraryErrorproneJavacflagsEnabledManually(t *testing.T) {
|
func TestJavaLibraryErrorproneEnabledManually(t *testing.T) {
|
||||||
runJavaLibraryTestCase(t, Bp2buildTestCase{
|
runJavaLibraryTestCaseWithRegistrationCtxFunc(t, Bp2buildTestCase{
|
||||||
Blueprint: `java_library {
|
Blueprint: `java_library {
|
||||||
name: "java-lib-1",
|
name: "java-lib-1",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
@@ -192,7 +192,13 @@ func TestJavaLibraryErrorproneJavacflagsEnabledManually(t *testing.T) {
|
|||||||
errorprone: {
|
errorprone: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
javacflags: ["-Xep:SpeedLimit:OFF"],
|
javacflags: ["-Xep:SpeedLimit:OFF"],
|
||||||
|
extra_check_modules: ["plugin2"],
|
||||||
},
|
},
|
||||||
|
}
|
||||||
|
java_plugin {
|
||||||
|
name: "plugin2",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
bazel_module: { bp2build_available: false },
|
||||||
}`,
|
}`,
|
||||||
ExpectedBazelTargets: []string{
|
ExpectedBazelTargets: []string{
|
||||||
MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
|
MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
|
||||||
@@ -200,10 +206,14 @@ func TestJavaLibraryErrorproneJavacflagsEnabledManually(t *testing.T) {
|
|||||||
"-Xsuper-fast",
|
"-Xsuper-fast",
|
||||||
"-Xep:SpeedLimit:OFF",
|
"-Xep:SpeedLimit:OFF",
|
||||||
]`,
|
]`,
|
||||||
"srcs": `["a.java"]`,
|
"plugins": `[":plugin2"]`,
|
||||||
|
"srcs": `["a.java"]`,
|
||||||
|
"errorprone_force_enable": `True`,
|
||||||
}),
|
}),
|
||||||
MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"),
|
MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"),
|
||||||
},
|
},
|
||||||
|
}, func(ctx android.RegistrationContext) {
|
||||||
|
ctx.RegisterModuleType("java_plugin", java.PluginFactory)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,21 +237,23 @@ func TestJavaLibraryErrorproneJavacflagsErrorproneDisabledByDefault(t *testing.T
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestJavaLibraryErrorproneJavacflagsErrorproneDisabledManually(t *testing.T) {
|
func TestJavaLibraryErrorproneDisabledManually(t *testing.T) {
|
||||||
runJavaLibraryTestCase(t, Bp2buildTestCase{
|
runJavaLibraryTestCase(t, Bp2buildTestCase{
|
||||||
Blueprint: `java_library {
|
Blueprint: `java_library {
|
||||||
name: "java-lib-1",
|
name: "java-lib-1",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
javacflags: ["-Xsuper-fast"],
|
javacflags: ["-Xsuper-fast"],
|
||||||
errorprone: {
|
errorprone: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
javacflags: ["-Xep:SpeedLimit:OFF"],
|
|
||||||
},
|
},
|
||||||
}`,
|
}`,
|
||||||
ExpectedBazelTargets: []string{
|
ExpectedBazelTargets: []string{
|
||||||
MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
|
MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
|
||||||
"javacopts": `["-Xsuper-fast"]`,
|
"javacopts": `[
|
||||||
"srcs": `["a.java"]`,
|
"-Xsuper-fast",
|
||||||
|
"-XepDisableAllChecks",
|
||||||
|
]`,
|
||||||
|
"srcs": `["a.java"]`,
|
||||||
}),
|
}),
|
||||||
MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"),
|
MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"),
|
||||||
},
|
},
|
||||||
|
42
java/java.go
42
java/java.go
@@ -2767,11 +2767,12 @@ func (m *Library) convertJavaResourcesAttributes(ctx android.TopDownMutatorConte
|
|||||||
type javaCommonAttributes struct {
|
type javaCommonAttributes struct {
|
||||||
*javaResourcesAttributes
|
*javaResourcesAttributes
|
||||||
*kotlinAttributes
|
*kotlinAttributes
|
||||||
Srcs bazel.LabelListAttribute
|
Srcs bazel.LabelListAttribute
|
||||||
Plugins bazel.LabelListAttribute
|
Plugins bazel.LabelListAttribute
|
||||||
Javacopts bazel.StringListAttribute
|
Javacopts bazel.StringListAttribute
|
||||||
Sdk_version bazel.StringAttribute
|
Sdk_version bazel.StringAttribute
|
||||||
Java_version bazel.StringAttribute
|
Java_version bazel.StringAttribute
|
||||||
|
Errorprone_force_enable bazel.BoolAttribute
|
||||||
}
|
}
|
||||||
|
|
||||||
type javaDependencyLabels struct {
|
type javaDependencyLabels struct {
|
||||||
@@ -2913,26 +2914,35 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext)
|
|||||||
staticDeps.Add(&bazel.Label{Label: ":" + javaAidlLibName})
|
staticDeps.Add(&bazel.Label{Label: ":" + javaAidlLibName})
|
||||||
}
|
}
|
||||||
|
|
||||||
var javacopts []string
|
var javacopts bazel.StringListAttribute //[]string
|
||||||
|
plugins := bazel.MakeLabelListAttribute(
|
||||||
|
android.BazelLabelForModuleDeps(ctx, m.properties.Plugins),
|
||||||
|
)
|
||||||
if m.properties.Javacflags != nil {
|
if m.properties.Javacflags != nil {
|
||||||
javacopts = append(javacopts, m.properties.Javacflags...)
|
javacopts = bazel.MakeStringListAttribute(m.properties.Javacflags)
|
||||||
}
|
}
|
||||||
|
|
||||||
epEnabled := m.properties.Errorprone.Enabled
|
epEnabled := m.properties.Errorprone.Enabled
|
||||||
//TODO(b/227504307) add configuration that depends on RUN_ERROR_PRONE environment variable
|
epJavacflags := m.properties.Errorprone.Javacflags
|
||||||
if Bool(epEnabled) {
|
var errorproneForceEnable bazel.BoolAttribute
|
||||||
javacopts = append(javacopts, m.properties.Errorprone.Javacflags...)
|
if epEnabled == nil {
|
||||||
|
//TODO(b/227504307) add configuration that depends on RUN_ERROR_PRONE environment variable
|
||||||
|
} else if *epEnabled {
|
||||||
|
plugins.Append(bazel.MakeLabelListAttribute(android.BazelLabelForModuleDeps(ctx, m.properties.Errorprone.Extra_check_modules)))
|
||||||
|
javacopts.Append(bazel.MakeStringListAttribute(epJavacflags))
|
||||||
|
errorproneForceEnable.Value = epEnabled
|
||||||
|
} else {
|
||||||
|
javacopts.Append(bazel.MakeStringListAttribute([]string{"-XepDisableAllChecks"}))
|
||||||
}
|
}
|
||||||
|
|
||||||
commonAttrs := &javaCommonAttributes{
|
commonAttrs := &javaCommonAttributes{
|
||||||
Srcs: javaSrcs,
|
Srcs: javaSrcs,
|
||||||
javaResourcesAttributes: m.convertJavaResourcesAttributes(ctx),
|
javaResourcesAttributes: m.convertJavaResourcesAttributes(ctx),
|
||||||
Plugins: bazel.MakeLabelListAttribute(
|
Plugins: plugins,
|
||||||
android.BazelLabelForModuleDeps(ctx, m.properties.Plugins),
|
Javacopts: javacopts,
|
||||||
),
|
Java_version: bazel.StringAttribute{Value: m.properties.Java_version},
|
||||||
Javacopts: bazel.MakeStringListAttribute(javacopts),
|
Sdk_version: bazel.StringAttribute{Value: m.deviceProperties.Sdk_version},
|
||||||
Java_version: bazel.StringAttribute{Value: m.properties.Java_version},
|
Errorprone_force_enable: errorproneForceEnable,
|
||||||
Sdk_version: bazel.StringAttribute{Value: m.deviceProperties.Sdk_version},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for axis, configToProps := range archVariantProps {
|
for axis, configToProps := range archVariantProps {
|
||||||
|
Reference in New Issue
Block a user