Defer error reporting of missing prebuilt dex jar files
Unless the prebuilt dex jar files are explicitly required to build system images or dex preopting defer reporting of any missing dex boot jars from Soong to Ninja. This will prevent builds that contain prebuilt sdks, containing prebuilt bootclasspath_fragment modules but without a corresponding apex_set or prebuilt_apex module from failing even when it is not building against the prebuilt sdk. Bug: 179354495 Test: m nothing Merged-In: Ibde3bf840a7413785cd32bd6cea1c322f90c59af Change-Id: Ibde3bf840a7413785cd32bd6cea1c322f90c59af (cherry picked from commit ef083c9556c53738e5d7a3ab791c49ef00501f73)
This commit is contained in:
parent
e6e499b3eb
commit
886060a688
|
@ -1161,6 +1161,14 @@ func deferReportingMissingBootDexJar(ctx android.ModuleContext, module android.M
|
|||
return true
|
||||
}
|
||||
|
||||
// A bootclasspath module that is part of a versioned sdk never provides a boot dex jar as there
|
||||
// is no equivalently versioned prebuilt APEX file from which it can be obtained. However,
|
||||
// versioned bootclasspath modules are processed by Soong so in order to avoid them causing build
|
||||
// failures missing boot dex jars need to be deferred.
|
||||
if android.IsModuleInVersionedSdk(ctx.Module()) {
|
||||
return true
|
||||
}
|
||||
|
||||
// This is called for both platform_bootclasspath and bootclasspath_fragment modules.
|
||||
//
|
||||
// A bootclasspath_fragment module should only use the APEX variant of source or prebuilt modules.
|
||||
|
@ -1197,6 +1205,14 @@ func deferReportingMissingBootDexJar(ctx android.ModuleContext, module android.M
|
|||
//
|
||||
// TODO(b/187910671): Remove this once platform variants are no longer created unnecessarily.
|
||||
if android.IsModulePrebuilt(module) {
|
||||
// An inactive source module can still contribute to the APEX but an inactive prebuilt module
|
||||
// should not contribute to anything. So, rather than have a missing dex jar cause a Soong
|
||||
// failure defer the error reporting to Ninja. Unless the prebuilt build target is explicitly
|
||||
// built Ninja should never use the dex jar file.
|
||||
if !isActiveModule(module) {
|
||||
return true
|
||||
}
|
||||
|
||||
if am, ok := module.(android.ApexModule); ok && am.InAnyApex() {
|
||||
apexInfo := ctx.OtherModuleProvider(module, android.ApexInfoProvider).(android.ApexInfo)
|
||||
if apexInfo.IsForPlatform() {
|
||||
|
@ -1205,14 +1221,6 @@ func deferReportingMissingBootDexJar(ctx android.ModuleContext, module android.M
|
|||
}
|
||||
}
|
||||
|
||||
// A bootclasspath module that is part of a versioned sdk never provides a boot dex jar as there
|
||||
// is no equivalently versioned prebuilt APEX file from which it can be obtained. However,
|
||||
// versioned bootclasspath modules are processed by Soong so in order to avoid them causing build
|
||||
// failures missing boot dex jars need to be deferred.
|
||||
if android.IsModuleInVersionedSdk(ctx.Module()) {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue