Skip to content

Commit b1c6529

Browse files
Use ssh_exec from libgit2 (#2787)
I accidentally reverted back to using libssh2 forgetting that it couldn't load in the ssh keys from config files without workarounds. This PR rebuilds the libgit2 framework with that flag disabled and points to a new libgit2 commit that fixes the zombied ssh process.
1 parent 16905ef commit b1c6529

9 files changed

Lines changed: 10 additions & 31 deletions

File tree

GitUp/GitUp.xcodeproj/project.pbxproj

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
0A2F489223683DD60072C6FB /* AuthenticationWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0A2F489023683DD60072C6FB /* AuthenticationWindowController.xib */; };
1616
0A3388BC2353BD630022528D /* WelcomeWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0A3388BA2353BD630022528D /* WelcomeWindowController.xib */; };
1717
0A0C000126D8020000BEEF00 /* libgit2.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0C001126D8020000BEEF00 /* libgit2.xcframework */; };
18-
0A0C000226D8020000BEEF00 /* libssh2.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0C001226D8020000BEEF00 /* libssh2.xcframework */; };
1918
0A0C000326D8020000BEEF00 /* libssl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0C001326D8020000BEEF00 /* libssl.xcframework */; };
2019
0A0C000426D8020000BEEF00 /* libcrypto.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0C001426D8020000BEEF00 /* libcrypto.xcframework */; };
2120
0A0C000526D8020000BEEF00 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0C001526D8020000BEEF00 /* Security.framework */; };
@@ -134,7 +133,6 @@
134133
0AD4625A232711B000BE28D1 /* WelcomeWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WelcomeWindowController.m; sourceTree = "<group>"; };
135134
0AE7F5EE2312C1B000B06050 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
136135
0A0C001126D8020000BEEF00 /* libgit2.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgit2.xcframework; path = "../GitUpKit/Third-Party/libgit2.xcframework"; sourceTree = SOURCE_ROOT; };
137-
0A0C001226D8020000BEEF00 /* libssh2.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libssh2.xcframework; path = "../GitUpKit/Third-Party/libssh2.xcframework"; sourceTree = SOURCE_ROOT; };
138136
0A0C001326D8020000BEEF00 /* libssl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libssl.xcframework; path = "../GitUpKit/Third-Party/libssl.xcframework"; sourceTree = SOURCE_ROOT; };
139137
0A0C001426D8020000BEEF00 /* libcrypto.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libcrypto.xcframework; path = "../GitUpKit/Third-Party/libcrypto.xcframework"; sourceTree = SOURCE_ROOT; };
140138
0A0C001526D8020000BEEF00 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
@@ -184,7 +182,6 @@
184182
0A0C000526D8020000BEEF00 /* Security.framework in Frameworks */,
185183
0A0C000626D8020000BEEF00 /* CoreFoundation.framework in Frameworks */,
186184
0A0C000126D8020000BEEF00 /* libgit2.xcframework in Frameworks */,
187-
0A0C000226D8020000BEEF00 /* libssh2.xcframework in Frameworks */,
188185
0A0C000326D8020000BEEF00 /* libssl.xcframework in Frameworks */,
189186
0A0C000426D8020000BEEF00 /* libcrypto.xcframework in Frameworks */,
190187
DBBEE685256B0A0200F96DAF /* libiconv.tbd in Frameworks */,
@@ -212,7 +209,6 @@
212209
0A0C001426D8020000BEEF00 /* libcrypto.xcframework */,
213210
0A0C001126D8020000BEEF00 /* libgit2.xcframework */,
214211
DBBEE684256B0A0200F96DAF /* libiconv.tbd */,
215-
0A0C001226D8020000BEEF00 /* libssh2.xcframework */,
216212
0A0C001326D8020000BEEF00 /* libssl.xcframework */,
217213
DBBEE687256B0A0A00F96DAF /* libz.tbd */,
218214
0A0C001526D8020000BEEF00 /* Security.framework */,
@@ -497,7 +493,7 @@
497493
);
498494
runOnlyForDeploymentPostprocessing = 1;
499495
shellPath = /bin/sh;
500-
shellScript = "# Information derived from https://stackoverflow.com/questions/77397157/mapbox-xcframework-ios-signature-couldn-t-be-copied-to-signatures-because-an-i\nif [ \"$XCODE_VERSION_MAJOR\" -ge \"1500\" ]; then\n echo \"Remove signature files (Xcode 15 workaround)\"\n find \"$BUILD_DIR/${CONFIGURATION}/libssl.xcframework-macos.signature\" -name \"*.signature\" -type f | xargs -r rm\n find \"$BUILD_DIR/${CONFIGURATION}/libcrypto.xcframework-macos.signature\" -name \"*.signature\" -type f | xargs -r rm\n find \"$BUILD_DIR/${CONFIGURATION}/libssh2.xcframework-macos.signature\" -name \"*.signature\" -type f | xargs -r rm\n find \"$BUILD_DIR/${CONFIGURATION}/Sparkle.xcframework-macos.signature\" -name \"*.signature\" -type f | xargs -r rm\nelse\n echo \"No signature files to remove (Xcode version is less than 1500)\"\nfi\n";
496+
shellScript = "# Information derived from https://stackoverflow.com/questions/77397157/mapbox-xcframework-ios-signature-couldn-t-be-copied-to-signatures-because-an-i\nif [ \"$XCODE_VERSION_MAJOR\" -ge \"1500\" ]; then\n echo \"Remove signature files (Xcode 15 workaround)\"\n find \"$BUILD_DIR/${CONFIGURATION}/libssl.xcframework-macos.signature\" -name \"*.signature\" -type f | xargs -r rm\n find \"$BUILD_DIR/${CONFIGURATION}/libcrypto.xcframework-macos.signature\" -name \"*.signature\" -type f | xargs -r rm\n find \"$BUILD_DIR/${CONFIGURATION}/Sparkle.xcframework-macos.signature\" -name \"*.signature\" -type f | xargs -r rm\nelse\n echo \"No signature files to remove (Xcode version is less than 1500)\"\nfi\n";
501497
};
502498
/* End PBXShellScriptBuildPhase section */
503499

