aboutsummaryrefslogtreecommitdiffstats
path: root/coin_build_instructions.py
Commit message (Collapse)AuthorAgeFilesLines
* Add tests to install built wheels and build some examplesAlexandru Croitor2018-10-121-7/+3
| | | | | | | | | | | | | | | | | | | | Augment coin_test_instructions.py to run a new script testing/wheel_tester.py, which tries to pip install the built wheels, and then tries to build the samplebinding and scriptableapplication examples. This allows us to confirm that the generated wheels are actually installable, and also hopefully prevent us from breaking the embeddable examples, by making sure that they at least build (and execute in the case of samplebinding). The change also modifies the examples to be able to take the python executable as build argument, so that wheel_tester can specify explicitly which python interpeter to use. Change-Id: I0f141e40ab86e3311dd25915c4e53b0af36aaae9 Reviewed-by: Christian Tismer <tismer@stackless.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Allow building shiboken2 and PySide2 as separate wheelsAlexandru Croitor2018-10-121-5/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Merge remote-tracking branch 'origin/5.11' into devFriedemann Kleint2018-07-031-9/+11
|\ | | | | | | Change-Id: Ib2eeca97ebabcff53ef7ddd9fc769be6424db39f
| * Associate Coin snapshot builds with Coin integration IDsAlexandru Croitor2018-06-221-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * Merge branch '5.9' into 5.11Alexandru Croitor2018-06-081-1/+3
| |\ | | | | | | | | | Change-Id: I7e55b4f27f77e2333b9e0f4cddc8de4b89b6043b
| | * Skip building on Windows for Python2Simo Fält2018-06-081-1/+3
| | | | | | | | | | | | | | | Change-Id: Ie6970361748f5b7dab52a401f6e3cf7995015ee7 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * | Refactor accepted CI configurationsSimo Fält2018-06-041-8/+2
| | | | | | | | | | | | | | | Change-Id: I7baa695fe4100e15b108e4eb7df15c6af7db2cbe Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * | Enable 32 bit windows buildSimo Fält2018-06-021-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: PYSIDE-646 Change-Id: I783f4e91d37aeb0200f4546b49abdfe80a09afbf Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | | Merge "Merge remote-tracking branch 'origin/5.11' into dev" into ↵Friedemann Kleint2018-06-041-3/+37
|\| | | | | | | | | | | refs/staging/dev
| * | Merge remote-tracking branch 'origin/5.9' into 5.11Friedemann Kleint2018-06-011-2/+36
| |\| | | | | | | | | | Change-Id: I31a0ff26bc02e6cc2ec2a816c16d170fc334f800
| | * Don't set --snapshot-build for official release builds on CoinAlexandru Croitor2018-05-311-2/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes coin_build_instructions.py to read the version in sources/pyside2/pyside_version.py to check if it is not a pre-release version (no alphas, betas), which means that --snapshot-build should not be passed, thus generating proper wheel names that can be uploaded to PyPI. This eliminates the need to remove the --snapshot-build param on a per release branch basis (and thus, less things to remember for official releases). Change-Id: I10afcb5bfe8a661583104f3d7b2c0b4ebd4530fb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| | * Pass --limited-api=yes when building with py3 on CoinAlexandru Croitor2018-05-311-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is needed to generate correct wheel names, that can be uploaded to PyPI. Change-Id: If97496d201af13f58f9dae8b61ac86bef68d8717 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * | Enable msvc 2017 wheels instead of msvc 2015Simo Fält2018-05-311-1/+1
| |/ | | | | | | | | Change-Id: I4c81b9131e37b8ed91fa02756ed19df25fd2dd8e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* / Disable osx 10.13 config in ciSimo Fält2018-06-041-1/+1
|/ | | | | | | | There is something missing from the template. We have to fix that to re-enable. Change-Id: I796a2bf31dd455053eab29b352b984cfbda3ee4a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix Pyside buildSimo Fält2018-05-291-0/+8
| | | | | | | | | | Disabling some of the configurations due to fact that those are not supported yet. 32 bit windows build on 64 bit host will be re-enabled once we get 32 bit python provisioned to 64 bit windows. Change-Id: I74492ed654dfef5aaf8e02ca8e0c715a0c27d2c8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Select correct Python environment when cross compilingSimo Fält2018-05-171-1/+3
| | | | | | | | | To be able to create 32 bit wheel in 64 bit Windows, we must use correct Python version. Task-number: PYSIDE-646 Change-Id: I72c05e9c5b6f37f16c118e36c3c7ea8f90ee7dff Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Clarify and fix the path to openssl libs for Coin Windows buildAlexandru Croitor2018-05-161-1/+1
| | | | | | | | | | | | 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>
* Change license from last filesCristian Maureira-Fredes2018-05-141-1/+1
| | | | | | | | Just renaming PySide2 -> Qt for Python for these files that somehow got excluded when renaming the whole project. Change-Id: Id6dfbae1ab3bd603f1db5e0346664004102fd19f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix typo in coin instruction scriptsSimo Fält2018-05-141-1/+1
| | | | | Change-Id: I2d17a2334d59ffa7ceff35de56b53a5ec443f449 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Move setup call from CI to wrapper scriptSimo Fält2018-05-111-0/+98
It can be pretty long lasting process to get updates to Qt CI. To speed up pyside specific changes we move some of the logic to pyside repository. Change-Id: I7d60bf96324d5990fb408d69c00aa4d7e8e81a2f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>