Merge "Baseline all compat checks in ignoreApiChanges task when APIs are frozen" into androidx-main
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt b/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
index 0b63a70..16d7e8d 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
@@ -104,6 +104,7 @@
task.referenceApi.set(checkApiRelease!!.flatMap { it.referenceApi })
task.baselines.set(checkApiRelease!!.flatMap { it.baselines })
task.api.set(builtApiLocation)
+ task.version.set(version)
task.dependencyClasspath = javaCompileInputs.dependencyClasspath
task.bootClasspath = javaCompileInputs.bootClasspath
task.k2UastEnabled.set(extension.metalavaK2UastEnabled)
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt b/buildSrc/private/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt
index 9e82b95..9e91631 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt
@@ -16,6 +16,7 @@
package androidx.build.metalava
+import androidx.build.Version
import androidx.build.checkapi.ApiBaselinesLocation
import androidx.build.checkapi.ApiLocation
import java.io.File
@@ -92,6 +93,10 @@
@get:Input
abstract val baselines: Property<ApiBaselinesLocation>
+ // Version for the current API surface.
+ @get:Input
+ abstract val version: Property<Version>
+
@[InputFiles PathSensitive(PathSensitivity.RELATIVE)]
fun getTaskInputs(): List<File> {
val referenceApiLocation = referenceApi.get()
@@ -115,18 +120,23 @@
fun exec() {
check(bootClasspath.files.isNotEmpty()) { "Android boot classpath not set." }
+ val apiLocation = api.get()
+ val referenceApiLocation = referenceApi.get()
+ val freezeApis = shouldFreezeApis(referenceApiLocation.version(), version.get())
updateBaseline(
- api.get().publicApiFile,
- referenceApi.get().publicApiFile,
+ apiLocation.publicApiFile,
+ referenceApiLocation.publicApiFile,
baselines.get().publicApiFile,
- false
+ false,
+ freezeApis
)
- if (referenceApi.get().restrictedApiFile.exists()) {
+ if (referenceApiLocation.restrictedApiFile.exists()) {
updateBaseline(
- api.get().restrictedApiFile,
- referenceApi.get().restrictedApiFile,
+ apiLocation.restrictedApiFile,
+ referenceApiLocation.restrictedApiFile,
baselines.get().restrictedApiFile,
- true
+ true,
+ freezeApis
)
}
}
@@ -137,7 +147,8 @@
api: File,
prevApi: File,
baselineFile: File,
- processRestrictedApis: Boolean
+ processRestrictedApis: Boolean,
+ freezeApis: Boolean,
) {
val args = getCommonBaselineUpdateArgs(
bootClasspath,
@@ -152,6 +163,12 @@
"--source-files",
api.toString()
)
+ if (freezeApis) {
+ args += listOf(
+ "--error-category",
+ "Compatibility"
+ )
+ }
if (processRestrictedApis) {
args += listOf(
"--show-annotation",