kivy/pyobjus

Objective-C iOS 13.0 breaking changes

misl6 opened this issue · 4 comments

misl6 commented

As mentioned on discord, a user tried to build pyobjus via kivy-ios with latest XCode11 and iOS SDK 13.0.

Here the full trace I had from the user:
https://pastebin.com/ajbfyA6i

Some diff reference (from iOS 12.4 to iOS 13.0): http://codeworkshop.net/objc-diff/sdkdiffs/ios/13.0/Objective-C.html

Apple Developer docs still mentions params, but have void in declaration: https://developer.apple.com/documentation/objectivec/1456712-objc_msgsend

Edit:
Current workaround is switching back to XCode 10.3

I can confirm this issue (same trace) while trying to build the latest kivy-ios after recently updating my toolchain:

macOS 10.14.6
XCode 11 (11A420a)
Apple clang version 11.0.0 (clang-1100.0.33.8)

Thanks for looking into this. I'm happy to help out with any testing if required.

I have the same issue when I attempt python3.7 toolchain.py build pyobjus (or python3.7 toolchain.py build kivy python3)

OS 10.14.6
Xcode Version 11.1 (11A1027)

+1, exact same system, exact same compilation problem.

errors from the debug log include:
[DEBUG ] clang: error: no such file or directory: 'pyobjus/pyobjus.c'
[DEBUG ] clang: error: no input files
[DEBUG ] error: command '/var/folders/c9/978c2j511xjf2v3gf7d00vwr0000gq/T/tmpam8wmkbn' failed with exit status 1

and
[DEBUG ] In file included from pyobjus/pyobjus.c:574:
[DEBUG ] pyobjus/_runtime.h:33:23: error: too many arguments to function call, expected
[DEBUG ] 0, have 2
[DEBUG ] return objc_msgSend(pool, sel_registerName("init"));
[DEBUG ] ~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[DEBUG ] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.1.sdk/usr/include/objc/message.h:62:1: note:
[DEBUG ] 'objc_msgSend' declared here
[DEBUG ] OBJC_EXPORT void
[DEBUG ] ^
[DEBUG ] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.1.sdk/usr/include/objc/objc-api.h:236:25: note:
[DEBUG ] expanded from macro 'OBJC_EXPORT'
[DEBUG ] # define OBJC_EXPORT OBJC_EXTERN OBJC_VISIBLE
[DEBUG ] ^
[DEBUG ] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.1.sdk/usr/include/objc/objc-api.h:225:28: note:
[DEBUG ] expanded from macro 'OBJC_EXTERN'
[DEBUG ] # define OBJC_EXTERN extern
[DEBUG ] ^
[DEBUG ] In file included from pyobjus/pyobjus.c:574:
[DEBUG ] pyobjus/_runtime.h:37:22: error: too many arguments to function call, expected
[DEBUG ] 0, have 2
[DEBUG ] (void)objc_msgSend(pool, sel_registerName("drain"));
[DEBUG ] ~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[DEBUG ] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.1.sdk/usr/include/objc/message.h:62:1: note:
[DEBUG ] 'objc_msgSend' declared here
[DEBUG ] OBJC_EXPORT void
[DEBUG ] ^
[DEBUG ] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.1.sdk/usr/include/objc/objc-api.h:236:25: note:
[DEBUG ] expanded from macro 'OBJC_EXPORT'
[DEBUG ] # define OBJC_EXPORT OBJC_EXTERN OBJC_VISIBLE
[DEBUG ] ^
[DEBUG ] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.1.sdk/usr/include/objc/objc-api.h:225:28: note:
[DEBUG ] expanded from macro 'OBJC_EXTERN'
[DEBUG ] # define OBJC_EXTERN extern
[DEBUG ] ^
[DEBUG ] pyobjus/pyobjus.c:26044:25: error: too many arguments to function call, expected
[DEBUG ] 0, have 2
[DEBUG ] ...objc_msgSend(__pyx_v_self->o_instance, sel_registerName(((char *)"release"))));
[DEBUG ] ~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[DEBUG ] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.1.sdk/usr/include/objc/message.h:62:1: note:
[DEBUG ] 'objc_msgSend' declared here
[DEBUG ] OBJC_EXPORT void
[DEBUG ] ^
[DEBUG ] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.1.sdk/usr/include/objc/objc-api.h:236:25: note:
[DEBUG ] expanded from macro 'OBJC_EXPORT'
[DEBUG ] # define OBJC_EXPORT OBJC_EXTERN OBJC_VISIBLE
[DEBUG ] ^
[DEBUG ] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.1.sdk/usr/include/objc/objc-api.h:225:28: note:
[DEBUG ] expanded from macro 'OBJC_EXTERN'
[DEBUG ] # define OBJC_EXTERN extern
[DEBUG ] ^
[DEBUG ] pyobjus/pyobjus.c:26121:45: error: too many arguments to function call, expected
[DEBUG ] 0, have 2
[DEBUG ] ...objc_msgSend(__pyx_v_self->o_instance, sel_registerName(((char *)"retain")));
[DEBUG ] ~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[DEBUG ] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.1.sdk/usr/include/objc/message.h:62:1: note:
[DEBUG ] 'objc_msgSend' declared here
[DEBUG ] OBJC_EXPORT void
[DEBUG ] ^
[DEBUG ] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.1.sdk/usr/include/objc/objc-api.h:236:25: note:
[DEBUG ] expanded from macro 'OBJC_EXPORT'
[DEBUG ] # define OBJC_EXPORT OBJC_EXTERN OBJC_VISIBLE
[DEBUG ] ^
[DEBUG ] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.1.sdk/usr/include/objc/objc-api.h:225:28: note:
[DEBUG ] expanded from macro 'OBJC_EXTERN'
[DEBUG ] # define OBJC_EXTERN extern
[DEBUG ] ^
[DEBUG ] 4 errors generated.
[DEBUG ] error: command '/var/folders/c9/978c2j511xjf2v3gf7d00vwr0000gq/T/tmpam8wmkbn' failed with exit status 1

misl6 commented

Closed via #55