From ef3868ec729f7ce3f5976d4f9a0c8b95098d9857 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Tue, 4 May 2021 14:40:46 +0200 Subject: build: Update to Kotlin 1.5.0 --- buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts | 1 - 1 file changed, 1 deletion(-) (limited to 'buildSrc/src/main') diff --git a/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts b/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts index 703e9938..7fda64a2 100644 --- a/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts @@ -39,6 +39,5 @@ java { tasks.withType().configureEach { kotlinOptions.jvmTarget = Libs.jvmTarget.toString() - kotlinOptions.useIR = true kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn" } -- cgit v1.2.3 From 0f7e0bdbec732b23141f6bbe11b3b2299ca22813 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 6 May 2021 16:41:53 +0200 Subject: build: Update Jacoco to version 0.8.7 This change updates the Gradle build configuration to use Jacoco 0.8.7, which is necessary for Kotlin 1.5.0 to work nicely with Jacoco. --- .../src/main/kotlin/jacoco-aggregation.gradle.kts | 7 ++++ .../src/main/kotlin/jacoco-conventions.gradle.kts | 38 +++------------------- 2 files changed, 12 insertions(+), 33 deletions(-) (limited to 'buildSrc/src/main') diff --git a/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts b/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts index 3e8aa741..1ea5de4c 100644 --- a/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts +++ b/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts @@ -1,3 +1,5 @@ +import gradle.kotlin.dsl.accessors._a850a9ab866951e91ee43960bbc39582.jacoco + /* * MIT License * @@ -32,6 +34,11 @@ repositories { mavenCentral() } +jacoco { + // Necessary for Kotlin 1.5.0. See https://github.com/jacoco/jacoco/issues/1155 + toolVersion = "0.8.7" +} + tasks.register("codeCoverageReport") { group = "Coverage reports" description = "Generates an aggregate report based on all subprojects" diff --git a/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts b/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts index d0534d4f..5c7aea83 100644 --- a/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts @@ -25,41 +25,13 @@ plugins { jacoco } +jacoco { + // Necessary for Kotlin 1.5.0. See https://github.com/jacoco/jacoco/issues/1155 + toolVersion = "0.8.7" +} + tasks.jacocoTestReport { reports { html.isEnabled = true } } - -/* Share sources folder with other projects for aggregated JaCoCo reports */ -configurations.create("transitiveSourcesElements") { - isVisible = false - isCanBeResolved = false - isCanBeConsumed = true - extendsFrom(configurations.implementation.get()) - attributes { - attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME)) - attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) - attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named("source-folders")) - } - sourceSets.main.get().java.srcDirs.forEach { - outgoing.artifact(it) - } -} - -/* Share the coverage data to be aggregated for the whole product */ -configurations.create("coverageDataElements") { - isVisible = false - isCanBeResolved = false - isCanBeConsumed = true - extendsFrom(configurations.implementation.get()) - attributes { - attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME)) - attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) - attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named("jacoco-coverage-data")) - } - // This will cause the test task to run if the coverage data is requested by the aggregation task - outgoing.artifact(tasks.test.map { task -> - task.extensions.getByType().destinationFile!! - }) -} -- cgit v1.2.3 From 341e1074b0f47e108e6e3f8cf5b3c20773ab0015 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Tue, 15 Jun 2021 12:47:39 +0200 Subject: build: Upgrade to Gradle 7.1 This change upgrades the Gradle build system to version 7.1. --- buildSrc/src/main/kotlin/experiment-conventions.gradle.kts | 2 -- buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts | 11 +---------- buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts | 5 ----- 3 files changed, 1 insertion(+), 17 deletions(-) (limited to 'buildSrc/src/main') diff --git a/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts b/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts index 26780205..c1750a40 100644 --- a/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts @@ -1,5 +1,3 @@ -import gradle.kotlin.dsl.accessors._9bf86420fccbde1948375f641de89b70.sourceSets - /* * Copyright (c) 2021 AtLarge Research * diff --git a/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts b/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts index 1ea5de4c..d6bbd2b4 100644 --- a/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts +++ b/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts @@ -1,9 +1,5 @@ -import gradle.kotlin.dsl.accessors._a850a9ab866951e91ee43960bbc39582.jacoco - /* - * MIT License - * - * Copyright (c) 2019 atlarge-research + * Copyright (c) 2021 AtLarge Research * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -34,11 +30,6 @@ repositories { mavenCentral() } -jacoco { - // Necessary for Kotlin 1.5.0. See https://github.com/jacoco/jacoco/issues/1155 - toolVersion = "0.8.7" -} - tasks.register("codeCoverageReport") { group = "Coverage reports" description = "Generates an aggregate report based on all subprojects" diff --git a/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts b/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts index 5c7aea83..e0bc2ce4 100644 --- a/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts @@ -25,11 +25,6 @@ plugins { jacoco } -jacoco { - // Necessary for Kotlin 1.5.0. See https://github.com/jacoco/jacoco/issues/1155 - toolVersion = "0.8.7" -} - tasks.jacocoTestReport { reports { html.isEnabled = true -- cgit v1.2.3 From 5649bdc3fe77b40a112d8478460aab30ee08de58 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 17 Jun 2021 14:33:56 +0200 Subject: build: Update dependencies This change updates the project dependencies to follow the latest available version where possible. --- buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts | 2 +- buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts | 6 +++--- buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts | 2 +- buildSrc/src/main/kotlin/testing-conventions.gradle.kts | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) (limited to 'buildSrc/src/main') diff --git a/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts b/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts index 4e73d4d3..78ed5d1f 100644 --- a/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts @@ -50,7 +50,7 @@ benchmark { targets { register("jmh") { this as JvmBenchmarkTarget - jmhVersion = "1.21" + jmhVersion = "1.32" } } } diff --git a/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts b/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts index d6bbd2b4..5afd3e0d 100644 --- a/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts +++ b/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts @@ -35,10 +35,10 @@ tasks.register("codeCoverageReport") { description = "Generates an aggregate report based on all subprojects" reports { - xml.isEnabled = true - xml.destination = file("${buildDir}/reports/jacoco/report.xml") + xml.required.set(true) + xml.outputLocation.set(file("${buildDir}/reports/jacoco/report.xml")) - html.isEnabled = true + html.required.set(true) } subprojects { diff --git a/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts b/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts index e0bc2ce4..6fb9ccc3 100644 --- a/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts @@ -27,6 +27,6 @@ plugins { tasks.jacocoTestReport { reports { - html.isEnabled = true + html.required.set(true) } } diff --git a/buildSrc/src/main/kotlin/testing-conventions.gradle.kts b/buildSrc/src/main/kotlin/testing-conventions.gradle.kts index 7d344500..bceb9e00 100644 --- a/buildSrc/src/main/kotlin/testing-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/testing-conventions.gradle.kts @@ -28,8 +28,8 @@ tasks.test { useJUnitPlatform() reports { - html.isEnabled = true - junitXml.isEnabled = true + html.required.set(true) + junitXml.required.set(true) } } -- cgit v1.2.3 From e56967a29ac2b2d26cc085b1f3e27096dad6a170 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 24 Jun 2021 12:54:52 +0200 Subject: simulator: Re-implement performance interference model This change updates reimplements the performance interference model to work on top of the universal resource model in `opendc-simulator-resources`. This enables us to model interference and performance variability of other resources such as disk or network in the future. --- buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts | 1 + 1 file changed, 1 insertion(+) (limited to 'buildSrc/src/main') diff --git a/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts b/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts index 7fda64a2..6e4cab89 100644 --- a/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts @@ -40,4 +40,5 @@ java { tasks.withType().configureEach { kotlinOptions.jvmTarget = Libs.jvmTarget.toString() kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn" + kotlinOptions.freeCompilerArgs += "-Xjvm-default=all" } -- cgit v1.2.3 From 67fb9de33fc0ab5289770b23210401948f63e5c3 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 2 Sep 2021 12:58:19 +0200 Subject: build: Update to Gradle 7.2 This change updates the Gradle version of the supplied Gradle wrapper to version 7.2. * Update Gradle to version 7.2 * Address incompatibilities with version catalog * Remove opendc-format module. --- buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts | 4 ++-- buildSrc/src/main/kotlin/testing-conventions.gradle.kts | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'buildSrc/src/main') diff --git a/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts b/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts index 78ed5d1f..590f51cf 100644 --- a/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts @@ -50,14 +50,14 @@ benchmark { targets { register("jmh") { this as JvmBenchmarkTarget - jmhVersion = "1.32" + jmhVersion = "1.33" } } } dependencies { val libs = Libs(project) - implementation(libs["kotlinx-benchmark-runtime-jvm"]) + implementation(libs["kotlinx.benchmark.runtime.jvm"]) } // Workaround for https://github.com/Kotlin/kotlinx-benchmark/issues/39 diff --git a/buildSrc/src/main/kotlin/testing-conventions.gradle.kts b/buildSrc/src/main/kotlin/testing-conventions.gradle.kts index bceb9e00..ebeb58a4 100644 --- a/buildSrc/src/main/kotlin/testing-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/testing-conventions.gradle.kts @@ -36,8 +36,8 @@ tasks.test { dependencies { val libs = Libs(project) - testImplementation(libs["junit-jupiter-api"]) - testImplementation(libs["junit-jupiter-params"]) + testImplementation(libs["junit.jupiter.api"]) + testImplementation(libs["junit.jupiter.params"]) testImplementation(libs["mockk"]) - testRuntimeOnly(libs["junit-jupiter-engine"]) + testRuntimeOnly(libs["junit.jupiter.engine"]) } -- cgit v1.2.3 From 54bccf522e169d5cba6489291217f3307ae71094 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Tue, 28 Sep 2021 11:26:47 +0200 Subject: build: Increase Java requirement to version 11 This change updates the Gradle configuration to target Java 11 (instead of Java 8) as the lowest denominator when building OpenDC. Since the project has not yet been adopted by (many) other applications, we should not restrict the project to such an old Java version. --- buildSrc/src/main/kotlin/Libs.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'buildSrc/src/main') diff --git a/buildSrc/src/main/kotlin/Libs.kt b/buildSrc/src/main/kotlin/Libs.kt index 9567845a..f538b1ad 100644 --- a/buildSrc/src/main/kotlin/Libs.kt +++ b/buildSrc/src/main/kotlin/Libs.kt @@ -58,6 +58,6 @@ public class Libs(project: Project) { /** * The JVM version to target. */ - val jvmTarget = JavaVersion.VERSION_1_8 + val jvmTarget = JavaVersion.VERSION_11 } } -- cgit v1.2.3 From 83e6c19681a5cae4b80773f95a66b6753b0bcd7e Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 30 Sep 2021 10:28:46 +0200 Subject: build: Migrate from kotlinx-benchmark to jmh-gradle This change updates the project to use jmh-gradle for benchmarking as opposed to kotlinx-benchmark. Both plugins use JMH under the hood, but jmh-gradle offers more options for profiling and seems to be beter maintained. --- .../main/kotlin/benchmark-conventions.gradle.kts | 38 +++------------------- 1 file changed, 5 insertions(+), 33 deletions(-) (limited to 'buildSrc/src/main') diff --git a/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts b/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts index 590f51cf..65608e8f 100644 --- a/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts @@ -20,49 +20,21 @@ * SOFTWARE. */ -import kotlinx.benchmark.gradle.* import org.jetbrains.kotlin.allopen.gradle.* plugins { - id("org.jetbrains.kotlinx.benchmark") `java-library` kotlin("plugin.allopen") -} - -sourceSets { - register("jmh") { - compileClasspath += sourceSets["main"].output - runtimeClasspath += sourceSets["main"].output - } -} - -configurations { - named("jmhImplementation") { - extendsFrom(configurations["implementation"]) - } + id("me.champeau.jmh") } configure { annotation("org.openjdk.jmh.annotations.State") } -benchmark { - targets { - register("jmh") { - this as JvmBenchmarkTarget - jmhVersion = "1.33" - } - } -} - -dependencies { - val libs = Libs(project) - implementation(libs["kotlinx.benchmark.runtime.jvm"]) -} +jmh { + jmhVersion.set("1.33") -// Workaround for https://github.com/Kotlin/kotlinx-benchmark/issues/39 -afterEvaluate { - tasks.named("jmhBenchmarkJar") { - duplicatesStrategy = DuplicatesStrategy.EXCLUDE - } + profilers.add("stack") + profilers.add("gc") } -- cgit v1.2.3