Replace android.BuildOs with Config.BuildOS

Replace the android.BuildOs constant with Config.BuildOS so that it
can vary based on the product config.

Bug: 190084016
Test: all Soong tests
Change-Id: Ia67f872d8b2ab788747a22e3a9659dc21c9775cd
This commit is contained in:
Colin Cross
2021-07-20 09:47:41 -07:00
parent ae86338676
commit 0c66bc615b
22 changed files with 457 additions and 421 deletions

View File

@@ -21,360 +21,362 @@ import (
"github.com/google/blueprint"
)
var prebuiltsTests = []struct {
name string
replaceBp bool // modules is added to default bp boilerplate if false.
modules string
prebuilt []OsType
preparer FixturePreparer
}{
{
name: "no prebuilt",
modules: `
source {
name: "bar",
}`,
prebuilt: nil,
},
{
name: "no source prebuilt not preferred",
modules: `
prebuilt {
name: "bar",
prefer: false,
srcs: ["prebuilt_file"],
}`,
prebuilt: []OsType{Android, BuildOs},
},
{
name: "no source prebuilt preferred",
modules: `
prebuilt {
name: "bar",
prefer: true,
srcs: ["prebuilt_file"],
}`,
prebuilt: []OsType{Android, BuildOs},
},
{
name: "prebuilt not preferred",
modules: `
source {
name: "bar",
}
func TestPrebuilts(t *testing.T) {
buildOS := TestArchConfig(t.TempDir(), nil, "", nil).BuildOS
prebuilt {
name: "bar",
prefer: false,
srcs: ["prebuilt_file"],
}`,
prebuilt: nil,
},
{
name: "prebuilt preferred",
modules: `
source {
name: "bar",
}
var prebuiltsTests = []struct {
name string
replaceBp bool // modules is added to default bp boilerplate if false.
modules string
prebuilt []OsType
preparer FixturePreparer
}{
{
name: "no prebuilt",
modules: `
source {
name: "bar",
}`,
prebuilt: nil,
},
{
name: "no source prebuilt not preferred",
modules: `
prebuilt {
name: "bar",
prefer: false,
srcs: ["prebuilt_file"],
}`,
prebuilt: []OsType{Android, buildOS},
},
{
name: "no source prebuilt preferred",
modules: `
prebuilt {
name: "bar",
prefer: true,
srcs: ["prebuilt_file"],
}`,
prebuilt: []OsType{Android, buildOS},
},
{
name: "prebuilt not preferred",
modules: `
source {
name: "bar",
}
prebuilt {
name: "bar",
prefer: true,
srcs: ["prebuilt_file"],
}`,
prebuilt: []OsType{Android, BuildOs},
},
{
name: "prebuilt no file not preferred",
modules: `
source {
name: "bar",
}
prebuilt {
name: "bar",
prefer: false,
srcs: ["prebuilt_file"],
}`,
prebuilt: nil,
},
{
name: "prebuilt preferred",
modules: `
source {
name: "bar",
}
prebuilt {
name: "bar",
prefer: false,
}`,
prebuilt: nil,
},
{
name: "prebuilt no file preferred",
modules: `
source {
name: "bar",
}
prebuilt {
name: "bar",
prefer: true,
srcs: ["prebuilt_file"],
}`,
prebuilt: []OsType{Android, buildOS},
},
{
name: "prebuilt no file not preferred",
modules: `
source {
name: "bar",
}
prebuilt {
name: "bar",
prefer: true,
}`,
prebuilt: nil,
},
{
name: "prebuilt file from filegroup preferred",
modules: `
filegroup {
name: "fg",
srcs: ["prebuilt_file"],
}
prebuilt {
name: "bar",
prefer: true,
srcs: [":fg"],
}`,
prebuilt: []OsType{Android, BuildOs},
},
{
name: "prebuilt module for device only",
modules: `
source {
name: "bar",
}
prebuilt {
name: "bar",
prefer: false,
}`,
prebuilt: nil,
},
{
name: "prebuilt no file preferred",
modules: `
source {
name: "bar",
}
prebuilt {
name: "bar",
host_supported: false,
prefer: true,
srcs: ["prebuilt_file"],
}`,
prebuilt: []OsType{Android},
},
{
name: "prebuilt file for host only",
modules: `
source {
name: "bar",
}
prebuilt {
name: "bar",
prefer: true,
}`,
prebuilt: nil,
},
{
name: "prebuilt file from filegroup preferred",
modules: `
filegroup {
name: "fg",
srcs: ["prebuilt_file"],
}
prebuilt {
name: "bar",
prefer: true,
srcs: [":fg"],
}`,
prebuilt: []OsType{Android, buildOS},
},
{
name: "prebuilt module for device only",
modules: `
source {
name: "bar",
}
prebuilt {
name: "bar",
prefer: true,
target: {
host: {
srcs: ["prebuilt_file"],
},
},
}`,
prebuilt: []OsType{BuildOs},
},
{
name: "prebuilt override not preferred",
modules: `
source {
name: "baz",
}
prebuilt {
name: "bar",
host_supported: false,
prefer: true,
srcs: ["prebuilt_file"],
}`,
prebuilt: []OsType{Android},
},
{
name: "prebuilt file for host only",
modules: `
source {
name: "bar",
}
override_source {
name: "bar",
base: "baz",
}
prebuilt {
name: "bar",
prefer: false,
srcs: ["prebuilt_file"],
}`,
prebuilt: nil,
},
{
name: "prebuilt override preferred",
modules: `
source {
name: "baz",
}
override_source {
name: "bar",
base: "baz",
}
prebuilt {
name: "bar",
prefer: true,
srcs: ["prebuilt_file"],
}`,
prebuilt: []OsType{Android, BuildOs},
},
{
name: "prebuilt including default-disabled OS",
replaceBp: true,
modules: `
source {
name: "foo",
deps: [":bar"],
target: {
windows: {
enabled: true,
},
},
}
source {
name: "bar",
target: {
windows: {
enabled: true,
},
},
}
prebuilt {
name: "bar",
prefer: true,
srcs: ["prebuilt_file"],
target: {
windows: {
enabled: true,
},
},
}`,
prebuilt: []OsType{Android, BuildOs, Windows},
},
{
name: "fall back to source for default-disabled OS",
replaceBp: true,
modules: `
source {
name: "foo",
deps: [":bar"],
target: {
windows: {
enabled: true,
},
},
}
source {
name: "bar",
target: {
windows: {
enabled: true,
},
},
}
prebuilt {
name: "bar",
prefer: true,
srcs: ["prebuilt_file"],
}`,
prebuilt: []OsType{Android, BuildOs},
},
{
name: "prebuilt properties customizable",
replaceBp: true,
modules: `
source {
name: "foo",
deps: [":bar"],
}
soong_config_module_type {
name: "prebuilt_with_config",
module_type: "prebuilt",
config_namespace: "any_namespace",
bool_variables: ["bool_var"],
properties: ["prefer"],
}
prebuilt_with_config {
name: "bar",
prefer: true,
srcs: ["prebuilt_file"],
soong_config_variables: {
bool_var: {
prefer: false,
conditions_default: {
prefer: true,
prebuilt {
name: "bar",
prefer: true,
target: {
host: {
srcs: ["prebuilt_file"],
},
},
},
}`,
prebuilt: []OsType{Android, BuildOs},
},
{
name: "prebuilt use_source_config_var={acme, use_source} - no var specified",
modules: `
source {
name: "bar",
}
}`,
prebuilt: []OsType{buildOS},
},
{
name: "prebuilt override not preferred",
modules: `
source {
name: "baz",
}
prebuilt {
name: "bar",
use_source_config_var: {config_namespace: "acme", var_name: "use_source"},
srcs: ["prebuilt_file"],
}`,
// When use_source_env is specified then it will use the prebuilt by default if the environment
// variable is not set.
prebuilt: []OsType{Android, BuildOs},
},
{
name: "prebuilt use_source_config_var={acme, use_source} - acme_use_source=false",
modules: `
source {
name: "bar",
}
override_source {
name: "bar",
base: "baz",
}
prebuilt {
name: "bar",
use_source_config_var: {config_namespace: "acme", var_name: "use_source"},
srcs: ["prebuilt_file"],
}`,
preparer: FixtureModifyProductVariables(func(variables FixtureProductVariables) {
variables.VendorVars = map[string]map[string]string{
"acme": {
"use_source": "false",
},
}
}),
// Setting the environment variable named in use_source_env to false will cause the prebuilt to
// be used.
prebuilt: []OsType{Android, BuildOs},
},
{
name: "prebuilt use_source_config_var={acme, use_source} - acme_use_source=true",
modules: `
source {
name: "bar",
}
prebuilt {
name: "bar",
prefer: false,
srcs: ["prebuilt_file"],
}`,
prebuilt: nil,
},
{
name: "prebuilt override preferred",
modules: `
source {
name: "baz",
}
prebuilt {
name: "bar",
use_source_config_var: {config_namespace: "acme", var_name: "use_source"},
srcs: ["prebuilt_file"],
}`,
preparer: FixtureModifyProductVariables(func(variables FixtureProductVariables) {
variables.VendorVars = map[string]map[string]string{
"acme": {
"use_source": "true",
},
}
}),
// Setting the environment variable named in use_source_env to true will cause the source to be
// used.
prebuilt: nil,
},
{
name: "prebuilt use_source_config_var={acme, use_source} - acme_use_source=true, no source",
modules: `
prebuilt {
name: "bar",
use_source_config_var: {config_namespace: "acme", var_name: "use_source"},
srcs: ["prebuilt_file"],
}`,
preparer: FixtureModifyProductVariables(func(variables FixtureProductVariables) {
variables.VendorVars = map[string]map[string]string{
"acme": {
"use_source": "true",
},
}
}),
// Although the environment variable says to use source there is no source available.
prebuilt: []OsType{Android, BuildOs},
},
}
override_source {
name: "bar",
base: "baz",
}
prebuilt {
name: "bar",
prefer: true,
srcs: ["prebuilt_file"],
}`,
prebuilt: []OsType{Android, buildOS},
},
{
name: "prebuilt including default-disabled OS",
replaceBp: true,
modules: `
source {
name: "foo",
deps: [":bar"],
target: {
windows: {
enabled: true,
},
},
}
source {
name: "bar",
target: {
windows: {
enabled: true,
},
},
}
prebuilt {
name: "bar",
prefer: true,
srcs: ["prebuilt_file"],
target: {
windows: {
enabled: true,
},
},
}`,
prebuilt: []OsType{Android, buildOS, Windows},
},
{
name: "fall back to source for default-disabled OS",
replaceBp: true,
modules: `
source {
name: "foo",
deps: [":bar"],
target: {
windows: {
enabled: true,
},
},
}
source {
name: "bar",
target: {
windows: {
enabled: true,
},
},
}
prebuilt {
name: "bar",
prefer: true,
srcs: ["prebuilt_file"],
}`,
prebuilt: []OsType{Android, buildOS},
},
{
name: "prebuilt properties customizable",
replaceBp: true,
modules: `
source {
name: "foo",
deps: [":bar"],
}
soong_config_module_type {
name: "prebuilt_with_config",
module_type: "prebuilt",
config_namespace: "any_namespace",
bool_variables: ["bool_var"],
properties: ["prefer"],
}
prebuilt_with_config {
name: "bar",
prefer: true,
srcs: ["prebuilt_file"],
soong_config_variables: {
bool_var: {
prefer: false,
conditions_default: {
prefer: true,
},
},
},
}`,
prebuilt: []OsType{Android, buildOS},
},
{
name: "prebuilt use_source_config_var={acme, use_source} - no var specified",
modules: `
source {
name: "bar",
}
prebuilt {
name: "bar",
use_source_config_var: {config_namespace: "acme", var_name: "use_source"},
srcs: ["prebuilt_file"],
}`,
// When use_source_env is specified then it will use the prebuilt by default if the environment
// variable is not set.
prebuilt: []OsType{Android, buildOS},
},
{
name: "prebuilt use_source_config_var={acme, use_source} - acme_use_source=false",
modules: `
source {
name: "bar",
}
prebuilt {
name: "bar",
use_source_config_var: {config_namespace: "acme", var_name: "use_source"},
srcs: ["prebuilt_file"],
}`,
preparer: FixtureModifyProductVariables(func(variables FixtureProductVariables) {
variables.VendorVars = map[string]map[string]string{
"acme": {
"use_source": "false",
},
}
}),
// Setting the environment variable named in use_source_env to false will cause the prebuilt to
// be used.
prebuilt: []OsType{Android, buildOS},
},
{
name: "prebuilt use_source_config_var={acme, use_source} - acme_use_source=true",
modules: `
source {
name: "bar",
}
prebuilt {
name: "bar",
use_source_config_var: {config_namespace: "acme", var_name: "use_source"},
srcs: ["prebuilt_file"],
}`,
preparer: FixtureModifyProductVariables(func(variables FixtureProductVariables) {
variables.VendorVars = map[string]map[string]string{
"acme": {
"use_source": "true",
},
}
}),
// Setting the environment variable named in use_source_env to true will cause the source to be
// used.
prebuilt: nil,
},
{
name: "prebuilt use_source_config_var={acme, use_source} - acme_use_source=true, no source",
modules: `
prebuilt {
name: "bar",
use_source_config_var: {config_namespace: "acme", var_name: "use_source"},
srcs: ["prebuilt_file"],
}`,
preparer: FixtureModifyProductVariables(func(variables FixtureProductVariables) {
variables.VendorVars = map[string]map[string]string{
"acme": {
"use_source": "true",
},
}
}),
// Although the environment variable says to use source there is no source available.
prebuilt: []OsType{Android, buildOS},
},
}
func TestPrebuilts(t *testing.T) {
fs := MockFS{
"prebuilt_file": nil,
"source_file": nil,