aboutsummaryrefslogtreecommitdiffstats
path: root/setup.py
Commit message (Collapse)AuthorAgeFilesLines
* Make setup.py more robust when invoked in a weird wayAlexandru Croitor2019-02-061-0/+7
| | | | | | | | | | | | | | | | | | setup.py sub-invocations use the command line arguments from the original setup.py invocation. This means that if setup.py was not invoked directly, but instead using the "python -c 'code'" approach, sub-invocations would break because argv[0] would be "-c" instead of "setup.py". This was previously seen when building PySide2 in homebrew, and allegedly when doing an sdist. Fix setup.py to pass the correct script file name, even when invoked in such a weird manner. Change-Id: Ic834d7398098095f74972661b2abc4f4e4c3c8d9 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Alberto Sottile <alby128@gmail.com>
* Build scripts: Fix warnings about invalid escape sequencesFriedemann Kleint2018-10-301-7/+7
| | | | | | | | | | | 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>
* Update setup.py documentationCristian Maureira-Fredes2018-10-251-27/+46
| | | | | | | Python version and alphabetically ordering the options. Change-Id: I3c663d6ca1849b84f55886ff0e0c1fac0ffce941 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Allow building shiboken2 and PySide2 as separate wheelsAlexandru Croitor2018-10-121-76/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Add entry points for native toolsSimo Fält2018-10-021-0/+3
| | | | | | Task-number: PYSIDE-779 Change-Id: I3888ba58f186a2fca84414fed3243a41650f6774 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Make signature module unconditionalChristian Tismer2018-08-271-2/+0
| | | | | | | | | | | | | After the signature module has been around for quite a while, there is no longer a reason to leave it optional. At the same time, we set the minimum Python 3 version to 3.5 . Some comments are reworked as well, but nothing real changed. Task-number: PYSIDE-510 Change-Id: I9e960f390d507d24bb45f7028838755fe23e751d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Add content type for project descriptionCristian Maureira-Fredes2018-07-311-0/+1
| | | | | | | | | PyPi needs a project that explicitly set the content_type to 'text/markdown' to show the content on their website. Change-Id: Id3d47bbcd448547cf71d7ea24c1b5d3b6c921e7f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Prepare Limited API for Python 3.7Christian Tismer2018-06-261-0/+1
| | | | | | | | | | | | | | | PySide has successfully been tested with the Python 3.7 branch. There will be no change in the areas that are important for us. It is then safe to bump the supported version and the limited API version checks to fully include Python 3.7. The macro errors in the limited API was fixed by a pull request, but it was too late to get it into 3.7rc1. The error workaround was therefore extracted into pep384_issue33738.cpp and will be deactivated later. Change-Id: Iec3f277b02cac03a5cf44cbcf955ddc690c112e5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Associate Coin snapshot builds with Coin integration IDsAlexandru Croitor2018-06-221-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change adds a new setup.py option called --package-timestamp which allows setting the "dev" part of the version number of a snapshot package. It also modifies coin_build_instructions.py to set the package timestamp to the value of the Coin integration ID. This has a couple of benefits: 1) We can look up the build and test logs of a specific package on testresults.qt.io. This can also be looked up for non-snapshot builds, the "timestamp = Coin integration ID" can also be found in the generated __init__.py file. 2) All the different platform packages within one integration will have the same timestamp, which allows pinning snapshot packages inside a pipenv Pipfile. 3) It's easier to figure out which packages were built as part of the same Coin integration. Task-number: PYSIDE-680 Change-Id: Idb2f2d2313cee213a5d742f88b60315a4e505250 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Don't package OpenSSL libraries on Windows Coin buildsAlexandru Croitor2018-06-221-2/+9
| | | | | | | | | | | | | | This is due to http://doc.qt.io/qt-5/ssl.html#import-and-export-restrictions A user may still pass --openssl option if they wish to package the libraries for their own local build. Task-number: PYSIDE-715 Change-Id: Iadade188ffa13decf03bc21b016718176f6ead6e Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Update contact information on setup.pyCristian Maureira-Fredes2018-06-081-4/+4
| | | | | Change-Id: Ie6a9bde91daf7871b298075ade26f3d2d998a832 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Adjust wheel names when building with limited apiAlexandru Croitor2018-05-311-2/+4
| | | | | | | | | | | | | Wheel has poor support for naming wheel packages that were built with limited API enabled. We need to override some of bdist_wheel's methods to generate a correct name and correct metadata. Move the pyside_bdist_wheel class into a separate file, and implement the necessary logic. Change-Id: I23d814cbb794052fb18a1e018f7b767c60945254 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* PEP 384-squash: Implement PEP 384Christian Tismer2018-05-301-0/+2
| | | | | | | | | | This is the condensed checkin of 18 commits which created the implementation of PEP 384. Task-number: PYSIDE-560 Change-Id: I834c659af4c2b55b268f8e8dc4cfa53f02502409 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Remove Python 2.6 package classifierAlexandru Croitor2018-05-291-1/+0
| | | | | | Change-Id: I200b87bc4e66d17d8eefe42359ab6bcc36d24f6c Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Clarify and fix the path to openssl libs for Coin Windows buildAlexandru Croitor2018-05-161-5/+7
| | | | | | | | | | | | When the --openssl option is given, it should point to the openssl bin directory, and not to the openssl.exe file itself. Clarify this in the setup.py comments, and fix it in coin_build_instructions.py. Task-number: PYSIDE-660 Change-Id: I5b20a8c5a445c9f628c5abc258c43271c490e08c Reviewed-by: Simo Fält <simo.falt@qt.io>
* Add option --skip-modulesCristian Maureira-Fredes2018-05-151-0/+3
| | | | | | | | | | | | Allow the user to skip a set of modules when building the module. An example of using this option: --skip-modules=WebEngineCore,WebEngineWidgets,Multimedia Change-Id: I4b7a25acd60d068a886c1e716ddb7b226814b96f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* setup.py: Document option --module-subsetFriedemann Kleint2018-05-111-0/+2
| | | | | Change-Id: I1603aca6a2fda955c60e1c208db268e16341391e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add option to skip docs generationCristian Maureira-Fredes2018-05-071-0/+1
| | | | | | | Adding option to avoid building the documentation. Change-Id: Ia5595e6686c6e7d31e94818c1efb28238a3fbfc7 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Split and move various setup.py parts into different filesAlexandru Croitor2018-04-301-1892/+9
| | | | | | | | | | | | | | | | | This is an initial effort to clean up setup.py. A new directory called build_scripts contains most of the logic for building, leaving setup.py as an entry point. The build_scripts directory contains the usual qtinfo, utils, and the setup.py content has been split into main.py and platform specific files under platforms subfolder. The testrunner script has been modified to find the new location of the utils module. Task-number: PYSIDE-558 Change-Id: I3e041d5116ca5c3f96c789317303b65a7b1bbd70 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Add references from ApiExtractor to shiboken docCristian Maureira-Fredes2018-04-261-5/+11
| | | | | | | | | | | | | | | | | | | Including intersphinx extension allow us to link the documentation from ApiExtractor to shiboken's. ApiExtractor doc need to be build first, so we can use the inventory that sphinx create, to link it to shiboken's configuration. All the harcoded references were replaced by dynamic references. Also new labels were included to properly cross reference topics. Checked the spell on many rst files too. Task-number: PYSIDE-363 Change-Id: I11a50b1f9eee48a00a3de6f957942eb0823eba47 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Remove deprecated optionsAlexandru Croitor2018-04-251-8/+0
| | | | | Change-Id: I0ea2b56778b2364a25f6999c2c18ef0c0a436583 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Replace 'osx' with 'macos' in installation scriptsAlexandru Croitor2018-04-251-6/+6
| | | | | Change-Id: Ibe5412edb6467594c5d2fd80545d9e1572a286cb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Replace 'osx' in option names with 'macos'Alexandru Croitor2018-04-251-15/+15
| | | | | Change-Id: Ia52958c02566447226a2aaeadd3f18e8d07af65f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Add QtWebEngineCore moduleDavid Rosca2018-04-201-8/+10
| | | | | Change-Id: I8e1127e082abe5978a94aa8a080dfb1d8bbd5952 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix QtWebEngineProcess related issues on the supported platformsAlexandru Croitor2018-04-201-0/+18
| | | | | | | | | | | | | | | | | | There were 2 issues: 1) QtWebEngineProcess could not be found on Windows because we have a non-standard directory layout for the Qt files we copy over (there is no bin directory), so we need to adjust the internal qt.conf which is set in pyside.cpp 2) QtWebEngineProcess itself does not use the qt.conf from pyside.cpp, because it is a separate executable, and thus we need to supply a qt.conf specifically for it which is placed in the libexec folder. Task-number: PYSIDE-626 Task-number: PYSIDE-631 Task-number: PYSIDE-642 Change-Id: I75d1b083fb5afe5dc31ba90174f42c7f559c5cd5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix rpath for QWebEngineProcess on macOS non-framework buildAlexandru Croitor2018-04-201-0/+8
| | | | | Change-Id: Ic7e9768490c2aa84f26bbdee20c0635a82fbb641 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fail early in setup.py when clang can not be foundAlexandru Croitor2018-04-201-2/+2
| | | | | | | | | | | | | | | Previously only a warning was printed when clang could not be found at setup.py time, resulting in a not very nice to parse CMake error. Make sure to fail early in setup.py if clang can not be found. Also make sure to check that the clang source variable0 is not "None", because passing "None" to run_process_output results in an even more obscure Python error. Change-Id: Ia94bf7da51996a3d9c74d5d9978b1bf9e26b03d5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Handle long lines and print formatCristian Maureira-Fredes2018-04-191-314/+499
| | | | | | | | Shortening lines to 80 columns. Using `format` for all string formatting. Change-Id: I60c0e748955008ecdb084cc9c9b0ea0d69ecee1b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Update docstring from setup.pyCristian Maureira-Fredes2018-04-041-75/+148
| | | | | Change-Id: Icecb81aff1a5a496f64c4ce3467afc72e34670b6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* setup.py: Do not deploy *.pdb files of the QML pluginsFriedemann Kleint2018-04-031-3/+6
| | | | | | | | Exclude *.pdb files from the initial QML directory copy pass. Change-Id: Id002ea7a3fb89987f069f584c1d2c54ee5c9178e Reviewed-by: Christian Tismer <tismer@stackless.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* setup.py: Deploy ANGLE for WindowsFriedemann Kleint2018-03-211-0/+2
| | | | | | Change-Id: I5a15cd63b95058cc4bc51d1701065889a0b11fe1 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix error when invoking python setup.py without being in the same dirAlexandru Croitor2018-03-151-1/+1
| | | | | | | Task-number: PYSIDE-630 Change-Id: I1c707061b29d54bffc132909caaaa2e1b93b4d12 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Fix path to script_dirAlexandru Croitor2018-03-141-9/+9
| | | | | | | Make sure to cd into setup.py folder. Change-Id: Ic777b78028c3f2ecfa739a1c72df031b753083a1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Check for compatible Qt version when building PySide2Alexandru Croitor2018-03-061-1/+6
| | | | | | | | | Shiboken uses C++11 constructs like qAsConst, which necessitates the usage of a Qt version >= 5.7. Instead of showing weird compilation errors when building against Qt 5.6, print a nice error message. Change-Id: Iea4bd41dbe1d7d05e9b28bfa6654f68c6633cd74 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Clean up submodulesFriedemann Kleint2018-03-061-19/+2
| | | | | | | | Remove obsolete modules and superfluous logic. Change-Id: I35d3a1c2feca20da1a255eb497257ff386138138 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Merge remote-tracking branch 'origin/5.6' into 5.9Friedemann Kleint2018-03-051-258/+303
|\ | | | | | | Change-Id: I452d3a0a04e282b678879132ca1b3a272910ef04
| * Implement proper package versioningAlexandru Croitor2018-03-021-28/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change is inspired by / follows PEP 440 for handling version numbers and also takes into account the Qt versioning scheme. PySide2 as package name will stay as-is (not renamed to PySide5). Release versions would have the following pattern: PySide2 5.x.y (e.g. 5.6.3) Package (wheel) name would also contain the bundled Qt version, e.g.: PySide2-5.6.0-5.6.4-cp27-cp27m-macosx_10_7_intel.whl Pre-release versions would look like: PySide2 5.6.0a1, 5.6.0a2, 5.6.0b1, 5.6.0b2, 5.6.0rc1, etc. Development (snapshot) versions would look like: PySide2 5.6.0-dev123456789 (last part is timestamp of build time) All of the examples above comply with the PEP 440 rules. In the example above where the Qt version is specified as part of the wheel package name ("5.6.4"), the Qt version is not part of the package version itself, because it doesn't comply with PEP 440. But it does comply with wheel package names (PEP 427), and by that PEP's definitions, it will be the optional "build tag" part of the file name, which is preceded by the actual package version, and followed by the python version / abi tag. Implementation: This change defines two new python configuration files which will be the authoritative source for the shiboken and PySide2 libraries, as well as the final PySide2 package itself: sources/shiboken/shiboken_version.py sources/pyside2/pyside_version.py The pyside_version.py file will be the source of the final package version. The shiboken and PySide2 version should be modified in sync, when bumping the version of the package before a release. The reason for having both files instead of 1, is to make life easier for developers that might extract only shiboken from the repository. If at some point shiboken and PySide2 CMake projects get merged into one project, the duplicate version files would go away. The version files are parsed by CMake to correctly name the shared libraries (and SO versions), and they are also read by the setup.py script, to generate correct package metadata and a correct package (wheel) name. This change also removes the broken dist targets from PySide2's and shiboken's CMakelists files, which depended on some version suffix which was never set in setup.py. PEP440: https://www.python.org/dev/peps/pep-0440/ PEP427: https://www.python.org/dev/peps/pep-0427/ Change-Id: I3226460b1adf2555c8711fa2ba47c223b957cb44 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * setup.py: Clean up version handling and optionsFriedemann Kleint2018-03-021-126/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OPTION_VERSION and OPTION_LISTVERSIONS are deprecated and not used anymore. Because the shiboken and pyside2 submodules were merged into the pyside-setup supermodule, it is not correct to advertise available versions based on remote branches. If a user provides --version 5.9 to a 5.6 based setup.py, the build would fail because setup.py wouldn't handle clang specific options. And if a user provides a --version 5.6.5 to a 5.6 based setup.py, we can't re-checkout the current active repo to re-run an updated setup.py. Thus the version selection mechanism is no longer relevant, and it will be strictly tied to branch / tag. In this respect, some of the version handling code is removed (because it wouldn't work) and cleaned up. Task-number: PYSIDE-431 Change-Id: I8357d743b5e3a638cea583a763bffc7766688030 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
| * Improve packaging on WindowsAlexandru Croitor2018-03-021-71/+128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A lot of the packaging rules on Windows were outdated (Qt4 times). This change does a couple of things to improve the process: - Removes attempts of copying files matching Qt4 naming patterns - Fixes filters to copy Qt dlls / pdbs for a single build configuration (only debug dlls, or only release dlls depending on which configuration was used when building PySide2). As a result this reduces the total size of the package. - Removes some comments that are outdated. - Simplifies pdb copying logic. - Adds a bit of whitespace between copying rules, for easier navigation. Change-Id: Icc06398f524f0249504750c718f97b61ffadf7df Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Deploy QtWebEngine locales .pak filesAlexandru Croitor2018-03-021-3/+3
| | | | | | | | | | Change-Id: I548d89eb174d6dccb11efa9a10d21b53c775a541 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Remove unused version_str variableAlexandru Croitor2018-03-021-3/+0
| | | | | | | | | | Change-Id: Ib93a676d3578a91f175dd27b19cc48fcec3da63f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Improve macOS minimum deployment target decision processAlexandru Croitor2018-03-021-21/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of asking the user to specify a minimum macOS deployment target, setup.py will now query the value from qmake. A user can still specify a custom value if they wish to do so. This simplifies building on the CI, meaning there is no need to hardcode the minimum deployment targets per branch. Task-number: PYSIDE-603 Task-number: PYSIDE-606 Change-Id: I55c79dc643b5a2b59d0e65add132c581fb6fc7f4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Improve QtInfo classAlexandru Croitor2018-03-021-19/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously the class would do a qmake process invocation for each qmake -query property, after this change only a single invocation is done to get all the query properties. In addition another new invocation is done to find all mkspecs variable, in order to find what kind of Qt build is being used: a debug build, release build, or debug_and_release build. This information is useful for packaging purposes, to know which files should be copied or ignored. Change-Id: If1ee4d19e0cc550e40dc568d1256030c8928c4e5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Add rudimentary support for address sanitizer buildsAlexandru Croitor2018-02-231-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change adds a new setup.py option called --sanitize-address which will build all executables and shared libraries with address sanitizer enabled. The builds will only succeed on Linux and macOS machines that have new enough gcc / clang versions, so it is a "use at your own risk" build configuration. This change was necessitated by the random crashes that are sometimes observed on the CI machines, and due to valgrind not working properly on new macOS versions, using AddressSanitizer is the next best thing. Note that when running tests with address sanitizer builds, you might need to export a LD_PRELOAD / DYLD_INSERT_LIBRARIES environment variable pointing to the address sanitizer runtime library path, which will be provided by the crashed application. Change-Id: I93014002e5c5e94bcc808ba2fb830d60724cfb69 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | setup.py: Distinguish debug/release PythonChristian Tismer2018-02-261-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When developing the heap types, I had to switch between debug and release Python very often. This patch allows for debug and release to co-exist without re-building everything. Additionally to the 'd' that gets appended to the build and install folders, I used a 'p' for debug Python. Please feel free to change that as you like. Change-Id: I022face5177bb69589809c8b235f09161d7fabd2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.9Friedemann Kleint2018-02-231-52/+151
|\ \ | |/ | | | | Change-Id: I5d1a4734e8f44785898ba62beaa0bdd2004fca22
| * Deprecate --iculib-url optionAlexandru Croitor2018-02-231-6/+2
| | | | | | | | | | | | | | | | | | | | The option is not being used anymore since commit c605d686f8cc4c8d370ec4d6260fca4b423f5526 , but we need to keep the name around, so that setup.py doesn't error out in Coin because we still pass that option. Change-Id: I6f3433d1feacd8940aa48ba7e1113fe44a19ed9b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Make sure wheel names contain both PySide2 and Qt versionAlexandru Croitor2018-02-221-5/+31
| | | | | | | | | | | | Task-number: PYSIDE-613 Change-Id: Iad411a46618d157b17f62b403591f348acd98a4e Reviewed-by: Christian Tismer <tismer@stackless.com>
| * Don't copy duplicate libraries on package installationAlexandru Croitor2018-02-221-21/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change makes sure to resolve symlinks and copy only one file for every dynamic shared library used (vs 3 before -> 2 symlinks + 1 actual library). This avoids duplicate files, as well as saves space when creating wheel (e.g. no 3 copies of standalone WebEngine library). This filtering happens copying from CMake install dir into pyside_package_dir (the symlinks are still present in the CMake dir, but that shouldn't harm anybody, and might be useful for users of shiboken only for example). Task-number: PYSIDE-495 Change-Id: I0fe454e16c6b254a8682aa7b1c702ec01a3064f0 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Fix setup.py install to work on macOSAlexandru Croitor2018-02-211-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | This change amends e0a4372160d9b1ab1550589784cc456b93d28cab to allow running setup.py install without getting exceptions from distutils. Specifically the problem was that distutils did some additional checks to make sure that plat_name == get_platform(), which will not be the case because of the modified minimum deployment target. The fix is to disable that check via a flag. Change-Id: I066c0d4b7a6b27fceaf094c15bace7aba3c873bb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>