aboutsummaryrefslogtreecommitdiff
path: root/find-modules/FindPythonModuleGeneration.cmake
AgeCommit message (Collapse)Author
2018-10-28Bindings: Support using sys paths for python install directoryStefan Brüns
Summary: The correct install directory is distro and arch specific, and should match the configuration of the python installation the binding is generated for. These directories can be queried using pythons distutils.sysconfig. When determining the install directory, it mimics the logic from KDE_INSTALL_USE_QT_SYS_PATHS. When the python PREFIX is the same as CMAKE_INSTALL_PREFIX, it defaults to using the path from distutils.sysconfig, otherwise it keeps the current scheme, installing below CMAKE_INSTALL_PREFIX. The default behaviour can be changed by setting KDE_INSTALL_PYTHON{2,3}DIR or by switching KDE_INSTALL_USE_PYTHON{2,3}_SYS_PATH ON or OFF. Test Plan: On a distro where sitearch is not below /usr/lib/pythonM.m/, but /usr/lib64/pythonM.m/ (e.g. RH, SUSE 64bit), try to do: cmake ..; make; install Without the patch, the binding are installed into the wrong directory, afterwards the correct path is used. This should also yield the correct path on Debian and derivatives, where dist-packages instead of site-packages is used (untested). other test cases: Keep current scheme: `cmake -DCMAKE_INSTALL_PREFIX=/opt ..` Default to sys path: `cmake -DCMAKE_INSTALL_PREFIX=/usr ..` Force sys path: `cmake -DCMAKE_INSTALL_PREFIX=/opt -DKDE_INSTALL_USE_PYTHON3_SYS_PATHS=ON ..` Reviewers: #frameworks Subscribers: bcooksley, kde-frameworks-devel, kde-buildsystem Tags: #frameworks, #build_system Differential Revision: https://phabricator.kde.org/D15070
2018-10-16Bindings: Remove INSTALL_DIR_SUFFIX from ecm_generate_python_bindingStefan Brüns
Summary: The option is no longer used from any framework, and was always defaulting to site-packages previously, as INSTALL_DIR_SUFFIX was empty. Also see D15558, D15845. Test Plan: build e.g kcoreaddons Reviewers: #frameworks, apol, lbeltrame Reviewed By: lbeltrame Subscribers: lbeltrame, kde-frameworks-devel, kde-buildsystem Tags: #frameworks, #build_system Differential Revision: https://phabricator.kde.org/D15867
2018-09-30Compile python bindings with the same sip flags used by PyQtv5.51.0-rc1v5.51.0Antonio Rojas
PyQt>=5.11 is compiled with the 'PyQt5.sip' sipname by default. This causes a sipname mismatch with KF5 bindings and prevents them from loading: To fix this, we compile KF5 bindings using the same sip flags (name and tags) that PyQt was compiled with. This ensures that we always use the correct sip name. We also stop setting the sip tags in FindPythonModuleGeneration.cmake to avoid duplication, and remove a (seemingly) unnecessary check for the Qt version that was forcing PyQt to be rebuilt for every patch Qt update. Differential Revision: https://phabricator.kde.org/D15091
2018-09-20Python bindings: use cmake_parse_arguments, fix documentationStefan Brüns
Summary: Use of positional arguments is error prone, as e.g. switching order of NAMESPACE and MODULENAME wont have the desired effect, as the keywords are ignored for the first three arguments. Parse all arguments with cmake_parse_arguments, and fix the documentation (list supported arguments) and example (add TARGET keyword). Test Plan: build bindings Reviewers: #frameworks, dfaure Reviewed By: dfaure Subscribers: kde-frameworks-devel, kde-buildsystem Tags: #frameworks, #build_system Differential Revision: https://phabricator.kde.org/D15559
2018-09-07Fix minor EBN issuesYuri Chornoivan
2018-08-31Bindings: Check if bindings can be generated for a specific python versionStefan Brüns
Summary: The generated C++ sources include <sip.h>, so it must be available. Check for it in the version specific directories and fall back to the default include directories. Test Plan: install python2-devel and python3-devel install one of python{x}-sip-devel bindings should be generated for the matching python version. Reviewers: #frameworks, arojas Reviewed By: arojas Subscribers: arojas, kde-frameworks-devel, kde-buildsystem Tags: #frameworks, #build_system Differential Revision: https://phabricator.kde.org/D14915
2018-08-31Bindings: Use python version matching the found clang python moduleStefan Brüns
Summary: In case both python 2.7 and 3 are installed, but clang python bindings are only installed for python 3, there will be no error message but the self check will fail. Check for clang bindings for both python2 and python3 (if installed), and use the first one found to generate the sip bindings files. Note, it is possible to e.g. use python2 to generate the sip binding files (requires clang bindings), but generate bindings for python 2, 3, or both (requires matching python-devel and python-sip-devel packages). Test Plan: install python3-clang bindings install python2-clang bindings or one of the above the matching python version is used to run sip_generator.py Reviewers: #frameworks, arojas Reviewed By: arojas Subscribers: kde-frameworks-devel, kde-buildsystem Tags: #frameworks, #build_system Differential Revision: https://phabricator.kde.org/D14914
2018-08-25Bindings: Add support for scoped enumsStefan Brüns
Summary: Keep the enum intact by emitting the class keyword in case the enum is scoped. Use the complete enum scope for parameter values, the enclosing scope is only correct to use for unscoped enums. The python Cursor.is_scoped_enum() method has been added with LLVM/Clang version 5.0. BUG: 397154 Test Plan: build kcoreaddons Reviewers: #frameworks, mpyne Reviewed By: mpyne Subscribers: mpyne, kde-frameworks-devel, kde-buildsystem Tags: #frameworks, #build_system Differential Revision: https://phabricator.kde.org/D14908
2018-08-18Bindings: Check for libclang without version suffix alsoStefan Brüns
Summary: The canonical name is libclang.so, which seems to be available on all distributions (RH, SUSE, Ubuntu, Debian, ...) while the symlinks with version suffix (e.g. libclang-6.0) are specific to Debian and derivatives. Keep the current checks, but fallback to the unversioned library name. Test Plan: on openSUSE TW/Leap: run cmake -> libclang is found Reviewers: #frameworks, dfaure Reviewed By: dfaure Subscribers: kde-frameworks-devel, kde-buildsystem Tags: #frameworks, #build_system Differential Revision: https://phabricator.kde.org/D14909
2017-09-03Fix python bindings compilation after 7af93dd23873d0b9cdbac192949e7e5114940aa6Antonio Rojas
Explicitely set LIBRARY_OUTPUT_DIRECTORY for the python module Differential Revision: https://phabricator.kde.org/D7677 CCMAIL: release-team@kde.org
2017-04-03FindPyModGen: Also search for an unversioned clang++Heiko Becker
Summary: While my distro does have a versioned clang executable, it doesn't have a versioned clang++ executable. The versioned executable is still searched first, falling back to the unversioned one. Reviewers: #frameworks, #build_system Tags: #frameworks, #build_system Differential Revision: https://phabricator.kde.org/D5291
2017-01-15Bindings: Use installed python modules if making a dependent moduleStephen Kelly
Only one directory may provide the PyKF5 namespace, so if testing KAuth, which depends on KCoreAddons, both have to be in the same directory. That means that the KAuth tests can only be run post-intallation which doesn't really cause problems.
2017-01-15Bindings: Output all python bindings in the same build locationStephen Kelly
The KConfig build creates two libraries and they should both be output in the same place so that they can be tested together.
2017-01-15Bindings: Make the module name part of the test nameStephen Kelly
2017-01-13Bindings: Add a script to generate __init__.py file for bindingsStephen Kelly
Packagers can execute this script with cmake -D PYTHON_UMBRELLA_MODULE_FILE=/where/ever/PyKF5/__init__.py -P /path/to/ECM/find-modules/GeneratePythonBindingUmbrellaModule.cmake Soon, this is likely to do more than create an empty file.
2017-01-13Bindings: Fix logic for finding the clang driverStephen Kelly
Use find_package to locate the executable.
2017-01-13Bindings: Try to find libclang4 before trying to find libclang3Stephen Kelly
The LLVM project has picked a new version scheme http://blog.llvm.org/2016/12/llvms-new-versioning-scheme.html which means that major version numbers will be bumped more regularly, the minor version will remain at zero, and the patch version will be bumped. We will have to see how distros respond in terms of file naming.
2017-01-13Bindings: Determine the clang suffix from the filename if cachedStephen Kelly
The suffix is used later to run the clang executable in order to determine the built-in system includes.
2017-01-13Bindings: Make it possible to customise the installation directoryStephen Kelly
The dist-packages directory which is currently hardcoded is unsuitable to non-debian package creation. Set the directory to 'site-packages' by default.
2017-01-11Explicitly pass -std=gnu++14 to clang when generating bindingsStephen Kelly
The generator expression here looks like it should work, but it does not set the appropriate flags for compilation. It seems that the CXX_STANDARD property is not yet populated at the time the generator expression is evaluated (to be investigated later). This came to light because users of Qt 5.7+ attempted to generate the bindings, but they encountered errors. The step of using libclang to parse the provided headers was actually failing, but that was not noticed, perhaps because the logging infrastructure in sip_generator does not emit it (to investigate later). BUG: 374801
2017-01-04Fix message when searching for libclang.Adriaan de Groot
Summary: Cut-and-paste-o from the Python detection code. Reviewers: #frameworks, skelly, apol Reviewed By: apol Subscribers: #buildsystem Tags: #frameworks, #buildsystem Differential Revision: https://phabricator.kde.org/D3952
2016-11-07Print path to Qtcoremod.sip file if there is a problemStephen Kelly
2016-10-31Add the PythonModuleGeneration moduleStephen Kelly
This can be used by KF5 libraries to generate python 2 and 3 bindings.