darwin.apple_sdk_12_3: convert frameworks and libs to stubs

This commit is contained in:
Randy Eckenrode 2024-09-26 20:55:53 -04:00
parent fcd9dc8ac6
commit 480227777b
No known key found for this signature in database
GPG Key ID: 64C1CD4EC2A600D9
21 changed files with 258 additions and 955 deletions

View File

@ -1,27 +0,0 @@
{
stdenvNoCC,
fetchurl,
cpio,
pbzx,
version,
}:
let
releases = builtins.fromJSON (builtins.readFile ./apple-sdk-releases.json);
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "CLTools_Executables";
inherit version;
src = fetchurl releases.${version}.${finalAttrs.pname};
nativeBuildInputs = [
cpio
pbzx
];
buildCommand = ''
pbzx $src | cpio -idm
mv Library/Developer/CommandLineTools $out
'';
})

View File

@ -1,28 +0,0 @@
{
lib,
stdenvNoCC,
fetchurl,
cpio,
pbzx,
version,
}:
let
releases = builtins.fromJSON (builtins.readFile ./apple-sdk-releases.json);
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "CLTools_macOSNMOS_SDK";
inherit version;
src = fetchurl releases.${version}.${finalAttrs.pname};
nativeBuildInputs = [
cpio
pbzx
];
buildCommand = ''
pbzx $src | cpio -idm
mv Library/Developer/CommandLineTools/SDKs/MacOSX${lib.versions.majorMinor version}.sdk $out
'';
})

View File

@ -1,20 +0,0 @@
{
"12.3": {
"CLTools_Executables": {
"hash": "sha256-XlxHwCq+rtBF3Yyfdob3UEHN7YKzb7JF84lRmZbB/50=",
"url": "https://swcdn.apple.com/content/downloads/24/42/002-83793-A_74JRE8GVAT/rlnkct919wgc5c0pjq986z5bb9h62uvni2/CLTools_Executables.pkg"
},
"CLTools_macOSLMOS_SDK": {
"hash": "sha256-mY9YTlyTujV6R89WaNmkJrfOQatXnoSW8gKxnawQz5Q=",
"url": "https://swcdn.apple.com/content/downloads/24/42/002-83793-A_74JRE8GVAT/rlnkct919wgc5c0pjq986z5bb9h62uvni2/CLTools_macOSLMOS_SDK.pkg"
},
"CLTools_macOSNMOS_SDK": {
"hash": "sha256-Tr9VCeCP5udmh09U/zPQG2c4ky1LXscBwPfgpRy8uds=",
"url": "https://swcdn.apple.com/content/downloads/24/42/002-83793-A_74JRE8GVAT/rlnkct919wgc5c0pjq986z5bb9h62uvni2/CLTools_macOSNMOS_SDK.pkg"
},
"CLTools_macOS_SDK": {
"hash": "sha256-2xwYLfiYuEdck7/8NY3iqiPKvoG9HAjXt8Ewyp9c0Es=",
"url": "https://swcdn.apple.com/content/downloads/24/42/002-83793-A_74JRE8GVAT/rlnkct919wgc5c0pjq986z5bb9h62uvni2/CLTools_macOS_SDK.pkg"
}
}
}

View File

