Skip to content

Commit 0f7e129

Browse files
authored
Merge pull request swiftlang#5005 from etcwilde/ewilde/main-workaround-broken-modulemap
Workaround broken glibc modulemap
2 parents 8c68478 + 7e53507 commit 0f7e129

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

Sources/Foundation/Port.swift

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -90,18 +90,22 @@ open class SocketPort: Port {}
9090

9191
#else
9292

93+
#if canImport(Darwin)
94+
import Darwin
95+
fileprivate let FOUNDATION_SOCK_STREAM = SOCK_STREAM
96+
fileprivate let FOUNDATION_IPPROTO_TCP = IPPROTO_TCP
97+
#endif
98+
9399
#if canImport(Glibc) && !os(Android) && !os(OpenBSD)
94100
import Glibc
95-
fileprivate let SOCK_STREAM = Int32(Glibc.SOCK_STREAM.rawValue)
96-
fileprivate let SOCK_DGRAM = Int32(Glibc.SOCK_DGRAM.rawValue)
97-
fileprivate let IPPROTO_TCP = Int32(Glibc.IPPROTO_TCP)
101+
fileprivate let FOUNDATION_SOCK_STREAM = Int32(SOCK_STREAM.rawValue)
102+
fileprivate let FOUNDATION_IPPROTO_TCP = Int32(IPPROTO_TCP)
98103
#endif
99104

100105
#if canImport(Glibc) && os(Android) || os(OpenBSD)
101106
import Glibc
102-
fileprivate let SOCK_STREAM = Int32(Glibc.SOCK_STREAM)
103-
fileprivate let SOCK_DGRAM = Int32(Glibc.SOCK_DGRAM)
104-
fileprivate let IPPROTO_TCP = Int32(Glibc.IPPROTO_TCP)
107+
fileprivate let FOUNDATION_SOCK_STREAM = Int32(SOCK_STREAM)
108+
fileprivate let FOUNDATION_IPPROTO_TCP = Int32(IPPROTO_TCP)
105109
fileprivate let INADDR_ANY: in_addr_t = 0
106110
#if os(OpenBSD)
107111
fileprivate let INADDR_LOOPBACK = 0x7f000001
@@ -123,7 +127,8 @@ import WinSDK
123127
fileprivate typealias sa_family_t = ADDRESS_FAMILY
124128
fileprivate typealias in_port_t = USHORT
125129
fileprivate typealias in_addr_t = UInt32
126-
fileprivate let IPPROTO_TCP = Int32(WinSDK.IPPROTO_TCP.rawValue)
130+
fileprivate let FOUNDATION_SOCK_STREAM = SOCK_STREAM
131+
fileprivate let FOUNDATION_IPPROTO_TCP = Int32(WinSDK.IPPROTO_TCP.rawValue)
127132
#endif
128133

129134
// MARK: Darwin representation of socket addresses
@@ -484,7 +489,7 @@ open class SocketPort : Port {
484489

485490
let data = withUnsafeBytes(of: address) { Data($0) }
486491

487-
self.init(protocolFamily: PF_INET, socketType: SOCK_STREAM, protocol: IPPROTO_TCP, address: data)
492+
self.init(protocolFamily: PF_INET, socketType: FOUNDATION_SOCK_STREAM, protocol: FOUNDATION_IPPROTO_TCP, address: data)
488493
}
489494

490495
private final func createNonuniquedCore(from socket: CFSocket, protocolFamily family: Int32, socketType type: Int32, protocol: Int32) {
@@ -500,7 +505,7 @@ open class SocketPort : Port {
500505
var context = CFSocketContext()
501506
context.info = Unmanaged.passUnretained(self).toOpaque()
502507
var s: CFSocket
503-
if type == SOCK_STREAM {
508+
if type == FOUNDATION_SOCK_STREAM {
504509
s = CFSocketCreate(nil, family, type, `protocol`, CFOptionFlags(kCFSocketAcceptCallBack), __NSFireSocketAccept, &context)
505510
} else {
506511
s = CFSocketCreate(nil, family, type, `protocol`, CFOptionFlags(kCFSocketDataCallBack), __NSFireSocketDatagram, &context)
@@ -519,7 +524,7 @@ open class SocketPort : Port {
519524
var context = CFSocketContext()
520525
context.info = Unmanaged.passUnretained(self).toOpaque()
521526
var s: CFSocket
522-
if type == SOCK_STREAM {
527+
if type == FOUNDATION_SOCK_STREAM {
523528
s = CFSocketCreateWithNative(nil, CFSocketNativeHandle(sock), CFOptionFlags(kCFSocketAcceptCallBack), __NSFireSocketAccept, &context)
524529
} else {
525530
s = CFSocketCreateWithNative(nil, CFSocketNativeHandle(sock), CFOptionFlags(kCFSocketDataCallBack), __NSFireSocketDatagram, &context)
@@ -543,7 +548,7 @@ open class SocketPort : Port {
543548
sinAddr.sin_addr = inAddr
544549

545550
let data = withUnsafeBytes(of: sinAddr) { Data($0) }
546-
self.init(remoteWithProtocolFamily: PF_INET, socketType: SOCK_STREAM, protocol: IPPROTO_TCP, address: data)
551+
self.init(remoteWithProtocolFamily: PF_INET, socketType: FOUNDATION_SOCK_STREAM, protocol: FOUNDATION_IPPROTO_TCP, address: data)
547552
return
548553
}
549554
}
@@ -556,7 +561,7 @@ open class SocketPort : Port {
556561
sinAddr.sin6_addr = in6Addr
557562

558563
let data = withUnsafeBytes(of: sinAddr) { Data($0) }
559-
self.init(remoteWithProtocolFamily: PF_INET, socketType: SOCK_STREAM, protocol: IPPROTO_TCP, address: data)
564+
self.init(remoteWithProtocolFamily: PF_INET, socketType: FOUNDATION_SOCK_STREAM, protocol: FOUNDATION_IPPROTO_TCP, address: data)
560565
return
561566
}
562567
}
@@ -573,7 +578,7 @@ open class SocketPort : Port {
573578
withUnsafeBytes(of: in_addr_t(INADDR_LOOPBACK).bigEndian) { buffer.copyMemory(from: $0) }
574579
}
575580
let data = withUnsafeBytes(of: sinAddr) { Data($0) }
576-
self.init(remoteWithProtocolFamily: PF_INET, socketType: SOCK_STREAM, protocol: IPPROTO_TCP, address: data)
581+
self.init(remoteWithProtocolFamily: PF_INET, socketType: FOUNDATION_SOCK_STREAM, protocol: FOUNDATION_IPPROTO_TCP, address: data)
577582
}
578583

579584
private static let remoteSocketCoresLock = NSLock()
@@ -1049,7 +1054,7 @@ open class SocketPort : Port {
10491054
if let connector = core.connectors[signature], CFSocketIsValid(connector) {
10501055
return connector
10511056
} else {
1052-
if signature.socketType == SOCK_STREAM {
1057+
if signature.socketType == FOUNDATION_SOCK_STREAM {
10531058
if let connector = CFSocketCreate(nil, socketKind.protocolFamily, socketKind.socketType, socketKind.protocol, CFOptionFlags(kCFSocketDataCallBack), __NSFireSocketData, &context), CFSocketIsValid(connector) {
10541059
var timeout = time - Date.timeIntervalSinceReferenceDate
10551060
if timeout < 0 || timeout >= SocketPort.maximumTimeout {

0 commit comments

Comments
 (0)