Support empty strings in bp2build

Previously, could not set an empty string as a value of an attribute;
however, this is necessary in some cases. To not unnecessarily create an
empty string, use string pointers for attributes rather than strings.

Test: go test bp2build tests
Change-Id: I03b3a3567452d455246d22d81f86c317d06b7c39
This commit is contained in:
Liz Kammer
2021-12-01 10:09:34 -05:00
parent 7c721018bb
commit 46fb7aba4d
7 changed files with 57 additions and 28 deletions

View File

@@ -35,10 +35,10 @@ func registerPythonBinaryComponents(ctx android.RegistrationContext) {
}
type bazelPythonBinaryAttributes struct {
Main string
Main *string
Srcs bazel.LabelListAttribute
Deps bazel.LabelListAttribute
Python_version string
Python_version *string
}
func PythonBinaryBp2Build(ctx android.TopDownMutatorContext) {
@@ -52,12 +52,12 @@ func PythonBinaryBp2Build(ctx android.TopDownMutatorContext) {
return
}
var main string
var main *string
for _, propIntf := range m.GetProperties() {
if props, ok := propIntf.(*BinaryProperties); ok {
// main is optional.
if props.Main != nil {
main = *props.Main
main = props.Main
break
}
}
@@ -69,13 +69,13 @@ func PythonBinaryBp2Build(ctx android.TopDownMutatorContext) {
// under Bionic.
py3Enabled := proptools.BoolDefault(m.properties.Version.Py3.Enabled, false)
py2Enabled := proptools.BoolDefault(m.properties.Version.Py2.Enabled, false)
var python_version string
var python_version *string
if py3Enabled && py2Enabled {
panic(fmt.Errorf(
"error for '%s' module: bp2build's python_binary_host converter does not support "+
"converting a module that is enabled for both Python 2 and 3 at the same time.", m.Name()))
} else if py2Enabled {
python_version = "PY2"
python_version = &pyVersion2
} else {
// do nothing, since python_version defaults to PY3.
}

View File

@@ -21,6 +21,7 @@ import (
"android/soong/android"
"android/soong/bazel"
"github.com/google/blueprint/proptools"
)
@@ -46,7 +47,7 @@ func PythonLibraryHostFactory() android.Module {
type bazelPythonLibraryAttributes struct {
Srcs bazel.LabelListAttribute
Deps bazel.LabelListAttribute
Srcs_version string
Srcs_version *string
}
func PythonLibraryHostBp2Build(ctx android.TopDownMutatorContext) {
@@ -74,11 +75,11 @@ func pythonLibBp2Build(ctx android.TopDownMutatorContext, modType string) {
// Bionic.
py3Enabled := proptools.BoolDefault(m.properties.Version.Py3.Enabled, true)
py2Enabled := proptools.BoolDefault(m.properties.Version.Py2.Enabled, false)
var python_version string
var python_version *string
if py2Enabled && !py3Enabled {
python_version = "PY2"
python_version = &pyVersion2
} else if !py2Enabled && py3Enabled {
python_version = "PY3"
python_version = &pyVersion3
} else if !py2Enabled && !py3Enabled {
panic(fmt.Errorf(
"error for '%s' module: bp2build's %s converter doesn't understand having "+