@ -1,49 +1,266 @@
# Compatibility stubs for packages that used the old SDK frameworks.
# TODO(@reckenrode) Make these stubs warn after framework usage has been cleaned up in nixpkgs.
{ {
lib, lib,
callPackage,
newScope, newScope,
overrideCC, overrideSDK,
pkgs, pkgs,
stdenv, stdenv,
stdenvNoCC, stdenvNoCC,
}: }:
let let
version = "12.3"; mkStub = callPackage ../apple-sdk/mk-stub.nix { } "12.3";
MacOSX-SDK = callPackage ./CLTools_macOSNMOS_SDK.nix { inherit version; };
callPackage = newScope (pkgs.darwin // packages);
packages = {
# Make sure we pass our special `callPackage` instead of using packages.callPackage which
# does not have necessary attributes in scope.
frameworks = callPackage ./frameworks { inherit callPackage; };
libs = callPackage ./libs { inherit callPackage; };
CLTools_Executables = callPackage ./CLTools_Executables.nix { inherit version; };
Libsystem = callPackage ./libSystem.nix { };
LibsystemCross = callPackage ./libSystem.nix { };
libunwind = callPackage ./libunwind.nix { };
libnetwork = callPackage ./libnetwork.nix { };
libpm = callPackage ./libpm.nix { };
# Avoid introducing a new objc4 if stdenv already has one, to prevent
# conflicting LLVM modules.
objc4 = stdenv.objc4 or (callPackage ./libobjc.nix { });
darwin-stubs = stdenvNoCC.mkDerivation {
pname = "darwin-stubs";
inherit (MacOSX-SDK) version;
preferLocalBuild = true;
allowSubstitutes = false;
buildCommand = ''
mkdir -p "$out"
ln -s ${MacOSX-SDK}/System "$out/System"
ln -s ${MacOSX-SDK}/usr "$out/usr"
'';
};
sdkRoot = pkgs.callPackage ../apple-sdk/sdkRoot.nix { sdkVersion = version; };
};
in in
packages lib.genAttrs [
"CLTools_Executables"
"Libsystem"
"LibsystemCross"
"darwin-stubs"
"libnetwork"
"libpm"
"libunwind"
"objc4"
"sdkRoot"
] mkStub
// {
frameworks = lib.genAttrs [
"AGL"
"AVFAudio"
"AVFCapture"
"AVFCore"
"AVFoundation"
"AVKit"
"Accelerate"
"Accessibility"
"Accounts"
"AdServices"
"AdSupport"
"AddressBook"
"AddressBookCore"
"AppKit"
"AppTrackingTransparency"
"AppleScriptKit"
"AppleScriptObjC"
"ApplicationServices"
"AudioToolbox"
"AudioToolboxCore"
"AudioUnit"
"AudioVideoBridging"
"AuthenticationServices"
"AutomaticAssessmentConfiguration"
"Automator"
"BackgroundTasks"
"BusinessChat"
"CFNetwork"
"CHIP"
"CalendarStore"
"CallKit"
"Carbon"
"ClassKit"
"CloudKit"
"Cocoa"
"Collaboration"
"ColorSync"
"Combine"
"Contacts"
"ContactsPersistence"
"ContactsUI"
"CoreAudio"
"CoreAudioKit"
"CoreAudioTypes"
"CoreBluetooth"
"CoreData"
"CoreDisplay"
"CoreFoundation"
"CoreGraphics"
"CoreHaptics"
"CoreImage"
"CoreLocation"
"CoreMIDI"
"CoreMIDIServer"
"CoreML"
"CoreMedia"
"CoreMediaIO"
"CoreMotion"
"CoreServices"
"CoreSpotlight"
"CoreSymbolication"
"CoreTelephony"
"CoreText"
"CoreVideo"
"CoreWLAN"
"CreateML"
"CryptoKit"
"CryptoTokenKit"
"DVDPlayback"
"DataDetection"
"DebugSymbols"
"DeveloperToolsSupport"
"DeviceActivity"
"DeviceCheck"
"DirectoryService"
"DiscRecording"
"DiscRecordingUI"
"DiskArbitration"
"DisplayServices"
"DriverKit"
"EventKit"
"ExceptionHandling"
"ExecutionPolicy"
"ExposureNotification"
"ExternalAccessory"
"FWAUserLib"
"FileProvider"
"FileProviderUI"
"FinderSync"
"ForceFeedback"
"Foundation"
"GLKit"
"GLUT"
"GSS"
"GameCenterFoundation"
"GameCenterUI"
"GameCenterUICore"
"GameController"
"GameKit"
"GameplayKit"
"GroupActivities"
"Hypervisor"
"ICADevices"
"IMServicePlugIn"
"IOBluetooth"
"IOBluetoothUI"
"IOKit"
"IOSurface"
"IOUSBHost"
"IdentityLookup"
"ImageCaptureCore"
"ImageIO"
"InputMethodKit"
"InstallerPlugins"
"InstantMessage"
"Intents"
"IntentsUI"
"JavaNativeFoundation"
"JavaRuntimeSupport"
"JavaScriptCore"
"JavaVM"
"Kerberos"
"Kernel"
"KernelManagement"
"LDAP"
"LatentSemanticMapping"
"LinkPresentation"
"LocalAuthentication"
"LocalAuthenticationEmbeddedUI"
"MLCompute"
"MailKit"
"ManagedSettings"
"MapKit"
"MediaAccessibility"
"MediaLibrary"
"MediaPlayer"
"MediaToolbox"
"Message"
"Metal"
"MetalKit"
"MetalPerformanceShaders"
"MetalPerformanceShadersGraph"
"MetricKit"
"ModelIO"
"MultipeerConnectivity"
"MultitouchSupport"
"MusicKit"
"NaturalLanguage"
"NearbyInteraction"
"NetFS"
"Network"
"NetworkExtension"
"NotificationCenter"
"OSAKit"
"OSLog"
"OpenAL"
"OpenCL"
"OpenDirectory"
"OpenGL"
"PCSC"
"PDFKit"
"PHASE"
"ParavirtualizedGraphics"
"PassKit"
"PassKitCore"
"PencilKit"
"Photos"
"PhotosUI"
"PreferencePanes"
"PushKit"
"QTKit"
"Quartz"
"QuartzCore"
"QuickLook"
"QuickLookThumbnailing"
"QuickLookUI"
"QuickTime"
"RealityFoundation"
"RealityKit"
"ReplayKit"
"Ruby"
"SafariServices"
"SceneKit"
"ScreenCaptureKit"
"ScreenSaver"
"ScreenTime"
"ScriptingBridge"
"Security"
"SecurityFoundation"
"SecurityInterface"
"SensorKit"
"ServiceManagement"
"ShazamKit"
"SignpostMetrics"
"SkyLight"
"Social"
"SoundAnalysis"
"Speech"
"SpriteKit"
"StoreKit"
"SwiftUI"
"SyncServices"
"System"
"SystemConfiguration"
"SystemExtensions"
"TWAIN"
"TabularData"
"Tcl"
"Tk"
"UIFoundation"
"URLFormatting"
"UniformTypeIdentifiers"
"UserNotifications"
"UserNotificationsUI"
"VideoDecodeAcceleration"
"VideoSubscriberAccount"
"VideoToolbox"
"Virtualization"
"Vision"
"WebKit"
"WidgetKit"
"iTunesLibrary"
"vmnet"
] mkStub;
libs = lib.genAttrs [
"Xplugin"
"utmp"
"libDER"
"xpc"
"sandbox"
"simd"
"utmp"
"xpc"
] mkStub;
version = "12.3";
}

View File

