mirror of
https://github.com/apple/sourcekit-lsp.git
synced 2026-03-02 18:23:24 +01:00
Since Musl is sufficiently different from Glibc (see https://wiki.musl-libc.org/functional-differences-from-glibc.html), it requires a different import, which now should be applied to files that have `import Glibc` in them. Musl is a low footprint libc that's used in Linux distributions such as Alpine Linux, which allows producing fairly small container images. Additionally, unlike Glibc, musl allows full static linking, meaning apps can be easily distributed to an arbitrary Linux distribution that may have a version of Glibc incompatible with the one that Swift is usually built with or no Glibc installed at all.
36 lines
1.1 KiB
Swift
36 lines
1.1 KiB
Swift
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2021 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
#if canImport(Glibc)
|
|
import Glibc
|
|
#elseif canImport(Musl)
|
|
import Musl
|
|
#endif
|
|
|
|
#if canImport(Glibc) || canImport(Musl)
|
|
// This is a lazily initialised global variable that when read for the first time, will ignore SIGPIPE.
|
|
private let globallyIgnoredSIGPIPE: Bool = {
|
|
/* no F_SETNOSIGPIPE on Linux :( */
|
|
_ = signal(SIGPIPE, SIG_IGN)
|
|
return true
|
|
}()
|
|
|
|
internal func globallyDisableSigpipe() {
|
|
let haveWeIgnoredSIGPIEThisIsHereToTriggerIgnoringIt = globallyIgnoredSIGPIPE
|
|
guard haveWeIgnoredSIGPIEThisIsHereToTriggerIgnoringIt else {
|
|
fatalError("globallyIgnoredSIGPIPE should always be true")
|
|
}
|
|
}
|
|
|
|
#endif
|