diff options
author | Christian Tismer <tismer@stackless.com> | 2019-05-15 12:49:45 +0200 |
---|---|---|
committer | Christian Tismer <tismer@stackless.com> | 2019-05-19 22:59:31 +0200 |
commit | afc3ba9023e7eae7a9df36932f68f5b66f120fcd (patch) | |
tree | cfb1da19d9df9b3bcdcdd6eaf2f9bbc923b08518 /sources/pyside2/cmake | |
parent | 8689054da961be4cede5cfae7c6a6f9d6efc36a4 (diff) |
generate_pyi: Simplify, Enhance and Get Rid Of Any Import Problems
The generate_pyi.py script always had the problem that it
was not easy to distinguish different kinds of ImportError.
When ImportError was raised during a build, we assumed
it was just a not-yet built module and ignored it.
When patch 97df448e "Modernize cmake build" was checked
in on 2019-02-07, a real import error was introduced on Windows.
It was not recognized until 2019-05-13 that Windows had stopped
generating .pyi files.
It was discovered by working on an enhancement to dependency
checks that erroneously looked for "libshiboken*" on windows.
This should have raised an error in "generate_pyi.py" but did not,
because the generation was skipped due to the real ImportError.
General Redesign
----------------
It turned out that all the former difficulties with importing modules
could be completely avoided, by explicitly using the inherent
dependencies. The script was drastically simplified by using the module
name as an argument.
It was not clear in the first place that this would work, but actually
we recognized that all modules a script wants to import are already
built when CMake starts the .pyi generation.
The only visible quirk is the pair QtMultimedia/QtMultimediaWidgets
where both modules must be compiled before generating.
(maybe that is an error in our XML files, or a Qt "feature"?)
Enhancements
------------
The generate_pyi script is now completely deterministic, because
all imports are enforced to work. There is no more polling for
translated modules necessary. Everything is generated after a
module was linked,
The "--skip" semantic was first enhanced much further. In the end
it was recognized that we don't need the parameter any longer,
because with the determinism we are never computing a pyi file more
than once. The parameter was then completely removed.
The "--check" option was added for Python 3. It takes some time
and is only automatically active in a COIN build.
Task-number: PYSIDE-735
Change-Id: I3cc58f6cad80d8208e17f62d472fd48aa6aeebd6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside2/cmake')
-rw-r--r-- | sources/pyside2/cmake/Macros/PySideModules.cmake | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sources/pyside2/cmake/Macros/PySideModules.cmake b/sources/pyside2/cmake/Macros/PySideModules.cmake index 77dc8c8ac..67d27cb81 100644 --- a/sources/pyside2/cmake/Macros/PySideModules.cmake +++ b/sources/pyside2/cmake/Macros/PySideModules.cmake @@ -182,7 +182,7 @@ macro(create_pyside_module) make_path(path_value "${path_value}") string(APPEND ld_prefix "${PATH_SEP}${path_value}") endif() - set(generate_pyi_options run --skip --sys-path + set(generate_pyi_options ${module_NAME} --sys-path "${pysidebindings_BINARY_DIR}" "${SHIBOKEN_PYTHON_MODULE_DIR}") if (QUIET_BUILD) |