@ -1,146 +0,0 @@
{
lib,
stdenvNoCC,
buildPackages,
# macOS things
callPackage,
darwin-stubs,
}:
let
inherit (darwin-stubs) version;
fixup-frameworks = callPackage ./fixups.nix { };
private-frameworks = callPackage ./private.nix { };
public-frameworks = callPackage ./public.nix { };
mkDepsRewrites =
deps:
let
mergeRewrites = x: y: {
prefix = lib.mergeAttrs (x.prefix or { }) (y.prefix or { });
const = lib.mergeAttrs (x.const or { }) (y.const or { });
};
rewriteArgs =
{
prefix ? { },
const ? { },
}:
lib.concatLists (
(lib.mapAttrsToList (from: to: [
"-p"
"${from}:${to}"
]) prefix)
++ (lib.mapAttrsToList (from: to: [
"-c"
"${from}:${to}"
]) const)
);
rewrites =
depList:
lib.fold mergeRewrites { } (
map (dep: dep.tbdRewrites) (lib.filter (dep: dep ? tbdRewrites) depList)
);
in
lib.escapeShellArgs (rewriteArgs (rewrites (lib.attrValues deps)));
mkFramework =
{
name,
deps,
private ? false,
}:
let
standardFrameworkPath =
name: private:
"/System/Library/${lib.optionalString private "Private"}Frameworks/${name}.framework";
self = stdenvNoCC.mkDerivation {
pname = "apple-${lib.optionalString private "private-"}framework-${name}";
inherit (darwin-stubs) version;
# because we copy files from the system
preferLocalBuild = true;
dontUnpack = true;
dontBuild = true;
disallowedRequisites = [ darwin-stubs ];
nativeBuildInputs = [ buildPackages.darwin.rewrite-tbd ];
installPhase = ''
mkdir -p $out/Library/Frameworks
cp -r ${darwin-stubs}${standardFrameworkPath name private} $out/Library/Frameworks
if [[ -d ${darwin-stubs}/usr/lib/swift/${name}.swiftmodule ]]; then
mkdir -p $out/lib/swift
cp -r -t $out/lib/swift \
${darwin-stubs}/usr/lib/swift/${name}.swiftmodule \
${darwin-stubs}/usr/lib/swift/libswift${name}.tbd
fi
# Fix and check tbd re-export references
chmod u+w -R $out
find $out -name '*.tbd' -type f | while IFS=$'\n' read tbd; do
echo "Fixing re-exports in $tbd"
rewrite-tbd \
-p ${standardFrameworkPath name private}/:$out/Library/Frameworks/${name}.framework/ \
-p /usr/lib/swift/:$out/lib/swift/ \
${mkDepsRewrites deps} \
-r ${builtins.storeDir} \
"$tbd"
done
'';
propagatedBuildInputs = lib.attrValues deps;
passthru.tbdRewrites.prefix."${standardFrameworkPath name private}/" = "${self}/Library/Frameworks/${name}.framework/";
meta = with lib; {
description = "Apple SDK framework ${name}";
maintainers = [ ];
platforms = platforms.darwin;
};
};
in
self;
# Helper functions for creating framework derivations.
framework =
name: deps:
mkFramework {
inherit name deps;
private = false;
};
# Helper functions for creating private framework derivations.
privateFramework =
name: deps:
mkFramework {
inherit name deps;
private = true;
};
# Merge addToFrameworks into public-frameworks and remove elements of removeFromFrameworks.
deps =
let
inherit (fixup-frameworks) addToFrameworks removeFromFrameworks;
fixupDeps =
name: deps:
lib.pipe deps [
# Add dependencies from addToFrameworks.
(deps: lib.recursiveUpdate deps (addToFrameworks.${name} or { }))
# Keep dependencies not in removeFromFrameworks.
(lib.filterAttrs (depName: _: !(removeFromFrameworks.${name}.${depName} or false)))
];
in
lib.mapAttrs fixupDeps public-frameworks;
# Create derivations and add private frameworks.
bareFrameworks =
(lib.mapAttrs framework deps) // (lib.mapAttrs privateFramework private-frameworks);
in
bareFrameworks // fixup-frameworks.overrideFrameworks bareFrameworks

View File

@ -1,163 +0,0 @@
{
lib,
# macOS things
frameworks,
libnetwork,
libs,
darwin-stubs,
objc4,
}:
{
# Used to add dependencies which are not picked up by gen-frameworks.py.
# Some of these are simply private frameworks the generator does not see.
# Trial and error, building things and adding dependencies when they fail.
addToFrameworks =
let
inherit (libs) libDER;
libobjc = objc4;
in
with frameworks;
{
# Below this comment are entries migrated from before the generator was
# added. If, for a given framework, you are able to reverify the extra
# deps are really necessary on top of the generator deps, move it above
# this comment (and maybe document your findings).
AVFoundation = {
inherit ApplicationServices AVFCapture AVFCore;
};
Accelerate = {
inherit CoreWLAN IOBluetooth;
};
AddressBook = {
inherit AddressBookCore ContactsPersistence libobjc;
};
AppKit = {
inherit AudioToolbox AudioUnit UIFoundation;
};
AudioToolbox = {
inherit AudioToolboxCore;
};
AudioUnit = {
inherit Carbon CoreAudio;
};
Carbon = {
inherit IOKit QuartzCore libobjc;
};
CoreAudio = {
inherit IOKit;
};
CoreData = {
inherit CloudKit;
};
CoreFoundation = {
inherit libobjc;
};
CoreGraphics = {
inherit SystemConfiguration;
};
CoreMIDIServer = {
inherit CoreMIDI;
};
CoreMedia = {
inherit ApplicationServices AudioToolbox AudioUnit;
};
CoreServices = {
inherit CoreAudio NetFS ServiceManagement;
};
CoreWLAN = {
inherit SecurityFoundation;
};
DiscRecording = {
inherit IOKit libobjc;
};
Foundation = {
inherit SystemConfiguration libobjc;
};
GameKit = {
inherit
GameCenterFoundation
GameCenterUI
GameCenterUICore
ReplayKit
;
};
ICADevices = {
inherit Carbon libobjc;
};
IOBluetooth = {
inherit CoreBluetooth;
};
JavaScriptCore = {
inherit libobjc;
};
Kernel = {
inherit IOKit;
};
LinkPresentation = {
inherit URLFormatting;
};
MediaToolbox = {
inherit AudioUnit;
};
MetricKit = {
inherit SignpostMetrics;
};
Network = {
inherit libnetwork;
};
PCSC = {
inherit CoreData;
};
PassKit = {
inherit PassKitCore;
};
QTKit = {
inherit
CoreMedia
CoreMediaIO
MediaToolbox
VideoToolbox
;
};
Quartz = {
inherit QTKit;
};
QuartzCore = {
inherit
ApplicationServices
CoreImage
CoreVideo
Metal
OpenCL
libobjc
;
};
Security = {
inherit IOKit libDER;
};
TWAIN = {
inherit Carbon;
};
VideoDecodeAcceleration = {
inherit CoreVideo;
};
WebKit = {
inherit ApplicationServices Carbon libobjc;
};
};
# Used to remove dependencies which are picked up by gen-frameworks.py -- used mainly to break
# cyclic dependencies.
removeFromFrameworks = { };
# Overrides for framework derivations.
overrideFrameworks = super: {
# This framework doesn't exist in newer SDKs (somewhere around 10.13), but
# there are references to it in nixpkgs.
QuickTime = throw "QuickTime framework not available";
# Seems to be appropriate given https://developer.apple.com/forums/thread/666686
JavaVM = super.JavaNativeFoundation;
};
}

