dart-lang / native

Dart packages related to FFI and native assets bundling.
BSD 3-Clause "New" or "Revised" License
115 stars 40 forks source link

Objective-C ffigen should test against all Apple APIs #1183

Open brianquinlan opened 3 months ago

brianquinlan commented 3 months ago

There should be an integration test that runs ffigen against all of Apple's headers and verifies that the resulting generated file passes analysis.

Bonus points for spot-checking that some complex classes, protocols, etc. are usable.

liamappelbe commented 3 months ago

There are 4383 headers across 255 frameworks in my Apple SDKs directory (matching /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/*.framework/Headers/**.h). When I try to generate bindings for all of them, it runs for 35min then crashes with no useful info (not sure if it's a legit bug, or if my laptop just ran out of memory or something).

So instead of pulling in all these headers as a glob, I'm going to add one framework at a time until something breaks.

liamappelbe commented 2 months ago

There's one more bug that needs to be fixed before this can land: #1220

liamappelbe commented 20 hours ago

Tried running this test on the github CI bots in https://github.com/dart-lang/native/pull/1554. Unfortunately they don't really have enough memory to run this test without thrashing (see https://github.com/dart-lang/sdk/issues/56247). So what should be a 30sec analysis times out after 30min.

I added a randomized filter that removes 90% of the bindings, and that allows the test to complete.