Merge "Allowlist packages instead of modules" into main
diff --git a/README.md b/README.md
index 2d8f0af..22daa95 100644
--- a/README.md
+++ b/README.md
@@ -26,8 +26,6 @@
[bug tracker](https://issuetracker.google.com/issues/new?component=381517) or
or write us at android-building@googlegroups.com .
-For Googlers, see our [internal documentation](http://go/soong).
-
## Android.bp file format
By design, Android.bp files are very simple. There are no conditionals or
diff --git a/android/allowlists/allowlists.go b/android/allowlists/allowlists.go
index 1e0a0b0..906cc4e 100644
--- a/android/allowlists/allowlists.go
+++ b/android/allowlists/allowlists.go
@@ -986,7 +986,6 @@
"conscrypt-for-host", // TODO(b/210751803), we don't handle path property for filegroups
"host-libprotobuf-java-full", // TODO(b/210751803), we don't handle path property for filegroups
"libprotobuf-internal-python-srcs", // TODO(b/210751803), we don't handle path property for filegroups
- "libprotobuf-java-full", // TODO(b/210751803), we don't handle path property for filegroups
"libprotobuf-java-util-full", // TODO(b/210751803), we don't handle path property for filegroups
// go deps:
diff --git a/android/variable.go b/android/variable.go
index 02eff25..524cdf7 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -438,16 +438,17 @@
ShippingApiLevel *string `json:",omitempty"`
- BuildBrokenPluginValidation []string `json:",omitempty"`
- BuildBrokenClangAsFlags bool `json:",omitempty"`
- BuildBrokenClangCFlags bool `json:",omitempty"`
- BuildBrokenClangProperty bool `json:",omitempty"`
- GenruleSandboxing *bool `json:",omitempty"`
- BuildBrokenEnforceSyspropOwner bool `json:",omitempty"`
- BuildBrokenTrebleSyspropNeverallow bool `json:",omitempty"`
- BuildBrokenUsesSoongPython2Modules bool `json:",omitempty"`
- BuildBrokenVendorPropertyNamespace bool `json:",omitempty"`
- BuildBrokenInputDirModules []string `json:",omitempty"`
+ BuildBrokenPluginValidation []string `json:",omitempty"`
+ BuildBrokenClangAsFlags bool `json:",omitempty"`
+ BuildBrokenClangCFlags bool `json:",omitempty"`
+ BuildBrokenClangProperty bool `json:",omitempty"`
+ GenruleSandboxing *bool `json:",omitempty"`
+ BuildBrokenEnforceSyspropOwner bool `json:",omitempty"`
+ BuildBrokenTrebleSyspropNeverallow bool `json:",omitempty"`
+ BuildBrokenUsesSoongPython2Modules bool `json:",omitempty"`
+ BuildBrokenVendorPropertyNamespace bool `json:",omitempty"`
+ BuildBrokenIncorrectPartitionImages bool `json:",omitempty"`
+ BuildBrokenInputDirModules []string `json:",omitempty"`
BuildWarningBadOptionalUsesLibsAllowlist []string `json:",omitempty"`
diff --git a/apex/builder.go b/apex/builder.go
index 4b42b74..1204dbb 100644
--- a/apex/builder.go
+++ b/apex/builder.go
@@ -75,6 +75,8 @@
pctx.HostBinToolVariable("deapexer", "deapexer")
pctx.HostBinToolVariable("debugfs_static", "debugfs_static")
pctx.SourcePathVariable("genNdkUsedbyApexPath", "build/soong/scripts/gen_ndk_usedby_apex.sh")
+ pctx.HostBinToolVariable("conv_linker_config", "conv_linker_config")
+ pctx.HostBinToolVariable("assemble_vintf", "assemble_vintf")
}
var (
@@ -222,6 +224,18 @@
CommandDeps: []string{"${apex_sepolicy_tests}", "${deapexer}", "${debugfs_static}"},
Description: "run apex_sepolicy_tests",
})
+
+ apexLinkerconfigValidationRule = pctx.StaticRule("apexLinkerconfigValidationRule", blueprint.RuleParams{
+ Command: `${conv_linker_config} validate --type apex ${image_dir} && touch ${out}`,
+ CommandDeps: []string{"${conv_linker_config}"},
+ Description: "run apex_linkerconfig_validation",
+ }, "image_dir")
+
+ apexVintfFragmentsValidationRule = pctx.StaticRule("apexVintfFragmentsValidationRule", blueprint.RuleParams{
+ Command: `/bin/bash -c '(shopt -s nullglob; for f in ${image_dir}/etc/vintf/*.xml; do VINTF_IGNORE_TARGET_FCM_VERSION=true ${assemble_vintf} -i "$$f" > /dev/null; done)' && touch ${out}`,
+ CommandDeps: []string{"${assemble_vintf}"},
+ Description: "run apex_vintf_validation",
+ }, "image_dir")
)
// buildManifest creates buile rules to modify the input apex_manifest.json to add information
@@ -843,6 +857,10 @@
args["outCommaList"] = signedOutputFile.String()
}
var validations android.Paths
+ validations = append(validations, runApexLinkerconfigValidation(ctx, unsignedOutputFile.OutputPath, imageDir.OutputPath))
+ if !a.testApex && a.SocSpecific() {
+ validations = append(validations, runApexVintfFragmentsValidation(ctx, unsignedOutputFile.OutputPath, imageDir.OutputPath))
+ }
// TODO(b/279688635) deapexer supports [ext4]
if suffix == imageApexSuffix && ext4 == a.payloadFsType {
validations = append(validations, runApexSepolicyTests(ctx, unsignedOutputFile.OutputPath))
@@ -1097,6 +1115,32 @@
return cannedFsConfig.OutputPath
}
+func runApexLinkerconfigValidation(ctx android.ModuleContext, apexFile android.OutputPath, imageDir android.OutputPath) android.Path {
+ timestamp := android.PathForModuleOut(ctx, "apex_linkerconfig_validation.timestamp")
+ ctx.Build(pctx, android.BuildParams{
+ Rule: apexLinkerconfigValidationRule,
+ Input: apexFile,
+ Output: timestamp,
+ Args: map[string]string{
+ "image_dir": imageDir.String(),
+ },
+ })
+ return timestamp
+}
+
+func runApexVintfFragmentsValidation(ctx android.ModuleContext, apexFile android.OutputPath, imageDir android.OutputPath) android.Path {
+ timestamp := android.PathForModuleOut(ctx, "apex_vintf_fragments_validation.timestamp")
+ ctx.Build(pctx, android.BuildParams{
+ Rule: apexVintfFragmentsValidationRule,
+ Input: apexFile,
+ Output: timestamp,
+ Args: map[string]string{
+ "image_dir": imageDir.String(),
+ },
+ })
+ return timestamp
+}
+
// Runs apex_sepolicy_tests
//
// $ deapexer list -Z {apex_file} > {file_contexts}
diff --git a/bp2build/aar_conversion_test.go b/bp2build/aar_conversion_test.go
index a24378c..13bb167 100644
--- a/bp2build/aar_conversion_test.go
+++ b/bp2build/aar_conversion_test.go
@@ -35,7 +35,7 @@
"res/res.png": "",
"manifest/AndroidManifest.xml": "",
},
- Blueprint: simpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + `
android_library {
name: "TestLib",
srcs: ["lib.java"],
@@ -82,7 +82,7 @@
"res/res.png": "",
"AndroidManifest.xml": "",
},
- Blueprint: simpleModuleDoNotConvertBp2build("android_library", "lib_dep") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "lib_dep") + `
android_library {
name: "TestLib",
srcs: [],
@@ -113,8 +113,8 @@
// Bazel's aar_import can only export *_import targets, so we expect
// only "static_import_dep" in exports, but both "static_lib_dep" and
// "static_import_dep" in deps
- Blueprint: simpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") +
- simpleModuleDoNotConvertBp2build("android_library_import", "static_import_dep") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") +
+ SimpleModuleDoNotConvertBp2build("android_library_import", "static_import_dep") + `
android_library_import {
name: "TestImport",
aars: ["import.aar"],
diff --git a/bp2build/android_app_conversion_test.go b/bp2build/android_app_conversion_test.go
index f2ee322..0d206b0 100644
--- a/bp2build/android_app_conversion_test.go
+++ b/bp2build/android_app_conversion_test.go
@@ -78,7 +78,7 @@
"manifest/AndroidManifest.xml": "",
"assets_/asset.png": "",
},
- Blueprint: simpleModuleDoNotConvertBp2build("android_app", "static_lib_dep") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("android_app", "static_lib_dep") + `
android_app {
name: "TestApp",
srcs: ["app.java"],
@@ -177,7 +177,7 @@
ModuleTypeUnderTest: "android_app",
ModuleTypeUnderTestFactory: java.AndroidAppFactory,
Filesystem: map[string]string{},
- Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "foocert") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "foocert") + `
android_app {
name: "TestApp",
certificate: ":foocert",
@@ -262,7 +262,7 @@
ModuleTypeUnderTest: "android_app",
ModuleTypeUnderTestFactory: java.AndroidAppFactory,
Filesystem: map[string]string{},
- Blueprint: simpleModuleDoNotConvertBp2build("java_library", "barLib") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("java_library", "barLib") + `
android_app {
name: "foo",
libs: ["barLib"],
@@ -291,8 +291,8 @@
Filesystem: map[string]string{
"res/res.png": "",
},
- Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "foocert") +
- simpleModuleDoNotConvertBp2build("java_library", "barLib") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "foocert") +
+ SimpleModuleDoNotConvertBp2build("java_library", "barLib") + `
android_app {
name: "foo",
srcs: ["a.java", "b.kt"],
diff --git a/bp2build/apex_conversion_test.go b/bp2build/apex_conversion_test.go
index 2383247..5aed4ad 100644
--- a/bp2build/apex_conversion_test.go
+++ b/bp2build/apex_conversion_test.go
@@ -1263,7 +1263,7 @@
file_contexts: ":com.android.apogee-file_contexts",
certificate: ":com.android.apogee.certificate",
}
-` + simpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee-file_contexts"),
+` + SimpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee-file_contexts"),
ExpectedBazelTargets: []string{
MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{
"certificate": `":com.android.apogee.certificate"`,
@@ -1299,7 +1299,7 @@
binaries: ["bar"],
native_shared_libs: ["foo"],
}
-` + simpleModuleDoNotConvertBp2build("filegroup", "myapex-file_contexts"),
+` + SimpleModuleDoNotConvertBp2build("filegroup", "myapex-file_contexts"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_binary", "bar", AttrNameToString{
"local_includes": `["."]`,
@@ -1356,7 +1356,7 @@
file_contexts: ":com.android.apogee-file_contexts",
certificate: "com.android.apogee.certificate",
}
-` + simpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee-file_contexts"),
+` + SimpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee-file_contexts"),
ExpectedBazelTargets: []string{
MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{
"certificate_name": `"com.android.apogee.certificate"`,
diff --git a/bp2build/apex_key_conversion_test.go b/bp2build/apex_key_conversion_test.go
index 1230a48..8f6e843 100644
--- a/bp2build/apex_key_conversion_test.go
+++ b/bp2build/apex_key_conversion_test.go
@@ -89,8 +89,8 @@
public_key: ":com.android.apogee.avbpubkey",
private_key: ":com.android.apogee.pem",
}
-` + simpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee.avbpubkey") +
- simpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee.pem"),
+` + SimpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee.avbpubkey") +
+ SimpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee.pem"),
ExpectedBazelTargets: []string{MakeBazelTargetNoRestrictions("apex_key", "com.android.apogee.key", AttrNameToString{
"private_key": `":com.android.apogee.pem"`,
"public_key": `":com.android.apogee.avbpubkey"`,
diff --git a/bp2build/bp2build_product_config.go b/bp2build/bp2build_product_config.go
index 0214941..20355d7 100644
--- a/bp2build/bp2build_product_config.go
+++ b/bp2build/bp2build_product_config.go
@@ -261,6 +261,7 @@
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:apex_global_min_sdk_version_override=%s\n", proptools.String(productVariables.ApexGlobalMinSdkVersionOverride)))
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:binder32bit=%t\n", proptools.Bool(productVariables.Binder32bit)))
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:build_from_text_stub=%t\n", proptools.Bool(productVariables.Build_from_text_stub)))
+ result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:build_broken_incorrect_partition_images=%t\n", productVariables.BuildBrokenIncorrectPartitionImages))
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:build_id=%s\n", proptools.String(productVariables.BuildId)))
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:build_version_tags=%s\n", strings.Join(productVariables.BuildVersionTags, ",")))
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:cfi_exclude_paths=%s\n", strings.Join(productVariables.CFIExcludePaths, ",")))
diff --git a/bp2build/build_conversion_test.go b/bp2build/build_conversion_test.go
index 3887c5d..4897566 100644
--- a/bp2build/build_conversion_test.go
+++ b/bp2build/build_conversion_test.go
@@ -1743,7 +1743,7 @@
Description: "Required into data test",
ModuleTypeUnderTest: "filegroup",
ModuleTypeUnderTestFactory: android.FileGroupFactory,
- Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "reqd") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "reqd") + `
filegroup {
name: "fg_foo",
required: ["reqd"],
@@ -1759,7 +1759,7 @@
Description: "Required into data test, cyclic self reference is filtered out",
ModuleTypeUnderTest: "filegroup",
ModuleTypeUnderTestFactory: android.FileGroupFactory,
- Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "reqd") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "reqd") + `
filegroup {
name: "fg_foo",
required: ["reqd", "fg_foo"],
@@ -1775,8 +1775,8 @@
Description: "Required via arch into data test",
ModuleTypeUnderTest: "python_library",
ModuleTypeUnderTestFactory: python.PythonLibraryFactory,
- Blueprint: simpleModuleDoNotConvertBp2build("python_library", "reqdx86") +
- simpleModuleDoNotConvertBp2build("python_library", "reqdarm") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("python_library", "reqdx86") +
+ SimpleModuleDoNotConvertBp2build("python_library", "reqdarm") + `
python_library {
name: "fg_foo",
arch: {
@@ -1809,7 +1809,7 @@
"data.bin": "",
"src.py": "",
},
- Blueprint: simpleModuleDoNotConvertBp2build("python_library", "reqd") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("python_library", "reqd") + `
python_library {
name: "fg_foo",
data: ["data.bin"],
@@ -1831,7 +1831,7 @@
Description: "All props-to-attrs at once together test",
ModuleTypeUnderTest: "filegroup",
ModuleTypeUnderTestFactory: android.FileGroupFactory,
- Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "reqd") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "reqd") + `
filegroup {
name: "fg_foo",
required: ["reqd"],
diff --git a/bp2build/cc_binary_conversion_test.go b/bp2build/cc_binary_conversion_test.go
index 90db365..3d3b860 100644
--- a/bp2build/cc_binary_conversion_test.go
+++ b/bp2build/cc_binary_conversion_test.go
@@ -276,7 +276,7 @@
],
include_build_directory: false,
}
-` + simpleModuleDoNotConvertBp2build("filegroup", "fg_foo"),
+` + SimpleModuleDoNotConvertBp2build("filegroup", "fg_foo"),
targets: []testBazelTarget{
{"cc_binary", "foo", AttrNameToString{
"srcs": `[
@@ -326,12 +326,12 @@
export_generated_headers: ["export_generated_hdr"],
}
` +
- simpleModuleDoNotConvertBp2build("cc_library_static", "static_dep") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep") +
- simpleModuleDoNotConvertBp2build("cc_library", "shared_dep") +
- simpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep"),
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "static_dep") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "shared_dep") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep"),
targets: []testBazelTarget{
{"cc_binary", "foo", AttrNameToString{
"deps": `[
@@ -1226,7 +1226,7 @@
runCcBinaryTestCase(t, ccBinaryBp2buildTestCase{
description: "cc_library_static system_shared_lib empty for linux_bionic variant",
blueprint: soongCcLibraryStaticPreamble +
- simpleModuleDoNotConvertBp2build("cc_library", "libc") + `
+ SimpleModuleDoNotConvertBp2build("cc_library", "libc") + `
cc_library {
name: "libm",
diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go
index 9bb1713..7af788e 100644
--- a/bp2build/cc_library_conversion_test.go
+++ b/bp2build/cc_library_conversion_test.go
@@ -94,7 +94,7 @@
"foo-dir/a.h": "",
},
Blueprint: soongCcLibraryPreamble +
- simpleModuleDoNotConvertBp2build("cc_library_headers", "some-headers") + `
+ SimpleModuleDoNotConvertBp2build("cc_library_headers", "some-headers") + `
cc_library {
name: "foo-lib",
srcs: ["impl.cpp"],
@@ -176,7 +176,7 @@
"linker_cfi.h": "",
},
Blueprint: soongCcLibraryPreamble +
- simpleModuleDoNotConvertBp2build("cc_library_headers", "libc_headers") + `
+ SimpleModuleDoNotConvertBp2build("cc_library_headers", "libc_headers") + `
cc_library {
name: "fake-ld-android",
srcs: ["ld_android.cpp"],
@@ -457,24 +457,24 @@
},
include_build_directory: false,
}
-` + simpleModuleDoNotConvertBp2build("cc_library_static", "static_dep_for_shared") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep_for_shared") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "static_dep_for_static") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep_for_static") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "static_dep_for_both") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep_for_both") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep_for_shared") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep_for_shared") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep_for_static") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep_for_static") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep_for_both") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep_for_both") +
- simpleModuleDoNotConvertBp2build("cc_library", "shared_dep_for_shared") +
- simpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep_for_shared") +
- simpleModuleDoNotConvertBp2build("cc_library", "shared_dep_for_static") +
- simpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep_for_static") +
- simpleModuleDoNotConvertBp2build("cc_library", "shared_dep_for_both") +
- simpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep_for_both"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_static", "static_dep_for_shared") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep_for_shared") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "static_dep_for_static") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep_for_static") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "static_dep_for_both") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep_for_both") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep_for_shared") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep_for_shared") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep_for_static") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep_for_static") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep_for_both") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep_for_both") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "shared_dep_for_shared") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep_for_shared") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "shared_dep_for_static") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep_for_static") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "shared_dep_for_both") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep_for_both"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{
"copts": `[
@@ -2549,10 +2549,10 @@
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
Blueprint: soongCcProtoPreamble +
- simpleModuleDoNotConvertBp2build("filegroup", "a_fg_proto") +
- simpleModuleDoNotConvertBp2build("filegroup", "b_protos") +
- simpleModuleDoNotConvertBp2build("filegroup", "c-proto-srcs") +
- simpleModuleDoNotConvertBp2build("filegroup", "proto-srcs-d") + `
+ SimpleModuleDoNotConvertBp2build("filegroup", "a_fg_proto") +
+ SimpleModuleDoNotConvertBp2build("filegroup", "b_protos") +
+ SimpleModuleDoNotConvertBp2build("filegroup", "c-proto-srcs") +
+ SimpleModuleDoNotConvertBp2build("filegroup", "proto-srcs-d") + `
cc_library {
name: "a",
srcs: [":a_fg_proto"],
@@ -2882,7 +2882,7 @@
Filesystem: map[string]string{
"bar.map.txt": "",
},
- Blueprint: simpleModuleDoNotConvertBp2build("cc_library", "bazlib") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("cc_library", "bazlib") + `
cc_library {
name: "quxlib",
stubs: { symbol_file: "bar.map.txt", versions: ["current"] },
@@ -3537,10 +3537,10 @@
"baz-shared",
],
}` +
- simpleModuleDoNotConvertBp2build("cc_library_static", "bar-static") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "baz-static") +
- simpleModuleDoNotConvertBp2build("cc_library", "bar-shared") +
- simpleModuleDoNotConvertBp2build("cc_library", "baz-shared"),
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "bar-static") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "baz-static") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "bar-shared") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "baz-shared"),
ExpectedBazelTargets: []string{
MakeBazelTarget("aidl_library", "foo_aidl_library", AttrNameToString{
"srcs": `["Foo.aidl"]`,
@@ -4744,7 +4744,7 @@
canonical_path_from_root: true,
}
}
-` + simpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
+` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
Filesystem: map[string]string{
"bar/Android.bp": "",
"baz/subbaz/Android.bp": "",
@@ -4812,7 +4812,7 @@
canonical_path_from_root: false,
}
}
-` + simpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
+` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
Filesystem: map[string]string{
"bar/Android.bp": "",
"baz/subbaz/Android.bp": "",
@@ -4882,7 +4882,7 @@
include_dirs: ["bar"],
}
}
-` + simpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
+` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
Filesystem: map[string]string{
"bar/Android.bp": "",
"bar/bar.proto": "",
@@ -4953,7 +4953,7 @@
include_dirs: ["baz"],
}
}
-` + simpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
+` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
Filesystem: map[string]string{
"bar/Android.bp": "", // package boundary
"baz/Android.bp": "",
@@ -4988,7 +4988,7 @@
Description: "cc_library depends on .proto files using proto.local_include_dirs",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
- Blueprint: simpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
+ Blueprint: SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
Filesystem: map[string]string{
"foo/Android.bp": `cc_library_static {
name: "foo",
@@ -5045,7 +5045,7 @@
Description: "proto_library generated for proto.include_dirs is compatible for all axes",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
- Blueprint: simpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite") + `
cc_library {
name: "foo_device",
device_supported: true, // this is the default behavior, but added explicitly here for illustration
diff --git a/bp2build/cc_library_headers_conversion_test.go b/bp2build/cc_library_headers_conversion_test.go
index a592ca9..40e8451 100644
--- a/bp2build/cc_library_headers_conversion_test.go
+++ b/bp2build/cc_library_headers_conversion_test.go
@@ -340,7 +340,7 @@
static_libs: ["foo_export", "foo_no_reexport"],
bazel_module: { bp2build_available: true },
}
-` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,
@@ -362,7 +362,7 @@
shared_libs: ["foo_export", "foo_no_reexport"],
bazel_module: { bp2build_available: true },
}
-` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,
@@ -384,7 +384,7 @@
header_libs: ["foo_export", "foo_no_reexport"],
bazel_module: { bp2build_available: true },
}
-` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,
@@ -405,7 +405,7 @@
whole_static_libs: ["foo_export"],
bazel_module: { bp2build_available: true },
}
-` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,
diff --git a/bp2build/cc_library_static_conversion_test.go b/bp2build/cc_library_static_conversion_test.go
index 89ec8f9..b9508e9 100644
--- a/bp2build/cc_library_static_conversion_test.go
+++ b/bp2build/cc_library_static_conversion_test.go
@@ -1045,17 +1045,17 @@
"for-x86.cpp": "",
"not-for-x86.cpp": "",
"not-for-everything.cpp": "",
- "dep/Android.bp": simpleModuleDoNotConvertBp2build("genrule", "generated_src_other_pkg") +
- simpleModuleDoNotConvertBp2build("genrule", "generated_hdr_other_pkg") +
- simpleModuleDoNotConvertBp2build("genrule", "generated_src_other_pkg_x86") +
- simpleModuleDoNotConvertBp2build("genrule", "generated_hdr_other_pkg_x86") +
- simpleModuleDoNotConvertBp2build("genrule", "generated_hdr_other_pkg_android"),
+ "dep/Android.bp": SimpleModuleDoNotConvertBp2build("genrule", "generated_src_other_pkg") +
+ SimpleModuleDoNotConvertBp2build("genrule", "generated_hdr_other_pkg") +
+ SimpleModuleDoNotConvertBp2build("genrule", "generated_src_other_pkg_x86") +
+ SimpleModuleDoNotConvertBp2build("genrule", "generated_hdr_other_pkg_x86") +
+ SimpleModuleDoNotConvertBp2build("genrule", "generated_hdr_other_pkg_android"),
},
Blueprint: soongCcLibraryStaticPreamble +
- simpleModuleDoNotConvertBp2build("genrule", "generated_src") +
- simpleModuleDoNotConvertBp2build("genrule", "generated_src_not_x86") +
- simpleModuleDoNotConvertBp2build("genrule", "generated_src_android") +
- simpleModuleDoNotConvertBp2build("genrule", "generated_hdr") + `
+ SimpleModuleDoNotConvertBp2build("genrule", "generated_src") +
+ SimpleModuleDoNotConvertBp2build("genrule", "generated_src_not_x86") +
+ SimpleModuleDoNotConvertBp2build("genrule", "generated_src_android") +
+ SimpleModuleDoNotConvertBp2build("genrule", "generated_hdr") + `
cc_library_static {
name: "foo_static",
srcs: ["common.cpp", "not-for-*.cpp"],
@@ -1460,7 +1460,7 @@
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static system_shared_libs set for bionic variant",
Blueprint: soongCcLibraryStaticPreamble +
- simpleModuleDoNotConvertBp2build("cc_library", "libc") + `
+ SimpleModuleDoNotConvertBp2build("cc_library", "libc") + `
cc_library {
name: "libc_musl",
bazel_module: { bp2build_available: false },
@@ -1493,8 +1493,8 @@
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static system_shared_libs set for root and linux_bionic variant",
Blueprint: soongCcLibraryStaticPreamble +
- simpleModuleDoNotConvertBp2build("cc_library", "libc") +
- simpleModuleDoNotConvertBp2build("cc_library", "libm") + `
+ SimpleModuleDoNotConvertBp2build("cc_library", "libc") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "libm") + `
cc_library {
name: "libc_musl",
bazel_module: { bp2build_available: false },
@@ -1527,7 +1527,7 @@
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static system_shared_lib empty for linux_bionic variant",
Blueprint: soongCcLibraryStaticPreamble +
- simpleModuleDoNotConvertBp2build("cc_library", "libc") + `
+ SimpleModuleDoNotConvertBp2build("cc_library", "libc") + `
cc_library {
name: "libm",
@@ -2269,7 +2269,7 @@
name: "myprotogen",
out: ["myproto.proto"],
}
-` + simpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
+` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_static", "mylib", AttrNameToString{
"local_includes": `["."]`,
diff --git a/bp2build/cc_test_conversion_test.go b/bp2build/cc_test_conversion_test.go
index 9639ab9..74a5c0d 100644
--- a/bp2build/cc_test_conversion_test.go
+++ b/bp2build/cc_test_conversion_test.go
@@ -89,14 +89,14 @@
host_supported: true,
include_build_directory: false,
}
-` + simpleModuleDoNotConvertBp2build("cc_library", "foolib") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "hostlib") +
- simpleModuleDoNotConvertBp2build("genrule", "data_mod") +
- simpleModuleDoNotConvertBp2build("cc_binary", "cc_bin") +
- simpleModuleDoNotConvertBp2build("cc_library", "cc_lib") +
- simpleModuleDoNotConvertBp2build("cc_test_library", "cc_test_lib2") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
+` + SimpleModuleDoNotConvertBp2build("cc_library", "foolib") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "hostlib") +
+ SimpleModuleDoNotConvertBp2build("genrule", "data_mod") +
+ SimpleModuleDoNotConvertBp2build("cc_binary", "cc_bin") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "cc_lib") +
+ SimpleModuleDoNotConvertBp2build("cc_test_library", "cc_test_lib2") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
targets: []testBazelTarget{
{"cc_library_shared", "cc_test_lib1", AttrNameToString{}},
{"cc_library_static", "cc_test_lib1_bp2build_cc_library_static", AttrNameToString{}},
@@ -196,8 +196,8 @@
srcs: ["test.cpp"],
test_options: { tags: ["no-remote"] },
}
-` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"tags": `["no-remote"]`,
@@ -236,8 +236,8 @@
srcs: ["test.cpp"],
test_config: "test_config.xml",
}
-` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@@ -274,8 +274,8 @@
name: "mytest",
srcs: ["test.cpp"],
}
-` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@@ -315,8 +315,8 @@
auto_gen_config: true,
isolated: true,
}
-` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
- simpleModuleDoNotConvertBp2build("cc_library", "liblog"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "liblog"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"auto_generate_test_config": "True",
@@ -354,8 +354,8 @@
srcs: ["test.cpp"],
static_libs: ["libgtest"],
}
-` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@@ -389,8 +389,8 @@
srcs: ["test.cpp"],
isolated: true,
}
-` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
- simpleModuleDoNotConvertBp2build("cc_library", "liblog"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "liblog"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@@ -425,8 +425,8 @@
name: "mytest_with_no_gtest",
gtest: false,
}
-` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
- simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
+ SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
targets: []testBazelTarget{
{"cc_test", "mytest_with_gtest", AttrNameToString{
"local_includes": `["."]`,
@@ -477,8 +477,8 @@
memtag_heap: false,
},
}
-` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
- simpleModuleDoNotConvertBp2build("cc_library", "liblog"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "liblog"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@@ -513,8 +513,8 @@
}
},
}
-` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
- simpleModuleDoNotConvertBp2build("cc_library", "liblog"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "liblog"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@@ -549,8 +549,8 @@
}
},
}
-` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
- simpleModuleDoNotConvertBp2build("cc_library", "liblog"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "liblog"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@@ -594,8 +594,8 @@
}
},
}
-` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
- simpleModuleDoNotConvertBp2build("cc_library", "liblog"),
+` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
+ SimpleModuleDoNotConvertBp2build("cc_library", "liblog"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
diff --git a/bp2build/java_library_conversion_test.go b/bp2build/java_library_conversion_test.go
index 512c1e1..8c78217 100644
--- a/bp2build/java_library_conversion_test.go
+++ b/bp2build/java_library_conversion_test.go
@@ -677,7 +677,7 @@
Description: "Android Library - simple arch feature",
ModuleTypeUnderTest: "android_library",
ModuleTypeUnderTestFactory: java.AndroidLibraryFactory,
- Blueprint: simpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + `
android_library {
name: "TestLib",
manifest: "manifest/AndroidManifest.xml",
@@ -715,7 +715,7 @@
Description: "Android Library - multiple arch features",
ModuleTypeUnderTest: "android_library",
ModuleTypeUnderTestFactory: java.AndroidLibraryFactory,
- Blueprint: simpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + `
android_library {
name: "TestLib",
manifest: "manifest/AndroidManifest.xml",
@@ -761,7 +761,7 @@
Description: "Android Library - exclude_srcs with arch feature",
ModuleTypeUnderTest: "android_library",
ModuleTypeUnderTestFactory: java.AndroidLibraryFactory,
- Blueprint: simpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + `
+ Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + `
android_library {
name: "TestLib",
manifest: "manifest/AndroidManifest.xml",
diff --git a/bp2build/python_binary_conversion_test.go b/bp2build/python_binary_conversion_test.go
index 1b538d0..4ccdba7 100644
--- a/bp2build/python_binary_conversion_test.go
+++ b/bp2build/python_binary_conversion_test.go
@@ -298,8 +298,8 @@
"r1",
"r2",
],
-}` + simpleModuleDoNotConvertBp2build("genrule", "r1") +
- simpleModuleDoNotConvertBp2build("genrule", "r2"),
+}` + SimpleModuleDoNotConvertBp2build("genrule", "r1") +
+ SimpleModuleDoNotConvertBp2build("genrule", "r2"),
ExpectedBazelTargets: []string{
MakeBazelTarget("py_binary", "foo", AttrNameToString{
diff --git a/bp2build/testing.go b/bp2build/testing.go
index 997df64..0e7ef44 100644
--- a/bp2build/testing.go
+++ b/bp2build/testing.go
@@ -570,7 +570,7 @@
ctx.RegisterForBazelConversion()
}
-func simpleModuleDoNotConvertBp2build(typ, name string) string {
+func SimpleModuleDoNotConvertBp2build(typ, name string) string {
return fmt.Sprintf(`
%s {
name: "%s",
diff --git a/cc/bp2build.go b/cc/bp2build.go
index 62416f7..039a3cf 100644
--- a/cc/bp2build.go
+++ b/cc/bp2build.go
@@ -1380,10 +1380,10 @@
// having stubs or not, so Bazel select() statement can be used to choose
// source/stub variants of them.
apexAvailable := module.ApexAvailable()
- setStubsForDynamicDeps(ctx, axis, config, apexAvailable, sharedDeps.export, &la.dynamicDeps, 0, false)
- setStubsForDynamicDeps(ctx, axis, config, apexAvailable, sharedDeps.implementation, &la.implementationDynamicDeps, 1, false)
+ SetStubsForDynamicDeps(ctx, axis, config, apexAvailable, sharedDeps.export, &la.dynamicDeps, 0, false)
+ SetStubsForDynamicDeps(ctx, axis, config, apexAvailable, sharedDeps.implementation, &la.implementationDynamicDeps, 1, false)
if len(systemSharedLibs) > 0 {
- setStubsForDynamicDeps(ctx, axis, config, apexAvailable, bazelLabelForSharedDeps(ctx, systemSharedLibs), &la.systemDynamicDeps, 2, true)
+ SetStubsForDynamicDeps(ctx, axis, config, apexAvailable, bazelLabelForSharedDeps(ctx, systemSharedLibs), &la.systemDynamicDeps, 2, true)
}
}
@@ -1583,7 +1583,7 @@
}
}
-func setStubsForDynamicDeps(ctx android.BazelConversionPathContext, axis bazel.ConfigurationAxis,
+func SetStubsForDynamicDeps(ctx android.BazelConversionPathContext, axis bazel.ConfigurationAxis,
config string, apexAvailable []string, dynamicLibs bazel.LabelList, dynamicDeps *bazel.LabelListAttribute, ind int, buildNonApexWithStubs bool) {
// Create a config_setting for each apex_available.
diff --git a/scripts/conv_linker_config.py b/scripts/conv_linker_config.py
index 3ac1b7e..c6aa3d0 100644
--- a/scripts/conv_linker_config.py
+++ b/scripts/conv_linker_config.py
@@ -120,6 +120,37 @@
f.write(pb.SerializeToString())
+def Validate(args):
+ if os.path.isdir(args.input):
+ config_file = os.path.join(args.input, 'etc/linker.config.pb')
+ if os.path.exists(config_file):
+ args.input = config_file
+ Validate(args)
+ # OK if there's no linker config file.
+ return
+
+ if not os.path.isfile(args.input):
+ sys.exit(f"{args.input} is not a file")
+
+ pb = linker_config_pb2.LinkerConfig()
+ with open(args.input, 'rb') as f:
+ pb.ParseFromString(f.read())
+
+ if args.type == 'apex':
+ # Shouldn't use provideLibs/requireLibs in APEX linker.config.pb
+ if getattr(pb, 'provideLibs'):
+ sys.exit(f'{args.input}: provideLibs is set. Use provideSharedLibs in apex_manifest')
+ if getattr(pb, 'requireLibs'):
+ sys.exit(f'{args.input}: requireLibs is set. Use requireSharedLibs in apex_manifest')
+ elif args.type == 'system':
+ if getattr(pb, 'visible'):
+ sys.exit(f'{args.input}: do not use visible, which is for APEX')
+ if getattr(pb, 'permittedPaths'):
+ sys.exit(f'{args.input}: do not use permittedPaths, which is for APEX')
+ else:
+ sys.exit(f'Unknown type: {args.type}')
+
+
def GetArgParser():
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
@@ -227,6 +258,18 @@
help='Linker configuration files to merge.')
append.set_defaults(func=Merge)
+ validate = subparsers.add_parser('validate', help='Validate configuration')
+ validate.add_argument(
+ '--type',
+ required=True,
+ choices=['apex', 'system'],
+ help='Type of linker configuration')
+ validate.add_argument(
+ 'input',
+ help='Input can be a directory which has etc/linker.config.pb or a path'
+ ' to the linker config file')
+ validate.set_defaults(func=Validate)
+
return parser
diff --git a/ui/build/ninja.go b/ui/build/ninja.go
index 61aaad8..b69e938 100644
--- a/ui/build/ninja.go
+++ b/ui/build/ninja.go
@@ -194,6 +194,10 @@
// LLVM compiler wrapper options
"TOOLCHAIN_RUSAGE_OUTPUT",
+
+ // We don't want this build broken flag to cause reanalysis, so allow it through to the
+ // actions.
+ "BUILD_BROKEN_INCORRECT_PARTITION_IMAGES",
}, config.BuildBrokenNinjaUsesEnvVars()...)...)
}