Apple and OpenSSH modified source code
I encountered a problem with the ssh-add command on macOS. Since OpenSSH is a Free Software project I had a look at the Open Source at Apple page and I found the source code for ssh provided by Apple in macOS Tahoe 26 at Releases.
Source code
The source code is available in the github repository: apple-oss-distributions/OpenSSH.
Very well. An Xcode project is also inlcuded. It should be a breeze to rebuild the command I need and debug it.
Rebuild
When compiling, I get the following error:
This is because the configured SDK (SDKROOT) is set to
macosx.internal. See
https://github.com/apple-oss-distributions/OpenSSH/blob/OpenSSH-354.0.3/xcconfigs/base.xcconfig#L9.
// Copyright © 2023 Apple Inc. All rights reserved. // // NOTE: We use MixedCase for user-defined settings. PRODUCT_NAME = $(TARGET_NAME) PRODUCT_MODULE_NAME = $(TARGET_NAME:identifier) PRODUCT_BUNDLE_IDENTIFIER = com.apple.$(TARGET_NAME:rfc1034identifier) SDKROOT = macosx.internal MACOSX_DEPLOYMENT_TARGET = 14.0 [...]
Of course I don't have this internal SDK.
OK. I can try using the default SDK (while searching for "macosx.internal", I found a tool that does just that: fix-macos-internal-sdk). But now I get the following error:
.../OpenSSH/sshd-keygen-wrapper/SystemProperties.swift:3:8: error: Unable to find module dependency: 'DarwinPrivate' import DarwinPrivate.os.variant ^ (in target 'sshd-keygen-wrapper' from project 'OpenSSH') .../OpenSSH/sshd-keygen-wrapper/SystemProperties.swift:3:8: note: A dependency of main module 'sshd_keygen_wrapper' import DarwinPrivate.os.variant ^ (in target 'sshd-keygen-wrapper' from project 'OpenSSH')
Unsurprisingly, some dependencies are now missing. DarwinPrivate is
required.
Of course, I don't have the DarwinPrivate package used here https://github.com/apple-oss-distributions/OpenSSH/blob/OpenSSH-354.0.3/sshd-keygen-wrapper/SystemProperties.swift#L3.
import IOKit import System import DarwinPrivate.os.variant protocol SystemPropertiesStrategy { [...]
Other packages are also required and missing:
Another option
Rebuilding OpenSSH as provided by Apple is not working. However, it is possible is to try rebuilding OpenSSH from its upstream source code i.e. OpenSSH Portable Release.
This is what I did. I managed to compile OpenSSH Portable (very easily) and debug my problem (we'll come back to that later).
Conclusion
The source code of the modified OpenSSH is provided by Apple. But you cannot recompile it without components that are internal (to my knowledge) to Apple and, of course, not provided by Apple.
This may be the difference between Open Source and Free Software.