From 02de693a12aac3f2f196688c93911ec6e3c0f6e2 Mon Sep 17 00:00:00 2001 From: Bogdan Mukvich Date: Mon, 22 May 2023 13:48:08 +0200 Subject: [PATCH] Configure SBOM should return artifact --- buildSrc/src/main/kotlin/sbom.kt | 8 ++++---- libraries/commonConfiguration.gradle | 4 ++-- prepare/compiler/build.gradle.kts | 5 +++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/buildSrc/src/main/kotlin/sbom.kt b/buildSrc/src/main/kotlin/sbom.kt index 37b67bbde63..e7cc4cd84af 100644 --- a/buildSrc/src/main/kotlin/sbom.kt +++ b/buildSrc/src/main/kotlin/sbom.kt @@ -1,5 +1,5 @@ import org.gradle.api.Project -import org.gradle.api.artifacts.Configuration +import org.gradle.api.artifacts.PublishArtifact import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.configure import org.spdx.sbom.gradle.SpdxSbomExtension @@ -14,7 +14,7 @@ import java.util.* fun Project.configureSbom( moduleName: String = this.name, gradleConfigurations: Iterable = setOf("runtimeClasspath"), -): Configuration { +): PublishArtifact { val project = this apply() @@ -44,12 +44,12 @@ fun Project.configureSbom( isCanBeConsumed = true } val sbomFile = layout.buildDirectory.file("spdx/$moduleName.spdx.json") - artifacts.add(sbomCfg.name, sbomFile.get().asFile) { + val sbomArtifact = artifacts.add(sbomCfg.name, sbomFile.get().asFile) { type = "sbom" extension = "spdx.json" val capitalizedModuleName = moduleName.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() } builtBy("spdxSbomFor$capitalizedModuleName") } - return sbomCfg + return sbomArtifact } diff --git a/libraries/commonConfiguration.gradle b/libraries/commonConfiguration.gradle index 1f425e05194..baf60313fcd 100644 --- a/libraries/commonConfiguration.gradle +++ b/libraries/commonConfiguration.gradle @@ -56,8 +56,8 @@ ext.configurePublishing = { Project project, configure = { } -> } } -ext.configureSbom = { Project project, Iterable gradleConfigurations = ["runtimeClasspath"] -> - SbomKt.configureSbom(project, gradleConfigurations) +ext.configureSbom = { Project project, String moduleName = project.name, Iterable gradleConfigurations = ["runtimeClasspath"] -> + SbomKt.configureSbom(project, moduleName, gradleConfigurations) } ext.configureFrontendIr = { Project project -> diff --git a/prepare/compiler/build.gradle.kts b/prepare/compiler/build.gradle.kts index 6c0b05f374e..beee41d0781 100644 --- a/prepare/compiler/build.gradle.kts +++ b/prepare/compiler/build.gradle.kts @@ -431,7 +431,7 @@ val distJs = distTask("distJs") { } val compilerZipSbomName = "kotlin-compiler-zip" -val compilerZipSbom = configureSbom( +val sbom = configureSbom( moduleName = compilerZipSbomName, gradleConfigurations = setOf("runtimeClasspath", libraries.name, librariesStripVersion.name, compilerPlugins.name) ) @@ -443,10 +443,11 @@ distTask("dist") { dependsOn(distCommon) dependsOn(distMaven) dependsOn(distJs) + dependsOn("spdxSbomForKotlin-compiler-zip") from(buildNumber) from(distStdlibMinimalForTests) - from(compilerZipSbom.artifacts.files) { + from(sbom.file) { rename("$compilerZipSbomName.spdx.json", "${project.name}-${project.version}.spdx.json") } }