Merge "Dedup cc binary build components registration"
diff --git a/android/apex.go b/android/apex.go
index 8482dc2..0b901ae 100644
--- a/android/apex.go
+++ b/android/apex.go
@@ -144,9 +144,9 @@
func CheckAvailableForApex(what string, apex_available []string) bool {
if len(apex_available) == 0 {
- // apex_available defaults to ["//apex_available:platform", "//apex_available:anyapex"],
- // which means 'available to everybody'.
- return true
+ // apex_available defaults to ["//apex_available:platform"],
+ // which means 'available to the platform but no apexes'.
+ return what == AvailableToPlatform
}
return InList(what, apex_available) ||
(what != AvailableToPlatform && InList(availableToAnyApex, apex_available))
diff --git a/android/config.go b/android/config.go
index 3c49c1a..1cb543d 100644
--- a/android/config.go
+++ b/android/config.go
@@ -835,6 +835,14 @@
return c.Getenv("XREF_CORPUS")
}
+// Returns Compilation Unit encoding to use. Can be 'json' (default), 'proto' or 'all'.
+func (c *config) XrefCuEncoding() string {
+ if enc := c.Getenv("KYTHE_KZIP_ENCODING"); enc != "" {
+ return enc
+ }
+ return "json"
+}
+
func (c *config) EmitXrefRules() bool {
return c.XrefCorpusName() != ""
}
diff --git a/android/module.go b/android/module.go
index 67d1f12..05115d6 100644
--- a/android/module.go
+++ b/android/module.go
@@ -1746,7 +1746,7 @@
Rule: Symlink,
Description: "install symlink " + fullInstallPath.Base(),
Output: fullInstallPath,
- OrderOnly: Paths{srcPath},
+ Input: srcPath,
Default: !m.Config().EmbeddedInMake(),
Args: map[string]string{
"fromPath": relPath,
diff --git a/apex/apex.go b/apex/apex.go
index 8149102..33b1be3 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -57,8 +57,249 @@
certificateTag = dependencyTag{name: "certificate"}
usesTag = dependencyTag{name: "uses"}
androidAppTag = dependencyTag{name: "androidApp"}
+ apexAvailWl = makeApexAvailableWhitelist()
)
+// This is a map from apex to modules, which overrides the
+// apex_available setting for that particular module to make
+// it available for the apex regardless of its setting.
+// TODO(b/147364041): remove this
+func makeApexAvailableWhitelist() map[string][]string {
+ // The "Module separator"s below are employed to minimize merge conflicts.
+ m := make(map[string][]string)
+ //
+ // Module separator
+ //
+ m["com.android.adbd"] = []string{"adbd", "libcrypto"}
+ //
+ // Module separator
+ //
+ m["com.android.art"] = []string{
+ "jacocoagent",
+ "libadbconnection_server",
+ "libartd-disassembler",
+ "libbacktrace",
+ "libbase",
+ "libc++",
+ "libcrypto",
+ "libdexfile_support",
+ "libexpat",
+ "libicuuc",
+ "liblzma",
+ "libmeminfo",
+ "libprocinfo",
+ "libunwindstack",
+ "libvixl",
+ "libvixld",
+ "libz",
+ "libziparchive",
+ "prebuilt_libclang_rt",
+ }
+ //
+ // Module separator
+ //
+ m["com.android.bluetooth.updatable"] = []string{
+ "android.hardware.audio.common@5.0",
+ "android.hardware.bluetooth@1.0",
+ "android.hardware.bluetooth@1.1",
+ "android.hardware.bluetooth.a2dp@1.0",
+ "android.hardware.bluetooth.audio@2.0",
+ "android.hidl.safe_union@1.0",
+ "libbase",
+ "libbinderthreadstate",
+ "libbluetooth",
+ "libbluetooth_jni",
+ "libc++",
+ "libchrome",
+ "libcrypto",
+ "libcutils",
+ "libevent",
+ "libfmq",
+ "libhidlbase",
+ "libprocessgroup",
+ "libprotobuf-cpp-lite",
+ "libstatslog",
+ "libtinyxml2",
+ "libutils",
+ "libz",
+ }
+ //
+ // Module separator
+ //
+ m["com.android.conscrypt"] = []string{"boringssl_self_test", "libc++", "libcrypto", "libssl"}
+ //
+ // Module separator
+ //
+ m["com.android.cronet"] = []string{"org.chromium.net.cronet", "prebuilt_libcronet.80.0.3986.0"}
+ //
+ // Module separator
+ //
+ m["com.android.media"] = []string{
+ "android.hardware.cas@1.0",
+ "android.hardware.cas.native@1.0",
+ "android.hidl.allocator@1.0",
+ "android.hidl.memory@1.0",
+ "android.hidl.memory.token@1.0",
+ "android.hidl.token@1.0",
+ "android.hidl.token@1.0-utils",
+ "libaacextractor",
+ "libamrextractor",
+ "libbase",
+ "libbinderthreadstate",
+ "libc++",
+ "libcrypto",
+ "libcutils",
+ "libflacextractor",
+ "libhidlbase",
+ "libhidlmemory",
+ "libmidiextractor",
+ "libmkvextractor",
+ "libmp3extractor",
+ "libmp4extractor",
+ "libmpeg2extractor",
+ "liboggextractor",
+ "libprocessgroup",
+ "libutils",
+ "libwavextractor",
+ "updatable-media",
+ }
+ //
+ // Module separator
+ //
+ m["com.android.media.swcodec"] = []string{
+ "android.frameworks.bufferhub@1.0",
+ "android.hardware.configstore@1.0",
+ "android.hardware.configstore@1.1",
+ "android.hardware.configstore-utils",
+ "android.hardware.graphics.allocator@2.0",
+ "android.hardware.graphics.allocator@3.0",
+ "android.hardware.graphics.bufferqueue@1.0",
+ "android.hardware.graphics.bufferqueue@2.0",
+ "android.hardware.graphics.common@1.0",
+ "android.hardware.graphics.common@1.1",
+ "android.hardware.graphics.common@1.2",
+ "android.hardware.graphics.mapper@2.0",
+ "android.hardware.graphics.mapper@2.1",
+ "android.hardware.graphics.mapper@3.0",
+ "android.hardware.media@1.0",
+ "android.hardware.media.bufferpool@2.0",
+ "android.hardware.media.c2@1.0",
+ "android.hardware.media.omx@1.0",
+ "android.hidl.memory@1.0",
+ "android.hidl.memory.token@1.0",
+ "android.hidl.safe_union@1.0",
+ "android.hidl.token@1.0",
+ "android.hidl.token@1.0-utils",
+ "libavservices_minijail",
+ "libbacktrace",
+ "libbase",
+ "libbinderthreadstate",
+ "libc++",
+ "libcap",
+ "libcodec2",
+ "libcodec2_hidl@1.0",
+ "libcodec2_soft_aacdec",
+ "libcodec2_soft_aacenc",
+ "libcodec2_soft_amrnbdec",
+ "libcodec2_soft_amrnbenc",
+ "libcodec2_soft_amrwbdec",
+ "libcodec2_soft_amrwbenc",
+ "libcodec2_soft_av1dec_gav1",
+ "libcodec2_soft_avcdec",
+ "libcodec2_soft_avcenc",
+ "libcodec2_soft_common",
+ "libcodec2_soft_flacdec",
+ "libcodec2_soft_flacenc",
+ "libcodec2_soft_g711alawdec",
+ "libcodec2_soft_g711mlawdec",
+ "libcodec2_soft_gsmdec",
+ "libcodec2_soft_h263dec",
+ "libcodec2_soft_h263enc",
+ "libcodec2_soft_hevcdec",
+ "libcodec2_soft_hevcenc",
+ "libcodec2_soft_mp3dec",
+ "libcodec2_soft_mpeg2dec",
+ "libcodec2_soft_mpeg4dec",
+ "libcodec2_soft_mpeg4enc",
+ "libcodec2_soft_opusdec",
+ "libcodec2_soft_opusenc",
+ "libcodec2_soft_rawdec",
+ "libcodec2_soft_vorbisdec",
+ "libcodec2_soft_vp8dec",
+ "libcodec2_soft_vp8enc",
+ "libcodec2_soft_vp9dec",
+ "libcodec2_soft_vp9enc",
+ "libcodec2_vndk",
+ "libc_scudo",
+ "libcutils",
+ "libdexfile_support",
+ "libEGL",
+ "libfmq",
+ "libgraphicsenv",
+ "libhardware",
+ "libhidlbase",
+ "libhidlmemory",
+ "libion",
+ "liblzma",
+ "libmedia_codecserviceregistrant",
+ "libminijail",
+ "libnativebridge_lazy",
+ "libnativeloader_lazy",
+ "libopus",
+ "libprocessgroup",
+ "libscudo_wrapper",
+ "libsfplugin_ccodec_utils",
+ "libstagefright_amrnb_common",
+ "libstagefright_bufferpool@2.0.1",
+ "libstagefright_bufferqueue_helper",
+ "libstagefright_enc_common",
+ "libstagefright_flacdec",
+ "libstagefright_foundation",
+ "libsync",
+ "libui",
+ "libunwindstack",
+ "libutils",
+ "libvorbisidec",
+ "libvpx",
+ "mediaswcodec",
+ "prebuilt_libclang_rt",
+ }
+ //
+ // Module separator
+ //
+ m["com.android.runtime"] = []string{
+ "libbase",
+ "libc++",
+ "libdexfile_support",
+ "liblzma",
+ "libunwindstack",
+ "prebuilt_libclang_rt",
+ }
+ //
+ // Module separator
+ //
+ m["com.android.resolv"] = []string{"libcrypto", "libnetd_resolv", "libssl"}
+ //
+ // Module separator
+ //
+ m["com.android.tethering"] = []string{"libbase", "libc++", "libnativehelper_compat_libc++"}
+ //
+ // Module separator
+ //
+ m["com.android.vndk"] = []string{
+ "libbacktrace",
+ "libbinderthreadstate",
+ "libblas",
+ "libcompiler_rt",
+ "libgui",
+ "libunwind",
+ }
+ //
+ // Module separator
+ //
+ return m
+}
+
func init() {
android.RegisterModuleType("apex", BundleFactory)
android.RegisterModuleType("apex_test", testApexBundleFactory)
@@ -1233,7 +1474,12 @@
if !ctx.Host() && !a.testApex {
for _, fi := range filesInfo {
if am, ok := fi.module.(android.ApexModule); ok {
- if !am.AvailableFor(ctx.ModuleName()) {
+ // vndk {enabled:true} implies visibility to the vndk apex
+ if ccm, ok := fi.module.(*cc.Module); ok && ccm.IsVndk() && a.vndkApex {
+ continue
+ }
+
+ if !am.AvailableFor(ctx.ModuleName()) && !whitelistedApexAvailable(ctx.ModuleName(), a.vndkApex, fi.module) {
ctx.ModuleErrorf("requires %q that is not available for the APEX", fi.module.Name())
// don't stop so that we can report other violations in the same run
}
@@ -1282,6 +1528,25 @@
a.buildApexDependencyInfo(ctx)
}
+func whitelistedApexAvailable(apex string, is_vndk bool, module android.Module) bool {
+ key := apex
+ key = strings.Replace(key, "test_", "", 1)
+ key = strings.Replace(key, "com.android.art.debug", "com.android.art", 1)
+ key = strings.Replace(key, "com.android.art.release", "com.android.art", 1)
+
+ moduleName := module.Name()
+ if strings.Contains(moduleName, "prebuilt_libclang_rt") {
+ // This module has variants that depend on the product being built.
+ moduleName = "prebuilt_libclang_rt"
+ }
+
+ if val, ok := apexAvailWl[key]; ok && android.InList(moduleName, val) {
+ return true
+ }
+
+ return false
+}
+
func newApexBundle() *apexBundle {
module := &apexBundle{}
module.AddProperties(&module.properties)
diff --git a/apex/apex_test.go b/apex/apex_test.go
index 9510d82..2103b6e 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -402,6 +402,11 @@
shared_libs: ["mylib2"],
system_shared_libs: [],
stl: "none",
+ // TODO: remove //apex_available:platform
+ apex_available: [
+ "//apex_available:platform",
+ "myapex",
+ ],
}
cc_binary {
@@ -421,6 +426,7 @@
system_shared_libs: [],
static_executable: true,
stl: "none",
+ apex_available: [ "myapex" ],
}
cc_library {
@@ -429,6 +435,11 @@
system_shared_libs: [],
stl: "none",
notice: "custom_notice",
+ // TODO: remove //apex_available:platform
+ apex_available: [
+ "//apex_available:platform",
+ "myapex",
+ ],
}
java_library {
@@ -439,6 +450,11 @@
compile_dex: true,
static_libs: ["myotherjar"],
libs: ["mysharedjar"],
+ // TODO: remove //apex_available:platform
+ apex_available: [
+ "//apex_available:platform",
+ "myapex",
+ ],
}
java_library {
@@ -559,6 +575,7 @@
name: "mylib",
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
java_library {
@@ -567,6 +584,7 @@
sdk_version: "none",
system_modules: "none",
compile_dex: true,
+ apex_available: [ "myapex" ],
}
android_app {
@@ -574,6 +592,7 @@
srcs: ["foo/bar/MyClass.java"],
sdk_version: "none",
system_modules: "none",
+ apex_available: [ "myapex" ],
}
`)
ensureExactContents(t, ctx, "myapex", []string{
@@ -626,6 +645,7 @@
shared_libs: ["mylib2"],
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
cc_library {
@@ -633,6 +653,7 @@
srcs: ["mylib.cpp"],
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
`)
@@ -673,6 +694,7 @@
shared_libs: ["mylib2", "mylib3"],
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
cc_library {
@@ -695,6 +717,7 @@
stubs: {
versions: ["10", "11", "12"],
},
+ apex_available: [ "myapex" ],
}
cc_library {
@@ -702,6 +725,7 @@
srcs: ["mylib.cpp"],
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
`)
@@ -763,6 +787,7 @@
shared_libs: ["libfoo#10"],
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex2" ],
}
cc_library {
@@ -844,6 +869,7 @@
runtime_libs: ["libfoo", "libbar"],
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
cc_library {
@@ -861,6 +887,7 @@
srcs: ["mylib.cpp"],
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
`)
@@ -905,6 +932,7 @@
shared_libs: ["libbar"],
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
cc_library {
@@ -955,6 +983,7 @@
srcs: ["mylib.cpp"],
shared_libs: ["libdl#27"],
stl: "none",
+ apex_available: [ "myapex" ],
}
cc_library_shared {
@@ -962,6 +991,7 @@
srcs: ["mylib.cpp"],
shared_libs: ["libdl#27"],
stl: "none",
+ apex_available: [ "myapex" ],
}
cc_library {
@@ -984,6 +1014,10 @@
stubs: {
versions: ["27", "28", "29"],
},
+ apex_available: [
+ "//apex_available:platform",
+ "myapex"
+ ],
}
cc_library {
@@ -995,6 +1029,10 @@
stubs: {
versions: ["27", "28", "29"],
},
+ apex_available: [
+ "//apex_available:platform",
+ "myapex"
+ ],
}
cc_library {
@@ -1086,6 +1124,7 @@
relative_install_path: "foo/bar",
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
cc_binary {
@@ -1095,6 +1134,7 @@
system_shared_libs: [],
static_executable: true,
stl: "none",
+ apex_available: [ "myapex" ],
}
`)
@@ -1139,6 +1179,7 @@
system_shared_libs: [],
vendor_available: true,
stl: "none",
+ apex_available: [ "myapex" ],
}
cc_library {
@@ -1147,6 +1188,7 @@
system_shared_libs: [],
vendor_available: true,
stl: "none",
+ apex_available: [ "myapex" ],
}
`, func(fs map[string][]byte, config android.Config) {
setUseVendorWhitelistForTest(config, []string{"myapex"})
@@ -1247,6 +1289,10 @@
stubs: {
versions: ["1", "2", "3"],
},
+ apex_available: [
+ "//apex_available:platform",
+ "myapex",
+ ],
}
cc_binary {
@@ -1280,6 +1326,7 @@
srcs: ["mylib.cpp"],
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex_keytest" ],
}
apex_key {
@@ -1473,6 +1520,12 @@
srcs: ["mylib.cpp"],
system_shared_libs: [],
stl: "none",
+ // TODO: remove //apex_available:platform
+ apex_available: [
+ "//apex_available:platform",
+ "myapex",
+ "otherapex",
+ ],
}
`)
@@ -1526,6 +1579,7 @@
stubs: {
versions: ["1", "2", "3"],
},
+ apex_available: [ "myapex" ],
}
cc_library {
@@ -1628,6 +1682,7 @@
},
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
cc_library {
@@ -1640,6 +1695,7 @@
},
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
`+vndkLibrariesTxtFiles("current"))
@@ -1677,6 +1733,7 @@
},
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
cc_prebuilt_library_shared {
@@ -1694,6 +1751,7 @@
},
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
`+vndkLibrariesTxtFiles("current"),
withFiles(map[string][]byte{
@@ -1764,6 +1822,7 @@
srcs: ["libvndk27_arm64.so"],
},
},
+ apex_available: [ "myapex_v27" ],
}
vndk_prebuilt_shared {
@@ -1900,6 +1959,7 @@
},
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
`+vndkLibrariesTxtFiles("current"),
withTargets(map[android.OsType][]android.Target{
@@ -1992,6 +2052,7 @@
srcs: ["libvndk27binder32.so"],
}
},
+ apex_available: [ "myapex_v27" ],
}
`+vndkLibrariesTxtFiles("27"),
withFiles(map[string][]byte{
@@ -2057,6 +2118,7 @@
srcs: ["mylib.cpp"],
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex_nodep" ],
}
cc_library {
@@ -2065,6 +2127,11 @@
shared_libs: ["libfoo"],
system_shared_libs: [],
stl: "none",
+ apex_available: [
+ "myapex_dep",
+ "myapex_provider",
+ "myapex_selfcontained",
+ ],
}
cc_library {
@@ -2075,6 +2142,10 @@
},
system_shared_libs: [],
stl: "none",
+ apex_available: [
+ "myapex_provider",
+ "myapex_selfcontained",
+ ],
}
`)
@@ -2147,6 +2218,10 @@
srcs: ["mylib.cpp"],
system_shared_libs: [],
stl: "none",
+ apex_available: [
+ "//apex_available:platform",
+ "myapex",
+ ],
}
`)
@@ -2198,6 +2273,11 @@
srcs: ["mylib.cpp"],
system_shared_libs: [],
stl: "none",
+ // TODO: remove //apex_available:platform
+ apex_available: [
+ "//apex_available:platform",
+ "myapex",
+ ],
}
`)
@@ -2266,6 +2346,11 @@
srcs: ["mylib.cpp"],
system_shared_libs: [],
stl: "none",
+ // TODO: remove //apex_available:platform
+ apex_available: [
+ "//apex_available:platform",
+ "myapex",
+ ],
}
cc_library {
@@ -2274,6 +2359,11 @@
system_shared_libs: [],
stl: "none",
compile_multilib: "first",
+ // TODO: remove //apex_available:platform
+ apex_available: [
+ "//apex_available:platform",
+ "myapex",
+ ],
}
cc_library {
@@ -2700,6 +2790,7 @@
shared_libs: ["libcommon"],
system_shared_libs: [],
stl: "none",
+ apex_available: [ "myapex" ],
}
cc_library {
@@ -2707,6 +2798,12 @@
srcs: ["mylib_common.cpp"],
system_shared_libs: [],
stl: "none",
+ // TODO: remove //apex_available:platform
+ apex_available: [
+ "//apex_available:platform",
+ "commonapex",
+ "myapex",
+ ],
}
`)
@@ -2858,6 +2955,7 @@
sdk_version: "none",
system_modules: "none",
jni_libs: ["libjni"],
+ apex_available: [ "myapex" ],
}
android_app {
@@ -2866,6 +2964,7 @@
sdk_version: "none",
system_modules: "none",
privileged: true,
+ apex_available: [ "myapex" ],
}
cc_library_shared {
@@ -2959,6 +3058,7 @@
android_test_helper_app {
name: "TesterHelpAppFoo",
srcs: ["foo/bar/MyClass.java"],
+ apex_available: [ "myapex" ],
}
`)
@@ -3214,6 +3314,7 @@
package_name: "foo",
sdk_version: "none",
system_modules: "none",
+ apex_available: [ "myapex" ],
}
override_android_app {
@@ -3277,6 +3378,7 @@
module := ctx.ModuleForTests("myapex", "android_common_myapex_image")
args := module.Rule("apexRule").Args
ensureContains(t, args["opt_flags"], "--manifest_json "+module.Output("apex_manifest.json").Output.String())
+ ensureNotContains(t, args["opt_flags"], "--no_hashtree")
}
func TestJavaSDKLibrary(t *testing.T) {
@@ -3297,6 +3399,7 @@
name: "foo",
srcs: ["a.java"],
api_packages: ["foo"],
+ apex_available: [ "myapex" ],
}
`, withFiles(map[string][]byte{
"api/current.txt": nil,
@@ -3362,6 +3465,7 @@
required: ["a", "b"],
host_required: ["c", "d"],
target_required: ["e", "f"],
+ apex_available: [ "myapex" ],
}
`)
diff --git a/apex/builder.go b/apex/builder.go
index 7e48b77..9122188 100644
--- a/apex/builder.go
+++ b/apex/builder.go
@@ -397,7 +397,7 @@
ctx.PropertyErrorf("test_only_no_hashtree", "not available")
return
}
- if (!ctx.Config().UnbundledBuild() && a.installable()) || a.testOnlyShouldSkipHashtreeGeneration() {
+ if !proptools.Bool(a.properties.Legacy_android10_support) || a.testOnlyShouldSkipHashtreeGeneration() {
// Apexes which are supposed to be installed in builtin dirs(/system, etc)
// don't need hashtree for activation. Therefore, by removing hashtree from
// apex bundle (filesystem image in it, to be specific), we can save storage.
diff --git a/build_kzip.bash b/build_kzip.bash
index 02b346d..329825a 100755
--- a/build_kzip.bash
+++ b/build_kzip.bash
@@ -6,12 +6,14 @@
# The following environment variables affect the result:
# BUILD_NUMBER build number, used to generate unique ID (will use UUID if not set)
# DIST_DIR where the resulting all.kzip will be placed
+# KYTHE_KZIP_ENCODING proto or json (proto is default)
# OUT_DIR output directory (out if not specified})
# TARGET_BUILD_VARIANT variant, e.g., `userdebug`
# TARGET_PRODUCT target device name, e.g., 'aosp_blueline'
# XREF_CORPUS source code repository URI, e.g., 'android.googlesource.com/platform/superproject'
: ${BUILD_NUMBER:=$(uuidgen)}
+: ${KYTHE_KZIP_ENCODING:=proto}
# The extraction might fail for some source files, so run with -k and then check that
# sufficiently many files were generated.
@@ -20,13 +22,14 @@
build/soong/soong_ui.bash --build-mode --all-modules --dir=$PWD -k merge_zips xref_cxx xref_java
#Build extraction file for Go files in build/soong directory.
declare -r abspath_out=$(realpath "${out}")
-(cd build/soong;
- ../../prebuilts/build-tools/linux-x86/bin/go_extractor \
- --goroot="${PWD}/../../prebuilts/go/linux-x86" \
- --rules=vnames.go.json \
- --canonicalize_package_corpus \
- --output "${abspath_out}/soong/all.go.kzip" \
- ./... )
+declare -r go_extractor=$(realpath prebuilts/build-tools/linux-x86/bin/go_extractor)
+declare -r go_root=$(realpath prebuilts/go/linux-x86)
+for dir in blueprint soong; do
+ (cd "build/$dir";
+ "$go_extractor" --goroot="$go_root" --rules=vnames.go.json --canonicalize_package_corpus \
+ --output "${abspath_out}/soong/build_${dir}.go.kzip" ./...
+ )
+done
declare -r kzip_count=$(find "$out" -name '*.kzip' | wc -l)
(($kzip_count>100000)) || { printf "Too few kzip files were generated: %d\n" $kzip_count; exit 1; }
diff --git a/cc/builder.go b/cc/builder.go
index 1ec323f..5f0da5f 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -238,9 +238,13 @@
_ = pctx.SourcePathVariable("kytheVnames", "build/soong/vnames.json")
_ = pctx.VariableFunc("kytheCorpus",
func(ctx android.PackageVarContext) string { return ctx.Config().XrefCorpusName() })
+ _ = pctx.VariableFunc("kytheCuEncoding",
+ func(ctx android.PackageVarContext) string { return ctx.Config().XrefCuEncoding() })
kytheExtract = pctx.StaticRule("kythe",
blueprint.RuleParams{
- Command: "rm -f $out && KYTHE_CORPUS=${kytheCorpus} KYTHE_OUTPUT_FILE=$out KYTHE_VNAMES=$kytheVnames $cxxExtractor $cFlags $in ",
+ Command: `rm -f $out && ` +
+ `KYTHE_CORPUS=${kytheCorpus} KYTHE_OUTPUT_FILE=$out KYTHE_VNAMES=$kytheVnames KYTHE_KZIP_ENCODING=${kytheCuEncoding} ` +
+ `$cxxExtractor $cFlags $in `,
CommandDeps: []string{"$cxxExtractor", "$kytheVnames"},
},
"cFlags")
diff --git a/cc/config/vndk.go b/cc/config/vndk.go
index 9feb5a3..94ffd10 100644
--- a/cc/config/vndk.go
+++ b/cc/config/vndk.go
@@ -71,6 +71,7 @@
"android.hardware.nfc@1.2",
"android.hardware.oemlock@1.0",
"android.hardware.power.stats@1.0",
+ "android.hardware.power-ndk_platform",
"android.hardware.power@1.0",
"android.hardware.power@1.1",
"android.hardware.radio@1.4",
diff --git a/java/builder.go b/java/builder.go
index 417a7fa..26a49ea 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -64,6 +64,8 @@
_ = pctx.VariableFunc("kytheCorpus",
func(ctx android.PackageVarContext) string { return ctx.Config().XrefCorpusName() })
+ _ = pctx.VariableFunc("kytheCuEncoding",
+ func(ctx android.PackageVarContext) string { return ctx.Config().XrefCuEncoding() })
_ = pctx.SourcePathVariable("kytheVnames", "build/soong/vnames.json")
// Run it with -add-opens=java.base/java.nio=ALL-UNNAMED to avoid JDK9's warning about
// "Illegal reflective access by com.google.protobuf.Utf8$UnsafeProcessor ...
@@ -76,6 +78,7 @@
`KYTHE_ROOT_DIRECTORY=. KYTHE_OUTPUT_FILE=$out ` +
`KYTHE_CORPUS=${kytheCorpus} ` +
`KYTHE_VNAMES=${kytheVnames} ` +
+ `KYTHE_KZIP_ENCODING=${kytheCuEncoding} ` +
`${config.SoongJavacWrapper} ${config.JavaCmd} ` +
`--add-opens=java.base/java.nio=ALL-UNNAMED ` +
`-jar ${config.JavaKytheExtractorJar} ` +
diff --git a/sdk/cc_sdk_test.go b/sdk/cc_sdk_test.go
index 255ac08..9a75610 100644
--- a/sdk/cc_sdk_test.go
+++ b/sdk/cc_sdk_test.go
@@ -101,6 +101,11 @@
srcs: ["libfoo.so"],
system_shared_libs: [],
stl: "none",
+ // TODO: remove //apex_available:platform
+ apex_available: [
+ "//apex_available:platform",
+ "myapex",
+ ],
}
cc_prebuilt_library_shared {
@@ -109,6 +114,11 @@
srcs: ["libfoo.so"],
system_shared_libs: [],
stl: "none",
+ // TODO: remove //apex_available:platform
+ apex_available: [
+ "//apex_available:platform",
+ "myapex2",
+ ],
}
cc_library_shared {
@@ -117,6 +127,10 @@
shared_libs: ["sdkmember"],
system_shared_libs: [],
stl: "none",
+ apex_available: [
+ "myapex",
+ "myapex2",
+ ],
}
apex {
diff --git a/sdk/java_sdk_test.go b/sdk/java_sdk_test.go
index 218a16a..692c205 100644
--- a/sdk/java_sdk_test.go
+++ b/sdk/java_sdk_test.go
@@ -73,6 +73,10 @@
sdk_version: "none",
compile_dex: true,
host_supported: true,
+ apex_available: [
+ "myapex",
+ "myapex2",
+ ],
}
apex {
diff --git a/sdk/sdk.go b/sdk/sdk.go
index 44e5cbb..3b0752f 100644
--- a/sdk/sdk.go
+++ b/sdk/sdk.go
@@ -285,12 +285,15 @@
// For dependencies from an in-development version of an SDK member to frozen versions of the same member
// e.g. libfoo -> libfoo.mysdk.11 and libfoo.mysdk.12
-type sdkMemberVesionedDepTag struct {
+type sdkMemberVersionedDepTag struct {
dependencyTag
member string
version string
}
+// Mark this tag so dependencies that use it are excluded from visibility enforcement.
+func (t sdkMemberVersionedDepTag) ExcludeFromVisibilityEnforcement() {}
+
// Step 1: create dependencies from an SDK module to its members.
func memberMutator(mctx android.BottomUpMutatorContext) {
if s, ok := mctx.Module().(*sdk); ok {
@@ -337,7 +340,7 @@
if m, ok := mctx.Module().(android.SdkAware); ok && m.IsInAnySdk() {
if !m.ContainingSdk().Unversioned() {
memberName := m.MemberName()
- tag := sdkMemberVesionedDepTag{member: memberName, version: m.ContainingSdk().Version}
+ tag := sdkMemberVersionedDepTag{member: memberName, version: m.ContainingSdk().Version}
mctx.AddReverseDependency(mctx.Module(), tag, memberName)
}
}