From 56aa31d0b48e14021c16d05731238674983fe1fc Mon Sep 17 00:00:00 2001 From: Pavel Sobolev Date: Tue, 21 Nov 2023 21:19:55 +0300 Subject: [PATCH 1/4] swiftpm: force-unwrap file handles in `swift-tools-support-core` --- .../compilers/swift/swiftpm/default.nix | 5 +++ .../patches/force-unwrap-file-handles.patch | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 pkgs/development/compilers/swift/swiftpm/patches/force-unwrap-file-handles.patch diff --git a/pkgs/development/compilers/swift/swiftpm/default.nix b/pkgs/development/compilers/swift/swiftpm/default.nix index e98d82d0d796..4a7a4ab63cce 100644 --- a/pkgs/development/compilers/swift/swiftpm/default.nix +++ b/pkgs/development/compilers/swift/swiftpm/default.nix @@ -199,6 +199,10 @@ let name = "swift-tools-support-core"; src = generated.sources.swift-tools-support-core; + patches = [ + ./patches/force-unwrap-file-handles.patch + ]; + buildInputs = [ swift-system sqlite @@ -385,6 +389,7 @@ in stdenv.mkDerivation (commonAttrs // { swiftpmMakeMutable swift-tools-support-core substituteInPlace .build/checkouts/swift-tools-support-core/Sources/TSCTestSupport/XCTestCasePerf.swift \ --replace 'canImport(Darwin)' 'false' + patch -p1 -d .build/checkouts/swift-tools-support-core -i ${./patches/force-unwrap-file-handles.patch} # Prevent a warning about SDK directories we don't have. swiftpmMakeMutable swift-driver diff --git a/pkgs/development/compilers/swift/swiftpm/patches/force-unwrap-file-handles.patch b/pkgs/development/compilers/swift/swiftpm/patches/force-unwrap-file-handles.patch new file mode 100644 index 000000000000..a2f2d38c37c8 --- /dev/null +++ b/pkgs/development/compilers/swift/swiftpm/patches/force-unwrap-file-handles.patch @@ -0,0 +1,33 @@ +From 8d9ab4b6ed24a97e8af0cc338a52aacdcf438b8c Mon Sep 17 00:00:00 2001 +From: Pavel Sobolev +Date: Tue, 21 Nov 2023 20:53:33 +0300 +Subject: [PATCH] Force-unwrap file handles. + +--- + Sources/TSCBasic/FileSystem.swift | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Sources/TSCBasic/FileSystem.swift b/Sources/TSCBasic/FileSystem.swift +index 3a63bdf..a1f3d9d 100644 +--- a/Sources/TSCBasic/FileSystem.swift ++++ b/Sources/TSCBasic/FileSystem.swift +@@ -425,7 +425,7 @@ private class LocalFileSystem: FileSystem { + if fp == nil { + throw FileSystemError(errno: errno, path) + } +- defer { fclose(fp) } ++ defer { fclose(fp!) } + + // Read the data one block at a time. + let data = BufferedOutputByteStream() +@@ -455,7 +455,7 @@ private class LocalFileSystem: FileSystem { + if fp == nil { + throw FileSystemError(errno: errno, path) + } +- defer { fclose(fp) } ++ defer { fclose(fp!) } + + // Write the data in one chunk. + var contents = bytes.contents +-- +2.42.0 From 647e9c86687479311e86b887f8faf2dc16684087 Mon Sep 17 00:00:00 2001 From: Pavel Sobolev Date: Tue, 21 Nov 2023 21:37:37 +0300 Subject: [PATCH 2/4] swift-driver: force-unwrap file handles in `swift-tools-support-core` --- .../compilers/swift/swift-driver/default.nix | 5 ++- .../patches/force-unwrap-file-handles.patch | 33 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/compilers/swift/swift-driver/patches/force-unwrap-file-handles.patch diff --git a/pkgs/development/compilers/swift/swift-driver/default.nix b/pkgs/development/compilers/swift/swift-driver/default.nix index 60fe2aeb9c92..d69a4da0eb3e 100644 --- a/pkgs/development/compilers/swift/swift-driver/default.nix +++ b/pkgs/development/compilers/swift/swift-driver/default.nix @@ -52,7 +52,10 @@ stdenv.mkDerivation { }) ]; - configurePhase = generated.configure; + configurePhase = generated.configure + '' + swiftpmMakeMutable swift-tools-support-core + patch -p1 -d .build/checkouts/swift-tools-support-core -i ${./patches/force-unwrap-file-handles.patch} + ''; # TODO: Tests depend on indexstore-db being provided by an existing Swift # toolchain. (ie. looks for `../lib/libIndexStore.so` relative to swiftc. diff --git a/pkgs/development/compilers/swift/swift-driver/patches/force-unwrap-file-handles.patch b/pkgs/development/compilers/swift/swift-driver/patches/force-unwrap-file-handles.patch new file mode 100644 index 000000000000..a2f2d38c37c8 --- /dev/null +++ b/pkgs/development/compilers/swift/swift-driver/patches/force-unwrap-file-handles.patch @@ -0,0 +1,33 @@ +From 8d9ab4b6ed24a97e8af0cc338a52aacdcf438b8c Mon Sep 17 00:00:00 2001 +From: Pavel Sobolev +Date: Tue, 21 Nov 2023 20:53:33 +0300 +Subject: [PATCH] Force-unwrap file handles. + +--- + Sources/TSCBasic/FileSystem.swift | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Sources/TSCBasic/FileSystem.swift b/Sources/TSCBasic/FileSystem.swift +index 3a63bdf..a1f3d9d 100644 +--- a/Sources/TSCBasic/FileSystem.swift ++++ b/Sources/TSCBasic/FileSystem.swift +@@ -425,7 +425,7 @@ private class LocalFileSystem: FileSystem { + if fp == nil { + throw FileSystemError(errno: errno, path) + } +- defer { fclose(fp) } ++ defer { fclose(fp!) } + + // Read the data one block at a time. + let data = BufferedOutputByteStream() +@@ -455,7 +455,7 @@ private class LocalFileSystem: FileSystem { + if fp == nil { + throw FileSystemError(errno: errno, path) + } +- defer { fclose(fp) } ++ defer { fclose(fp!) } + + // Write the data in one chunk. + var contents = bytes.contents +-- +2.42.0 From d231730525f543e661a8be96b832b714d5d52faa Mon Sep 17 00:00:00 2001 From: Pavel Sobolev Date: Fri, 12 Jan 2024 18:53:58 +0000 Subject: [PATCH 3/4] sourcekit-lsp: force-unwrap file handles in `swift-tools-support-core` --- .../compilers/swift/sourcekit-lsp/default.nix | 3 ++ .../patches/force-unwrap-file-handles.patch | 33 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 pkgs/development/compilers/swift/sourcekit-lsp/patches/force-unwrap-file-handles.patch diff --git a/pkgs/development/compilers/swift/sourcekit-lsp/default.nix b/pkgs/development/compilers/swift/sourcekit-lsp/default.nix index 5cf928dc424b..caba3e3441f3 100644 --- a/pkgs/development/compilers/swift/sourcekit-lsp/default.nix +++ b/pkgs/development/compilers/swift/sourcekit-lsp/default.nix @@ -40,6 +40,9 @@ stdenv.mkDerivation { swiftpmMakeMutable indexstore-db patch -p1 -d .build/checkouts/indexstore-db -i ${./patches/indexstore-db-macos-target.patch} + swiftpmMakeMutable swift-tools-support-core + patch -p1 -d .build/checkouts/swift-tools-support-core -i ${./patches/force-unwrap-file-handles.patch} + # This toggles a section specific to Xcode XCTest, which doesn't work on # Darwin, where we also use swift-corelibs-xctest. substituteInPlace Sources/LSPTestSupport/PerfTestCase.swift \ diff --git a/pkgs/development/compilers/swift/sourcekit-lsp/patches/force-unwrap-file-handles.patch b/pkgs/development/compilers/swift/sourcekit-lsp/patches/force-unwrap-file-handles.patch new file mode 100644 index 000000000000..a2f2d38c37c8 --- /dev/null +++ b/pkgs/development/compilers/swift/sourcekit-lsp/patches/force-unwrap-file-handles.patch @@ -0,0 +1,33 @@ +From 8d9ab4b6ed24a97e8af0cc338a52aacdcf438b8c Mon Sep 17 00:00:00 2001 +From: Pavel Sobolev +Date: Tue, 21 Nov 2023 20:53:33 +0300 +Subject: [PATCH] Force-unwrap file handles. + +--- + Sources/TSCBasic/FileSystem.swift | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Sources/TSCBasic/FileSystem.swift b/Sources/TSCBasic/FileSystem.swift +index 3a63bdf..a1f3d9d 100644 +--- a/Sources/TSCBasic/FileSystem.swift ++++ b/Sources/TSCBasic/FileSystem.swift +@@ -425,7 +425,7 @@ private class LocalFileSystem: FileSystem { + if fp == nil { + throw FileSystemError(errno: errno, path) + } +- defer { fclose(fp) } ++ defer { fclose(fp!) } + + // Read the data one block at a time. + let data = BufferedOutputByteStream() +@@ -455,7 +455,7 @@ private class LocalFileSystem: FileSystem { + if fp == nil { + throw FileSystemError(errno: errno, path) + } +- defer { fclose(fp) } ++ defer { fclose(fp!) } + + // Write the data in one chunk. + var contents = bytes.contents +-- +2.42.0 From 92e04e12ca7402b0e98172847edd78246cf23a80 Mon Sep 17 00:00:00 2001 From: Pavel Sobolev Date: Fri, 12 Jan 2024 19:03:26 +0000 Subject: [PATCH 4/4] swift-format: force-unwrap file handles in `swift-tools-support-core` --- .../compilers/swift/swift-format/default.nix | 5 ++- .../patches/force-unwrap-file-handles.patch | 33 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/compilers/swift/swift-format/patches/force-unwrap-file-handles.patch diff --git a/pkgs/development/compilers/swift/swift-format/default.nix b/pkgs/development/compilers/swift/swift-format/default.nix index 188208ebf492..4e56fecf11e3 100644 --- a/pkgs/development/compilers/swift/swift-format/default.nix +++ b/pkgs/development/compilers/swift/swift-format/default.nix @@ -19,7 +19,10 @@ stdenv.mkDerivation { nativeBuildInputs = [ swift swiftpm ]; buildInputs = [ Foundation ]; - configurePhase = generated.configure; + configurePhase = generated.configure + '' + swiftpmMakeMutable swift-tools-support-core + patch -p1 -d .build/checkouts/swift-tools-support-core -i ${./patches/force-unwrap-file-handles.patch} + ''; # We only install the swift-format binary, so don't need the other products. swiftpmFlags = [ "--product swift-format" ]; diff --git a/pkgs/development/compilers/swift/swift-format/patches/force-unwrap-file-handles.patch b/pkgs/development/compilers/swift/swift-format/patches/force-unwrap-file-handles.patch new file mode 100644 index 000000000000..a2f2d38c37c8 --- /dev/null +++ b/pkgs/development/compilers/swift/swift-format/patches/force-unwrap-file-handles.patch @@ -0,0 +1,33 @@ +From 8d9ab4b6ed24a97e8af0cc338a52aacdcf438b8c Mon Sep 17 00:00:00 2001 +From: Pavel Sobolev +Date: Tue, 21 Nov 2023 20:53:33 +0300 +Subject: [PATCH] Force-unwrap file handles. + +--- + Sources/TSCBasic/FileSystem.swift | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Sources/TSCBasic/FileSystem.swift b/Sources/TSCBasic/FileSystem.swift +index 3a63bdf..a1f3d9d 100644 +--- a/Sources/TSCBasic/FileSystem.swift ++++ b/Sources/TSCBasic/FileSystem.swift +@@ -425,7 +425,7 @@ private class LocalFileSystem: FileSystem { + if fp == nil { + throw FileSystemError(errno: errno, path) + } +- defer { fclose(fp) } ++ defer { fclose(fp!) } + + // Read the data one block at a time. + let data = BufferedOutputByteStream() +@@ -455,7 +455,7 @@ private class LocalFileSystem: FileSystem { + if fp == nil { + throw FileSystemError(errno: errno, path) + } +- defer { fclose(fp) } ++ defer { fclose(fp!) } + + // Write the data in one chunk. + var contents = bytes.contents +-- +2.42.0