Thursday, January 15, 2015

Nuitka compiling Cobro successfully

Well, a big sigh of relief: Kay Hayer found a problem in the way Nuitka bundled binaries, and with the new 0.5.9pre1 version, not only the "reader" test case but the full Cobro app compile and run correctly. This moves Nuitka up to the top of the candidate list as a way to make self-contained, portable distributions of Python apps.

Where are the other bundlers? Well, as noted in the prior posts, cx_Freeze makes a QSettings writer that writes data that a QSettings reader can't open. Cobro and PPQT both depend strongly on saving binary objects in settings, so cx_Freeze is out. I don't feel like pursuing this problem, although it is so odd, I might post a query on the PyQt mailing list to see if anyone has an idea about the peculiar behavior of writing strings in latin-1 instead of UTF-16.

As for pyinstaller, it produces a Cobro that fails immediately not finding libcocoa. I've written about this to the pyinstaller list and done some more forensics with my newfound skill in using otool, with no results. So pyinstaller is off the table.

Which leaves pyqtdeploy, but for the time being I will put off all thoughts of trying to ascend that learning curve, and focus on installing and running Nuitka on my 2 additional platforms, Ubuntu 14.10 and Windows 7.

Also I will downgrade the source of Cobro to use QWebEngine, to see if it is free of the annoying and uncurable console messages that QWebKit likes to put out.

If those two steps pan out, I will have a Cobro app that I could distribute with some confidence to the world of webcomic readers.

With respect to PPQT2, I want to finish a change to the words panel to give it an Edit menu of its own, and review my to-do list (and do a multi-file search for the string "TODO" as quite a few of those are scattered through the source). Then try to compile all of PPQT2 with Nuitka. That will be a major stress test; it takes about 3 minutes (on a 3.5GHz iMac) to compile the 1800-line Cobro. So all of PPQT will take 30-60 minutes, probably.

No comments: