Qt for Python Development Notes and QtPDF Build Instructions: Difference between pages

From Qt Wiki
(Difference between pages)
Jump to navigation Jump to search
 
(remove broken link to marketplace)
 
Line 1: Line 1:
[[Category:Qt for Python]]
QtPdf binaries are available from the Qt installer; but here's how to build it yourself.
==2023==
===29. June 2023===
* General
** Next maintenance break in August.
* Infra & Releases
** 6.5.2 postponed until next week
** 6.2.9 Commercial LTS soon to be released (a new qt build)
** 5.15.15 LTS in the next weeks
** ARM CI host still in progress
** Brainstorming some additional matrix testing infra for Python versions
** Tags for OSS and new LTS public releases (IFW ticket)
* Bugs & Features
** Research on scripting continues
** Designer related features/ QtCreator
** Memory leak related to REG is solved
** New icon theme for examples coming
** Some qdoc examples might be enabled for Python
** Enum removal is still generating detail discussions
*** Two implementation versions are suggested.
*** The old ones were written in C++ so the startup time is a lot slower
*** Lazy generator is helping a A LOT
** Android dev build - unity had some complications
** Async event loop work, last issues were addressed.
*** still some network io features are missing
** [Research] PySide components for QtDS needs to follow QtDS release cycle rather than Qt.


==Building the 5.15 version==


*sources for QtPdf module are hosted within QtWebEngine repository. Let's clone and initialize the git repository:


===21. June 2023===
<pre>
$ git clone https://code.qt.io/qt/qtwebengine.git
$ cd qtwebengine
$ git checkout 5.15
$ git submodule update --init --recursive
$ cd ..
</pre>


* General
*fortunately build of QtWebEngine itself is not necessary for QtPdf build; therefore let's configure shadow build with:
** PyPI limit increase for PySide6-Addons
** PySide 6.6 might have support for Python 3.8+ (due to Python 3.7 EOL in a week)
** Python 3.12b3 is out - test!
** Qt Contributor Summit
*** General session + maybe another one for specific topics.
* Infra & Releases
** 6.2.9 is ready, but waiting for Qt/c++ release
** 6.5.2 release date is next week.
** Tags for OSS and new LTS public releases
* Bugs & Features
** Android research: extra functionality is there, and working on bluetooth/permission integration with a device (example)
** PYSIDE-2364 Invalid syntax on a pyi file
** Continue with the old enum removal.
*** Maybe delayed initialization to improve startup time.
** AsyncIO eventloop work continues
** Research for scripting continues
** 6.6 adaptations
** Fix Enum issue with clang with invalid hex


===15. June 2023===
<pre>
$ mkdir build
$ cd build
$ qmake ../qtwebengine -- -no-build-qtwebengine-core
</pre>


* General
*you should see configuration summary after previous step:
** Going to EuroPython
** Participation in Qt Academy
* Infra & Releases
** 6.2.9 LTS to be released
** NFS issues in the CI, being worked on.
** ARM host on CI experiencing some issues.
*** Some preliminary wheels were generated in order to test.
*** Might help the Android story, but this needs to be confirmed.
* Bugs & Features
** Async research revisited
*** Testing eventloop wrapping
** Memory leak issue still needs to be fixed (hopefully for 6.5.2)
** Examples in Qt revamp
** Translations and fixes for 6.6
** Discussion about Enums implementation
** Scripting on C++ research continues
** PYSIDE-1735 removing old enums continues
** Android improvements in review
*** Adding more modules
** QVariant enum change (temporary patch until Qt7)
** shiboken_generator research to make it publicly available (libclang dependency)


===8. June 2023===
<pre>
Configure summary:


* General
Qt WebEngine Build Tools:
** Python 3.11.4 released, 3.12.0beta2
  Use System Ninja ....................... yes
** PySide6-addons reaching the 10G limit on PyPI
  Use System Gn .......................... no
* Infra & Releases
  Jumbo Build Merge Limit ................ 8
** 6.5.1.1 released due to a regression (introduced by a mem leak fix)
  Developer build ........................ no
** Maintenance Tool > wheels
  QtWebEngine required system libraries:
*** Special case for M2M protocols to be tested
    fontconfig ........................... yes
** CI on arm64 continues (Linux and Windows)
    dbus ................................. yes
* Bugs & Features
    nss .................................. yes
