diff --git a/libraries/tools/gradle/regression-benchmarks/build.gradle.kts b/libraries/tools/gradle/regression-benchmarks/build.gradle.kts index ad674e45f1d..caf11785e3c 100644 --- a/libraries/tools/gradle/regression-benchmarks/build.gradle.kts +++ b/libraries/tools/gradle/regression-benchmarks/build.gradle.kts @@ -50,7 +50,8 @@ abstract class ScriptArgumentProvider @Inject constructor( fun addBenchmarkTask( taskName: String, script: String, - jdkVersion: JavaLanguageVersion = JavaLanguageVersion.of(8) + jdkVersion: JavaLanguageVersion = JavaLanguageVersion.of(8), + additionalConfiguration: JavaExec.() -> Unit = {} ): TaskProvider { return tasks.register(taskName) { group = "Gradle Regression Benchmark" @@ -68,6 +69,57 @@ fun addBenchmarkTask( scriptArgs.script.set(script) scriptArgs.scriptClasspath.from(scriptsClasspath) argumentProviders.add(scriptArgs) + additionalConfiguration() + } +} + +val acceptAndroidSdkLicenses = tasks.register("acceptAndroidSdkLicenses") { + useAndroidSdk() + doLast { + val androidSdk = configurations["androidSdk"].singleFile + val sdkLicensesDir = androidSdk.resolve("licenses").also { + if (!it.exists()) it.mkdirs() + } + + val sdkLicenses = listOf( + "8933bad161af4178b1185d1a37fbf41ea5269c55", + "d56f5187479451eabf01fb78af6dfcb131a6481e", + "24333f8a63b6825ea9c5514f83c2829b004d1fee", + ) + val sdkPreviewLicense = "84831b9409646a918e30573bab4c9c91346d8abd" + + val sdkLicenseFile = sdkLicensesDir.resolve("android-sdk-license") + if (!sdkLicenseFile.exists()) { + sdkLicenseFile.createNewFile() + sdkLicenseFile.writeText( + sdkLicenses.joinToString(separator = "\n") + ) + } else { + sdkLicenses + .subtract( + sdkLicenseFile.readText().lines() + ) + .forEach { + sdkLicenseFile.appendText("$it\n") + } + } + + val sdkPreviewLicenseFile = sdkLicensesDir.resolve("android-sdk-preview-license") + if (!sdkPreviewLicenseFile.exists()) { + sdkPreviewLicenseFile.writeText(sdkPreviewLicense) + } else { + if (sdkPreviewLicense != sdkPreviewLicenseFile.readText().trim()) { + sdkPreviewLicenseFile.writeText(sdkPreviewLicense) + } + } + } +} + +fun JavaExec.usesAndroidSdk() { + dependsOn(acceptAndroidSdkLicenses) + + doFirst { + environment("ANDROID_SDK_ROOT", configurations["androidSdk"].singleFile.canonicalPath) } } @@ -75,4 +127,6 @@ addBenchmarkTask( taskName = "benchmarkRegressionDuckduckgo", script = "duckduckgo.benchmark.kts", JavaLanguageVersion.of(11) -) +) { + usesAndroidSdk() +}