Build: Introduce resolveDependencies task
It is used on the build server to pre-download all dependencies and check that verification-metadata.xml is up-to-date #KTI-72
This commit is contained in:
committed by
Space Team
parent
7c1ffc4eb2
commit
01b6af452f
+6
-5
@@ -95,6 +95,7 @@ rootProject.apply {
|
||||
from(rootProject.file("gradle/retryPublishing.gradle.kts"))
|
||||
from(rootProject.file("gradle/modularizedTestConfigurations.gradle.kts"))
|
||||
from(rootProject.file("gradle/ideaRtHack.gradle.kts"))
|
||||
from(rootProject.file("gradle/resolveDependencies.gradle.kts"))
|
||||
}
|
||||
|
||||
IdeVersionConfigurator.setCurrentIde(project)
|
||||
@@ -168,11 +169,11 @@ val firCompilerCoreModules = arrayOf(
|
||||
).also { extra["firCompilerCoreModules"] = it }
|
||||
|
||||
val firAllCompilerModules = firCompilerCoreModules +
|
||||
arrayOf(
|
||||
":compiler:fir:raw-fir:light-tree2fir",
|
||||
":compiler:fir:analysis-tests",
|
||||
":compiler:fir:analysis-tests:legacy-fir-tests"
|
||||
)
|
||||
arrayOf(
|
||||
":compiler:fir:raw-fir:light-tree2fir",
|
||||
":compiler:fir:analysis-tests",
|
||||
":compiler:fir:analysis-tests:legacy-fir-tests"
|
||||
)
|
||||
|
||||
val fe10CompilerModules = arrayOf(
|
||||
":compiler",
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
import java.net.URI
|
||||
import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootExtension
|
||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension
|
||||
import org.spdx.sbom.gradle.SpdxSbomExtension
|
||||
|
||||
|
||||
/*
|
||||
* When called with `--write-verification-metadata` resolves all build dependencies including implicit dependecies for all platforms and
|
||||
* dependencies downloaded by plugins. Usefull to populate Gradle dependency cache or update `verification-metadata.xml` properly.
|
||||
*
|
||||
* `./gradlew resolveDependencies --write-verification-metadata md5,sha256`
|
||||
*/
|
||||
tasks.register("resolveDependencies") {
|
||||
doFirst {
|
||||
allprojects {
|
||||
logger.info("Resolving dependencies in $this")
|
||||
|
||||
// resolve implicit dependencies one by one to avoid conflicts between them
|
||||
configurations.implicitDependencies.get().allDependencies.forEach { implicitDependency ->
|
||||
configurations.detachedConfiguration(implicitDependency).resolve()
|
||||
}
|
||||
|
||||
plugins.withId("java-base") {
|
||||
val service = project.extensions.getByType<JavaToolchainService>()
|
||||
val javaExtension = extensions.getByType<JavaPluginExtension>()
|
||||
service.compilerFor(javaExtension.toolchain).get()
|
||||
}
|
||||
|
||||
project.extensions.findByType<SpdxSbomExtension>()?.run {
|
||||
targets.forEach { target ->
|
||||
target.configurations.get().forEach { configurationName ->
|
||||
val pomDependencies = project.configurations[configurationName].incoming.resolutionResult.allComponents
|
||||
.map { it.id }
|
||||
.filterIsInstance<ModuleComponentIdentifier>()
|
||||
.map { project.dependencies.create(it.displayName + "@pom") }
|
||||
|
||||
project.configurations.detachedConfiguration(*pomDependencies.toTypedArray()).resolve()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Project.resolveDependencies(
|
||||
vararg dependency: String,
|
||||
repositoryHandler: (RepositoryHandler.() -> ArtifactRepository)? = null
|
||||
) {
|
||||
val repo = repositoryHandler?.let { repositories.repositoryHandler() }
|
||||
dependency.forEach {
|
||||
configurations.detachedConfiguration(dependencies.create(it)).resolve()
|
||||
}
|
||||
repo?.run { repositories.remove(this) }
|
||||
}
|
||||
|
||||
rootProject.extensions.findByType<D8RootExtension>()?.run {
|
||||
project.resolveDependencies(
|
||||
"google.d8:v8:linux64-rel-$version@zip",
|
||||
"google.d8:v8:win64-rel-$version@zip",
|
||||
"google.d8:v8:mac-arm64-rel-$version@zip",
|
||||
"google.d8:v8:mac64-rel-$version@zip"
|
||||
)
|
||||
}
|
||||
|
||||
rootProject.extensions.findByType<YarnRootExtension>()?.run {
|
||||
project.resolveDependencies("com.yarnpkg:yarn:$version@tar.gz") {
|
||||
ivy {
|
||||
url = URI(downloadBaseUrl)
|
||||
patternLayout {
|
||||
artifact("v[revision]/[artifact](-v[revision]).[ext]")
|
||||
}
|
||||
metadataSources { artifact() }
|
||||
content { includeModule("com.yarnpkg", "yarn") }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user