Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to Kotlin 1.8 & version substitution #1204

Merged
merged 4 commits into from
Jan 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion buildSrc/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugins {
id "publishing"
id "maven-publish"
id "signing"
id "org.jetbrains.kotlin.jvm" version "1.7.10"
id "org.jetbrains.kotlin.jvm" version libs.versions.kotlin
}

def isJava8or9 = System.getProperty("java.version").startsWith("1.8") || System.getProperty("java.version").startsWith("9")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ class KorgeExtension(val project: Project) {
* Android SDK not required if tasks are not executed.
* The project can be opened on Android Studio.
*/
@Deprecated("Use targetAndroidDirect instead")
fun targetAndroidIndirect() {
target("android") {
project.configureAndroidIndirect()
Expand Down Expand Up @@ -283,6 +284,14 @@ class KorgeExtension(val project: Project) {
var sourceMaps: Boolean = false
var supressWarnings: Boolean = false

val versionSubstitutions = LinkedHashMap<String, String>().also {
it["com.soywiz.korlibs.korge2:korge"] = BuildVersions.KORGE
}

fun versionSubstitution(groupName: String, version: String) {
versionSubstitutions[groupName] = version
}

/**
* Determines whether the standard console will be available on Windows or not
* by setting the windows subsystem to console or windows.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,17 @@ package com.soywiz.korge.gradle
import com.soywiz.korge.gradle.targets.*
import com.soywiz.korge.gradle.targets.linux.LDLibraries
import com.soywiz.korge.gradle.util.*
import com.soywiz.korlibs.*
import org.gradle.api.*
import org.gradle.api.Project
import org.gradle.api.plugins.*
import org.gradle.api.tasks.*
import org.gradle.api.tasks.diagnostics.*
import org.gradle.internal.classloader.*
import org.gradle.plugins.ide.idea.model.*
import org.jetbrains.kotlin.gradle.dsl.*
import java.io.*
import java.net.*

class KorgeGradleApply(val project: Project) {
fun apply(includeIndirectAndroid: Boolean = true) = project {
Expand Down Expand Up @@ -114,14 +118,98 @@ class KorgeGradleApply(val project: Project) {

open class KorgeGradlePlugin : Plugin<Project> {
override fun apply(project: Project) {
project.configureBuildScriptClasspathTasks()

//TODO PABLO changed to have the android tasks enabled again
KorgeGradleApply(project).apply(includeIndirectAndroid = true)

project.configureAutoVersions()

//for (res in project.getResourcesFolders()) println("- $res")
}
}

fun Project.configureAutoVersions() {
allprojectsThis {
configurations.all {
it.resolutionStrategy.eachDependency { details ->
//println("DETAILS: ${details.requested} : '${details.requested.group}' : '${details.requested.name}' : '${details.requested.version}'")
val groupWithName = "${details.requested.group}:${details.requested.name}"
if (details.requested.version.isNullOrBlank()) {
val version = korge.versionSubstitutions[groupWithName]
if (version != null) {
details.useVersion(version)
details.because("korge.versionSubstitutions: '$groupWithName' -> $version")
}
}
}
}
}
}

fun Project.configureBuildScriptClasspathTasks() {
// https://gist.github.com/xconnecting/4037220
val printBuildScriptClasspath = project.tasks.createThis<DependencyReportTask>("printBuildScriptClasspath") {
configurations = project.buildscript.configurations
}
val printBuildScriptClasspath2 = project.tasks.createThis<Task>("printBuildScriptClasspath2") {
doFirst {
fun getClassLoaderChain(classLoader: ClassLoader, out: ArrayList<ClassLoader> = arrayListOf()): List<ClassLoader> {
var current: ClassLoader? = classLoader
while (current != null) {
out.add(current)
current = current.parent
}
return out
}

fun printClassLoader(classLoader: ClassLoader) {
when (classLoader) {
is URLClassLoader -> {
println(classLoader.urLs.joinToString("\n"))
}
is ClassLoaderHierarchy -> {
classLoader.visit(object : ClassLoaderVisitor() {
override fun visit(classLoader: ClassLoader) {
super.visit(classLoader)
}

override fun visitSpec(spec: ClassLoaderSpec) {
super.visitSpec(spec)
}

override fun visitClassPath(classPath: Array<out URL>) {
classPath.forEach { println(it) }
}

override fun visitParent(classLoader: ClassLoader) {
super.visitParent(classLoader)
}
})
}
}
}

println("Class loaders:")
val classLoaders = getClassLoaderChain(Thread.currentThread().contextClassLoader)
for (classLoader in classLoaders.reversed()) {
println(" - $classLoader")
}

for (classLoader in classLoaders.reversed()) {
println("")
println("$classLoader:")
println("--------------")
printClassLoader(classLoader)
}
//println(ClassLoader.getSystemClassLoader())
//println((Thread.currentThread().contextClassLoader as URLClassLoader).parent.urLs.joinToString("\n"))
//println((KorgeGradlePlugin::class.java.classLoader as URLClassLoader).urLs.joinToString("\n"))
}
}

}

val Project.gkotlin get() = properties["kotlin"] as KotlinMultiplatformExtension
val Project.ext get() = extensions.getByType(ExtraPropertiesExtension::class.java)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.soywiz.korlibs.root

import com.android.build.gradle.*
import com.android.build.gradle.internal.tasks.*
import com.soywiz.korge.gradle.*
import com.soywiz.korge.gradle.targets.*
import com.soywiz.korge.gradle.targets.android.*
import com.soywiz.korge.gradle.targets.ios.*
Expand All @@ -10,8 +11,11 @@ import com.soywiz.korge.gradle.targets.native.*
import com.soywiz.korge.gradle.util.*
import com.soywiz.korge.gradle.util.create
import com.soywiz.korlibs.*
import com.soywiz.korlibs.gkotlin
import com.soywiz.korlibs.kotlin
import com.soywiz.korlibs.modules.*
import com.soywiz.korlibs.modules.KorgeJavaExec
import com.soywiz.korlibs.tasks
import org.gradle.api.*
import org.gradle.api.Project
import org.gradle.api.artifacts.repositories.*
Expand All @@ -34,6 +38,7 @@ object RootKorlibsPlugin {
}

fun Project.init() {
configureBuildScriptClasspathTasks()
initPlugins()
initRootKotlinJvmTarget()
initVersions()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.soywiz.korge.gradle

object BuildVersions {
const val GIT = "main"
const val KOTLIN = "1.7.21"
const val KOTLIN = "1.8.0"
const val NODE_JS = "16.9.1"
const val JNA = "5.13.0"
const val COROUTINES = "1.6.4"
Expand Down
6 changes: 3 additions & 3 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
jna = "5.13.0"
jcodec = "0.2.5"
proguard-gradle = "7.2.2"
kotlin = "1.7.21"
dokka = "1.7.20"
kotlin = "1.8.0"
kotlinx-coroutines = "1.6.4"
kotlinx-serialization = "1.4.1"
kotlinx-atomicfu = "0.18.5"
kotlinx-atomicfu = "0.19.0"
dokka = "1.7.20"
kover = "0.6.1"
kover-agent = "1.0.692"
node = "16.9.1"
Expand Down
25 changes: 15 additions & 10 deletions kotlin-js-store/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ acorn-import-assertions@^1.7.6:
resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9"
integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==

acorn@^8.4.1:
acorn@^8.7.1:
version "8.8.2"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
Expand Down Expand Up @@ -883,7 +883,7 @@ engine.io@~6.2.0:
engine.io-parser "~5.0.3"
ws "~8.2.3"

enhanced-resolve@^5.9.3:
enhanced-resolve@^5.10.0:
version "5.12.0"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634"
integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==
Expand Down Expand Up @@ -2602,6 +2602,11 @@ type-is@~1.6.18:
media-typer "0.3.0"
mime-types "~2.1.24"

typescript@4.7.4:
version "4.7.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235"
integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==

ua-parser-js@^0.7.30:
version "0.7.31"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6"
Expand Down Expand Up @@ -2657,7 +2662,7 @@ void-elements@^2.0.0:
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=

watchpack@^2.3.1:
watchpack@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
Expand Down Expand Up @@ -2752,21 +2757,21 @@ webpack-sources@^3.2.3:
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==

webpack@5.73.0:
version "5.73.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38"
integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==
webpack@5.74.0:
version "5.74.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980"
integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==
dependencies:
"@types/eslint-scope" "^3.7.3"
"@types/estree" "^0.0.51"
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/wasm-edit" "1.11.1"
"@webassemblyjs/wasm-parser" "1.11.1"
acorn "^8.4.1"
acorn "^8.7.1"
acorn-import-assertions "^1.7.6"
browserslist "^4.14.5"
chrome-trace-event "^1.0.2"
enhanced-resolve "^5.9.3"
enhanced-resolve "^5.10.0"
es-module-lexer "^0.9.0"
eslint-scope "5.1.1"
events "^3.2.0"
Expand All @@ -2779,7 +2784,7 @@ webpack@5.73.0:
schema-utils "^3.1.0"
tapable "^2.1.1"
terser-webpack-plugin "^5.1.3"
watchpack "^2.3.1"
watchpack "^2.4.0"
webpack-sources "^3.2.3"

websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
Expand Down