View File

@ -1,35 +0,0 @@
{ objc4, frameworks }:
# generated by hand to avoid exposing all private frameworks
# frameworks here are only the necessary ones used by public frameworks.
{
AVFCapture = { };
AVFCore = { };
AddressBookCore = {
inherit (frameworks) ContactsPersistence;
};
AudioToolboxCore = { };
ContactsPersistence = { };
UIFoundation = { };
GameCenterFoundation = { };
GameCenterUI = { };
GameCenterUICore = { };
URLFormatting = { };
SignpostMetrics = { };
PassKitCore = { };
SkyLight = { };
# Also expose CoreSymbolication; used by `root` package.
CoreSymbolication = { };
# Also expose DebugSymbols; used by `llvmPackages_8.lldb` package.
DebugSymbols = { };
# Also expose DisplayServices; used by `sketchybar` package.
DisplayServices = {
libobjc = objc4;
};
# Also expose MultitouchSupport; used by `chuck` package.
MultitouchSupport = { };
}

View File

@ -1,209 +0,0 @@
# This file is generated by gen-frameworks.nix.
# Do not edit, put overrides in apple_sdk.nix instead.
{ libs, frameworks }: with libs; with frameworks;
{
AGL = { inherit Carbon OpenGL; };
AVFAudio = { inherit AudioToolbox CoreAudioTypes CoreMIDI CoreMedia Foundation; };
AVFoundation = { inherit AVFAudio CoreAudio CoreFoundation CoreGraphics CoreImage CoreMIDI CoreMedia CoreVideo Foundation IOKit ImageIO MediaToolbox Metal QuartzCore UniformTypeIdentifiers simd; };
AVKit = { inherit AVFoundation AppKit Cocoa Foundation; };
Accelerate = { inherit CoreFoundation CoreGraphics CoreVideo Foundation IOKit Metal; };
Accessibility = { inherit CoreFoundation CoreGraphics Foundation IOKit; };
Accounts = { inherit Foundation; };
AdServices = { inherit Foundation; };
AdSupport = { inherit Foundation; };
AddressBook = { inherit Carbon Cocoa CoreFoundation Foundation; };
AppKit = { inherit Accessibility ApplicationServices CoreData CoreFoundation CoreGraphics CoreImage Foundation IOKit Metal OpenGL QuartzCore; };
AppTrackingTransparency = { inherit Foundation; };
AppleScriptKit = {};
AppleScriptObjC = { inherit Foundation; };
ApplicationServices = { inherit ColorSync CoreFoundation CoreGraphics CoreServices CoreText ImageIO; };
AudioToolbox = { inherit Carbon CoreAudio CoreAudioTypes CoreFoundation CoreMIDI Foundation; };
AudioUnit = { inherit AudioToolbox; };
AudioVideoBridging = { inherit Foundation IOKit; };
AuthenticationServices = { inherit AppKit Foundation; };
AutomaticAssessmentConfiguration = { inherit Foundation; };
Automator = { inherit AppKit Cocoa Foundation OSAKit; };
BackgroundTasks = { inherit Foundation; };
BusinessChat = { inherit Cocoa Foundation; };
CFNetwork = { inherit CoreFoundation; };
CHIP = { inherit Foundation Security; };
CalendarStore = {};
CallKit = { inherit CoreFoundation CoreGraphics Foundation IOKit; };
Carbon = { inherit ApplicationServices CoreServices Foundation Security; };
ClassKit = { inherit CoreGraphics Foundation; };
CloudKit = { inherit CoreFoundation CoreGraphics CoreLocation Foundation IOKit; };
Cocoa = { inherit AppKit CoreData Foundation; };
Collaboration = { inherit AppKit CoreServices Foundation; };
ColorSync = { inherit CoreFoundation; };
Combine = {};
Contacts = { inherit CoreFoundation CoreGraphics Foundation IOKit; };
ContactsUI = { inherit AppKit; };
CoreAudio = { inherit CoreAudioTypes CoreFoundation; };
CoreAudioKit = { inherit AppKit AudioUnit Cocoa Foundation; };
CoreAudioTypes = { inherit CoreFoundation; };
CoreBluetooth = { inherit Foundation; };
CoreData = { inherit Combine CoreFoundation CoreGraphics Foundation IOKit; };
CoreDisplay = {};
CoreFoundation = {};
CoreGraphics = { inherit CoreFoundation IOKit; };
CoreHaptics = { inherit Foundation; };
CoreImage = { inherit ApplicationServices CoreFoundation CoreGraphics CoreVideo Foundation IOKit IOSurface ImageIO Metal OpenGL; };
CoreLocation = { inherit CoreFoundation CoreGraphics Foundation IOKit; };
CoreMIDI = { inherit CoreFoundation CoreGraphics Foundation IOKit; };
CoreMIDIServer = {};
CoreML = { inherit CoreFoundation CoreGraphics CoreVideo Foundation IOKit ImageIO Metal; };
CoreMedia = { inherit CoreAudio CoreAudioTypes CoreFoundation CoreGraphics CoreVideo Foundation IOKit Metal; };
CoreMediaIO = { inherit CoreAudio CoreFoundation CoreGraphics CoreMedia Foundation IOKit Metal; };
CoreMotion = { inherit Foundation; };
CoreServices = { inherit CFNetwork CoreFoundation DiskArbitration Security; };
CoreSpotlight = { inherit Foundation UniformTypeIdentifiers; };
CoreTelephony = {};
CoreText = { inherit CoreFoundation CoreGraphics; };
CoreVideo = { inherit ApplicationServices CoreFoundation CoreGraphics IOSurface Metal OpenGL; };
CoreWLAN = { inherit Foundation IOKit; };
CreateML = { inherit AVFoundation Combine CoreAudio CoreFoundation CoreGraphics CoreImage CoreML CoreMedia CoreServices CoreVideo Foundation IOKit ImageIO Metal MetalPerformanceShaders NaturalLanguage TabularData VideoToolbox Vision simd; };
CryptoKit = { inherit CoreFoundation CoreGraphics Foundation IOKit LocalAuthentication Security; };
CryptoTokenKit = { inherit CoreFoundation CoreGraphics Foundation IOKit Security; };
DVDPlayback = { inherit ApplicationServices CoreFoundation Security; };
DataDetection = { inherit CoreFoundation CoreGraphics Foundation IOKit; };
DeveloperToolsSupport = {};
DeviceActivity = { inherit Foundation ManagedSettings; };
DeviceCheck = { inherit Foundation; };
DirectoryService = { inherit CoreFoundation; };
DiscRecording = { inherit CoreServices Foundation; };
DiscRecordingUI = { inherit Carbon Cocoa DiscRecording; };
DiskArbitration = { inherit CoreFoundation IOKit; };
DriverKit = {};
EventKit = { inherit CoreGraphics CoreLocation Foundation; };
ExceptionHandling = { inherit Foundation; };
ExecutionPolicy = { inherit Foundation; };
ExposureNotification = { inherit Foundation; };
ExternalAccessory = { inherit Foundation; };
FWAUserLib = { inherit IOKit; };
FileProvider = { inherit CoreFoundation CoreGraphics Foundation IOKit; };
FileProviderUI = { inherit AppKit FileProvider Foundation; };
FinderSync = { inherit AppKit Foundation; };
ForceFeedback = { inherit CoreFoundation IOKit; };
Foundation = { inherit Combine CoreFoundation CoreGraphics CoreServices IOKit Security; };
GLKit = { inherit AppKit CoreData CoreFoundation CoreGraphics CoreImage Foundation IOKit Metal ModelIO OpenGL QuartzCore simd; };
GLUT = { inherit OpenGL; };
GSS = { inherit CoreFoundation; };
GameController = { inherit AppKit Foundation IOKit; };
GameKit = { inherit AppKit Cocoa Contacts CoreGraphics Foundation GameController GameplayKit Metal MetalKit ModelIO SceneKit SpriteKit simd; };
GameplayKit = { inherit AppKit CoreData CoreFoundation CoreGraphics CoreImage Foundation GLKit IOKit Metal ModelIO QuartzCore SceneKit SpriteKit simd; };
GroupActivities = { inherit AVFoundation Combine CoreGraphics CryptoKit Foundation Network UniformTypeIdentifiers; };
Hypervisor = {};
ICADevices = { inherit CoreFoundation CoreGraphics CoreServices IOBluetooth; };
IMServicePlugIn = { inherit Foundation; };
IOBluetooth = { inherit CoreAudio CoreFoundation CoreServices Foundation IOKit; };
IOBluetoothUI = { inherit Cocoa IOBluetooth; };
IOKit = { inherit CoreFoundation; };
IOSurface = { inherit CoreFoundation Foundation IOKit; };
IOUSBHost = { inherit Foundation IOKit; };
IdentityLookup = { inherit Foundation; };
ImageCaptureCore = { inherit Cocoa CoreGraphics Foundation; };
ImageIO = { inherit CoreFoundation CoreGraphics; };
InputMethodKit = { inherit Carbon Cocoa Foundation; };
InstallerPlugins = {};
InstantMessage = {};
Intents = { inherit CoreFoundation CoreGraphics CoreLocation Foundation IOKit UserNotifications; };
IntentsUI = { inherit AppKit; };
JavaNativeFoundation = { inherit Foundation; };
JavaRuntimeSupport = { inherit ApplicationServices Cocoa Foundation QuartzCore; };
JavaScriptCore = { inherit CoreFoundation CoreGraphics Foundation; };
Kerberos = {};
Kernel = {};
KernelManagement = { inherit Foundation; };
LDAP = {};
LatentSemanticMapping = { inherit Carbon CoreFoundation; };
LinkPresentation = { inherit AppKit Foundation; };
LocalAuthentication = { inherit Foundation; };
LocalAuthenticationEmbeddedUI = { inherit AppKit Foundation LocalAuthentication; };
MLCompute = { inherit CoreFoundation CoreGraphics Foundation IOKit Metal; };
MailKit = { inherit AppKit Foundation; };
ManagedSettings = { inherit Combine Foundation; };
MapKit = { inherit AppKit CoreData CoreFoundation CoreGraphics CoreImage CoreLocation Foundation IOKit Metal QuartzCore; };
MediaAccessibility = { inherit CoreFoundation CoreGraphics CoreText; };
MediaLibrary = { inherit Foundation; };
MediaPlayer = { inherit AVFoundation CoreGraphics Foundation; };
MediaToolbox = { inherit AudioToolbox CoreFoundation CoreMedia; };
Message = {};
Metal = { inherit CoreFoundation CoreGraphics Foundation IOKit IOSurface; };
MetalKit = { inherit AppKit CoreData CoreFoundation CoreGraphics CoreImage Foundation IOKit Metal ModelIO QuartzCore simd; };
MetalPerformanceShaders = { inherit CoreGraphics Foundation Metal simd; };
MetalPerformanceShadersGraph = { inherit Foundation MetalPerformanceShaders; };
MetricKit = { inherit CoreFoundation CoreGraphics Foundation IOKit; };
ModelIO = { inherit CoreFoundation CoreGraphics Foundation IOKit simd; };
MultipeerConnectivity = { inherit Cocoa Foundation; };
MusicKit = { inherit Combine CoreGraphics Foundation; };
NaturalLanguage = { inherit CoreFoundation CoreGraphics Foundation IOKit; };
NearbyInteraction = { inherit CoreFoundation CoreGraphics Foundation IOKit simd; };
NetFS = { inherit CoreFoundation; };
Network = { inherit CoreFoundation Foundation Security; };
NetworkExtension = { inherit Foundation Network Security; };
NotificationCenter = { inherit AppKit Foundation; };
OSAKit = { inherit Carbon Cocoa; };
OSLog = { inherit CoreFoundation CoreGraphics Foundation IOKit; };
OpenAL = {};
OpenCL = { inherit OpenGL; };
OpenDirectory = { inherit CoreFoundation Foundation; };
OpenGL = {};
PCSC = {};
PDFKit = { inherit AppKit Cocoa; };
PHASE = { inherit AVFAudio AVFoundation CoreAudioTypes Foundation ModelIO simd; };
ParavirtualizedGraphics = { inherit AppKit CoreVideo Foundation IOSurface Metal; };
PassKit = { inherit AppKit Contacts CoreData CoreFoundation CoreGraphics CoreImage Foundation IOKit Metal QuartzCore; };
PencilKit = { inherit AppKit Cocoa CoreData CoreFoundation CoreGraphics CoreImage Foundation IOKit Metal QuartzCore; };
Photos = { inherit AVFoundation CoreAudio CoreFoundation CoreGraphics CoreImage CoreLocation CoreMIDI CoreMedia Foundation IOKit ImageIO Metal QuartzCore UniformTypeIdentifiers simd; };
PhotosUI = { inherit AppKit Foundation MapKit Photos; };
PreferencePanes = { inherit Cocoa; };
PushKit = { inherit Foundation; };
QTKit = {};
Quartz = { inherit AppKit ApplicationServices Cocoa Foundation ImageCaptureCore OpenGL PDFKit QuartzCore QuickLookUI; };
QuartzCore = { inherit CoreFoundation CoreGraphics CoreImage CoreVideo Foundation IOKit Metal OpenGL; };
QuickLook = { inherit ApplicationServices CoreFoundation; };
QuickLookThumbnailing = { inherit CoreGraphics Foundation UniformTypeIdentifiers; };
QuickLookUI = { inherit AppKit CoreData CoreFoundation CoreGraphics CoreImage Foundation IOKit Metal PDFKit QuartzCore QuickLook UniformTypeIdentifiers; };
RealityFoundation = { inherit AVFAudio AVFoundation AppKit AudioToolbox Combine CoreAudio CoreFoundation CoreGraphics CoreMIDI CoreMedia CoreMotion CoreText CoreVideo Foundation IOKit Metal QuartzCore simd; };
RealityKit = { inherit AppKit Combine CoreData CoreFoundation CoreGraphics CoreImage Foundation IOKit Metal MultipeerConnectivity QuartzCore RealityFoundation simd; };
ReplayKit = { inherit AVFoundation AppKit Foundation; };
Ruby = {};
SafariServices = { inherit AppKit CoreData CoreFoundation CoreGraphics CoreImage Foundation IOKit Metal QuartzCore; };
SceneKit = { inherit AppKit CoreData CoreFoundation CoreGraphics CoreImage Foundation GLKit IOKit Metal ModelIO QuartzCore simd; };
ScreenCaptureKit = { inherit AppKit CoreGraphics CoreMedia Foundation; };
ScreenSaver = { inherit AppKit Foundation; };
ScreenTime = { inherit AppKit Foundation; };
ScriptingBridge = { inherit ApplicationServices CoreServices Foundation; };
Security = { inherit CoreFoundation; };
SecurityFoundation = { inherit Foundation Security; };
SecurityInterface = { inherit AppKit Cocoa Security SecurityFoundation; };
SensorKit = { inherit CoreFoundation CoreLocation Foundation; };
ServiceManagement = { inherit CoreFoundation Security; };
ShazamKit = { inherit AVFAudio CoreAudio CoreFoundation CoreGraphics CoreMIDI CoreMedia Foundation IOKit Metal MusicKit; };
Social = { inherit AppKit Foundation; };
SoundAnalysis = { inherit AVFoundation CoreAudio CoreFoundation CoreGraphics CoreImage CoreMIDI CoreML CoreMedia Foundation IOKit Metal QuartzCore UniformTypeIdentifiers simd; };
Speech = { inherit AVFoundation CoreAudio CoreFoundation CoreGraphics CoreImage CoreMIDI CoreMedia Foundation IOKit Metal QuartzCore UniformTypeIdentifiers simd; };
SpriteKit = { inherit AppKit Cocoa CoreData CoreFoundation CoreGraphics CoreImage Foundation GLKit IOKit Metal ModelIO QuartzCore simd; };
StoreKit = { inherit AppKit CoreData CoreFoundation CoreGraphics CoreImage CryptoKit Foundation IOKit Metal QuartzCore Security; };
SwiftUI = { inherit Accessibility AppKit Combine CoreData CoreFoundation CoreGraphics CoreImage DeveloperToolsSupport Foundation IOKit Metal QuartzCore UniformTypeIdentifiers; };
SyncServices = {};
System = {};
SystemConfiguration = { inherit CoreFoundation Security; };
SystemExtensions = { inherit Foundation; };
TWAIN = {};
TabularData = { inherit Combine Foundation; };
Tcl = {};
Tk = {};
UniformTypeIdentifiers = { inherit CoreFoundation CoreGraphics Foundation IOKit; };
UserNotifications = { inherit Foundation; };
UserNotificationsUI = { inherit AppKit; };
VideoDecodeAcceleration = {};
VideoSubscriberAccount = { inherit Foundation; };
VideoToolbox = { inherit CoreFoundation CoreGraphics CoreMedia CoreVideo; };
Virtualization = { inherit AppKit Cocoa CoreData CoreFoundation CoreGraphics CoreImage Foundation IOKit Metal QuartzCore; };
Vision = { inherit CoreAudio CoreFoundation CoreGraphics CoreML CoreMedia CoreVideo Foundation IOKit ImageIO Metal simd; };
WebKit = { inherit AppKit CoreData CoreFoundation CoreGraphics CoreImage Foundation IOKit JavaScriptCore Metal QuartzCore; };
WidgetKit = { inherit Combine CoreFoundation CoreGraphics Foundation IOKit Intents SwiftUI UniformTypeIdentifiers; };
iTunesLibrary = { inherit Foundation; };
vmnet = {};
}

