Skip to content

Commit

Permalink
Disable CIO for mingwX64
Browse files Browse the repository at this point in the history
  • Loading branch information
e5l committed Aug 18, 2020
1 parent 8c1f4d4 commit 8b6f074
Show file tree
Hide file tree
Showing 39 changed files with 129 additions and 63 deletions.
1 change: 1 addition & 0 deletions gradle.properties
Expand Up @@ -7,6 +7,7 @@ kotlin.incremental.js=true
kotlin.incremental.multiplatform=true
kotlin.parallel.tasks.in.project=true
org.gradle.parallel=true
kotlin.native.ignoreIncorrectDependencies=true
#kotlin.native.enableParallelExecutionCheck=false

# gradle
Expand Down
2 changes: 2 additions & 0 deletions gradle/interop-as-source-set-klib.gradle
Expand Up @@ -8,6 +8,8 @@ project.ext.registerInteropAsSourceSetOutput = { interopName, sourceSet ->
it.konanTarget == hostManager.Companion.getHost()
}

if (currentHostKotlinTarget == null) return

def interop = currentHostKotlinTarget.compilations["main"].cinterops[interopName]
def cinteropTask = tasks.named(interop.interopProcessingTaskName)
def cinteropKlib = cinteropTask.map { it.outputFile }
Expand Down
45 changes: 36 additions & 9 deletions gradle/posix.gradle
Expand Up @@ -33,6 +33,20 @@ def disableCompilation(targets) {
}
}

def skipMingwProjects = [
"ktor-network",
"ktor-network-tls",
"ktor-client-cio"
]

def host = getHostName()
def skipMingw = skipMingwProjects.contains(project.name)

project.ext.nativeTargets = []
project.ext.nativeCompilations = []

if (host == 'windows' && skipMingw) return