** Fixed some type-hint related issues PYSIDE-2357/PYSIDE-2331/PYSIDE-2340
    khr .................................. yes
** Scripting research
    glibc ................................ yes
** Qt pip tool has updated the configuration file and wheels to continue the work on the new tool
  QtWebEngine required system libraries for qpa-xcb:
** QVariant PyEnum issue -> solution for review
    x11 .................................. yes
** Android work continues: improving the dependency detection
    libdrm ............................... yes
** PYSIDE-2335 unraisable is finally checked in (the current solution works, it could be improved but low prio -> xml definitions)
    xcomposite ........................... yes
** PYSIDE-2354 type error due to the usage of Generic (related to 939) - related to cpython issue
    xcursor .............................. yes
** PYSIDE-1735 old enums removal started
    xi ................................... yes
** Example tunings
    xtst ................................. yes
** Bug fixing week
  Optional system libraries used:
    re2 .................................. yes
    icu .................................. no
    libwebp, libwebpmux and libwebpdemux . yes
    opus ................................. yes
    ffmpeg ............................... no
    libvpx ............................... yes
    snappy ............................... yes
    glib ................................. yes
    zlib ................................. yes
    minizip .............................. yes
    libevent ............................. yes
    jsoncpp .............................. yes
    protobuf ............................. yes
    libxml2 and libxslt .................. yes
    lcms2 ................................ yes
    png .................................. yes
    JPEG ................................. yes
    harfbuzz ............................. yes
    freetype ............................. yes
    xkbcommon ............................ yes
Qt PDF:
  Support V8 ............................. no
  Support XFA ............................ no
  Support XFA-BMP ........................ no
  Support XFA-GIF ........................ no
  Support XFA-PNG ........................ no
  Support XFA-TIFF ....................... no
Qt PDF Widgets:
  Support Qt PDF Widgets ................. yes


===1. Juni 2023===
Note: QtWebEngine build is disabled by user.
* General
** Europython - call for first time speakers (open to anyone)
** Waiting until API review to move dev to 6.6
** New Epic/User Stories policy
** Participating into Qt Academy
* Infra & Releases
** 6.5.1 released, a leak fix is causing issues with signal connections.
*** Initially we thought it was purely functools.partial but there are other cases that are not working.
*** Testing alternative solutions, otherwise we revert
*** In any case a 6.5.1.1 will be out soon
** Need to test the new conf file for the commercial wheel install mechanism
** 5.15 needs to skip libclang16
** Testing maintenance tool with a license without Qt for Automation (for wheel check)
** JIRA release versions are pending.
* Bugs & Features
** (External) Designer fonts issues
** PYSIDE-2347 metaobject tool missing types
** Scxml events missing connections.
** Scripting research (check report)
** Leak research continue
** Issue with new example state machine to be solved (event handling)
** PYSIDE-1930 PYSIDE-2239 QVariant Enum issue, the fix is out, but we need some tests.
** Finish the problem with unraisable exceptions
*** Discussion on special cases with a run function
*** Blocking functions are still an issue, because we cannot break
** PYSIDE-2354 typing.Generic issue with inheritance in progress
** PyTest research continues


===25. Mai 2023===
Note: The following modules are not being compiled in this configuration:
* General
    webenginecore
** QtWS - One talk accepted
    webengine
** Europython - One talk accepted
    webenginewidgets
* Infra & Releases
** 6.5.1 one issue was found, so release will be available once we merge the fix.
** 5.15.14 to be release soon.
** CI arm64 experiments continue
** Asking about M2M wheels on the maintenance tool, for 6.6
** Solving LTS issues of missing tags on public repo, might take some time.
* Bugs & Features
** Evaluating shiboken6_generator to be published on PyPi
** Few small fixes around the project (release preparation, new features, small bugs, doc issues)
** QtScrypt experimental work continues
** Permission API added (motivated by the android support)
** Improvements for the android deployment.
** Trying to fix an issue of getting Enums to Ints
** Delayed exceptions work continues, trying to fix some corner cases still.
** Starting to explore PEP 658
** Research on PyTest compatibility
** [Designer] Fixing some issues, and warnings


===18. Mai 2023===
Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into '/usr'.
</pre>


