Merge "Add sh_binary support to bp2build converter."
This commit is contained in:
commit
6f833664f0
|
@ -12,6 +12,7 @@ bootstrap_go_package {
|
||||||
"soong-android",
|
"soong-android",
|
||||||
"soong-bazel",
|
"soong-bazel",
|
||||||
"soong-genrule",
|
"soong-genrule",
|
||||||
|
"soong-sh",
|
||||||
],
|
],
|
||||||
testSrcs: [
|
testSrcs: [
|
||||||
"build_conversion_test.go",
|
"build_conversion_test.go",
|
||||||
|
|
|
@ -17,6 +17,7 @@ package bp2build
|
||||||
import (
|
import (
|
||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
"android/soong/genrule"
|
"android/soong/genrule"
|
||||||
|
"android/soong/sh"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
@ -357,6 +358,12 @@ load("//build/bazel/rules:java.bzl", "java_binary")`,
|
||||||
ruleClass: "genrule",
|
ruleClass: "genrule",
|
||||||
// Note: no bzlLoadLocation for native rules
|
// Note: no bzlLoadLocation for native rules
|
||||||
},
|
},
|
||||||
|
BazelTarget{
|
||||||
|
name: "sh_binary_target",
|
||||||
|
ruleClass: "sh_binary",
|
||||||
|
// Note: no bzlLoadLocation for native rules
|
||||||
|
// TODO(ruperts): Could open source the existing, experimental Starlark sh_ rules?
|
||||||
|
},
|
||||||
},
|
},
|
||||||
expectedLoadStatements: `load("//build/bazel/rules:cc.bzl", "cc_binary")
|
expectedLoadStatements: `load("//build/bazel/rules:cc.bzl", "cc_binary")
|
||||||
load("//build/bazel/rules:java.bzl", "java_binary")`,
|
load("//build/bazel/rules:java.bzl", "java_binary")`,
|
||||||
|
@ -853,6 +860,23 @@ genrule {
|
||||||
)`,
|
)`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
description: "sh_binary test",
|
||||||
|
moduleTypeUnderTest: "sh_binary",
|
||||||
|
moduleTypeUnderTestFactory: sh.ShBinaryFactory,
|
||||||
|
moduleTypeUnderTestBp2BuildMutator: sh.ShBinaryBp2Build,
|
||||||
|
bp: `sh_binary {
|
||||||
|
name: "foo",
|
||||||
|
src: "foo.sh",
|
||||||
|
bazel_module: { bp2build_available: true },
|
||||||
|
}`,
|
||||||
|
expectedBazelTargets: []string{`sh_binary(
|
||||||
|
name = "foo",
|
||||||
|
srcs = [
|
||||||
|
"foo.sh",
|
||||||
|
],
|
||||||
|
)`},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
dir := "."
|
dir := "."
|
||||||
|
|
|
@ -24,6 +24,7 @@ import (
|
||||||
"github.com/google/blueprint/proptools"
|
"github.com/google/blueprint/proptools"
|
||||||
|
|
||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
|
"android/soong/bazel"
|
||||||
"android/soong/cc"
|
"android/soong/cc"
|
||||||
"android/soong/tradefed"
|
"android/soong/tradefed"
|
||||||
)
|
)
|
||||||
|
@ -43,6 +44,8 @@ func init() {
|
||||||
android.RegisterModuleType("sh_binary_host", ShBinaryHostFactory)
|
android.RegisterModuleType("sh_binary_host", ShBinaryHostFactory)
|
||||||
android.RegisterModuleType("sh_test", ShTestFactory)
|
android.RegisterModuleType("sh_test", ShTestFactory)
|
||||||
android.RegisterModuleType("sh_test_host", ShTestHostFactory)
|
android.RegisterModuleType("sh_test_host", ShTestHostFactory)
|
||||||
|
|
||||||
|
android.RegisterBp2BuildMutator("sh_binary", ShBinaryBp2Build)
|
||||||
}
|
}
|
||||||
|
|
||||||
type shBinaryProperties struct {
|
type shBinaryProperties struct {
|
||||||
|
@ -81,6 +84,9 @@ type shBinaryProperties struct {
|
||||||
|
|
||||||
// Make this module available when building for recovery.
|
// Make this module available when building for recovery.
|
||||||
Recovery_available *bool
|
Recovery_available *bool
|
||||||
|
|
||||||
|
// Properties for Bazel migration purposes.
|
||||||
|
bazel.Properties
|
||||||
}
|
}
|
||||||
|
|
||||||
type TestProperties struct {
|
type TestProperties struct {
|
||||||
|
@ -461,4 +467,62 @@ func ShTestHostFactory() android.Module {
|
||||||
return module
|
return module
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type bazelShBinaryAttributes struct {
|
||||||
|
Srcs bazel.LabelList
|
||||||
|
// Bazel also supports the attributes below, but (so far) these are not required for Bionic
|
||||||
|
// deps
|
||||||
|
// data
|
||||||
|
// args
|
||||||
|
// compatible_with
|
||||||
|
// deprecation
|
||||||
|
// distribs
|
||||||
|
// env
|
||||||
|
// exec_compatible_with
|
||||||
|
// exec_properties
|
||||||
|
// features
|
||||||
|
// licenses
|
||||||
|
// output_licenses
|
||||||
|
// restricted_to
|
||||||
|
// tags
|
||||||
|
// target_compatible_with
|
||||||
|
// testonly
|
||||||
|
// toolchains
|
||||||
|
// visibility
|
||||||
|
}
|
||||||
|
|
||||||
|
type bazelShBinary struct {
|
||||||
|
android.BazelTargetModuleBase
|
||||||
|
bazelShBinaryAttributes
|
||||||
|
}
|
||||||
|
|
||||||
|
func BazelShBinaryFactory() android.Module {
|
||||||
|
module := &bazelShBinary{}
|
||||||
|
module.AddProperties(&module.bazelShBinaryAttributes)
|
||||||
|
android.InitBazelTargetModule(module)
|
||||||
|
return module
|
||||||
|
}
|
||||||
|
|
||||||
|
func ShBinaryBp2Build(ctx android.TopDownMutatorContext) {
|
||||||
|
m, ok := ctx.Module().(*ShBinary)
|
||||||
|
if !ok || !m.properties.Bazel_module.Bp2build_available {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
srcs := android.BazelLabelForModuleSrc(ctx, []string{*m.properties.Src})
|
||||||
|
|
||||||
|
attrs := &bazelShBinaryAttributes{
|
||||||
|
Srcs: srcs,
|
||||||
|
}
|
||||||
|
|
||||||
|
props := bazel.NewBazelTargetModuleProperties(m.Name(), "sh_binary", "")
|
||||||
|
|
||||||
|
ctx.CreateBazelTargetModule(BazelShBinaryFactory, props, attrs)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *bazelShBinary) Name() string {
|
||||||
|
return m.BaseModuleName()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *bazelShBinary) GenerateAndroidBuildActions(ctx android.ModuleContext) {}
|
||||||
|
|
||||||
var Bool = proptools.Bool
|
var Bool = proptools.Bool
|
||||||
|
|
Loading…
Reference in New Issue