kotlin {
targets {
if (project.ext.ideaActive) {
Expand All @@ -41,8 +55,13 @@ kotlin {
} else {
fromPreset(presets.linuxX64, 'linuxX64')
fromPreset(presets.macosX64, 'macosX64')
fromPreset(presets.mingwX64, 'mingwX64')
project.ext.nativeTargets = [macosX64, linuxX64, mingwX64]

project.ext.nativeTargets += [macosX64, linuxX64]

if (!skipMingw) {
fromPreset(presets.mingwX64, 'mingwX64')
project.ext.nativeTargets += [mingwX64]
}

if (project.name != 'ktor-client-curl') {
fromPreset(presets.iosArm64, 'iosArm64')
Expand All @@ -54,33 +73,41 @@ kotlin {
fromPreset(presets.watchosArm64, 'watchosArm64')
fromPreset(presets.watchosX86, 'watchosX86')

project.ext.nativeTargets = [iosX64, iosArm64, iosArm32, macosX64, linuxX64, mingwX64, tvosArm64, tvosX64, watchosArm32, watchosArm64, watchosX86]
project.ext.nativeTargets += [iosX64, iosArm64, iosArm32, tvosArm64, tvosX64, watchosArm32, watchosArm64, watchosX86]
}

def crossCompileTargets = [linuxX64, macosX64]

if (!skipMingw) {
crossCompileTargets += [mingwX64]
}

def crossCompileTargets = [linuxX64, macosX64, mingwX64]
def host = getHostName()
switch (host) {
case 'linux':
crossCompileTargets.remove(linuxX64)
break
case 'windows':
crossCompileTargets.remove(mingwX64)
if (!skipMingw) crossCompileTargets.remove(mingwX64)
break
case 'macos':
crossCompileTargets.remove(macosX64)
break
}

disableCompilation(crossCompileTargets)
configure([mingwX64Test]) {
environment "PATH": "C:\\msys64\\mingw64\\bin;C:\\Tools\\msys64\\mingw64\\bin;C:\\Tools\\msys2\\mingw64\\bin"

if (!skipMingw) {
configure([mingwX64Test]) {
environment "PATH": "C:\\msys64\\mingw64\\bin;C:\\Tools\\msys64\\mingw64\\bin;C:\\Tools\\msys2\\mingw64\\bin"
}
}
}

configure(project.ext.nativeTargets) {
binaries.getTest("DEBUG").optimized = false
}

project.ext.nativeCompilations = project.ext.nativeTargets.collect { it.compilations.main }
project.ext.nativeCompilations += project.ext.nativeTargets.collect { it.compilations.main }
}
sourceSets {
posixMain.dependencies {
Expand Down
Expand Up @@ -10,9 +10,9 @@ import io.ktor.client.request.*
import io.ktor.client.utils.*
import io.ktor.http.*
import io.ktor.network.selector.*
import io.ktor.network.util.*
import io.ktor.util.*
import io.ktor.util.collections.*
import io.ktor.util.network.*
import io.ktor.utils.io.*
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.*
Expand Down
Expand Up @@ -6,7 +6,7 @@ package io.ktor.client.engine.cio

import io.ktor.network.selector.*
import io.ktor.network.sockets.*
import io.ktor.network.util.*
import io.ktor.util.network.*
import kotlinx.coroutines.sync.*

internal class ConnectionFactory(
Expand Down
Expand Up @@ -8,9 +8,9 @@ import io.ktor.client.features.*
import io.ktor.client.request.*
import io.ktor.network.sockets.*
import io.ktor.network.tls.*
import io.ktor.network.util.*
import io.ktor.util.*
import io.ktor.util.date.*
import io.ktor.util.network.*
import io.ktor.utils.io.*
import io.ktor.utils.io.core.*
import kotlinx.atomicfu.*
Expand Down
1 change: 0 additions & 1 deletion ktor-client/ktor-client-core/build.gradle.kts
Expand Up @@ -14,7 +14,6 @@ kotlin.sourceSets {
dependencies {
api(project(":ktor-http"))
api(project(":ktor-http:ktor-http-cio"))
api(project(":ktor-network"))
}
}

Expand Down
@@ -1,7 +1,7 @@
package io.ktor.client.engine

import io.ktor.http.*
import io.ktor.network.util.*
import io.ktor.util.network.*


/**
Expand Down
@@ -1,7 +1,7 @@
package io.ktor.client.engine

import io.ktor.http.*
import io.ktor.network.util.*
import io.ktor.util.network.*

/**
* Proxy configuration.
Expand Down
@@ -1,7 +1,7 @@
package io.ktor.client.engine

import io.ktor.http.*
import io.ktor.network.util.*
import io.ktor.util.network.*
import java.net.*

/**
Expand Down
@@ -1,7 +1,7 @@
package io.ktor.client.engine

import io.ktor.http.*
import io.ktor.network.util.*
import io.ktor.util.network.*

/**
* Proxy configuration.
Expand Down Expand Up @@ -34,7 +34,7 @@ actual class ProxyConfig(val url: Url) {
*
* This operations can block.
*/
public actual fun ProxyConfig.resolveAddress(): NetworkAddress = NetworkAddress(url.host, url.port)
public actual fun ProxyConfig.resolveAddress(): io.ktor.util.network.NetworkAddress = NetworkAddress(url.host, url.port)

/**
* [ProxyConfig] factory.
Expand Down
16 changes: 10 additions & 6 deletions ktor-client/ktor-client-tests/build.gradle.kts
Expand Up @@ -33,9 +33,10 @@ open class KtorTestServer : DefaultTask() {
} catch (cause: Throwable) {
}
}

}

val osName = System.getProperty("os.name")

kotlin.sourceSets {
commonMain {
dependencies {
Expand Down Expand Up @@ -80,18 +81,21 @@ kotlin.sourceSets {
api(project(":ktor-client:ktor-client-js"))
}
}
posixTest {
dependencies {
api(project(":ktor-client:ktor-client-cio"))
}
}

if (!ideaActive) {
listOf("linuxX64Test", "mingwX64Test", "macosX64Test").map { getByName(it) }.forEach {
it.dependencies {
api(project(":ktor-client:ktor-client-curl"))
}
}

if (!osName.startsWith("Windows")) {
listOf("linuxX64Test", "macosX64Test", "iosX64Test").map { getByName(it) }.forEach {
it.dependencies {
api(project(":ktor-client:ktor-client-cio"))
}
}
}
listOf("iosX64Test", "macosX64Test").map { getByName(it) }.forEach {
it.dependencies {
// api(project(":ktor-client:ktor-client-ios"))
Expand Down
6 changes: 0 additions & 6 deletions ktor-network/api/ktor-network.api
Expand Up @@ -336,12 +336,6 @@ public final class io/ktor/network/util/IOCoroutineDispatcher : kotlinx/coroutin
public fun dispatch (Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V
}

public final class io/ktor/network/util/NetworkAddressJvmKt {
public static final fun NetworkAddress (Ljava/lang/String;I)Ljava/net/SocketAddress;
public static final fun getHostname (Ljava/net/SocketAddress;)Ljava/lang/String;
public static final fun getPort (Ljava/net/SocketAddress;)I
}

public final class io/ktor/network/util/PoolsKt {
public static final fun getDefaultByteBufferPool ()Lio/ktor/utils/io/pool/ObjectPool;
public static final fun getDefaultDatagramByteBufferPool ()Lio/ktor/utils/io/pool/ObjectPool;
Expand Down
2 changes: 1 addition & 1 deletion ktor-network/build.gradle.kts
Expand Up @@ -22,7 +22,7 @@ kotlin {
}
}

if (!ideaActive) {
if (!ideaActive && findByName("posixMain") != null) {
val networkInterop by creating
getByName("posixMain").dependsOn(networkInterop)
apply(from = "$rootDir/gradle/interop-as-source-set-klib.gradle")
Expand Down
Expand Up @@ -5,7 +5,7 @@
package io.ktor.network.sockets

import io.ktor.network.selector.*
import io.ktor.network.util.*
import io.ktor.util.network.*

internal expect suspend fun connect(
selector: SelectorManager,
Expand Down
Expand Up @@ -4,8 +4,8 @@

package io.ktor.network.sockets

import io.ktor.network.util.*
import io.ktor.util.*
import io.ktor.util.network.*
import io.ktor.utils.io.core.*
import kotlinx.coroutines.channels.*

Expand Down
Expand Up @@ -4,8 +4,6 @@

package io.ktor.network.sockets

import io.ktor.network.util.*

internal const val INFINITE_TIMEOUT_MS = Long.MAX_VALUE

/**
Expand Down
2 changes: 1 addition & 1 deletion ktor-network/common/src/io/ktor/network/sockets/Sockets.kt
Expand Up @@ -4,8 +4,8 @@

package io.ktor.network.sockets

import io.ktor.network.util.*
import io.ktor.util.*
import io.ktor.util.network.*
import io.ktor.utils.io.*
import io.ktor.utils.io.core.*
import io.ktor.utils.io.errors.*
Expand Down
@@ -1,7 +1,7 @@
package io.ktor.network.sockets

import io.ktor.network.selector.*
import io.ktor.network.util.*
import io.ktor.util.network.*

/**
* TCP socket builder
Expand Down
@@ -1,7 +1,7 @@
package io.ktor.network.sockets

import io.ktor.network.selector.*
import io.ktor.network.util.*
import io.ktor.util.network.*

/**
* UDP socket builder
Expand Down
Expand Up @@ -5,7 +5,7 @@
package io.ktor.network.sockets

import io.ktor.network.selector.*
import io.ktor.network.util.*
import io.ktor.util.network.NetworkAddress

internal actual suspend fun connect(
selector: SelectorManager,
Expand Down
Expand Up @@ -5,7 +5,7 @@
package io.ktor.network.sockets

import io.ktor.network.selector.*
import io.ktor.network.util.*
import io.ktor.util.network.NetworkAddress

internal actual fun UDPSocketBuilder.Companion.connectUDP(
selector: SelectorManager,
Expand Down
Expand Up @@ -5,7 +5,7 @@
package io.ktor.network.sockets

import io.ktor.network.selector.*
import io.ktor.network.util.*
import io.ktor.util.network.*

internal actual suspend fun connect(
selector: SelectorManager,
Expand Down
Expand Up @@ -6,6 +6,7 @@ package io.ktor.network.sockets

import io.ktor.network.selector.*
import io.ktor.network.util.*
import io.ktor.util.network.*
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.*
import io.ktor.utils.io.core.*
Expand Down
Expand Up @@ -5,7 +5,7 @@
package io.ktor.network.sockets

import io.ktor.network.selector.*
import io.ktor.network.util.*
import io.ktor.util.network.*
import kotlinx.coroutines.*
import java.nio.channels.*

Expand Down
2 changes: 1 addition & 1 deletion ktor-network/jvm/src/io/ktor/network/sockets/SocketImpl.kt
Expand Up @@ -5,7 +5,7 @@
package io.ktor.network.sockets

import io.ktor.network.selector.*
import io.ktor.network.util.*
import io.ktor.util.network.*
import java.net.SocketAddress
import java.nio.channels.*

Expand Down
Expand Up @@ -5,7 +5,7 @@
package io.ktor.network.sockets

import io.ktor.network.selector.*
import io.ktor.network.util.*
import io.ktor.util.network.*

internal actual fun UDPSocketBuilder.Companion.connectUDP(
selector: SelectorManager,
Expand Down
Expand Up @@ -6,6 +6,7 @@ package io.ktor.network.sockets

import io.ktor.network.selector.*
import io.ktor.network.util.*
import io.ktor.util.network.*
import kotlinx.cinterop.*
import platform.posix.*

Expand All @@ -30,7 +31,11 @@ internal actual suspend fun connect(

return TCPSocketNative(
descriptor, selector,
remoteAddress = NetworkAddress(networkAddress.hostname, networkAddress.port, remote),
remoteAddress = NetworkAddress(
networkAddress.hostname,
networkAddress.port,
remote
),
localAddress = NetworkAddress("0.0.0.0", localAddress.port, localAddress)
)
} catch (_: Throwable) {
Expand Down

0 comments on commit 8b6f074

Please sign in to comment.