Skip to content

Commit 1effeac

Browse files
authored
Merge pull request #1456 from Kotlin/samples-compiler-plugin-attempt
Enables Compiler plugin for :samples
2 parents 3ffff26 + 1a9910c commit 1effeac

File tree

19 files changed

+176
-277
lines changed

19 files changed

+176
-277
lines changed

build.gradle.kts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,23 @@ allprojects {
223223
} catch (_: UnknownDomainObjectException) {
224224
logger.warn("Could not set buildConfig on :${this.name}")
225225
}
226+
227+
// Adds the instrumentedJars configuration/artifact to all sub-projects with a `jar` task
228+
// This allows other modules to depend on the output of this task, aka the compiled jar of that module
229+
// Used in :plugins:dataframe-gradle-plugin integration tests and in :samples for compiler plugin support
230+
try {
231+
val instrumentedJars: Configuration by configurations.creating {
232+
isCanBeConsumed = true
233+
isCanBeResolved = false
234+
}
235+
artifacts {
236+
add("instrumentedJars", tasks.jar.get().archiveFile) {
237+
builtBy(tasks.jar)
238+
}
239+
}
240+
} catch (_: Exception) {
241+
logger.warn("Could not set instrumentedJars on :${this.name}")
242+
}
226243
}
227244
}
228245

core/build.gradle.kts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -433,17 +433,6 @@ kotlinPublications {
433433
}
434434
}
435435