GitUpKit/Core/GCRepository.m

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#endif
1919

2020
#import <TargetConditionals.h>
21-
#import <libssh2.h>
2221
#import <pthread.h>
2322
#if !TARGET_OS_IPHONE
2423
#import <git2/sys/filter.h>
@@ -119,7 +118,6 @@ + (void)load {
119118
assert(git_libgit2_features() & GIT_FEATURE_HTTPS);
120119
assert(git_libgit2_features() & GIT_FEATURE_SSH);
121120
assert(git_libgit2_init() >= 1);
122-
assert(libssh2_init(0) == 0); // We can't have libgit2 using libssh2_session_init() and in turn calling this function on an arbitrary thread later on
123121

124122
#if !TARGET_OS_IPHONE
125123
struct stat info;

GitUpKit/GitUpKit.xcodeproj/project.pbxproj

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,15 @@
88

99
/* Begin PBXBuildFile section */
1010
0A0B000126D8010000BEEF00 /* libgit2.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001126D8010000BEEF00 /* libgit2.xcframework */; };
11-
0A0B000226D8010000BEEF00 /* libssh2.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001226D8010000BEEF00 /* libssh2.xcframework */; };
1211
0A0B000326D8010000BEEF00 /* libssl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001326D8010000BEEF00 /* libssl.xcframework */; };
1312
0A0B000426D8010000BEEF00 /* libcrypto.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001426D8010000BEEF00 /* libcrypto.xcframework */; };
1413
0A0B000526D8010000BEEF00 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001526D8010000BEEF00 /* CoreFoundation.framework */; };
1514
0A0B000626D8010000BEEF00 /* libgit2.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001126D8010000BEEF00 /* libgit2.xcframework */; };
16-
0A0B000726D8010000BEEF00 /* libssh2.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001226D8010000BEEF00 /* libssh2.xcframework */; };
1715
0A0B000826D8010000BEEF00 /* libssl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001326D8010000BEEF00 /* libssl.xcframework */; };
1816
0A0B000926D8010000BEEF00 /* libcrypto.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001426D8010000BEEF00 /* libcrypto.xcframework */; };
1917
0A0B000A26D8010000BEEF00 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001526D8010000BEEF00 /* CoreFoundation.framework */; };
2018
0A0B000B26D8010000BEEF00 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A1DA51D265806140041E737 /* Security.framework */; };
2119
0A0B000C26D8010000BEEF00 /* libgit2.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001126D8010000BEEF00 /* libgit2.xcframework */; };
22-
0A0B000D26D8010000BEEF00 /* libssh2.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001226D8010000BEEF00 /* libssh2.xcframework */; };
2320
0A0B000E26D8010000BEEF00 /* libssl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001326D8010000BEEF00 /* libssl.xcframework */; };
2421
0A0B000F26D8010000BEEF00 /* libcrypto.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001426D8010000BEEF00 /* libcrypto.xcframework */; };
2522
0A0B001026D8010000BEEF00 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A0B001526D8010000BEEF00 /* CoreFoundation.framework */; };
@@ -365,7 +362,6 @@
365362

