aboutsummaryrefslogtreecommitdiffstats
path: root/build_scripts/main.py
Commit message (Collapse)AuthorAgeFilesLines
* Enable shiboken documentation build for macOS againChristian Tismer2021-04-111-0/+7
| | | | | | | | | | | | | | | | | | Python v3.6 and docutils v0.17 have an encoding problem, because the default encoding is ASCII. That produces an encoding error on macOS in Sphinx: Running Sphinx v3.5.3 Encoding error: 'ascii' codec can't decode byte 0xc2 in position 69: ordinal not in range(128) The problem happens on macOS because CI uses that old version. It can be avoided by setting UTF-8 encoding. Change-Id: I88ee27cfb529dfec291dc079bcc2d52f656f180f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> (cherry picked from commit 2f88c10f824fb9aa6cb1dbfd18b2d071a48745f1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* doc: make sure '--skip-docs' skip the docsCristian Maureira-Fredes2021-04-071-8/+14
| | | | | | | | | | | | | | Even when using the code, some portions of the cmake file in sources/pyside6/doc/ was still being executed. This makes sure everything is skipped if we use the '--skip-docs' option when building. Change-Id: If78b19b9650b61b642e447b8c96b814e82994d7c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> (cherry picked from commit fbbae556c9bf060be366fd578986cae85ff8caec) Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* build_scripts: use f-strings instead of format()Cristian Maureira-Fredes2021-01-041-118/+104
| | | | | | | | Change-Id: I165e9a39f968f67f9eae3a632739908d5f8fda59 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com> (cherry picked from commit 6cc55fefc8ddf12ecc9dcce33e367148e6216b1f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* build_scripts: replace print by distutils.logCristian Maureira-Fredes2021-01-041-6/+5
| | | | | | | Change-Id: I1106598719b48650847b08637e0caf6677cb26a0 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> (cherry picked from commit a35afc89a911612b4de3c71a8717f1fb74a39455) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* build_scripts: remove unused importsCristian Maureira-Fredes2021-01-041-1/+0
| | | | | | | Change-Id: I8a62512707b576ea79fff56779322c7e38bbb21b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> (cherry picked from commit a99e441a2c6e58833c577eeb901f483234a3b816) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Windows: Prevent cmake from auto-detecting the clang compilerFriedemann Kleint2020-11-101-0/+4
| | | | | | | | cmake tends to auto-detect the clang compiler from the path and then fails the build. Force it to use cl.exe. Change-Id: Ic58cc0e734dd42bba0ad383842ef73f23de50c76 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* python3: remove all obsolete "from __future__" import statementsChristian Tismer2020-11-091-1/+0
| | | | | | | | | | | Note that not all future statements can be removed: PEP 563 for instance deals with from __future__ import annotations Task-number: PYSIDE-904 Change-Id: Ia387ec87f3c68ca64d13e8e80191eda900f58638 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* build scripts: Fix warning about import orderFriedemann Kleint2020-11-051-8/+7
| | | | | | | | | | Import Setuptools before Distutils, fixing: distutils_patch.py:25: UserWarning: Distutils was imported before Setuptools. This usage is discouraged and may exhibit undesirable behaviors or errors. Please use Setuptools' objects directly or at least import Setuptools first. Pick-to: 5.15 Change-Id: Ibbc1a5cd1d348f6f44f7e80a3ba7e9a7341fae8e Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Rename PySide2 to PySide6Friedemann Kleint2020-11-021-4/+4
| | | | | | | | Adapt CMake files, build scripts, tests and examples. Task-number: PYSIDE-904 Change-Id: I845f7b006e9ad274fed5444ec4c1f9dbe176ff88 Reviewed-by: Christian Tismer <tismer@stackless.com>
* build scripts: Introduce variables for the versionsFriedemann Kleint2020-11-021-27/+29
| | | | | Change-Id: Iac73fcf6e60f882968463d1c612f5ca5dc206222 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Rename shiboken2 to shiboken6Friedemann Kleint2020-10-281-14/+14
| | | | | | | | Adapt CMake files, build scripts, tests and examples. Task-number: PYSIDE-904 Change-Id: I4cb5ee4c8df539546014b08202a7b1e98ed3ff07 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* build_scripts: remove references to python 2Cristian Maureira-Fredes2020-10-271-32/+4
| | | | | | | | | * Removing all the special cases for Python 2.7 * Removing Python >=3 conditions * Keeping Python 3.6+ as the allowed Python Change-Id: Ie48cafe952ae7a11bea997da2a35e7df5fea9a44 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* setup: remove ez_setup and update requirementsCristian Maureira-Fredes2020-10-271-5/+1
| | | | | | | | * Removing ez_setup since we will have Python 3 only * Updating requirements.txt to exclude Python 2 special cases Change-Id: I6ff5e3f6eba76a6e9726f01840e67316e786d450 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* build_scripts: Fix the make_path error messageChristian Tismer2020-10-271-2/+3
| | | | | Change-Id: I32bfdfb728b39609ce4a63a6554ef0a3db58b122 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Merge remote-tracking branch 'origin/5.15' into devFriedemann Kleint2020-10-161-3/+4
|\ | | | | | | Change-Id: I27beffe4a6e2fc2f818960c3b9f5ffbfaac4a670
| * build_rst_docs: add DistUtilsCommandMixin to the commandCristian Maureira-Fredes2020-10-151-3/+4
| | | | | | | | | | | | Task-number: PYSIDE-807 Change-Id: Ib2369887bafc61971ffa500427ec85c1cd73c2b2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Merge remote-tracking branch 'origin/5.15' into devFriedemann Kleint2020-10-141-62/+52
|\| | | | | | | Change-Id: I46f5d2dc758d0e1f23377c91ba7496793461771e
| * setup.py: Show options in command helpFriedemann Kleint2020-10-141-64/+17
| | | | | | | | | | | | | | | | | | | | | | | | Move some options to a command mixin. This cannot be done for all options since some determine the package name and need to be known at before instantiating the commands. Print an additional help text listing them. Fixes: PYSIDE-807 Change-Id: I43adb09db16f74af037bfb754cad2c0f5cfe43be Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
* | Merge remote-tracking branch 'origin/5.15' into devFriedemann Kleint2020-10-081-279/+170
|\| | | | | | | Change-Id: I30aaad19852c50b1222222ba66171f9c98ecb7c8
| * setup.py: Refactor PysideBuild::run()Friedemann Kleint2020-10-071-149/+153
| | | | | | | | | | | | | | | | | | | | | | | | The function produces a warning about a too-high cyclomatic complexity. Factor out functions to retrieve the make program and the Python library. Streamline the code to avoid repetitive find_executable() invocations and unindent the multi-arch code. Change-Id: I7aac9bc1324e57878e97d81b3e0424f055f7f2b9 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * setup.py: Fix some flake8 warningsFriedemann Kleint2020-10-071-12/+9
| | | | | | | | | | | | | | Fix spaces around operators, missing lines, import order. Change-Id: I05ecafec849578fed6018654fcefaa008b6801e8 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * setup.py: Remove constructor parameters depending on options from ↵Friedemann Kleint2020-10-061-118/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | PysideBuildWheel Constructor parameters depending on option values create a problem for introducing per-command option parsing. To fix this, split utility functions used by the commands in main.py and PysideBuildWheel into a separate wheel_utils.py Task-number: PYSIDE-807 Change-Id: Idabd3ba03726d2284e80234fc8485b70e6eb20ca Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* | Merge remote-tracking branch 'origin/5.15' into devFriedemann Kleint2020-10-061-16/+7
|\| | | | | | | Change-Id: I89aa3d4c4a3fa274e2c5ccd8b5facb9531137e80
| * setup.py: Make it possible to access QtInfo from several sourcesFriedemann Kleint2020-10-061-15/+6
| | | | | | | | | | | | | | | | | | | | - Turn it into a singleton. - Move the qtchooser resolving code into QtInfo. - Delay-initialize the dictionary. Task-number: PYSIDE-807 Change-Id: I3be2f3d0e0e9bc8aa61e1ec90ea37f7078c7f0bb Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * setup.py: Fix check for limited APIFriedemann Kleint2020-10-061-1/+1
| | | | | | | | | | | | | | | | Check for "yes"/"no", consistently. Task-number: PYSIDE-807 Change-Id: Id9f2ba125acb9ea8e811fd6cb5994bbb070605de Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* | Merge remote-tracking branch 'origin/5.15' into devFriedemann Kleint2020-09-301-1/+83
|\| | | | | | | Change-Id: I13721e13d2fab13945385fe529afe4ab431e0532
| * Add command to build rst documentation onlyCristian Maureira-Fredes2020-09-291-1/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since the process to get the documentation built is to build the whole project, that is too time consuming. Additionally, using qdoc on the Qt API takes a lot of time. This patch introduces the setup.py option called 'build_rst_docs' which skip the general build, and only generates HTML documentation based on all the .rst files we have for shiboken and pyside. To use it: python setup.py build_rst_docs The build will throw warnings related missing directories, and files, which are generated on the 'qdoc' process, but since they are skipped they are not present. Some missing references warnings are skipped due to also come from the qdoc-based step. Task-number: PYSIDE-1106 Fixes: PYSIDE-1390 Change-Id: I4118fd3b64e217717df6cae093138f6951d37094 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Remove the pyside-tools moduleFriedemann Kleint2020-09-041-43/+0
| | | | | | | | | | | | | | | | | | Completes 0eec9fecd241a178ca8f09218b9286ae763f29b3. Task-number: PYSIDE-1339 Task-number: PYSIDE-904 Change-Id: I424336c08c9ce4e1db820811f3c7fb207e5a9260 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | Remove pyside-toolsFriedemann Kleint2020-07-031-1/+1
|/ | | | | | | Task-number: PYSIDE-1339 Task-number: PYSIDE-904 Change-Id: Ice3fbbf2a47833d8bb8702b4b553c87df2d9757d Reviewed-by: Christian Tismer <tismer@stackless.com>
* Clean the build/install output a bitCristián Maureira-Fredes2020-06-081-17/+17
| | | | | | | | | | | | * Adding STATUS or WARNING to a couple of message() calls. * Replacing some print() by log.info() * Changing some '*' by '-' * Align configuration outputs to check paths easily * Adding big message to check when shiboken2/pyside2 is being built. * Including the cmake_minimum_required() function instead of an 'if'. Change-Id: Idb6c5797286d400192d083403063e2ae582e3fe6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Doc: Enable doc builds using the offline templateVenugopal Shivashankar2020-06-041-0/+7
| | | | | | | | | | A new command-line option, --doc-build-online, enables to choose online builds, otherwise offline docs are built by default. Change-Id: I34ef8a22ef3bd321bd972c4f2873e4321c9c336a Fixes: PYSIDE-1292 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Rename pre_release_version_type to release_version_typeSimo Fält2020-05-251-3/+5
| | | | | | | | Renaming pre_release_version_type to release_version_type to match its future usage to differentiate between wheel/package types. Change-Id: I70a2361f639a36b17f63b7f76d8c231a144bd825 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* shiboken: Improve the libdir for windowsCristián Maureira-Fredes2020-02-181-1/+7
| | | | | | | | | | | | | | | | | | With virtualenv 20 we have the case where the first path in the PYTHON_LIBRARIES cmake variable was wrong: a_virtual_env/libs/python3.lib so the python code inside the helper didn't have a proper check if the file was valid or it was just a wrong construct. Additionally, the 'prefix' variable will contain the virtual environment directory location, which will not contain the 'libs' directory, because that's included in the system's installation path. To solve this, we use the 'INCLUDEPY' directory, which is correct as a base to create the real 'libs' one. Task-number: PYSIDE-1231 Change-Id: Ifca08d74c49cd57572836a087edb96c089266dc7 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Replace OPTION_* by a dictionaryCristián Maureira-Fredes2019-12-031-105/+105
| | | | | | | | | | | | Currently we are importing * from the options.py file, which is a problem for the linters to discover if we are properly using the options of the file. Having a dictionary provides also a better way of access these options, and it is more clean than having one variable per each option. Change-Id: Ie70bd88665357b85e2842c5df269857504ecccdf Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Improve code style with flake8Cristián Maureira-Fredes2019-11-251-129/+98
| | | | | | | | | | | | | | | | | - We agreed on 100 columns time ago, so I move around a few things, - Removing unused modules, - Fix white-spaces tabs without being multiple of 4, - Encourage the use of os.path.join when joining paths, - Using .format() for string formatting, - Remove white-spaces from default arguments, - Adjusting white-spaces before inline comments, - Adding extra newlines when expected, - Adjust spaces for lines under-indented for visual indent, - Remove white-spaces from parenthesis, and adding them for arithmetic operators. Change-Id: I9cb28cefd114d63580b584a063c452f90d3ca885 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix wrong "only package" condition in build_scripts/main.pyAlexandru Croitor2019-10-071-1/+1
| | | | | | | | | | | | build_extension was meant to not run either when --only-package is passed, or when the shiboken-generator is built as part of a top-level build. Fix the condition to represent that. Amends 43fe3494a9d902034896e3afa7b5158c77163be0 Change-Id: I9dbc8694b932c88227fcd3a987cd1413bc55c286 Reviewed-by: Simo Fält <simo.falt@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix Xcode sdk value embedded into PySide2 binariesAlexandru Croitor2019-08-241-1/+1
| | | | | | | | | | | | | | | | | | | Previously when building on the Coin VMs, the incorrect Xcode sdk value of "10.0" was embedded into all the built shiboken and PySide2 binaries. This causes issues when trying to notarize a PySide2 app. The reason why this happens is described as a long investigation on the respective bug report. The fix is to ask xcrun to report an SDK path which contains the version number in the SDK path (/path/to/MacOSX10.14.sdk vs just /path/to/MacOSX.sdk). Change-Id: I3f02510953e2f54032c19a48cb8a7162814bf9e7 Fixes: PYSIDE-1066 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Simo Fält <simo.falt@qt.io>
* Avoid too much stickiness when using --reuse-buildChristian Tismer2019-04-261-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We had some unwanted cache effects and needed to manually remove certain files before building. Otherwise it could happen that a build pretended to be ok, although there was a bug that prevented generation of the ".pyi" files. Further investigation showed: Using option "--reuse-build" with "no" and then with "yes" creates errors in the signature module. This makes "reuse-build" useless in this case. We now add an "a" to "pyside3d_build" as "pside3da_build" if "--limited-api=yes" was given. (different proposals welcome.) That solved most of the stickiness problems. A left-over lock directory is removed now, since it would prevent re-computation of the .pyi files. This is implemented by a recursive call to the script, where the subprocess does the work and the main process checks if there was a crash and removes the lock. The "--skip" parameter of generate_pyi.py was refined: When set, it is checked if the time stamp of all imported modules is less than the ".pyi" file time stamp. Only then the generation is skipped. By editing any involved python file, the ".pyi" files will be regenerated. Task-number: PYSIDE-560 Change-Id: I1b1d8ffbc58db3d4b38bf65e3795efcad7e7870c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Modernize cmake buildAlexandru Croitor2019-02-071-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a CMake super project that includes the shiboken2, PySide2 and pyside2-tools subprojects, so that it's possible to build everything from Qt Creator (or any other IDE that supports CMake) with minimal set up effort, and thus inform the IDE CMake integration of all relevant files, for easier code editing, navigation and refactoring. This also lays the foundation for allowing 3rd parties to use the shiboken2 generator to generate custom modules. This is achieved by eliminating various hardcoded paths for libraries and include directories. Start using CMake targets throughout the build code to correctly propagate link flags and include dirs for libshiboken and shiboken2 executable targets. Same for the libpyside target. Generate two separate cmake config files (build-tree / install-tree) that can be used with find_package(Shiboken2), to make sure that the PySide2 project can be built as part of the super project build. This is currently the only way I've found to allow the super build to work. Note that for the build-tree find_package() to work, the CMAKE_MODULE_PATH has to be adjusted in the super project file. The generated config files contain variables and logic that allow usage of the installed shiboken package in downstream projects (PySide2). This involves things like getting the includes and libraries for the currently found python interpreter, the shiboken build type (release or debug), was shiboken built with limited api support, etc. Generate 2 separate (build-tree and install-tree) config files for PySide2, similar to how it's done for the shiboken case, for pyside2-tools to build correctly. Install shiboken2 target files using install(EXPORT) to allow building PySide2 with an installed Shiboken2 package (as opposed to one that is built as part of the super project). Same with PySide2 targets for pyside2-tools subproject. Make sure not to redefine uninstall targets if they are already defined. Add a --shorter-paths setup.py option, which would be used by the Windows CI, to circumvent creating paths that are too long, and thus avoiding build issues. Output the build characteristics / classifiers into the generated build_history/YYYY-MM-DD_AAAAAA/build_dir.txt file, so it can be used by the test runner to properly filter out blacklisted tests. This was necessary due to the shorter paths options. Fix various issues regarding target includes and library dependencies. Remove certain duplicated cmake code (like limited api check and build type checks) in PySide2, given that that information will now be present in the exported shiboken2 config file. Include a short README.cmake.md file that describes how to build the super project. References used https://rix0r.nl/blog/2015/08/13/cmake-guide/ https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/ https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1 https://cliutils.gitlab.io/modern-cmake/chapters/basics/functions.html https://cmake.org/cmake/help/v3.0/manual/cmake-packages.7.html https://github.com/ComicSansMS/libstratcom/blob/master/CMakeLists.txt Abandoned approach using ExternalProject references: https://cmake.org/cmake/help/latest/module/ExternalProject.html https://stackoverflow.com/questions/44990964/how-to-perform-cmakefind-package-at-build-stage-only Fixes: PYSIDE-919 Change-Id: Iaa15d20b279a04c5e16ce2795d03f912bc44a389 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Make quiet builds really quietAlexandru Croitor2018-12-071-9/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The change does a couple of things: - Sets the distutils / setuptools --verbose option to 0 - Sets the distutils / setuptools --quiet option to 1 - The options above end up calling distutils.log.set_verbosity(0) - Passes the QUIET_BUILD cmake option from setup.py to every CMake invocation, when --quiet is passed to setup.py - Sets the CMAKE_INSTALL_MESSAGE variable to silence messages regarding installation of files - Sets the CMAKE_RULE_MESSAGES variable to disable progress report in makefiles when building each source file - Overrides the CMake message function, not to display STATUS / info / untyped messages (still displays warnings and errors) - Changes the build / install elapsed time messages to always be printed even in quiet mode - Reverts the previously introduced set_quiet function in utils, because log.set_verbosity() now takes care of silencing those messages As a result, there's a lot less clutter when doing a quiet build. Warnings, errors and shiboken output is still displayed. Change-Id: Ie05c593ce7dc0aa04554c2d2859ce655233ddb9f Reviewed-by: Christian Tismer <tismer@stackless.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Build scripts: Add support for ninjaFriedemann Kleint2018-11-271-15/+16
| | | | | | | | | ninja will be recommended build tool/CMake generator for Qt due to its speed. Streamline the option parsing code and add it. Adapt the test runner to find the ctest command in the ninja build file. Change-Id: I61dd6fd4fb26a50af21432e10e7da86123240e0f Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Build scripts: Print elapsed timeFriedemann Kleint2018-11-221-5/+8
| | | | | Change-Id: Ifdacba5202c573192b57a834df510776597ccf61 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Build scripts: Implement --quietFriedemann Kleint2018-11-211-5/+9
| | | | | | | | | Add a _verbose setting to the utils module and set it depending on option --quiet. Depending on this, suppress the messages about copying files, shortening the build log by over 1000 lines. Change-Id: I3f9abce3b145d43c4fe615f624ca4e2769a269f8 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Build scripts: Fix warnings about invalid escape sequencesFriedemann Kleint2018-10-301-1/+1
| | | | | | | | | | | Fix: setup.py:243: DeprecationWarning: invalid escape sequence \O """ build_scripts\main.py:143: DeprecationWarning: invalid escape sequence \d pattern = "Programming Language :: Python :: (\d+)\.(\d+)" Change-Id: Id9574077d6ad82a5a6852d8c6e02e931f8a079de Reviewed-by: Christian Tismer <tismer@stackless.com>
* Allow building shiboken2 and PySide2 as separate wheelsAlexandru Croitor2018-10-121-196/+191
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Actually this creates 3 wheel packages: - shiboken2 (the python module and libshiboken shared library) - shiboken2-generator (contains the generator executable, libclang and dependent Qt libraries) - PySide2 (the PySide2 modules and Qt shared libraries, and tools like rcc, uic) Calling the setup.py script will not do the actual build now (in the sense of calling CMake, make, etc.). Instead it will spawn new processes (via subprocess.call) calling the same setup.py script, but with different arguments. These "sub-invocations" will do the actual building. Thus, the "top-level invocation" will decide which packages to build and delegate that to the "sub-invocations" of setup.py. A new optional command line argument is introduced called "--build-type" which defaults to "all", and can also be set to "shiboken2", "shiboken2-generator" and "pyside2". A user can choose which packages to build using this option. The "top-level invocation" uses this option to decide how many "sub-invocations" to execute. A new command line argument called "--internal-build-type" takes the same values as the one above. It defines which package will actually be built in the new spawned "sub-invocation" process. The "top-level invocation" sets this automatically for each "sub-invocation" depending on the value of "--build-type". This option is also useful for developers that may want to debug the python building code in the "sub-invocation". Developers can set this manually via the command line, and thus avoid the process spawning indirection. A new class Config is introduced to facilitate storage of the various state needed for building a single package. A new class SetupRunner is introduced that takes care of the "--build-type" and "--internal-build-type" argument handling and delegation of "sub-invocations". A new class Options is introduced to 'hopefully', in the future, streamline the mess of option handling that we currently have. setup.py now is now simplified to mostly just call SetupRunner.run_setup(). Certain refactorings were done to facilitate further clean-up of the build code, the current code is definitely not the end all be all. Various other changes that were needed to implement the wheel separation: - a new cmake_helpers directory is added to share common cmake code between packages. - the custom popenasync.py file is removed in favor of using subprocess.call in as many places as possible, and thus avoid 10 different functions for process creation. - Manifest.in is removed, because copying to the setuptools build dir is now done directly by prepare_packages functions. - because prepare_packages copies directly to the setuptools build dir, avoiding the pyside_package dir, we do less copying of big Qt files now. - versioning of PySide2 and shiboken2 packages is now separate. shiboken2 and shiboken2-generator share the same versions for now though. - shiboken2 is now listed as a required package for PySide2, to facilitate pip requirements.txt dependencies. - coin_build_instructions currently needs to install an unreleased version of wheel, due to a bug that breaks installation of generated wheel files. - added separate command line options to pyside2_config.py for shiboken2-module and shiboken2-generator. - adapted samplebinding and scriptableapplication projects due to shiboken being a separate package. - adapted pyside2-tool and shiboken2-tool python scripts for setup tools entry points. - made some optimizations not to invoke cmake for shiboken2-generator when doing a top-level "all" build. - fixed unnecessary rpaths not to be included on Linux (mainly the Qt rpaths). Task-nubmer: PYSIDE-749 Change-Id: I0336043955624c1d12ed254802c442608cced5fb Reviewed-by: Christian Tismer <tismer@stackless.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Revert "setup.py: parallel build by default"Friedemann Kleint2018-09-201-5/+1
| | | | | | | | | The default is not compatible with certain Linux accelerations. This reverts commit 99bfe460b85ccb3562e10f12972852233870e649. Change-Id: I8b6a2854adc40d6b9949a8d92f0b521a94940ba4 Reviewed-by: Christian Tismer <tismer@stackless.com>
* setup.py: parallel build by defaultAleksandr Mezin2018-09-181-1/+5
| | | | | | | | | | | | | If '--jobs' option is not specified and environment variable isn't set, set it to the number of logical CPUs if possible. I'm adding the option almost every time I run 'setup.py', and probably other people do it too. So maybe it's a good idea to enable parallel build by default. I don't know why anyone would want a non-parallel build, but it's still possible with '--jobs=1'. Change-Id: Id593b7d472588d33f01c52a21afa1a08eacb04a6 Reviewed-by: Christian Tismer <tismer@stackless.com>
* shiboken: Fix naming of shipped libclangFriedemann Kleint2018-08-241-2/+15
| | | | | | | | | | | | Determine the library name by resolving just one symlink so that the name containing only the major version is used as target name (libclang.so.6 instead of libclang.so.6.0 obtained by completelely resolving the symlinks). Task-number: PYSIDE-756 Change-Id: If70f292b2f1d0002d2d944fb019838ea4a623882 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
* Build script/Linux: Use installed patchelf if presentFriedemann Kleint2018-07-241-3/+9
| | | | | | | | | | Add path search helper and use installed patchelf instead of building the contained source. Task-number: PYSIDE-740 Change-Id: I8043aa58ff9ebc4884eee9f15745865f10bb30fe Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Tismer <tismer@stackless.com>
* Extract Qt Win dependencies to be included in wheelsSimo Fält2018-06-251-0/+3
| | | | | | Task-number: PYSIDE-696 Change-Id: I20a4f80acceee5c056217a6c92e3b494ec34020d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>