436-
val instrumentedJars: Configuration by configurations.creating {
437-
isCanBeConsumed = true
438-
isCanBeResolved = false
439-
}
440-
441-
artifacts {
442-
add("instrumentedJars", tasks.jar.get().archiveFile) {
443-
builtBy(tasks.jar)
444-
}
445-
}
446-
447436
// Disable and enable if updating plugin breaks the build
448437
dataframes {
449438
schema {

dataframe-csv/build.gradle.kts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,3 @@ kotlinPublications {
160160
kotlin {
161161
explicitApi()
162162
}
163-
164-
val instrumentedJars: Configuration by configurations.creating {
165-
isCanBeConsumed = true
166-
isCanBeResolved = false
167-
}
168-
169-
artifacts {
170-
add("instrumentedJars", tasks.jar.get().archiveFile) {
171-
builtBy(tasks.jar)
172-
}
173-
}

dataframe-json/build.gradle.kts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,6 @@ sourceSets {
5959
}
6060
}
6161

62-
val instrumentedJars: Configuration by configurations.creating {
63-
isCanBeConsumed = true
64-
isCanBeResolved = false
65-
}
66-
67-
artifacts {
68-
add("instrumentedJars", tasks.jar.get().archiveFile) {
69-
builtBy(tasks.jar)
70-
}
71-
}
72-
7362
kotlinPublications {
7463
publication {
7564
publicationName = "dataframeJson"

docs/StardustDocs/resources/api/tail/notebook_test_tail_1.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,7 @@
459459
/*<!--*/
460460
call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"firstName: String\">firstName</span>", children: [], rightAlign: false, values: ["Alice","Bob","Charlie","Charlie","Bob","Alice","Charlie"] },
461461
{ name: "<span title=\"lastName: String\">lastName</span>", children: [], rightAlign: false, values: ["Cooper","Dylan","Daniels","Chaplin","Marley","Wolf","Byrd"] },
462+
{ name: "<span title=\"name: DataRow<*>\">name</span>", children: [0, 1], rightAlign: false, values: ["<span class=\"formatted\" title=\"firstName: Alice\nlastName: Cooper\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Alice<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Cooper<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Bob\nlastName: Dylan\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Bob<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Dylan<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Daniels\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Dan<span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Chaplin\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Cha<span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Bob\nlastName: Marley\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Bob<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Marley<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Alice\nlastName: Wolf\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Alice<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Wolf<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Byrd\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Byrd<span class=\"structural\"> }</span></span>"] },
462463
{ name: "<span title=\"age: Int\">age</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">15</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">45</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">20</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">40</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">30</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">20</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">30</span></span>"] },
463464
{ name: "<span title=\"city: String?\">city</span>", children: [], rightAlign: false, values: ["London","Dubai","Moscow","Milan","Tokyo","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","Moscow"] },
464465
{ name: "<span title=\"weight: Int?\">weight</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">54</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">87</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">68</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">55</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">90</span></span>"] },

docs/StardustDocs/resources/api/tail/notebook_test_tail_2.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,7 @@
459459
/*<!--*/
460460
call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"firstName: String\">firstName</span>", children: [], rightAlign: false, values: ["Charlie","Charlie","Bob","Alice","Charlie"] },
461461
{ name: "<span title=\"lastName: String\">lastName</span>", children: [], rightAlign: false, values: ["Daniels","Chaplin","Marley","Wolf","Byrd"] },
462+
{ name: "<span title=\"name: DataRow<*>\">name</span>", children: [0, 1], rightAlign: false, values: ["<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Daniels\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Dan<span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Chaplin\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Cha<span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Bob\nlastName: Marley\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Bob<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Marley<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Alice\nlastName: Wolf\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Alice<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Wolf<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Byrd\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Byrd<span class=\"structural\"> }</span></span>"] },
462463
{ name: "<span title=\"age: Int\">age</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">20</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">40</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">30</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">20</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">30</span></span>"] },
463464
{ name: "<span title=\"city: String?\">city</span>", children: [], rightAlign: false, values: ["Moscow","Milan","Tokyo","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","Moscow"] },
464465
{ name: "<span title=\"weight: Int?\">weight</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">68</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">55</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">90</span></span>"] },

docs/StardustDocs/resources/api/tail/notebook_test_tail_3.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,7 @@
459459
/*<!--*/
460460
call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"firstName: String\">firstName</span>", children: [], rightAlign: false, values: ["Alice","Charlie"] },
461461
{ name: "<span title=\"lastName: String\">lastName</span>", children: [], rightAlign: false, values: ["Wolf","Byrd"] },
462+
{ name: "<span title=\"name: DataRow<*>\">name</span>", children: [0, 1], rightAlign: false, values: ["<span class=\"formatted\" title=\"firstName: Alice\nlastName: Wolf\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Alice<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Wolf<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Byrd\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Byrd<span class=\"structural\"> }</span></span>"] },
462463
{ name: "<span title=\"age: Int\">age</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">20</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">30</span></span>"] },
463464
{ name: "<span title=\"city: String?\">city</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","Moscow"] },
464465
{ name: "<span title=\"weight: Int\">weight</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">55</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">90</span></span>"] },

samples/build.gradle.kts

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,15 @@ import org.gradle.kotlin.dsl.runKtlintFormatOverTestSourceSet
1616
import org.gradle.kotlin.dsl.sourceSets
1717
import org.gradle.kotlin.dsl.test
1818
import org.gradle.kotlin.dsl.testImplementation
19+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
1920

2021
plugins {
2122
java
2223
with(libs.plugins) {
2324
alias(kotlin.jvm)
2425
alias(korro)
2526
alias(ktlint)
26-
// Compiler plugin doesn't work properly for now: https://github.com/Kotlin/dataframe/issues/1432
27-
// alias(dataframePlugin)
28-
// using deprecated gradle plugin instead
29-
alias(dataframe)
27+
alias(dataframe.compiler.plugin)
3028
// alias(kover)
3129
alias(ksp)
3230
}
@@ -37,8 +35,46 @@ repositories {
3735
mavenLocal() // for local development
3836
}
3937

38+
val dependentProjects = with(projects) {
39+
listOf(
40+
core,
41+
dataframeArrow,
42+
dataframeExcel,
43+
dataframeJdbc,
44+
dataframeCsv,
45+
dataframeJson,
46+
)
47+
}.map { project(it.path) }
48+
49+
tasks.withType<KotlinCompile> {
50+
dependentProjects.forEach {
51+
dependsOn("${it.path}:jar")
52+
}
53+
}
54+
55+
// get the output of the instrumentedJars configuration, aka the jar-files of the compiled modules
56+
// all modules with jar-task have this artifact in the DataFrame project
57+
val dependentProjectJarPaths = dependentProjects.map {
58+
it.configurations
59+
.getByName("instrumentedJars")
60+
.artifacts.single()
61+
.file.absolutePath
62+
.replace(File.separatorChar, '/')
63+
}
64+
4065
dependencies {
41-
implementation(projects.dataframe)
66+
runtimeOnly(projects.dataframe) // Must depend on jars for the compiler plugin to work!
67+
implementation(files(dependentProjectJarPaths))
68+
69+
// include api() dependencies from dependent projects, as they are not included in the jars
70+
dependentProjects.forEach {
71+
it.configurations.getByName("api").dependencies.forEach { dep ->
72+
if (dep is ExternalModuleDependency) {
73+
implementation("${dep.group}:${dep.name}:${dep.version ?: "+"}")
74+
}
75+
}
76+
}
77+
4278
testImplementation(libs.junit)
4379
testImplementation(libs.kotestAssertions) {
4480
exclude("org.jetbrains.kotlin", "kotlin-stdlib-jdk8")

samples/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/DataFrameSampleHelper.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.jetbrains.kotlinx.dataframe.samples
22

33
import org.jetbrains.kotlinx.dataframe.DataColumn
44
import org.jetbrains.kotlinx.dataframe.api.toDataFrame
5+
import org.jetbrains.kotlinx.dataframe.samples.api.TestBase
56
import org.jetbrains.kotlinx.kandy.letsplot.samples.SampleHelper
67

78
abstract class DataFrameSampleHelper(sampleName: String, subFolder: String = "samples") :
@@ -10,7 +11,8 @@ abstract class DataFrameSampleHelper(sampleName: String, subFolder: String = "sa
1011
subFolder,
1112
"../docs/StardustDocs/images",
1213
"../docs/StardustDocs/resources",
13-
) {
14+
),
15+
TestBase {
1416

1517
fun DataColumn<*>.saveDfHtmlSample() {
1618
toDataFrame().saveDfHtmlSample()

0 commit comments

Comments
 (0)