[BlackBerry-Python] PySide for BB10

Tarek Galal tare2.galal at gmail.com
Mon Jan 28 11:57:45 EST 2013


You guys are awesome ! :)

On Mon, Jan 28, 2013 at 6:13 PM, Martin Kolman <martin.kolman at gmail.com>wrote:

> 16.1.2013 03:06, Peter Hansen:
>
>  On 2013-01-15 20:12, Martin Kolman wrote:
>>
>>> relevant part of the debug log for "from PySide.QtGui import
>>> QApplication":
>>>
>>> dlopen("PySide/QtGui.so", 2);
>>> ldd:FATAL: Unresolved symbol "_Z17init_QPrinterInfoP7_**object" called
>>> from QtGui.so
>>>
>>
>> This reminds me a lot of when Ritesh and I were trying to get the basic
>> PySide build working for the PlayBook, and had to strip out certain things
>> that didn't look likely to be compatible.  I don't recall the specifics but
>> you'd see signs of them in our patch files at http://hg.microcode.ca/**
>> blackberry-py/src/**500d90ca1dbee18fbc58ed1921d464**
>> c39377892b/patches/02-pyside-**qnx.patch?at=pyside<http://hg.microcode.ca/blackberry-py/src/500d90ca1dbee18fbc58ed1921d464c39377892b/patches/02-pyside-qnx.patch?at=pyside>
>>
>> I just peeked there, and QSound was one of them.  I wouldn't think
>> QPrinterInfo would have the pieces needed to support it, so stripping it
>> out in similar fashion seems like a reasonable step.
>>
>> -Peter
>> ______________________________**_________________
>> BlackBerry-Python mailing list
>> BlackBerry-Python at engcorp.com
>> http://www.engcorp.com/**mailman/listinfo/blackberry-**python<http://www.engcorp.com/mailman/listinfo/blackberry-python>
>>
> As you might have already noticed, I got PySide working and already
> submitted a working application (Mieru) for review to (App)World. So, how
> did I do that ? :)
>
> First, I would like to thank to Peter, Micke & all others who helped me
> here & on #bbx-python. Without you I would not have succeeded! :)
>
>
>
> Barebones PySide at BB10 howto
>
> When adapting the work PySide port for Playbook I have encountered two
> main issues - weird segfaults in QtGui & missing symbols.
>
> I've solved the first issue thanks to Micke by manually loading the Qt
> Libraries before the corressponding PySide module is loaded, like this:
>
>
> from ctypes import *
> qtcore = CDLL('libQtCore.so.4')
> qtdecl = CDLL('libQtDeclarative.so.4')
> qtgui = CDLL('libQtGui.so.4')
>
> Just run this before importing modules from PySide & you are safe.
>
> After solving this issue, importing the PySide modules still resulted in
> segfault due to missing symbols, such as QPrinterInfo, QDeviceInfo and
> others. Those Classes indeed are not available in the BB10 Qt libraries.
> After Peters suggestion, I've solved it by progressively removing all the
> offending classes. The resulting modified PySide source code is here:
> https://github.com/M4rtinK/**pyside-bb10/tree/bb10<https://github.com/M4rtinK/pyside-bb10/tree/bb10>
> I've also pushed Shiboken source just with the Playbook patches (any new
> ones were not necessary) here:
> https://github.com/M4rtinK/**shiboken-bb10/tree/bb10<https://github.com/M4rtinK/shiboken-bb10/tree/bb10>
>
> Just grab the sources & follow the PySide for Playbook guide[1] and you
> should get a working PySide build for BB10. :)
>
>
>
> Using on device Qt Libraries
>
> BB10 contains a fully usable Qt 4.8.4 build, you you can skip the custom
> Qt build and just compile against the Qt libraries in the NDK. The
> resulting base package size is about 3.7 MB as only the PySide libraries
> need to be bundled in.
>
>
>
> Qt Components
>
> If your application requires Qt Components, you can use the Qt Components
> I've modified to work on the high-DPI BB10 device screen. My work is based
> on the Ineans Qt components clone and is available here:
> https://qt.gitorious.org/~**martink/qt-components/**
> martinks-ineans-qt-components/**commits/bb10<https://qt.gitorious.org/~martink/qt-components/martinks-ineans-qt-components/commits/bb10>
> See the README for information how to build & use them. :)
> The components should be compatible with the usual com.nokia.meego 1.0
> namespace and the application indeed looks basically the same as on
> Harmattan at Nokia N9. :)
> Screenshots:
> http://t.co/JTj6KWvj
> or
> http://modrana.org/images/**bb10/mieru/release_**screenshots/<http://modrana.org/images/bb10/mieru/release_screenshots/>
>
>
>
> Slow QtQuick
>
> By default, QtQuick application don't use the OpenGL viewport, which
> results in bad performance (only the software viewport/rasterizer is used).
> To enabled OpenGL, add this to you bar-descriptor.xml:
>
> <env var="QBB_USE_OPENGL" value="1"/>
>
> Note that QtQuick with OpenGL is reportedly still a bit experimental and
> weird issues might show up. But by enabling it, you get at least the same
> performance as on Harmattan at N9 (which is nice, considering the much
> larger resolution).
>
>
>
> Mieru - a case study
>
> I managed to cram the final signed Mieru bar package to 6.9 MB
> The package includes:
> *  stripped PySide libraries
> *  Mieru Python (including byte-compiled files) & QML source
> *  stripped unrar binary
> *  stripped libmagic.so & 2MB (when uncompressed) magic.mgc file type
> recognition library library
> *  the above mentioned Qt Component (including Extras) with stripped
> plugin *.so
> *  cut-down Qt Components theme
> *  portrait splashscreen
>
> BTW, the basic package is 6.7, the signing adds about 200 kB overhead in
> this case.
>
> [1] http://hg.microcode.ca/**blackberry-py/wiki/Building%**20PySide<http://hg.microcode.ca/blackberry-py/wiki/Building%20PySide>
>
> So that's it! :)
>
> Best wishes
> Martin Kolman
>
> PS.: I plan to compile all this to a comprehensive online guide eventually.
>
> ______________________________**_________________
> BlackBerry-Python mailing list
> BlackBerry-Python at engcorp.com
> http://www.engcorp.com/**mailman/listinfo/blackberry-**python<http://www.engcorp.com/mailman/listinfo/blackberry-python>
>



-- 
Regards,
Tarek Galal
http://jadb.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.engcorp.com/pipermail/blackberry-python/attachments/20130128/07da4d2a/attachment-0001.html>


More information about the BlackBerry-Python mailing list