View File

@ -1,96 +0,0 @@
{
stdenvNoCC,
buildPackages,
darwin-stubs,
}:
stdenvNoCC.mkDerivation {
pname = "libSystem";
inherit (darwin-stubs) version;
nativeBuildInputs = [ buildPackages.darwin.rewrite-tbd ];
csu = [
"bundle1.o"
"crt0.o"
"crt1.10.5.o"
"crt1.10.6.o"
"crt1.o"
"dylib1.10.5.o"
"dylib1.o"
"gcrt1.o"
"lazydylib1.o"
];
buildCommand =
''
mkdir -p $out/{include,lib/swift}
''
# Copy each directory in ${darwin-stubs}/usr/include into $out/include
+ ''
for dir in $(ls -d ${darwin-stubs}/usr/include/*/); do
cp -dr $dir $out/include
done
''
# Copy each header and modulemap file in ${darwin-stubs}/usr/include into $out/include
+ ''
cp -d \
${darwin-stubs}/usr/include/*.h \
${darwin-stubs}/usr/include/*.modulemap \
$out/include
''
# Remove curses.h, ncurses.h, ncurses_dll.h, and unctrl.h which conflict with ncurses.
# Then, remove the module map for ncurses.
# NOTE: The sed expression expects the module map to use consistent indentation across
# releases. If this changes, the sed expression will need to be updated.
#
# For example, right now we assume that there is one leading space before the
# "explicit" keyword and that the closing brace is on its own line (also with one
# leading space).
+ ''
rm $out/include/{curses,ncurses,ncurses_dll,unctrl}.h
sed -i -e '/^ explicit module ncurses {/,/^ }$/d' $out/include/module.modulemap
''
+ ''
rm $out/include/tk*.h $out/include/tcl*.h
cp -dr \
${darwin-stubs}/usr/lib/libSystem.* \
${darwin-stubs}/usr/lib/system \
$out/lib
# Extra libraries
for name in c dbm dl info m mx poll proc pthread rpcsvc util gcc_s.1 resolv; do
cp -d \
${darwin-stubs}/usr/lib/lib$name.tbd \
${darwin-stubs}/usr/lib/lib$name.*.tbd \
$out/lib
done
for name in os Dispatch; do
cp -dr \
${darwin-stubs}/usr/lib/swift/$name.swiftmodule \
${darwin-stubs}/usr/lib/swift/libswift$name.tbd \
$out/lib/swift
done
for f in $csu; do
from=${darwin-stubs}/usr/lib/$f
if [ -e "$from" ]; then
cp -d $from $out/lib
else
echo "Csu file '$from' doesn't exist: skipping"
fi
done
chmod u+w -R $out/lib
find $out -name '*.tbd' -type f | while read tbd; do
rewrite-tbd \
-c /usr/lib/libsystem.dylib:$out/lib/libsystem.dylib \
-p /usr/lib/system/:$out/lib/system/ \
-p /usr/lib/swift/:$out/lib/swift/ \
-r ${builtins.storeDir} \
"$tbd"
done
'';
}

View File

@ -1,16 +0,0 @@
{ stdenvNoCC, darwin-stubs }:
let
self = stdenvNoCC.mkDerivation {
pname = "libnetwork";
inherit (darwin-stubs) version;
buildCommand = ''
mkdir -p $out/lib
cp ${darwin-stubs}/usr/lib/libnetwork* $out/lib
'';
passthru.tbdRewrites.const."/usr/lib/libnetwork.dylib" = "${self}/lib/libnetwork.dylib";
};
in
self

View File

@ -1,22 +0,0 @@
{ stdenvNoCC, darwin-stubs }:
let
self = stdenvNoCC.mkDerivation {
pname = "libobjc";
inherit (darwin-stubs) version;
buildCommand = ''
mkdir -p $out/{include,lib/swift}
cp -r ${darwin-stubs}/usr/include/objc $out/include
cp ${darwin-stubs}/usr/lib/libobjc* $out/lib
cp -r ${darwin-stubs}/usr/lib/swift/ObjectiveC.swiftmodule $out/lib/swift
cp ${darwin-stubs}/usr/lib/swift/libswiftObjectiveC.tbd $out/lib/swift
'';
passthru.tbdRewrites = {
const."/usr/lib/libobjc.A.dylib" = "${self}/lib/libobjc.A.dylib";
const."/usr/lib/swift/libswiftObjectiveC.dylib" = "${self}/lib/swift/libswiftObjectiveC.dylib";
};
};
in
self

View File

@ -1,25 +0,0 @@
{
stdenvNoCC,
buildPackages,
darwin-stubs,
}:
stdenvNoCC.mkDerivation {
pname = "libpm";
inherit (darwin-stubs) version;
dontUnpack = true;
dontBuild = true;
nativeBuildInputs = [ buildPackages.darwin.checkReexportsHook ];
installPhase = ''
mkdir -p $out/lib
cp ${darwin-stubs}/usr/lib/libpm* $out/lib
'';
passthru.tbdRewrites = {
const."/usr/lib/libpmenergy.dylib" = "${placeholder "out"}/lib/libpmenergy.dylib";
const."/usr/lib/libpmsample.dylib" = "${placeholder "out"}/lib/libpmsample.dylib";
};
}

View File

@ -1,30 +0,0 @@
{
frameworks,
darwin-stubs,
stdenvNoCC,
}:
stdenvNoCC.mkDerivation {
pname = "apple-lib-Xplugin";
inherit (darwin-stubs) version;
dontUnpack = true;
dontBuild = true;
propagatedBuildInputs = with frameworks; [
OpenGL
ApplicationServices
Carbon
IOKit
CoreGraphics
CoreServices
CoreText
];
installPhase = ''
mkdir -p $out/include $out/lib
cp "${darwin-stubs}/include/Xplugin.h" $out/include/Xplugin.h
cp ${darwin-stubs}/usr/lib/libXplugin.1.tbd $out/lib
ln -s libXplugin.1.tbd $out/lib/libXplugin.tbd
'';
}

View File

@ -1,10 +0,0 @@
{ callPackage }:
{
libDER = callPackage ./libDER.nix { };
sandbox = callPackage ./sandbox.nix { };
simd = callPackage ./simd.nix { };
utmp = callPackage ./utmp.nix { };
xpc = callPackage ./xpc.nix { };
Xplugin = callPackage ./Xplugin.nix { };
}

View File

@ -1,11 +0,0 @@
{ darwin-stubs, stdenvNoCC }:
stdenvNoCC.mkDerivation {
pname = "apple-lib-libDER";
inherit (darwin-stubs) version;
buildCommand = ''
mkdir -p $out/include
cp -r ${darwin-stubs}/usr/include/libDER $out/include
'';
}

View File

@ -1,13 +0,0 @@
{ darwin-stubs, stdenvNoCC }:
stdenvNoCC.mkDerivation {
pname = "apple-lib-sandbox";
inherit (darwin-stubs) version;
buildCommand = ''
mkdir -p $out/include $out/lib
cp "${darwin-stubs}/usr/include/sandbox.h" $out/include/sandbox.h
cp "${darwin-stubs}/usr/lib/libsandbox.1.tbd" $out/lib
ln -s libsandbox.1.tbd $out/lib/libsandbox.tbd
'';
}

View File

@ -1,11 +0,0 @@
{ darwin-stubs, stdenvNoCC }:
stdenvNoCC.mkDerivation {
pname = "apple-lib-simd";
inherit (darwin-stubs) version;
buildCommand = ''
mkdir -p $out/include
cp -r ${darwin-stubs}/usr/include/simd $out/include
'';
}

View File

@ -1,12 +0,0 @@
{ darwin-stubs, stdenvNoCC }:
stdenvNoCC.mkDerivation {
pname = "apple-lib-utmp";
inherit (darwin-stubs) version;
buildCommand = ''
mkdir -p $out/include
cp "${darwin-stubs}/include/utmp.h" $out/include
cp "${darwin-stubs}/include/utmpx.h" $out/include
'';
}

View File

@ -1,12 +0,0 @@
{ darwin-stubs, stdenvNoCC }:
stdenvNoCC.mkDerivation {
pname = "apple-lib-xpc";
inherit (darwin-stubs) version;
buildCommand = ''
mkdir -p $out/include
cp -r "${darwin-stubs}/usr/include/xpc" $out/include/xpc
cp "${darwin-stubs}/usr/include/launch.h" $out/include/launch.h
'';
}

View File

@ -1,28 +0,0 @@
{
stdenvNoCC,
buildPackages,
darwin-stubs,
}:
stdenvNoCC.mkDerivation {
pname = "libunwind";
inherit (darwin-stubs) version;
dontUnpack = true;
dontBuild = true;
nativeBuildInputs = [ buildPackages.darwin.checkReexportsHook ];
installPhase = ''
mkdir -p $out/include/mach-o
cp \
${darwin-stubs}/usr/include/libunwind.h \
${darwin-stubs}/usr/include/unwind.h \
$out/include
cp \
${darwin-stubs}/usr/include/mach-o/compact_unwind_encoding.h \
$out/include/mach-o
'';
}

View File

@ -93,14 +93,14 @@ makeScopeWithSplicing' {
}; };
stubs = { stubs = {
inherit apple_sdk_11_0; inherit apple_sdk_11_0 apple_sdk_12_3;
} // lib.genAttrs [ } // lib.genAttrs [
] (mkStub apple_sdk.version); ] (mkStub apple_sdk.version);
in in
impure-cmds // appleSourcePackages // chooseLibs // stubs // { impure-cmds // appleSourcePackages // chooseLibs // stubs // {
inherit apple_sdk apple_sdk_10_12 apple_sdk_12_3; inherit apple_sdk apple_sdk_10_12;
stdenvNoCF = stdenv.override { stdenvNoCF = stdenv.override {
extraBuildInputs = []; extraBuildInputs = [];