* Infra & Releases
*QtPdf build will use '''gn''' and '''ninja''' to build Pdfium which is required for the QtPdf module. Let's perform the build:
** 6.5.1 Preparations
** 5.15.14 Preparations
* Bugs & Features
** Fixed [https://bugreports.qt.io/browse/PYSIDE-2325 PYSIDE-2325] typesystem incomplete
** Fixed [https://bugreports.qt.io/browse/PYSIDE-2328 PYSIDE-2328] Segmentation fault/access violation when connecting signal of temporary object
** Fixed [https://bugreports.qt.io/browse/PYSIDE-2329 PYSIDE-2329] Signal connections with init kwargs
** Reverted temporarily the delayed exception patch, in order to not block the 6.5.1 release. This should be discussed at the next meeting
*** Fixed [https://bugreports.qt.io/browse/PYSIDE-2310 PYSIDE-2310]
*** Fixed [https://bugreports.qt.io/browse/PYSIDE-2321 PYSIDE-2321]


===11. Mai 2023===
<pre>
$ NINJAJOBS=-j4 make -j4 && make install
</pre>


* General
==Building the 6.3 version==
** Python Users Berlin meetup talk today
** Europython, QtWS
** Qt FF 02.06
** Android team «ketchup»
** Example revamp update
*** Quick examples needs to be ported to loadFromModule (Quick3D, QuickLocation, missing)
* Infra & Releases
** 6.5.1 to be release around 15.05 -> shifted to next week.
*** https://bugreports.qt.io/browse/PYSIDE-2310 regression
*** https://bugreports.qt.io/browse/PYSIDE-2299 memory leak
** 5.15.14 to be release around 16.05
* Bugs & Features
** Fixing regressions issue related to threads - delayed exceptions
** https://bugreports.qt.io/browse/PYSIDE-2321 event handlers issues
** https://bugreports.qt.io/browse/PYSIDE-1951 virtual method override - still in progress
** https://bugreports.qt.io/browse/PYSIDE-2230 3.12 support
** nogil research continues - mutex might slow down things, but doing a proper division of the code could help.
** QML example tutorials - one review pending
** 2313 longtype issue with numpy
** examples revamping - loadFromModule
** Icon library -> icon theme soon available on a new module.
** PYSIDE-2316 sharedpointer template issues
** Shiboken refactoring
** Finally the memory leak is fixed
** Enhancing android story, detection of modules, finding dependencies, got ideas from the current qt/c++ tool.
** Build infrastructure, setup.py install has been deprecated since 3.11 - looking into a new build infrastructure.
** Internal technical talks
*** Shiboken generating bindings
*** Shiboken for documentation generation
*** type hints generation
*** QML integration via decorators


===4. Mai 2023===
*sources for QtPdf module are hosted within QtWebEngine repository. Let's clone and initialize the git repository:


*General
<pre>
**Europython talk by Shyam still under consideration
$ git clone https://code.qt.io/qt/qtwebengine.git
**Qt for Android catch up meeting scheduled for 09/05/2023
$ cd qtwebengine
**Discussion with kivy developers done on discord. They seem to be onboard with the Qt support.
$ git checkout 6.3
*Infra & Releases
$ git submodule update --init --recursive
*Bugs & Features
$ cd ..
**Android Deployment Enhancements - Bringing pyside6-android-deploy at the level of androiddeployqt - Ongoing
</pre>
**python-for-android PR Enhancements - Ongoing
**PYSIDE-1951 super().__lt__ global solution ongoing
**[https://bugreports.qt.io/browse/PYSIDE-2206 PYSIDE-2206] QML examples/tutorials revamping
**PYSIDE-2221 Python runs NoGil version of mandelbrot.py 7.7 times faster on a 10-code M1 machine
**[https://bugreports.qt.io/browse/PYSIDE-2288 PYSIDE-2288] Fixed Clang 16 support for 6.6/6.5.
**PYSIDE-2310 Crashing without error reporting in Qt-based threads, debugging
**PYSIDE-2299 Ongoing, current attempt fixes most tests but leaves some SegFaults, might be a dead-end.


===27. April 2023===
* Install html5lib:


*General
pip3 install html5lib
**Planning collaboration with other projects like Kivy, towards a better mobile support.
**QtWS talks submitted
**PyConES, PyConPT, PyConAPAC
**Qt for Android catching up meeting
**Bug fixing week
*Infra & Releases
**5.15.8 wrong source code was published PYSIDE-2297
*Bugs & Features
*PYSIDE-1951 super() and `__lt__` operator issue related to our wrapper.
*asyncio work continues
*enhancements for python-for-android to improve the android stories
*pyside6-android-deploy polished as well
*2299 memory leak might have special cases related to the callback
*clang16 is giving some issues in Qt
*Icon examples libraries for the python examples research
*Snippet translator improvements


===20. April 2023===
*configure shadow build with:


*Bugs & Features
<pre>
**Work on support for clang 16, which changes behavior quite a bit
$ mkdir build
**Fixed [https://bugreports.qt.io/browse/PYSIDE-2284 PYSIDE-2284] issue with NoneType
$ cd build
**Fixed [https://bugreports.qt.io/browse/PYSIDE-2285 PYSIDE-2285] Type hints / Tuples
$ qt-configure-module ../qtwebengine -- -DFEATURE_qtwebengine_build=OFF
**Fixed [https://bugreports.qt.io/browse/PYSIDE-2298 PYSIDE-2298] and others, fixed some missing 6.5 API
</pre>
**Added new tools - pyside6-qmlsc (commercial only) and pyside6-qmlcachegen
**Simplified tool adding process
**PySide6 to Android Deployment blog published 🤞
**[https://bugreports.qt.io/browse/PYSIDE-1564 PYSIDE-1564] Final approach was implemented with a new super() class. But This approach was not helpful. Issue finally closed.
**[https://bugreports.qt.io/browse/PYSIDE-1951 PYSIDE-1951] A solution was finally found and implemented. Trying to improve.
**[https://bugreports.qt.io/browse/PYSIDE-2304 PYSIDE-2304] Issue resolved, Cooperative Multiple Inheritance explained with a custom example, customer is happy
**[https://bugreports.qt.io/browse/PYSIDE-2299 PYSIDE-2299] Cause for memory leak has been found, but fix will not be trivial (might require extensive refactoring in worst case).
**Debugging QtAsyncIoEventLoop, partly functional but still early.


===13. April 2023===
*build the pdf


*General
<pre>
**SF 24.04 -> 16.05 ooo
$ cmake --build . --parallel
**CM 19.04 -> 27.04 ooo
</pre>
**QtCreator beta now includes an extra option to create virtual environments
*Infra & Releases
**6.5.0 released, but one missing DLL on windows for people without hw acceleration.
***To be fixed in 6.5.1
**6.2.8 LTS to be released this week
**Improving current state of the maintenance tool for Python
**Second version of the packages in the server
**https://discuss.python.org/t/pep-684-a-per-interpreter-gil/19583
**https://discuss.python.org/t/pep-711-pybi-a-standard-format-for-distributing-python-binaries/25547
**Qt Design Studio integration is on research
*Bugs & Features
**Type hints PYSIDE-2284 issue with NoneType
**2283 Platform dependencies into our docs
**Clang16 improvements to be compatible
**Research on the missing DLL issue on Windows
**Research on a memory leak possible related to Signal instances.
**asyncio debugging with a self-made event loop
**Improving the python-for-android changes to prepare a patch
**Technical Preview blog post for Android in the making
**PYSIDE-2294 multiple inheritance issue for a corner case with positional arguments
***Researching a new approach that could improve things further


===6. April 2023===
Since QtPdf comes with Qml and Widget APIs examples using those can be found in examples/pdf and examples/pdfwidgets.


*General
'''In case of any issues please open bug report for PDF component in https://bugreports.qt.io/<nowiki/>.'''
**New Python releases 3.11.3, 3.10.11
*Infra & Releases
**6.5.0 released
**6.2.8 commercial LTS to go out soon
**Review Maitenance Tool integration
**qtpip server configuration still in progress
*Bugs & Features
**Android: preparing post, tests, and general improvements.
**PYSIDE-2266 venv issue with the deployment tool.
**Documentation was released for 6.5.0 and many things were polished.
**Async: continue working on the event loop wrapper implementation.
**Research on memory leak that pyqtgraph found
**Brushing up tutorials: expenses
**Adding new examples: simplebrowser, screen capture
**Documentation: found some issues with qdoc (from the move of examples to auto tests)
**PYSIDE-2278 type hinting issue was fixed
**Improvements to the documentation
**Cleaning imports from examples
**Add isort to the development guide
**Exploring other projects where Python can shine


===30. March 2023===
==Historical repository==


*General
The older version in the [https://code.qt.io/cgit/qt-labs/qtpdf.git/ Qt Labs QtPDF repository] still exists, but development now continues in the [https://code.qt.io/cgit/qt/qtwebengine.git/tree/src/pdf qtwebengine repository]. This was prompted mainly by the upstream Chromium switch of build system from gyp to gn: it was some work to get qtwebengine building with that. Chromium (and thus Qt WebEngine) includes PDFium already; so it was easier to build QtPDF from there than to fix the build in the other repository.
*Infra & Releases
**6.5 to be released next week
**including requirements.txt along the commercial bundle
***research if possible retroactively
**qtpip research continues
*Bugs & Features
**Features that needs to be in before 6.5
***deployment tool nuitka patch
***android tool
***tutorial of thew new quick styled app
**Improving enums to avoid using the old implementation
**Deployment tool and android research continues
**Async research on asyncio and trio proper integration
**Refactoring
**Shiboken examples are not displayed on the docs
**Updating the new image of the project
**Re-porting multimedia examples, simplebrowser
**Initial support for permission API
**small fixes on metaobjectdump
 
 
===23. March 2023===
 
*General
**QtWS CfP open
**EuroPython talks submitted
**Keeping an eye on future Python events
*Infra & Releases
**6.4.3 is out
***pypy3 3.9.12 compatible, newer versions included an incompatibility
**6.5 branching out today
*Bugs & Features
**async support continues.
**Fixing a couple of issues related to the pyside6-deploy tool.
***venv compatibility
***qml apps are not properly working
**android support almost ready for TP
**PYSIDE-2261 cython signature module incompatibility fixed
**Removed goto from PySide
**Multiple inheritance issues were fixed.
**old Enums are being removed, and the startup time will improve a bit (still in progress)
**PYSIDE-971 GL funtions implementation
**including texttospeech into the wheels (missing by mistake)
**adapting scripts to 6.5
**metaobjectdump issue fixed
**doc updates
 
===16. March 2023===
 
*General
**Preparing submissions for Europython
**New company colors
*Infra & Releases
**6.4.3 release next week (no release branch)
**Issues with Nuitka 1.5.1 (released yesterday) and the CI didn't like it. Pining 1.5
*Bugs & Features
**qtpip: add support for many other operators (for versions)
**PYSIDE-2254 exit crash issue was fixed
**PYSIDE-2251 designer issue when not initializing virtual environment.
**qmlsurface example ported (polishing the C++ code as well)
**example icons: discussions to standardize them a bit
**android research: fixing some issues with qtquick
**PYSIDE-1564 multiple inheritance work continues, really far but found new issues. Generalizing the solution a bit from a Shiboken point of view. Research on how shiboken handle multiple inheritance to be compatible with Python's way.
**PYSIDE-2255 virtual method issue related to access to those members.
**Generalization of QApplication usage on the tests.
**Research: Add course to QtLearn related to Qt for Python
**doc: some links are broken.
**doc: migration to sphinx-design from sphinx-panels
 
===9. March 2023===
 
*General
**Packing use-cases
**Europython CfP: https://ep2023.europython.eu/cfp
*Infra & Releases
**Preparing 5.15.13: release might be today if nothing goes wrong.
**Wheel bundles on the account.qt.io, and soon to be available in the Maintenance Tool
*Bugs & Features
**Re-added QtLocation
**Added larger examples for QtLocation, QtDataVisualization
**Android research continues, preparing a TP
**https://bugreports.qt.io/browse/PYSIDE-2169 Leak related to AsyncIO was finally fixed: related to the new Enum implementation
***PyErr_Fetch/Restore does ref counting, and not borrow ref
**qtpip works continues
**https://bugreports.qt.io/browse/PYSIDE-79 bug signal instance: fixed most if not all possible errors.
**https://bugreports.qt.io/browse/PYSIDE-1403 pyi still produces something not fully working with IDEs
**https://bugreports.qt.io/browse/PYSIDE-1564 First version of the implementation of multiple inheritance is working
***Not a general solution, but a good approach (compatible with a competitor).
***Working on a full support to handle multiple inheritance
 
===2. March 2023===
 
*General
**Preparing internal/external material
**Next monday CI maintenance break
*Infra & Releases
**commercial wheel bundles available on account.qt.io
**6.4.3 release was postponed
*Bugs & Features
**Improvements for qtpip
**postEvent() memory leak still has an unknown origin
**PYSIDE-2236 QMetaMethod.fromSignal added
**PYSIDE-2237 be careful with using reserved words in examples/docs/...
**PYSIDE-2239 opaquecontainers wrong dunder name
**PYSIDE-2206 Examples revamping
***Maybe we keep some examples around even if they are removed in Qt/C++
**Android work continues! looking good with 6.5
**PYSIDE-1564 Multiple inheritance story was improved, still in progress.
 
===23. February 2023===
 
*General
**Giving a talk at Python La Paz (on Saturday) - in Spanish
*Infra & Releases
**6.4.3 ready to start the release process
**Change to fix the windows signing is merged
*Bugs & Features
**3.12 compatibility changes will reach 5.15, 6.2, and the future 6.5 LTS
**PYSIDE-79 (caused by PYSIDE-68) refcounting issues addressed
**Continue the 3.12 support because of some new issues found
**PYSIDE-1564: Multiple inheritance support is still being worked (old ABC issues might be related)
**Issues with documentation build (sphinx)
**Research on a memory leak related to the asyncio example: it's not related to asyncio, but from the posting action (pyside, and not Qt, because a C++ example with no async doesn't have any leak)
**PYSIDE-2234 adding QRunnableCreate
**fixed 6.5 issues with cross compilation
**Designer examples revamp
**Works continues on qtpip (a pip wrapper to install commercial wheels)
**PYSIDE-2232 NixOS issues was fixed (another was deferred)
**Research on the std::span support
**Unity compilation research continues
**Bug cleanup, closing and fixing old ones.
**OpenGL getProc issue is being worked on.
**PYSIDE-2192 interactive matplotlib issue (hook)
 
===16. February 2023===
 
*General
**Development of a tool for commercial wheel installation started, and other general improvements.
**Blog posts -> 6.5 release, and Android research.
**Don't forget about Europython.
*Infra & Releases
**Branching dev to 6.5 when the Qt/C++ 6.5.0 RC is out (16 Mar '23)
***Only fixes go to dev with Pick-to: 6.5 if necessary
***new features remain in dev (for 6.6)
*Bugs & Features
**nogil research was positive, and most of our test work. It would require for us to modify the generator for each function/module.
***mandelbrot example works and improves its performance around 3.5 times.
**Python 3.12 will include an incompatibility due to the changes in the type generation
***https://github.com/python/cpython/issues/60074#issuecomment-1430115581
***some other issues were found, but not as critical as the tp_new issue.
**It will be possible to install pyside6 in conda environments starting from 6.4.3 and 6.5
**commercial identifier on commercial wheels will be replaced to be compatible with distutils
**asyncio research continues
**Adapting the deploy tool to include compatibility with android (in progress)
**research on ML-based tool to transform c++ <-> python
**Getting started docs updated
**qtdoc documentation content will be included in the docs
**doc issues: some broken links and references
**General slides to be updated
 
 
===09. February 2023===
 
*General
**How to make our API better for pathlib?
**3.11.2 released, 3.10.10 as well
**https://peps.python.org/pep-0675/
*Infra & Releases
**LTS tags cannot be pushed to community repo (permissions), hopefully in this week.
**Maintenance Tool updates soon
**Binary signing still need a little change to be working
**dev to use 6.5 starting today
*Bugs & Features
**Android research in progress, looking good :)
**A solution was proposed to fix the usage of PySide6 in conda environments: still needs tweaks to work, mainly related to an internal qt.conf that's loaded at runtime.
**PYSIDE-2222 custom widget plugin, load with uic crash
**PYSIDE-2201 was fixed: introducing weak references into the SignalInstances.
**PYSIDE-79 was possible to solve (from PYSIDE-68 solution). Still needs to some documentation to be written.
**PYSIDE-2221 research on future compatibility with NoGIL Python https://github.com/colesbury/nogil https://peps.python.org/pep-0703/
**https://github.com/blueloveTH/pocketpy also interesting
 
===02. February 2023===
 
*General
**Europython 2023 will be in Prague! 17-23 July
*Infra & Release
**Improving wheel creation in our CI (signing windows, and other things)
**Soon we will have released LTS in the OSS repo (after some complications)
**CI Maintenance break coming next Monday (keep an eye open to the Python configuration)
*Bugs & Features
**Unity builds were helping pyside/shiboken, and some tests are being done in qt/c++
**meta task on revamping examples in the Qt Project
**Adding uic functionality and documentation
**Doc reviews, some issues were found
**Android development continues, and looks good!
**introducing --log-level to change --verbose-build and --quiet
**Overhaul of Signal/SignalInstance continues:
***[https://bugreports.qt.io/browse/PYSIDE-2201 PYSIDE-2201] Weak Reference handling is complete
***[https://bugreports.qt.io/browse/PYSIDE-79 PYSIDE-79] Research on Reference bug continues
**create_wheels.py --builddir to explicitly provide build directory
**WIP: QtAsyncIoEventLoop using Qt's event dispatcher, using BaseEventLoop and BaseSelectorEventLoop for guidance
 
===26. January 2023===
 
*Infra & Releases
**Fixed issues with Windows signing
*Bugs & Features
**Fixed [https://bugreports.qt.io/browse/PYSIDE-2204 PYSIDE-2204 qt.conf encoding]
**Fixed bugs in pyside6-metaobjectdump (QML) [https://bugreports.qt.io/browse/PYSIDE-2202 PYSIDE-2202] , [https://bugreports.qt.io/browse/PYSIDE-2203 PYSIDE-2203]
**PYSIDE-2194: Possibly requires refactoring of QLowEnergyController to use the new WinRT API, instead of COM API
**Android Deployment - Patches incoming to automate cross compilation to produce android wheels
**Overhaul of Signal/SignalInstance
***Implement Weak Reference Handling
***[https://bugreports.qt.io/browse/PYSIDE-2201 PYSIDE-2201] Handle early destruction of the object better
***[https://bugreports.qt.io/browse/PYSIDE-79 PYSIDE-79] Trying to finally fix the reference leak using weakref.
**Alternative approach to Anaconda issue: Register internal qt6.conf with site-packages prefix (still WIP).
**WIP: Implement class QtAsyncIoEventLoop(asyncio.AbstractEventLoop) that wraps around Qt's event loop to enable Qt + asyncio.
**Memory leak with current asyncio example (or space leak?)
 
===19. January 2023===
 
*General
**Hackathon in TQtC
**The WebAssembly PySide Team was almost doubled in size (+1 brain, +1 hand)
*Infra & Releases
**Windows signing to be improved.
**LTS releases into oss repo: some issues appeared but will be merged soon.
*Bugs & Features
**PYSIDE-1994: De-virtualization of Shiboken embedded Python files is now an option controlled dynamically by SBK_EMBED
***PYSIDE-1019: A dormant __feature__ initialization timing problem was fixed while implementing de-virtualization
**PYSIDE-1735: De-coupling of old and new enums was started
**PYSIDE-1564: Debugging of multiple inheritance continues
**Fixed some bluetooth functions in PySide6.
**Low Energy Scanner Example
**PYSIDE-2194: Progressing with this. Definitely a thread issue which allow-thread doesn't seem to fix.
**Possible solution for problems with PySide6 inside conda (compat package with qt6.conf file), but investigating if best solution
 
===12. January 2023===
 
*General
**Next week is Hackathon, meeting will be shorter
**Discussion on how to gather information, and sharing material around Qt for Python
*Infra & Releases
**6.5 RC planning -> feature freeze for PySide
**6.4.2 was released last Monday
**CMake Jumbo builds issue with Windows signing
**LTS branches to land in pyside-setup soon
*Bugs & Features
**Async examples: addressing memory leak and cpu usage due to the event loop interactions
**Review conda packaging story and PySide6
**De-virtualization of Python files: still some issues
**Incompatibility with pywin32: __feature__ related when trying to check if the ext module uses PySide. Also related to an issue with the inspect module.
**Installing PySide6.support via CMake (was previously not considered)
**Work continues on the multiple inheritance issues related to classes based on QObject
**locate issues related to to* methods
**std::array support in shiboken (still in progress)
**fixing imports in matplotlib examples
**adaptation to 6.5
**splitting shiboken generator source to its own
**Android deployment works - tested on Widget applications
**Fixing QTBUG-109510 leading to discovering issues with certain functions in PySide6. Being fixed.
 
===5. January 2023===
 
*General
**Next monday CI maintenance
**OKRs
*Infra & Releases
**5.15.12 LTS, 6.2.7 LTS released
**Open Source LTS releases to be moved to the pyside-setup
**6.4 CI hanging, issues on lts-5.15 due to Python
**6.4.2 to be release in the following days
*Bugs & Features
**PYSIDE-1931 SQL issue regarding allow-thread
**helping 6.5 translations
**Adaptations with 6.5
**QSharedPointer -> std::shared_ptr attempt
**research on adding std::span into shiboken
**PYSIDE-2160 properties qml types issues
**Tutorials language review
**Android research continues
**QTBUG-109510 BTLE issue on pyside
 
==2022==
 
*[[Qt for Python Development Notes 2022]]
 
==2021==
 
*[[Qt for Python Development Notes 2021]]
 
==2020==
 
*[[Qt for Python Development Notes 2020]]
 
==2019==
 
*[[Qt for Python Development Notes 2019]]
 
==2018==
 
*[[Qt for Python Development Notes 2018]]

Latest revision as of 23:58, 28 June 2024

QtPdf binaries are available from the Qt installer; but here's how to build it yourself.

Building the 5.15 version

  • sources for QtPdf module are hosted within QtWebEngine repository. Let's clone and initialize the git repository:
$ git clone https://code.qt.io/qt/qtwebengine.git
$ cd qtwebengine
$ git checkout 5.15
$ git submodule update --init --recursive
$ cd ..
  • fortunately build of QtWebEngine itself is not necessary for QtPdf build; therefore let's configure shadow build with:
$ mkdir build
$ cd build
$ qmake ../qtwebengine -- -no-build-qtwebengine-core
  • you should see configuration summary after previous step:
Configure summary: 

Qt WebEngine Build Tools:
  Use System Ninja ....................... yes
  Use System Gn .......................... no
  Jumbo Build Merge Limit ................ 8
  Developer build ........................ no
  QtWebEngine required system libraries:
    fontconfig ........................... yes
    dbus ................................. yes
    nss .................................. yes
    khr .................................. yes
    glibc ................................ yes
  QtWebEngine required system libraries for qpa-xcb:
    x11 .................................. yes
    libdrm ............................... yes
    xcomposite ........................... yes
    xcursor .............................. yes
    xi ................................... yes
    xtst ................................. yes
  Optional system libraries used:
    re2 .................................. yes
    icu .................................. no
    libwebp, libwebpmux and libwebpdemux . yes
    opus ................................. yes
    ffmpeg ............................... no
    libvpx ............................... yes
    snappy ............................... yes
    glib ................................. yes
    zlib ................................. yes
    minizip .............................. yes
    libevent ............................. yes
    jsoncpp .............................. yes
    protobuf ............................. yes
    libxml2 and libxslt .................. yes
    lcms2 ................................ yes
    png .................................. yes
    JPEG ................................. yes
    harfbuzz ............................. yes
    freetype ............................. yes
    xkbcommon ............................ yes
Qt PDF:
  Support V8 ............................. no
  Support XFA ............................ no
  Support XFA-BMP ........................ no
  Support XFA-GIF ........................ no
  Support XFA-PNG ........................ no
  Support XFA-TIFF ....................... no
Qt PDF Widgets:
  Support Qt PDF Widgets ................. yes

Note: QtWebEngine build is disabled by user.

Note: The following modules are not being compiled in this configuration:
    webenginecore
    webengine
    webenginewidgets

Qt is now configured for building. Just run 'make'. 
Once everything is built, you must run 'make install'. 
Qt will be installed into '/usr'.
  • QtPdf build will use gn and ninja to build Pdfium which is required for the QtPdf module. Let's perform the build:
$ NINJAJOBS=-j4 make -j4 && make install

Building the 6.3 version

  • sources for QtPdf module are hosted within QtWebEngine repository. Let's clone and initialize the git repository:
$ git clone https://code.qt.io/qt/qtwebengine.git
$ cd qtwebengine
$ git checkout 6.3
$ git submodule update --init --recursive
$ cd ..
  • Install html5lib:
pip3 install html5lib
  • configure shadow build with:
$ mkdir build
$ cd build
$ qt-configure-module ../qtwebengine -- -DFEATURE_qtwebengine_build=OFF
  • build the pdf
$ cmake --build . --parallel

Since QtPdf comes with Qml and Widget APIs examples using those can be found in examples/pdf and examples/pdfwidgets.

In case of any issues please open bug report for PDF component in https://bugreports.qt.io/.

Historical repository

The older version in the Qt Labs QtPDF repository still exists, but development now continues in the qtwebengine repository. This was prompted mainly by the upstream Chromium switch of build system from gyp to gn: it was some work to get qtwebengine building with that. Chromium (and thus Qt WebEngine) includes PDFium already; so it was easier to build QtPDF from there than to fix the build in the other repository.