darling
darling copied to clipboard
darling-stub-gen sometimes generates weird filenames.
I used this code to generate stubs for all frameworks (BTW should I make a PR with all frameworks you don't have?):
cd /System/Library/Frameworks; rm -rf ~/darling; mkdir ~/darling; for i in *; do echo "${i%.*}"; darling-stub-gen `pwd`/$i/Versions/Current/"${i%.*}" ~/darling/"${i%.*}" >>~/darling/status; done
For AppKit, I get following error:
Traceback (most recent call last):
File "/Users/groot/bin/darling-stub-gen", line 238, in <module>
class_header = open(header_dir + class_name + ".h", "w")
OSError: [Errno 63] File name too long: '/Users/groot/darling/AppKit/include/AppKit/NSScrollingBehaviorZombie\n{\n}\n\n+ (id)zombieListDescription;\n+ (id)zombieList;\n- (id)description;\n@property(retain) NSArray *backtrace;\n@property(copy) NSString *originalClassName;\n- (id)forwardingTargetForSelector:(SEL)arg1;\n\n@end\n\n__attribute__((visibility("hidden")))\n@interface NSScrollingBehavior.h'
And for Foundation this one:
Traceback (most recent call last):
File "/Users/groot/bin/darling-stub-gen", line 238, in <module>
class_header = open(header_dir + class_name + ".h", "w")
OSError: [Errno 63] File name too long: '/Users/groot/darling/Foundation/include/Foundation/NSProxy <NSObject>\n{\n Class isa;\n}\n\n+ (id)description;\n+ (CDUnknownFunctionPointerType)methodForSelector:(SEL)arg1;\n+ (CDUnknownFunctionPointerType)instanceMethodForSelector:(SEL)arg1;\n+ (BOOL)instancesRespondToSelector:(SEL)arg1;\n+ (BOOL)conformsToProtocol:(id)arg1;\n+ (BOOL)isKindOfClass:(Class)arg1;\n+ (BOOL)isMemberOfClass:(Class)arg1;\n+ (BOOL)isSubclassOfClass:(Class)arg1;\n+ (BOOL)isProxy;\n+ (BOOL)isFault;\n+ (id)performSelector:(SEL)arg1 withObject:(id)arg2 withObject:(id)arg3;\n+ (id)performSelector:(SEL)arg1 withObject:(id)arg2;\n+ (id)performSelector:(SEL)arg1;\n+ (unsigned long long)hash;\n+ (BOOL)isEqual:(id)arg1;\n+ (id)_copyDescription;\n+ (id)debugDescription;\n+ (struct _NSZone *)zone;\n+ (BOOL)retainWeakReference;\n+ (BOOL)allowsWeakReference;\n+ (BOOL)_isDeallocating;\n+ (BOOL)_tryRetain;\n+ (void)finalize;\n+ (void)dealloc;\n+ (id)init;\n+ (void)doesNotRecognizeSelector:(SEL)arg1;\n+ (void)forwardInvocation:(id)arg1;\n+ (id)methodSignatureForSelector:(SEL)arg1;\n+ (id)instanceMethodSignatureForSelector:(SEL)arg1;\n+ (id)forwardingTargetForSelector:(SEL)arg1;\n+ (BOOL)isAncestorOfObject:(id)arg1;\n+ (BOOL)respondsToSelector:(SEL)arg1;\n+ (id)mutableCopyWithZone:(struct _NSZone *)arg1;\n+ (id)mutableCopy;\n+ (id)copyWithZone:(struct _NSZone *)arg1;\n+ (id)copy;\n+ (unsigned long long)retainCount;\n+ (id)autorelease;\n+ (oneway void)release;\n+ (id)retain;\n+ (id)self;\n+ (Class)superclass;\n+ (Class)class;\n+ (id)alloc;\n+ (id)allocWithZone:(struct _NSZone *)arg1;\n+ (void)initialize;\n- (BOOL)isNSValue__;\n- (BOOL)isNSTimeZone__;\n- (BOOL)isNSString__;\n- (BOOL)isNSSet__;\n- (BOOL)isNSOrderedSet__;\n- (BOOL)isNSNumber__;\n- (BOOL)isNSDictionary__;\n- (BOOL)isNSDate__;\n- (BOOL)isNSData__;\n- (BOOL)isNSCFConstantString__;\n- (BOOL)isNSArray__;\n- (BOOL)isNSObject__;\n- (BOOL)respondsToSelector:(SEL)arg1;\n- (BOOL)conformsToProtocol:(id)arg1;\n- (BOOL)isMemberOfClass:(Class)arg1;\n- (BOOL)isKindOfClass:(Class)arg1;\n- (BOOL)isProxy;\n- (BOOL)isFault;\n- (id)performSelector:(SEL)arg1 withObject:(id)arg2 withObject:(id)arg3;\n- (id)performSelector:(SEL)arg1 withObject:(id)arg2;\n- (id)performSelector:(SEL)arg1;\n@property(readonly) unsigned long long hash;\n- (BOOL)isEqual:(id)arg1;\n- (id)_copyDescription;\n@property(readonly, copy) NSString *debugDescription;\n@property(readonly, copy) NSString *description;\n- (BOOL)_allowsDirectEncoding;\n- (struct _NSZone *)zone;\n- (void)finalize;\n- (void)dealloc;\n- (BOOL)retainWeakReference;\n- (BOOL)allowsWeakReference;\n- (BOOL)_tryRetain;\n- (BOOL)_isDeallocating;\n- (id)autorelease;\n- (oneway void)release;\n- (unsigned long long)retainCount;\n- (id)retain;\n- (void)doesNotRecognizeSelector:(SEL)arg1;\n- (id)methodSignatureForSelector:(SEL)arg1;\n- (void)forwardInvocation:(id)arg1;\n- (id)forwardingTargetForSelector:(SEL)arg1;\n- (id)self;\n@property(readonly) Class superclass;\n- (Class)class;\n- (BOOL)_conformsToProtocolNamed:(const char *)arg1;\n- (struct objc_method_description *)methodDescriptionForSelector:(SEL)arg1;\n\n@end\n\n@interface NSRandomSpecifier.h'
And if I go to ~/darling where all stubs are, and run find ., I get several filenames that are weird:
./CoreFoundation/src/__NSMessageBuilder
{
Class isa;
id _target;
id *_addr;
}
+ (void)initialize;
- (id)methodSignatureForSelector:(SEL)arg1;
- (void)forwardInvocation:(id)arg1;
- (void)finalize;
@end
@interface NSInvocation.m
./CoreFoundation/src/__NSGenericDeallocHandler
{
Class isa;
CDUnknownBlockType _block;
}
+ (void)initialize;
- (void)finalize;
- (void)release;
- (unsigned long long)retainCount;
- (id)retain;
@end
@interface NSSet.m
./CoreFoundation/src/_NSZombie_
{
Class isa;
}
+ (void)initialize;
@end
__attribute__((visibility("hidden")))
@interface __NSAtom
{
Class isa;
}
+ (void)initialize;
@end
__attribute__((visibility("hidden")))
@interface __NSCFType.m
./CoreFoundation/include/CoreFoundation/_NSZombie_
{
Class isa;
}
+ (void)initialize;
@end
__attribute__((visibility("hidden")))
@interface __NSAtom
{
Class isa;
}
+ (void)initialize;
@end
__attribute__((visibility("hidden")))
@interface __NSCFType.h
./CoreFoundation/include/CoreFoundation/__NSMessageBuilder
{
Class isa;
id _target;
id *_addr;
}
+ (void)initialize;
- (id)methodSignatureForSelector:(SEL)arg1;
- (void)forwardInvocation:(id)arg1;
- (void)finalize;
@end
@interface NSInvocation.h
./CoreFoundation/include/CoreFoundation/__NSGenericDeallocHandler
{
Class isa;
CDUnknownBlockType _block;
}
+ (void)initialize;
- (void)finalize;
- (void)release;
- (unsigned long long)retainCount;
- (id)retain;
@end
@interface NSSet.h
As you can see, it just fails with CoreFoundation. The filename is the code that probably should be in the file.
As darling-stub-gen doesn't have a version, here the output of shasum: 81ef03584f918c8a338d38efca554dda708f5d1a
class-dump --version: class-dump 3.5 (64 bit) (Debug version compiled May 25 2019 19:18:06) compiled May 25 2019 19:18:06
Those seem to be the newest version.
BTW: These are the frameworks, that aren't in darling:
Frameworks
- AdSupport
- AppleScriptKit
- AppleScriptObjC
- AudioVideoBridging
- AuthenticationServices
- AutomaticAssessmentConfiguration
- Automator
- BackgroundTasks
- BusinessChat
- CalendarStore
- CallKit
- CloudKit
- Collaboration
- Combine
- ContactsUI
- CoreAudioKit
- CoreBluetooth
- CoreDisplay
- CoreHaptics
- CoreMIDIServer
- CoreML
- CoreMotion
- CoreSpotlight
- CoreTelephony
- CryptoKit
- DVDPlayback
- DeviceCheck
- DiscRecording
- DiscRecordingUI
- DriverKit
- ExecutionPolicy
- ExternalAccessory
- FWAUserLib
- FileProvider
- FileProviderUI
- FinderSync
- GLUT
- GameKit
- GameplayKit
- HIDDriverKit
- Hypervisor
- ICADevices
- IMServicePlugIn
- IOBluetoothUI
- IOUSBHost
- IdentityLookup
- ImageCaptureCore
- InstallerPlugins
- InstantMessage
- Intents
- JavaFrameEmbedding
- LatentSemanticMapping
- LinkPresentation
- MediaAccessibility
- MediaLibrary
- MediaPlayer
- MediaToolbox
- Message
- MetalPerformanceShaders
- MetricKit
- MorphunAssetsUpdater
- NaturalLanguage
- NetworkExtension
- NetworkingDriverKit
- NotificationCenter
- OSAKit
- OSLog
- PCIDriverKit
- PDFKit
- PencilKit
- Photos
- PhotosUI
- PreferencePanes
- PushKit
- QuickLookThumbnailing
- RealityKit
- SafariServices
- SceneKit
- Social
- SoundAnalysis
- Speech
- SpriteKit
- SwiftUI
- System
- SystemExtensions
- TWAIN
- Tcl
- Tk
- USBDriverKit
- VideoDecodeAcceleration
- VideoSubscriberAccount
- Vision
- iTunesLibrary
- vecLib
- vmnet
(Generated with
for i in *; do [ ! -d ~/.darling/System/Library/Frameworks/$i.framework ] && echo $i; done, so some may be redundant/not useful for darling/implemented in Swift/...)