366363
/* Begin PBXFileReference section */
367364
0A0B001126D8010000BEEF00 /* libgit2.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgit2.xcframework; path = "Third-Party/libgit2.xcframework"; sourceTree = "<group>"; };
368-
0A0B001226D8010000BEEF00 /* libssh2.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libssh2.xcframework; path = "Third-Party/libssh2.xcframework"; sourceTree = "<group>"; };
369365
0A0B001326D8010000BEEF00 /* libssl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libssl.xcframework; path = "Third-Party/libssl.xcframework"; sourceTree = "<group>"; };
370366
0A0B001426D8010000BEEF00 /* libcrypto.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libcrypto.xcframework; path = "Third-Party/libcrypto.xcframework"; sourceTree = "<group>"; };
371367
0A0B001526D8010000BEEF00 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
@@ -600,7 +596,6 @@
600596
0A0B000B26D8010000BEEF00 /* Security.framework in Frameworks */,
601597
0A0B000A26D8010000BEEF00 /* CoreFoundation.framework in Frameworks */,
602598
0A0B000626D8010000BEEF00 /* libgit2.xcframework in Frameworks */,
603-
0A0B000726D8010000BEEF00 /* libssh2.xcframework in Frameworks */,
604599
0A0B000826D8010000BEEF00 /* libssl.xcframework in Frameworks */,
605600
0A0B000926D8010000BEEF00 /* libcrypto.xcframework in Frameworks */,
606601
DBBEE674256B09B500F96DAF /* libiconv.tbd in Frameworks */,
@@ -616,7 +611,6 @@
616611
0A1DA51E265806140041E737 /* Security.framework in Frameworks */,
617612
0A0B000526D8010000BEEF00 /* CoreFoundation.framework in Frameworks */,
618613
0A0B000126D8010000BEEF00 /* libgit2.xcframework in Frameworks */,
619-
0A0B000226D8010000BEEF00 /* libssh2.xcframework in Frameworks */,
620614
0A0B000326D8010000BEEF00 /* libssl.xcframework in Frameworks */,
621615
0A0B000426D8010000BEEF00 /* libcrypto.xcframework in Frameworks */,
622616
DBBEE655256B095000F96DAF /* libiconv.tbd in Frameworks */,
@@ -632,7 +626,6 @@
632626
0A0B001626D8010000BEEF00 /* Security.framework in Frameworks */,
633627
0A0B001026D8010000BEEF00 /* CoreFoundation.framework in Frameworks */,
634628
0A0B000C26D8010000BEEF00 /* libgit2.xcframework in Frameworks */,
635-
0A0B000D26D8010000BEEF00 /* libssh2.xcframework in Frameworks */,
636629
0A0B000E26D8010000BEEF00 /* libssl.xcframework in Frameworks */,
637630
0A0B000F26D8010000BEEF00 /* libcrypto.xcframework in Frameworks */,
638631
1DADC0DE25A25D5D008C2C35 /* libiconv.tbd in Frameworks */,
@@ -661,7 +654,6 @@
661654
0A0B001426D8010000BEEF00 /* libcrypto.xcframework */,
662655
0A0B001126D8010000BEEF00 /* libgit2.xcframework */,
663656
DBBEE654256B095000F96DAF /* libiconv.tbd */,
664-
0A0B001226D8010000BEEF00 /* libssh2.xcframework */,
665657
0A0B001326D8010000BEEF00 /* libssl.xcframework */,
666658
DBBEE637256B08D300F96DAF /* libsqlite3.xcframework */,
667659
DBBEE64C256B094000F96DAF /* libz.tbd */,

GitUpKit/Third-Party/libgit2

GitUpKit/Third-Party/libgit2.xcframework/Info.plist

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<key>HeadersPath</key>
2727
<string>Headers</string>
2828
<key>LibraryIdentifier</key>
29-
<string>macos-arm64_x86_64</string>
29+
<string>ios-arm64_x86_64-simulator</string>
3030
<key>LibraryPath</key>
3131
<string>libgit2.a</string>
3232
<key>SupportedArchitectures</key>
@@ -35,15 +35,17 @@
3535
<string>x86_64</string>
3636
</array>
3737
<key>SupportedPlatform</key>
38-
<string>macos</string>
38+
<string>ios</string>
39+
<key>SupportedPlatformVariant</key>
40+
<string>simulator</string>
3941
</dict>
4042
<dict>
4143
<key>BinaryPath</key>
4244
<string>libgit2.a</string>
4345
<key>HeadersPath</key>
4446
<string>Headers</string>
4547
<key>LibraryIdentifier</key>
46-
<string>ios-arm64_x86_64-simulator</string>
48+
<string>macos-arm64_x86_64</string>
4749
<key>LibraryPath</key>
4850
<string>libgit2.a</string>
4951
<key>SupportedArchitectures</key>
@@ -52,9 +54,7 @@
5254
<string>x86_64</string>
5355
</array>
5456
<key>SupportedPlatform</key>
55-
<string>ios</string>
56-
<key>SupportedPlatformVariant</key>
57-
<string>simulator</string>
57+
<string>macos</string>
5858
</dict>
5959
</array>
6060
<key>CFBundlePackageType</key>
-10.1 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.

GitUpKit/Third-Party/rebuild-libgit2.sh

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ function build_arch_library() {
2020
exit 1
2121
fi
2222

23-
local LIBSSH2_PREFIX="$DIRNAME/libssh2.xcframework/$XCFRAMEWORK_SUBDIR"
24-
local LIBSSL_PREFIX="$DIRNAME/libssl.xcframework/$XCFRAMEWORK_SUBDIR"
25-
local LIBCRYPTO_PREFIX="$DIRNAME/libcrypto.xcframework/$XCFRAMEWORK_SUBDIR"
2623
local SDKROOT="`xcrun --sdk "$PLATFORM" --show-sdk-path`"
2724
local DEPLOYMENT_TARGET="$IOS_VERSION_MIN"
2825
local REGEX_BACKEND="builtin"
@@ -45,17 +42,13 @@ function build_arch_library() {
4542
-DBUILD_CLI=OFF \
4643
-DBUILD_EXAMPLES=OFF \
4744
-DBUILD_FUZZERS=OFF \
48-
-DUSE_SSH=libssh2 \
45+
-DUSE_SSH=exec \
4946
-DUSE_HTTPS=SecureTransport \
5047
-DUSE_SHA1=CollisionDetection \
5148
-DUSE_SHA256=CommonCrypto \
5249
-DREGEX_BACKEND="$REGEX_BACKEND" \
5350
-DUSE_HTTP_PARSER=builtin \
54-
-DPKG_CONFIG_EXECUTABLE=/usr/bin/false \
55-
-DLIBSSH2_INCLUDE_DIR="$LIBSSH2_PREFIX/Headers" \
56-
-DLIBSSH2_LIBRARY="$LIBSSH2_PREFIX/libssh2.a" \
57-
-DHAVE_LIBSSH2_MEMORY_CREDENTIALS=1 \
58-
-DCMAKE_REQUIRED_LIBRARIES="$LIBSSH2_PREFIX/libssh2.a;$LIBSSL_PREFIX/libssl.a;$LIBCRYPTO_PREFIX/libcrypto.a;z"
51+
-DPKG_CONFIG_EXECUTABLE=/usr/bin/false
5952

6053
cmake --build "$BUILD_DIR" --target install --config Release
6154
}

0 commit comments

Comments
 (0)