univ-of-utah-marriott-library-apple / display_manager

An open-source Python library which can modify your Mac's display settings manually or automatically.
MIT License
237 stars 18 forks source link

10.7.5 : ValueError: cftype for 'IOBlitMemoryRef' must include gettypeid_func, tollfree or both #21

Closed karawitan closed 3 years ago

karawitan commented 3 years ago

Hi !

I'm trying to execute display_manager on a 10.7.5 Mac Pro. DisplayManager-1.0.2.dmg has been installed successfully, but any command I type results in:

Mac-Pro-de-crapulette:display_manager kalou$ ./display_manager.py res Traceback (most recent call last): File "./display_manager.py", line 1257, in main() File "./display_manager.py", line 1240, in main Command(verb="help", subcommand=e.verb).run() File "./display_manager.py", line 136, in init getIOKit() File "/Users/kalou/display_manager/display_manager_lib.py", line 680, in getIOKit globals=globals() File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC/objc/_bridgesupport.py", line 140, in initFrameworkWrapper _parseBridgeSupport(data, globals, frameworkName, dylib_path) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC/objc/_bridgesupport.py", line 42, in _parseBridgeSupport objc.parseBridgeSupport(data, globals, frameworkName, *args, **kwds) ValueError: cftype for 'IOBlitMemoryRef' must include gettypeid_func, tollfree or both

Any clue of what's going on ?

uurazzle commented 3 years ago

Hi @karawitan:

Sorry about the issue.

We never tested DisplayManager on Mac OS X 10.7.5, but can investigate when we have more bandwidth and let you know status. Currently, we are very busy on projects, but plan on adding this project to your todo's and debug bugs we can address.

In the meantime, if you have python scripting abilities, pull requests are welcome.

karawitan commented 3 years ago

Ok I've got something. It seems that the bug is on Apple side .. Thanks to the following post on StackOverflow: https://stackoverflow.com/questions/8998426/lightblue-python-module-not-working-on-mac,

I had to patch, with trial and error, the following system file:

/System/Library/Frameworks/IOKit.framework/Versions/Current/Resources/BridgeSupport/IOKit.bridgesupport

Here is the patch I have applied (basically remove every line that starts with <cftype name=' and which gives an error when launching ./display_manager.py res)

Mac-Pro-de-Gourou:display_manager kalou$ sudo diff /System/Library/Frameworks/IOKit.framework/Versions/Current/Resources/BridgeSupport/IOKit.bridgesupport  /System/Library/Frameworks/IOKit.framework/Versions/Current/Resources/BridgeSupport/IOKit.bridgesupport.orig
423a424,425
> <cftype name='IOBlitMemoryRef' type='^{_IOBlitMemory=}'/>
> <cftype name='IOFireWireSessionRef' type='^{IOFireWireSessionRefOpaqueStuct=}'/>
426a429
> <cftype name='IOHIDNotificationRef' type='^{__IOHIDNotification=}'/>
427a431,432
> <cftype name='IOHIDServiceRef' type='^{__IOHIDService=}'/>
> <cftype name='IOHIDSessionRef' type='^{__IOHIDSession=}'/>
429a435,437
> <cftype name='IOI2CConnectRef' type='^{IOI2CConnect=}'/>
> <cftype name='IONotificationPortRef' type='^{IONotificationPort=}'/>
> <cftype name='NuDCLRef' type='^{__NuDCL=}'/>

Now the display_manager.py script launches fine ! Maybe more to come

uurazzle commented 3 years ago

Hi @karawitan:

Thanks for the information we will take a look and let you know status.

Any more updates or fixes are always welcome, please keep them coming.