[Blink] version 3.0.2 fails to initialize returning IO error

Dan Pascu dan at ag-projects.com
Tue Feb 28 15:49:13 CET 2017


Unfortunately this patch does not work for the general case. It only works if you install blink with the same prefix as the python interpreter itself. sys.prefix refers to the python interpreter installation prefix, it has nothing to do with where blink itself is installed.

On 27 Feb 2017, at 20:18, Mircea Sava wrote:

> This small patch did the trick on my setup:
> 
> --- blink-3.0.2/blink/resources.py
> +++ blink-3.0.2/blink/resources.py
> @@ -75,7 +75,7 @@
>             if os.path.exists(os.path.join(application_directory,
> 'resources', 'blink.ui')):
>                 cls._cached_directory =
> os.path.join(application_directory,
> 'resources').decode(sys.getfilesystemencoding())
>             else:
> -                cls._cached_directory =
> os.path.join(application_directory, 'share',
> 'blink').decode(sys.getfilesystemencoding())
> +                cls._cached_directory = os.path.join(sys.prefix,
> 'share', 'blink').decode(sys.getfilesystemencoding())
>         return DirectoryContextManager(cls._cached_directory)
> 
>     @classmethod
> 
> 
> On 02/27/2017 04:59 PM, Mircea Sava wrote:
>> Blink on Gentoo no longer has a maintainer and the ebuild in the portage
>> tree is quite old so I wrote a new ebuild myself and installed the
>> package. I will take your advice and contact the Python team and get
>> their advice on a possible patch. Thanks
>> 
>> On 02/27/2017 04:39 PM, Dan Pascu wrote:
>>> Your problem is that /usr/bin/blink is a symlink to /usr/lib/python-exec/python-exec2
>>> 
>>> I'm not familiar with how Gentoo does things and what that wrapper does, maybe the person that packaged blink for Gentoo can help you better.
>>> 
>>> What I can tell you is how blink finds its resources:
>>> 
>>> It starts from the script location (in this case /usr/bin/blink, but it could be /usr/local/bin/blink or /opt/bin/blink) and it goes up one directory and then down to share/blink, so if blink is installed in /usr, then /usr/bin/blink leads to /usr/share/blink, but if you are installed in /opt, then /opt/bin/blink leads to /opt/share/blink
>>> 
>>> However in your case, the script (because of the symlink) is /usr/lib/python-exec/python-exec2, which I suspect it's a wrapper that actually launches /usr/lib/python-exec/python2.7/blink, which leads to the result you see.
>>> 
>>> As a quick solution you can replace the /usr/bin/blink symlink with the actual script (I think it is in /usr/lib/python-exec/python2.7/blink). For a more permanent solution you need to talk with the person that packaged it for Gentoo
>>> 
>>> On 27 Feb 2017, at 17:16, Mircea Sava wrote:
>>> 
>>>> Sure thing!
>>>> 
>>>> /usr 
>>>>> /bin 
>>>>     + blink -> ../lib/python-exec/python-exec2 
>>>>> /lib 
>>>>> /python-exec 
>>>>> /python2.7 
>>>>           + blink 
>>>>> /lib64 
>>>>> /python2.7 
>>>>> /site-packages 
>>>>> /blink 
>>>>           + blink-3.0.2-py2.7.egg-info 
>>>>              + __info__.py 
>>>>              + __info__.pyc 
>>>>              + __info__.pyo 
>>>>              + __init__.py 
>>>>              + __init__.pyc 
>>>>              + __init__.pyo 
>>>>              + aboutpanel.py 
>>>>              + aboutpanel.pyc 
>>>>              + aboutpanel.pyo 
>>>>              + accounts.py 
>>>>              + accounts.pyc 
>>>>              + accounts.pyo 
>>>>              + chatwindow.py 
>>>>              + chatwindow.pyc 
>>>>              + chatwindow.pyo 
>>>>> /configuration 
>>>>                 + __init__.py 
>>>>                 + __init__.pyc 
>>>>                 + __init__.pyo 
>>>>                 + account.py 
>>>>                 + account.pyc 
>>>>                 + account.pyo 
>>>>                 + addressbook.py 
>>>>                 + addressbook.pyc 
>>>>                 + addressbook.pyo 
>>>>                 + datatypes.py 
>>>>                 + datatypes.pyc 
>>>>                 + datatypes.pyo 
>>>>                 + settings.py 
>>>>                 + settings.pyc 
>>>>                 + settings.pyo 
>>>>              + contacts.py 
>>>>              + contacts.pyc 
>>>>              + contacts.pyo 
>>>>              + event.py 
>>>>              + event.pyc 
>>>>              + event.pyo 
>>>>              + filetransferwindow.py 
>>>>              + filetransferwindow.pyc 
>>>>              + filetransferwindow.pyo 
>>>>              + history.py 
>>>>              + history.pyc 
>>>>              + history.pyo 
>>>>              + logging.py 
>>>>              + logging.pyc 
>>>>              + logging.pyo 
>>>>              + mainwindow.py 
>>>>              + mainwindow.pyc 
>>>>              + mainwindow.pyo 
>>>>              + preferences.py 
>>>>              + preferences.pyc 
>>>>              + preferences.pyo 
>>>>              + presence.py 
>>>>              + presence.pyc 
>>>>              + presence.pyo 
>>>>              + resources.py 
>>>>              + resources.pyc 
>>>>              + resources.pyo 
>>>>> /screensharing 
>>>>                 + __init__.py 
>>>>                 + __init__.pyc 
>>>>                 + __init__.pyo 
>>>>                 + _rfb.so 
>>>>                 + vncclient.py 
>>>>                 + vncclient.pyc 
>>>>                 + vncclient.pyo 
>>>>                 + vncviewer.py 
>>>>                 + vncviewer.pyc 
>>>>                 + vncviewer.pyo 
>>>>              + sessions.py 
>>>>              + sessions.pyc 
>>>>              + sessions.pyo 
>>>>> /update 
>>>>                 + __init__.py 
>>>>                 + __init__.pyc 
>>>>                 + __init__.pyo 
>>>>                 + windows.py 
>>>>                 + windows.pyc 
>>>>                 + windows.pyo 
>>>>              + util.py 
>>>>              + util.pyc 
>>>>              + util.pyo 
>>>>> /widgets 
>>>>                 + __init__.py 
>>>>                 + __init__.pyc 
>>>>                 + __init__.pyo 
>>>>                 + buttons.py 
>>>>                 + buttons.pyc 
>>>>                 + buttons.pyo 
>>>>                 + color.py 
>>>>                 + color.pyc 
>>>>                 + color.pyo 
>>>>                 + containers.py 
>>>>                 + containers.pyc 
>>>>                 + containers.pyo 
>>>>                 + frames.py 
>>>>                 + frames.pyc 
>>>>                 + frames.pyo 
>>>>                 + graph.py 
>>>>                 + graph.pyc 
>>>>                 + graph.pyo 
>>>>                 + labels.py 
>>>>                 + labels.pyc 
>>>>                 + labels.pyo 
>>>>                 + lineedit.py 
>>>>                 + lineedit.pyc 
>>>>                 + lineedit.pyo 
>>>>                 + otr.py 
>>>>                 + otr.pyc 
>>>>                 + otr.pyo 
>>>>                 + spinner.py 
>>>>                 + spinner.pyc 
>>>>                 + spinner.pyo 
>>>>                 + util.py 
>>>>                 + util.pyc 
>>>>                 + util.pyo 
>>>>                 + video.py 
>>>>                 + video.pyc 
>>>>                 + video.pyo 
>>>>                 + zrtp.py 
>>>>                 + zrtp.pyc 
>>>>                 + zrtp.pyo 
>>>>> /share 
>>>>> /applications 
>>>>        + blink-blink.desktop 
>>>>> /blink 
>>>>        + about_panel.ui 
>>>>        + add_account.ui 
>>>>        + audio_session.ui 
>>>>        + audio_session_drag.ui 
>>>>        + blink.ui 
>>>>> /chat 
>>>>> /styles 
>>>>> /Smooth Operator 
>>>>                 + Classic.style 
>>>>                 + Dim Icon-Time.style 
>>>>                 + Dim Time-Icon.style 
>>>>                 + Icon-Time.style 
>>>>                 + Time-Icon.style 
>>>>> /css 
>>>>                    + topic.css 
>>>>> /html 
>>>>                    + message.html 
>>>>                    + message_continuation.html 
>>>>                    + notification.html 
>>>>                    + topic.html 
>>>>                 + style.xml 
>>>>> /test 
>>>>                    + mockup-incoming_icon.png 
>>>>                    + mockup-outgoing_icon.png 
>>>>                    + mockup.html 
>>>>                    + view.py 
>>>>> /Stockholm 
>>>>                 + Blue - Green.style 
>>>>                 + Blue - Grey.style 
>>>>                 + Blue - Orange.style 
>>>>                 + Blue - Red.style 
>>>>                 + Green - Blue.style 
>>>>                 + Green - Grey.style 
>>>>                 + Green - Orange.style 
>>>>                 + Green - Red.style 
>>>>                 + Grey - Blue.style 
>>>>                 + Grey - Green.style 
>>>>                 + Grey - Orange.style 
>>>>                 + Grey - Red.style 
>>>>                 + Orange - Blue.style 
>>>>                 + Orange - Green.style 
>>>>                 + Orange - Grey.style 
>>>>                 + Orange - Red.style 
>>>>                 + Red - Blue.style 
>>>>                 + Red - Green.style 
>>>>                 + Red - Grey.style 
>>>>                 + Red - Orange.style 
>>>>> /css 
>>>>                    + base.css 
>>>>                    + incoming-blue.css 
>>>>                    + incoming-green.css 
>>>>                    + incoming-grey.css 
>>>>                    + incoming-orange.css 
>>>>                    + incoming-red.css 
>>>>                    + outgoing-blue.css 
>>>>                    + outgoing-green.css 
>>>>                    + outgoing-grey.css 
>>>>                    + outgoing-orange.css 
>>>>                    + outgoing-red.css 
>>>>                    + topic.css 
>>>>> /html 
>>>>                    + message.html 
>>>>                    + message_continuation.html 
>>>>                    + notification.html 
>>>>                    + topic.html 
>>>>> /images 
>>>>                    + pref-mention-mask.png 
>>>>                 + style.xml 
>>>>> /test 
>>>>                    + buddy_icon.png 
>>>>                    + file_transfer.html 
>>>>                    + mockup.html 
>>>>                    + view.py 
>>>>           + template.html 
>>>>        + chat_input_lock.ui 
>>>>        + chat_session.ui 
>>>>        + chat_widget.ui 
>>>>        + chat_window.ui 
>>>>        + conference_dialog.ui 
>>>>        + contact.ui 
>>>>        + contact_editor.ui 
>>>>        + contact_group.ui 
>>>>        + filetransfer_item.ui 
>>>>        + filetransfer_window.ui 
>>>>> /icons 
>>>>           + accounts.png 
>>>>           + advanced-settings.png 
>>>>           + application-exit.png 
>>>>           + arrow-inward-blue.svg 
>>>>           + arrow-inward-red.svg 
>>>>           + arrow-outward-green.svg 
>>>>           + arrow-outward-red.svg 
>>>>           + attach.svg 
>>>>           + audio-auto-rejected.png 
>>>>           + audio-rejected.png 
>>>>           + audio.png 
>>>>           + avatar-nate.png 
>>>>           + avatar-ruby.png 
>>>>           + avatar.png 
>>>>           + bell-off.svg 
>>>>           + bell-on.svg 
>>>>           + bell.svg 
>>>>           + blink-logo.png 
>>>>           + blink.ico 
>>>>           + blink.png 
>>>>           + blink48.png 
>>>>           + blink64.png 
>>>>           + camera.svg 
>>>>           + camera12.svg 
>>>>           + cancel.png 
>>>>           + chat-auto-rejected.png 
>>>>           + chat-rejected.png 
>>>>           + chat.png 
>>>>           + chat.svg 
>>>>           + chat12.svg 
>>>>           + circle-dot.svg 
>>>>           + circle-grey.svg 
>>>>           + circle-progress.svg 
>>>>           + clock.svg 
>>>>           + close-active.svg 
>>>>           + close.svg 
>>>>           + cog.svg 
>>>>           + composing12.svg 
>>>>           + configure.png 
>>>>           + connection-direct.svg 
>>>>           + connection-relay.svg 
>>>>           + connection-unknown.svg 
>>>>           + cross-white.svg 
>>>>           + default-avatar.png 
>>>>           + delete.svg 
>>>>           + detach.svg 
>>>>           + downloads16.svg 
>>>>           + file-broken.png 
>>>>           + file-transfer.png 
>>>>           + folder-downloads.png 
>>>>           + folder-uploads.png 
>>>>           + fullscreen-exit.svg 
>>>>           + fullscreen.svg 
>>>>           + green-dot.svg 
>>>>           + grey-dot.svg 
>>>>           + handset.svg 
>>>>           + handset12-red.svg 
>>>>           + info16.svg 
>>>>           + invalid.png 
>>>>           + invalid16.png 
>>>>           + lock-blue-12.svg 
>>>>           + lock-green-12.svg 
>>>>           + lock-grey-12.svg 
>>>>           + lock-orange-12.svg 
>>>>           + lock-red-12.svg 
>>>>           + logging.png 
>>>>           + media-playback-start.svg 
>>>>           + media-record.svg 
>>>>           + mic-off.svg 
>>>>           + mic-on.svg 
>>>>           + mic12-off.svg 
>>>>           + mic12-on.svg 
>>>>           + microphone.svg 
>>>>           + minimize-active.svg 
>>>>           + minimize.svg 
>>>>           + minus.svg 
>>>>           + minus18.svg 
>>>>           + mwi-0.png 
>>>>           + mwi-1.png 
>>>>           + mwi-10.png 
>>>>           + mwi-2.png 
>>>>           + mwi-3.png 
>>>>           + mwi-4.png 
>>>>           + mwi-5.png 
>>>>           + mwi-6.png 
>>>>           + mwi-7.png 
>>>>           + mwi-8.png 
>>>>           + mwi-9.png 
>>>>           + mwi-many.png 
>>>>           + participants16.svg 
>>>>           + pause.svg 
>>>>           + pause12.svg 
>>>>           + paused.svg 
>>>>           + paused12.svg 
>>>>           + plus.svg 
>>>>           + plus18.svg 
>>>>           + quick-settings.png 
>>>>           + record.svg 
>>>>           + record12.svg 
>>>>           + recording.svg 
>>>>           + recording12.svg 
>>>>           + red-dot.svg 
>>>>           + refresh.png 
>>>>           + resize-bottom.svg 
>>>>           + resize-top.svg 
>>>>           + retry.svg 
>>>>           + scale.svg 
>>>>           + screen.svg 
>>>>           + screen12.svg 
>>>>           + screensharing-auto-rejected.png 
>>>>           + screensharing-rejected.png 
>>>>           + screensharing.png 
>>>>           + screenshot.svg 
>>>>           + search.svg 
>>>>           + speaker.svg 
>>>>           + speaker12.svg 
>>>>           + spinner.svg 
>>>>           + state-available.svg 
>>>>           + state-away.svg 
>>>>           + state-busy.svg 
>>>>           + state-invisible.svg 
>>>>           + test-call.png 
>>>>           + test-conference.png 
>>>>           + transform.png 
>>>>           + video-auto-rejected.png 
>>>>           + video-rejected.png 
>>>>           + video.png 
>>>>           + viewonly.svg 
>>>>           + wizard.png 
>>>>> /work 
>>>>              + actions.svg 
>>>>              + arrows-inout.svg 
>>>>              + arrows.svg 
>>>>              + audio-devices.xcf 
>>>>              + audio12.svg 
>>>>              + bell.svg 
>>>>              + camera.svg 
>>>>              + camera12.svg 
>>>>              + chat.svg 
>>>>              + chat12.svg 
>>>>              + circles.svg 
>>>>              + clock.svg 
>>>>              + cog.svg 
>>>>              + composing12.svg 
>>>>              + connection.svg 
>>>>              + cursors.svg 
>>>>              + downloads16.svg 
>>>>              + file-broken.xcf 
>>>>              + folder-downloads.xcf 
>>>>              + folder-uploads.xcf 
>>>>              + handset.svg 
>>>>              + handset.xcf 
>>>>              + handset12.svg 
>>>>              + info16.svg 
>>>>              + lock.svg 
>>>>              + lock12.svg 
>>>>              + microphone.svg 
>>>>              + microphone12.svg 
>>>>              + modifier-keys.svg 
>>>>              + mwi.svg 
>>>>              + participants16.svg 
>>>>              + pause.svg 
>>>>              + pause12.svg 
>>>>              + progress.svg 
>>>>              + record.svg 
>>>>              + record12.svg 
>>>>              + retry.svg 
>>>>              + screen.svg 
>>>>              + screen12.svg 
>>>>              + speaker.svg 
>>>>              + speaker12.svg 
>>>>              + spinner.svg 
>>>>              + streams.xcf 
>>>>              + switch.svg 
>>>>           + yellow-dot.svg 
>>>>        + incoming_calltransfer_dialog.ui 
>>>>        + incoming_dialog.ui 
>>>>        + incoming_filetransfer_dialog.ui 
>>>>        + otr_widget.ui 
>>>>        + pending_watcher.ui 
>>>>        + preferences.ui 
>>>>        + screensharing_dialog.ui 
>>>>        + screensharing_toolbox.ui 
>>>>        + screensharing_window.ui 
>>>>        + server_tools.ui 
>>>>> /sounds 
>>>>           + beeping_ringtone.wav 
>>>>           + dtmf_#_tone.wav 
>>>>           + dtmf_0_tone.wav 
>>>>           + dtmf_1_tone.wav 
>>>>           + dtmf_2_tone.wav 
>>>>           + dtmf_3_tone.wav 
>>>>           + dtmf_4_tone.wav 
>>>>           + dtmf_5_tone.wav 
>>>>           + dtmf_6_tone.wav 
>>>>           + dtmf_7_tone.wav 
>>>>           + dtmf_8_tone.wav 
>>>>           + dtmf_9_tone.wav 
>>>>           + dtmf_A_tone.wav 
>>>>           + dtmf_B_tone.wav 
>>>>           + dtmf_C_tone.wav 
>>>>           + dtmf_D_tone.wav 
>>>>           + dtmf_star_tone.wav 
>>>>           + file_transfer.wav 
>>>>           + hangup_tone.wav 
>>>>           + hold_tone.wav 
>>>>           + inbound_ringtone.wav 
>>>>           + message_received.wav 
>>>>           + outbound_ringtone.wav 
>>>>           + screenshot.wav 
>>>>> /tls 
>>>>           + ca.crt 
>>>>           + default.crt 
>>>>        + video_widget.ui 
>>>>        + zrtp_widget.ui 
>>>>> /doc 
>>>>> /blink-3.0.2 
>>>>           + README.bz2 
>>>>           + TODO.bz2 
>>>>> /icons 
>>>>> /hicolor 
>>>>> /48x48 
>>>>> /apps 
>>>>                 + blink.png 
>>>>> /512x512 
>>>>> /apps 
>>>>                 + blink.png 
>>>>> /64x64 
>>>>> /apps 
>>>>                 + blink.png
>>>> 
>>>> 
>>>> 
>>>> On Mon, Feb 27, 2017 at 13:03, Dan Pascu <dan at ag-projects.com> wrote:
>>>> Can you list the content of the installed package on your system?
>>>> 
>>>> On 24 Feb 2017, at 21:26, Mircea Sava wrote:
>>>> 
>>>> On Gentoo, I get the following when trying to run blink:
>>>> 
>>>> Traceback (most recent call last):
>>>> File "/usr/lib/python-exec/python2.7/blink", line 67, in <module>
>>>> from blink import Blink
>>>> File "/usr/lib64/python2.7/site-packages/blink/__init__.py", line 31, in <module>
>>>> from blink.chatwindow import ChatWindow
>>>> File "/usr/lib64/python2.7/site-packages/blink/chatwindow.py", line 39, in <module>
>>>> from blink.contacts import URIUtils
>>>> File "/usr/lib64/python2.7/site-packages/blink/contacts.py", line 48, in <module>
>>>> from blink.sessions import SessionManager, StreamDescription
>>>> File "/usr/lib64/python2.7/site-packages/blink/sessions.py", line 48, in <module>
>>>> from blink.screensharing import ScreensharingWindow, VNCClient, ServerDefault
>>>> File "/usr/lib64/python2.7/site-packages/blink/screensharing/__init__.py", line 3, in <module>
>>>> from blink.screensharing.vncviewer import ScreensharingWindow, VNCViewer
>>>> File "/usr/lib64/python2.7/site-packages/blink/screensharing/vncviewer.py", line 387, in <module>
>>>> ui_class, base_class = uic.loadUiType(Resources.get('screensharing_dialog.ui'))
>>>> File "/usr/lib64/python2.7/site-packages/PyQt5/uic/__init__.py", line 194, in loadUiType
>>>> winfo = compiler.UICompiler().compileUi(uifile, code_string, from_imports, resource_suffix)
>>>> File "/usr/lib64/python2.7/site-packages/PyQt5/uic/Compiler/compiler.py", line 111, in compileUi
>>>> w = self.parse(input_stream, resource_suffix)
>>>> File "/usr/lib64/python2.7/site-packages/PyQt5/uic/uiparser.py", line 972, in parse
>>>> document = parse(filename)
>>>> File "/usr/lib64/python2.7/xml/etree/ElementTree.py", line 1182, in parse
>>>> tree.parse(source, parser)
>>>> File "/usr/lib64/python2.7/xml/etree/ElementTree.py", line 647, in parse
>>>> source = open(source, "rb")
>>>> IOError: [Errno 2] No such file or directory: u'/usr/lib64/python-exec/python2.7/share/blink/screensharing_dialog.ui'
>>>> 
>>>> These are the dependencies installed so far (I'm guessing I'm missing some of them): python-sipsimple-3.1.0, python-cjson-1.1.0, python-eventlib-0.2.1, python-msrplib-0.18.0, python-gnutls-2.0.1, python-xcaplib-1.1.0, python-application-2.1.0, and python-otr-1.2.0.
>>>> 
>>>> I'm in need of some guidance.
>>>> _______________________________________________
>>>> Blink mailing list
>>>> Blink at lists.ag-projects.com
>>>> http://lists.ag-projects.com/mailman/listinfo/blink
>>>> 
>>>> 
>>>> --
>>>> Dan
>>>> 
>>>> _______________________________________________
>>>> Blink mailing list
>>>> Blink at lists.ag-projects.com
>>>> http://lists.ag-projects.com/mailman/listinfo/blink
>>>> _______________________________________________
>>>> Blink mailing list
>>>> Blink at lists.ag-projects.com
>>>> http://lists.ag-projects.com/mailman/listinfo/blink
>>> 
>>> 
>>> --
>>> Dan
>>> 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> Blink mailing list
>>> Blink at lists.ag-projects.com
>>> http://lists.ag-projects.com/mailman/listinfo/blink
>>> 
>> _______________________________________________
>> Blink mailing list
>> Blink at lists.ag-projects.com
>> http://lists.ag-projects.com/mailman/listinfo/blink
>> 
> _______________________________________________
> Blink mailing list
> Blink at lists.ag-projects.com
> http://lists.ag-projects.com/mailman/listinfo/blink
> 


--
Dan






More information about the Blink mailing list