diff --git a/pkgs/by-name/ap/apple-sdk/common/fetch-sdk.nix b/pkgs/by-name/ap/apple-sdk/common/fetch-sdk.nix index 57f36c7f2c0ef..40042d0234972 100644 --- a/pkgs/by-name/ap/apple-sdk/common/fetch-sdk.nix +++ b/pkgs/by-name/ap/apple-sdk/common/fetch-sdk.nix @@ -9,6 +9,9 @@ urls, version, hash, + + # Include man pages + includeMan ? lib.toInt (lib.versions.major version) >= 15, }: fetchurl { @@ -29,10 +32,17 @@ fetchurl { src=Library/Developer/CommandLineTools/SDKs/MacOSX${lib.versions.majorMinor version}.sdk - # Remove unwanted binaries, man pages, and folders from the SDK. - rm -rf $src/usr/bin $src/usr/share $src/System/Library/Perl + # Remove unwanted binaries and folders from the SDK. + rm -rf $src/usr/bin $src/System/Library/Perl + if [[ -z "${toString includeMan}" ]]; then + rm -rf $src/usr/share + fi mkdir -p "$out" cp -rd $src/* "$out" ''; + + passthru = { + inherit includeMan; + }; } diff --git a/pkgs/by-name/ap/apple-sdk/common/split-man-pages-output.nix b/pkgs/by-name/ap/apple-sdk/common/split-man-pages-output.nix new file mode 100644 index 0000000000000..892e60f495fa3 --- /dev/null +++ b/pkgs/by-name/ap/apple-sdk/common/split-man-pages-output.nix @@ -0,0 +1,29 @@ +{ + lib, + stdenv, +}: + +self: super: { + # The SDK includes man pages for basic command-line utilities + # shipped with macOS as well as others that may conflict with + # those provided by Nixpkgs. + # + # We split them out into a separate output to prevent poluting + # devShells. Furthermore, we name this output `sdkman` rather than + # the regular `man`/`devman` in preparation for this issue being + # solved: + # + # + outputs = (super.outputs or [ "out" ]) ++ [ "sdkman" ]; + outputMan = "sdkman"; + + buildPhase = + super.buildPhase or "" + + '' + if [[ -d "usr/share/man" ]]; then + echo "Moving man pages to sdkman output" + mkdir -p "$sdkman/share" + mv usr/share/man $sdkman/share/ + fi + ''; +} diff --git a/pkgs/by-name/ap/apple-sdk/metadata/versions.json b/pkgs/by-name/ap/apple-sdk/metadata/versions.json index 8de44211cfa10..86b84e26fa205 100644 --- a/pkgs/by-name/ap/apple-sdk/metadata/versions.json +++ b/pkgs/by-name/ap/apple-sdk/metadata/versions.json @@ -37,6 +37,6 @@ "https://web.archive.org/web/20250210234739/https://swcdn.apple.com/content/downloads/36/33/072-44426-A_G1AII30AST/ddbss9h6gse6a32rg6luosbrm6vgniu033/CLTools_macOSNMOS_SDK.pkg" ], "version": "15.2", - "hash": "sha256-OP5Ah/JnSZ6sD42BD5vGDmikgFzjsfFBmz1hvQD1dOI=" + "hash": "sha256-8L4CEkGlG5xDHLQX5dbublnCPI0RuMzso+v+QVQea5Y=" } } diff --git a/pkgs/by-name/ap/apple-sdk/package.nix b/pkgs/by-name/ap/apple-sdk/package.nix index 04b32f07a6424..55d5592019775 100644 --- a/pkgs/by-name/ap/apple-sdk/package.nix +++ b/pkgs/by-name/ap/apple-sdk/package.nix @@ -26,6 +26,7 @@ let sdkVersions.${darwinSdkMajorVersion} or (lib.throw "Unsupported SDK major version: ${darwinSdkMajorVersion}"); sdkVersion = sdkInfo.version; + src = fetchSDK sdkInfo; fetchSDK = callPackage ./common/fetch-sdk.nix { }; @@ -38,6 +39,9 @@ let (callPackage ./common/remove-disallowed-packages.nix { }) (callPackage ./common/process-stubs.nix { }) ] + ++ lib.optionals (src.passthru.includeMan) [ + (callPackage ./common/split-man-pages-output.nix { }) + ] # Avoid infinite recursions by not propagating certain packages, so they can themselves build with the SDK. ++ lib.optionals (!enableBootstrap) [ (callPackage ./common/propagate-inputs.nix { }) @@ -53,8 +57,7 @@ stdenvNoCC.mkDerivation ( lib.extends phases (finalAttrs: { pname = "apple-sdk"; inherit (sdkInfo) version; - - src = fetchSDK sdkInfo; + inherit src; dontConfigure = true;