Migrate deprecations in gradle 8.14

This commit is contained in:
Rocka 2025-08-24 01:33:47 +08:00
parent 5a4870c057
commit 5d184920a2
No known key found for this signature in database
GPG Key ID: 28031158FFDD6853
10 changed files with 41 additions and 37 deletions

View File

@ -1,6 +1,6 @@
/*
* SPDX-License-Identifier: LGPL-2.1-or-later
* SPDX-FileCopyrightText: Copyright 2021-2023 Fcitx5 for Android Contributors
* SPDX-FileCopyrightText: Copyright 2021-2025 Fcitx5 for Android Contributors
*/
import com.android.build.api.dsl.ApplicationExtension
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
@ -25,6 +25,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
* - Provide default configuration for `android {...}`
* - Add desugar JDK libs
*/
@Suppress("unused")
class AndroidAppConventionPlugin : AndroidBaseConventionPlugin() {
override fun apply(target: Project) {

View File

@ -1,11 +1,12 @@
/*
* SPDX-License-Identifier: LGPL-2.1-or-later
* SPDX-FileCopyrightText: Copyright 2021-2023 Fcitx5 for Android Contributors
* SPDX-FileCopyrightText: Copyright 2021-2025 Fcitx5 for Android Contributors
*/
import com.android.build.gradle.tasks.ProcessLibraryArtProfileTask
import org.gradle.api.Project
import org.gradle.kotlin.dsl.withType
@Suppress("unused")
class AndroidLibConventionPlugin : AndroidBaseConventionPlugin() {
override fun apply(target: Project) {

View File

@ -1,6 +1,6 @@
/*
* SPDX-License-Identifier: LGPL-2.1-or-later
* SPDX-FileCopyrightText: Copyright 2021-2023 Fcitx5 for Android Contributors
* SPDX-FileCopyrightText: Copyright 2021-2025 Fcitx5 for Android Contributors
*/
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
import org.gradle.api.Plugin
@ -36,7 +36,7 @@ class AndroidPluginAppConventionPlugin : Plugin<Project> {
applicationVariants.all {
val pluginsTaskName = "assemble${name.capitalized()}Plugins"
val pluginsTask = target.rootProject.tasks.findByName(pluginsTaskName)
?: target.rootProject.task(pluginsTaskName)
?: target.rootProject.tasks.register(pluginsTaskName).get()
pluginsTask.dependsOn(assembleProvider)
}
}

View File

@ -1,10 +1,9 @@
/*
* SPDX-License-Identifier: LGPL-2.1-or-later
* SPDX-FileCopyrightText: Copyright 2021-2023 Fcitx5 for Android Contributors
* SPDX-FileCopyrightText: Copyright 2021-2025 Fcitx5 for Android Contributors
*/
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import org.gradle.api.DefaultTask
import org.gradle.api.Plugin
import org.gradle.api.Project
@ -12,11 +11,12 @@ import org.gradle.api.file.RegularFileProperty
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.task
import org.gradle.kotlin.dsl.register
/**
* Add task `generateBuildMetadata${Variant}`
*/
@Suppress("unused")
class BuildMetadataPlugin : Plugin<Project> {
override fun apply(target: Project) {
@ -32,7 +32,7 @@ class BuildMetadataPlugin : Plugin<Project> {
applicationVariants.all {
val variantName = name.capitalized()
target.afterEvaluate {
target.task<BuildMetadataTask>("generateBuildMetadata${variantName}") {
target.tasks.register<BuildMetadataTask>("generateBuildMetadata${variantName}") {
val packageTask = packageApplicationProvider.get() // package${Variant} task
// create metadata file after package, because it's outputDirectory would
// be cleared at some time before package

View File

@ -1,9 +1,8 @@
/*
* SPDX-License-Identifier: LGPL-2.1-or-later
* SPDX-FileCopyrightText: Copyright 2021-2023 Fcitx5 for Android Contributors
* SPDX-FileCopyrightText: Copyright 2021-2025 Fcitx5 for Android Contributors
*/
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import org.gradle.api.DefaultTask
import org.gradle.api.Plugin
import org.gradle.api.Project
@ -20,7 +19,7 @@ import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.TaskAction
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.task
import org.gradle.kotlin.dsl.register
import org.gradle.work.ChangeType
import org.gradle.work.Incremental
import org.gradle.work.InputChanges
@ -28,7 +27,6 @@ import org.jetbrains.kotlin.com.google.common.hash.Hashing
import org.jetbrains.kotlin.com.google.common.io.ByteSource
import java.io.File
import java.nio.charset.Charset
import kotlin.collections.set
interface DataDescriptorPluginExtension {
/**
@ -58,13 +56,13 @@ class DataDescriptorPlugin : Plugin<Project> {
val extension = target.extensions.create<DataDescriptorPluginExtension>(TASK)
extension.excludes.convention(listOf())
extension.symlinks.convention(mapOf())
target.task<DataDescriptorTask>(TASK) {
target.tasks.register<DataDescriptorTask>(TASK) {
inputDir.set(target.assetsDir)
outputFile.set(target.assetsDir.resolve(FILE_NAME))
excludes.set(extension.excludes)
symlinks.set(extension.symlinks)
}
target.task<Delete>(CLEAN_TASK) {
target.tasks.register<Delete>(CLEAN_TASK) {
delete(target.assetsDir.resolve(FILE_NAME))
}.also {
target.cleanTask.dependsOn(it)

View File

@ -1,6 +1,6 @@
/*
* SPDX-License-Identifier: LGPL-2.1-or-later
* SPDX-FileCopyrightText: Copyright 2021-2024 Fcitx5 for Android Contributors
* SPDX-FileCopyrightText: Copyright 2021-2025 Fcitx5 for Android Contributors
*/
import org.gradle.api.Plugin
import org.gradle.api.Project
@ -8,7 +8,7 @@ import org.gradle.api.logging.LogLevel
import org.gradle.api.tasks.Delete
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.getByName
import org.gradle.kotlin.dsl.task
import org.gradle.kotlin.dsl.register
import java.io.File
import kotlin.io.path.isSymbolicLink
@ -31,8 +31,8 @@ class FcitxComponentPlugin : Plugin<Project> {
}
override fun apply(target: Project) {
val installTask = target.task(INSTALL_TASK)
val deleteTask = target.task(DELETE_TASK)
val installTask = target.tasks.register(INSTALL_TASK)
val deleteTask = target.tasks.register(DELETE_TASK)
registerCMakeTask(target, "generate-desktop-file", "config")
registerCMakeTask(target, "translation-file", "translation")
registerCleanTask(target)
@ -45,7 +45,7 @@ class FcitxComponentPlugin : Plugin<Project> {
registerCMakeTask(target, "translation-file", "translation", project)
}
if (ext.excludeFiles.isNotEmpty()) {
deleteTask.apply {
deleteTask.get().apply {
dependsOn(installTask)
doLast {
ext.excludeFiles.forEach {
@ -75,16 +75,17 @@ class FcitxComponentPlugin : Plugin<Project> {
} else {
"installLibrary$componentName[${sourceProject.name}]"
}
// FIXME: this is deprecated, but `tasks.register` would result in task warming-up failure
val task = project.task(taskName) {
runAfterNativeConfigure(sourceProject) { abiModel ->
val cmake = abiModel.variant.module.cmake!!.cmakeExe!!
if (target.isNotEmpty()) {
sourceProject.exec {
sourceProject.providers.exec {
workingDir = abiModel.cxxBuildFolder
commandLine(cmake, "--build", ".", "--target", target)
}
}
sourceProject.exec {
sourceProject.providers.exec {
workingDir = abiModel.cxxBuildFolder
environment("DESTDIR", project.assetsDir.absolutePath)
commandLine(cmake, "--install", ".", "--component", component)
@ -102,7 +103,7 @@ class FcitxComponentPlugin : Plugin<Project> {
}
private fun registerCleanTask(project: Project) {
project.task<Delete>(CLEAN_TASK) {
project.tasks.register<Delete>(CLEAN_TASK) {
delete(project.assetsDir.resolve("usr/share/locale"))
// delete all non symlink files
// true -> delete

View File

@ -1,6 +1,6 @@
/*
* SPDX-License-Identifier: LGPL-2.1-or-later
* SPDX-FileCopyrightText: Copyright 2021-2023 Fcitx5 for Android Contributors
* SPDX-FileCopyrightText: Copyright 2021-2025 Fcitx5 for Android Contributors
*/
import com.android.build.api.variant.LibraryAndroidComponentsExtension
import com.android.build.gradle.tasks.PrefabPackageConfigurationTask
@ -10,10 +10,11 @@ import org.gradle.api.tasks.Delete
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.getByName
import org.gradle.kotlin.dsl.task
import org.gradle.kotlin.dsl.register
import org.gradle.kotlin.dsl.withType
import java.io.File
@Suppress("unused")
class FcitxHeadersPlugin : Plugin<Project> {
abstract class FcitxHeadersExtension {
@ -55,10 +56,11 @@ class FcitxHeadersPlugin : Plugin<Project> {
}
private fun registerInstallTask(project: Project, name: String, component: String, dest: File) {
// FIXME: this is deprecated, but `tasks.register` would result in task warming-up failure
val installHeadersTask = project.task(name) {
runAfterNativeConfigure(project) { abiModel ->
val cmake = abiModel.variant.module.cmake!!.cmakeExe!!
project.exec {
project.providers.exec {
workingDir = abiModel.cxxBuildFolder
environment("DESTDIR", dest.absolutePath)
commandLine(cmake, "--install", ".", "--component", component)
@ -73,7 +75,7 @@ class FcitxHeadersPlugin : Plugin<Project> {
}
private fun registerCleanTask(project: Project) {
project.task<Delete>(CLEAN_TASK) {
project.tasks.register<Delete>(CLEAN_TASK) {
delete(project.headersInstallDir)
delete(project.develComponentInstallDir)
}.also {

View File

@ -1,6 +1,6 @@
/*
* SPDX-License-Identifier: LGPL-2.1-or-later
* SPDX-FileCopyrightText: Copyright 2021-2023 Fcitx5 for Android Contributors
* SPDX-FileCopyrightText: Copyright 2021-2025 Fcitx5 for Android Contributors
*/
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
import com.android.build.api.variant.FilterConfiguration.FilterType
@ -8,6 +8,7 @@ import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
@Suppress("unused")
class NativeAppConventionPlugin : NativeBaseConventionPlugin() {
override fun apply(target: Project) {

View File

@ -1,6 +1,6 @@
/*
* SPDX-License-Identifier: LGPL-2.1-or-later
* SPDX-FileCopyrightText: Copyright 2021-2023 Fcitx5 for Android Contributors
* SPDX-FileCopyrightText: Copyright 2021-2025 Fcitx5 for Android Contributors
*/
import com.android.build.gradle.LibraryExtension
import com.android.build.gradle.tasks.PrefabPackageConfigurationTask
@ -8,6 +8,7 @@ import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.withType
@Suppress("unused")
class NativeLibConventionPlugin : NativeBaseConventionPlugin() {
override fun apply(target: Project) {

View File

@ -1,6 +1,6 @@
/*
* SPDX-License-Identifier: LGPL-2.1-or-later
* SPDX-FileCopyrightText: Copyright 2024 Fcitx5 for Android Contributors
* SPDX-FileCopyrightText: Copyright 2024-2025 Fcitx5 for Android Contributors
*/
import com.android.build.gradle.internal.dsl.SigningConfig
@ -9,20 +9,19 @@ import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.kotlin.dsl.the
import java.io.ByteArrayOutputStream
import java.io.File
import kotlin.io.encoding.Base64
import kotlin.io.encoding.ExperimentalEncodingApi
fun Project.runCmd(cmd: String, defaultValue: String = ""): String {
val stdout = ByteArrayOutputStream()
val result = stdout.use {
project.exec {
commandLine = cmd.split(" ")
standardOutput = stdout
}
val output = providers.exec {
commandLine = cmd.split(" ")
}
return if (output.result.get().exitValue == 0) {
output.standardOutput.asText.get().trim()
} else {
defaultValue
}
return if (result.exitValue == 0) stdout.toString().trim() else defaultValue
}
val Project.libs get() = the<LibrariesForLibs>()