summaryrefslogtreecommitdiffstats
path: root/conanfile.py
Commit message (Collapse)AuthorAgeFilesLines
* Conan: Fix build_type usage in the build recipeIikka Eklund2021-11-041-30/+55
| | | | | | | | | | | Currently e.g. -debug-and-release builds are "broken" as it only produces release binaries on Windows. There are other inconsistencies also how the recipe deals with various release and debug related options and how those map the Conan's 'build_type'. Pick-to: 6.2 6.2.1 Change-Id: I47fa4c1592eefa1b5a1f144691ee33675753e5fb Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Change package_revision_mode() to recipe_revision_mode()Iikka Eklund2021-10-251-1/+7
| | | | | | | | | | | | | | | The package_revision_mode() is too strict for Qt CI. This mode includes artifacts checksum in package_id which is problematic in Qt CI re-runs (re-run flaky build) which contain different build timestamps (cmake) which end up in library files -> different package_id. The effect was that Conan/Conan server is unable to re-use correct binaries and re-builds (re-staged) dependencies. Pick-to: 6.2 6.2.1 Change-Id: Id54af7455b948c8d68b7206d524f1d0fcfb7b568 Reviewed-by: Toni Saario <toni.saario@qt.io>
* Conan: Do not use f-stringsIikka Eklund2021-10-151-16/+21
| | | | | | | | Conan supports Python3.5 which does not support f-strings yet. Pick-to: 6.2 Change-Id: Ie4b64e3baff7da64b80db71f4f0ea4172ddc61fb Reviewed-by: Toni Saario <toni.saario@qt.io>
* Conan: Use recipe revision mode for 'python_requires'Iikka Eklund2021-09-231-0/+2
| | | | | | | | | | | | | | By default Conan uses 'minor_mode' policy for 'python_requires' dependencies. This causes updates in 'qt-conan-common' package not to land into users when invoking e.g. "$conan instal .. --update". Fix this by enforcing recipe revision mode so any changes to 'qt-conan-common' recipe is received by the clients when updating packages. Pick-to: 6.2 Change-Id: I225965aa76c39552bd4adc93d7e68e0ae0b38d56 Reviewed-by: Toni Saario <toni.saario@qt.io>
* Conan: Fix invalid options for package_id checksumIikka Eklund2021-09-211-2/+2
| | | | | | | | | | | | The android specific options were plain wrong: - android_sdk_path -> android_sdk - android_ndk_path -> android_ndk These reflect the Qt configure options. Pick-to: 6.2 Change-Id: I0b9283b6603aff8243208216baffe263d37b6541 Reviewed-by: Matti Paaso <matti.paaso@qt.io>
* Conan: Exclude 'headersclean' option from package_idIikka Eklund2021-09-211-0/+1
| | | | | | | | | This option should not affect the binary compatibility thus it should not be part of the package_id of the created Conan package. Pick-to: 6.2 Change-Id: I6d09cc3933cd28c306ef011bb26346a0993ffcd3 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Conan: Filter cmake_args that should not be included in package_idIikka Eklund2021-09-211-0/+7
| | | | | | | | | | | | | | | | | | | | | | | The qtbase Conan recipe has 'cmake_args_qtbase" option to pass cmake arguments. Some of the cmake arguments should not be included in the package_id checksum of the Conan package. Filter these out when generating the package_id. Examples: - -DCMAKE_C_COMPILER_LAUNCHER=sccache - -DCMAKE_CXX_COMPILER_LAUNCHER=sccache - -DFEATURE_headersclean=.. - -DPostgreSQL_ROOT=.. Those arguments which are specific to Qt CI build environment are filtered out. This makes the pre-built Conan binary packages more usable for the end users because Conan would enforce a build from sources if the checksum(s) would not match. Pick-to: 6.2 Task-number: QTBUG-96230 Change-Id: I076a57427614fdf4bf9138402e247d63f1ce15d9 Reviewed-by: Toni Saario <toni.saario@qt.io>
* Conan: Rename 'extra_cmake_args' Conan option as 'cmake_args_qtbase'Iikka Eklund2021-08-301-5/+5
| | | | | | | | | | | | | | | | | | It turns out that we need to support two ways to pass cmake args as Conan options. Those that are meant for qtbase only, like "-DCMAKE_TOOLCHAIN_FILE={{.Env.ANDROID_NDK_ROOT}}", and those that are meant for leaf modules only. Rename the current 'extra_cmake_args' Conan recipe option as 'cmake_args_qtbase' to make it clear these cmake args are passed to qtbase build only. The leaf modules will be using 'cmake_args_leaf_module' as the Conan option name. Pick-to: 6.2 Change-Id: I456b8b07da5684f386cac668a5cd3e2509c733ac Reviewed-by: Toni Saario <toni.saario@qt.io>
* Conan: recipe cleanupsIikka Eklund2021-08-301-33/+65
| | | | | | | | | | | | - Fix license reference in the recipe. - Fix line lengths exceeding 100 characters. - Code formatting changes as suggested by 'black' tool. - Remove superfluous Path() usage. - Improve Qt version parsing from file. Pick-to: 6.2 Change-Id: Ie0534a1d4fb7b2c1dc697117bd4cb2d4ceda0622 Reviewed-by: Toni Saario <toni.saario@qt.io>
* Conan: simplify Conan recipeIikka Eklund2021-06-211-48/+25
| | | | | | | | | | | | | | | | | | | | | The qt-conan-common package contains shared functionality for recipes that should be used: - environment wrap during the build() - package_info() is generic for all recipes Move the _build() out from the class so that it is usable for the callback from qt-conan-common package. Simplify how the Qt module version and prerelease tag is read from .cmake.conf and how the file is being referenced. As the .cmake.conf is included in the "exports" it will be always present next to the recipe: - in .git source tree - in Conan cache Pick-to: 6.2 Change-Id: I4bbd683f7b49151620397e0b7f4272929a93c060 Reviewed-by: Toni Saario <toni.saario@qt.io>
* Conan: Read status flag from .cmake.confIikka Eklund2021-06-211-14/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The status information (alpha1, beta2, rc3, ...) needs to be part of the Conan package reference. As Conan supports semantic versioning the best place to put the status is to append it to the version string: qtbase/6.2.0-alpha1@qt/everywhere qtbase/6.2.0-beta2@qt/everywhere qtbase/6.2.0-rc3@qt/everywhere qtbase/6.2.0@qt/everywhere Other Conan packages declaring a dependency can use e.g. syntax: # notice the asterix character after version self.requires(f"qtbase/[<=<version>, include_prerelease=True}]@..) This way the status information is not in the Conan channel part and downstream consumers of the Conan package does not need to update the dependency (Conan reference string) every time the version changes. Put the status information next to Qt version string in .cmake.cache. Task-number: QTBUG-94385 Pick-to: 6.2 Change-Id: Ib277f99ea1e87253b93f59e463bd6c7dd8b3203e Reviewed-by: Toni Saario <toni.saario@qt.io>
* Add conanfile.py to support builds with Conan package managerIikka Eklund2021-05-241-0/+460
Initial version of the conanfile.py to support builds with Conan package manager. Tested with Linux, macOS and Windows desktop builds first. Use 'scm' revision_mode so that the revision matches with the git commit id. The recipe uses Qt's configure(.bat) and cmake directly, 'conans.CMake' utility tool is not used. Load options dynamically based on configure(.bat) features: - configure(.bat) -write-options-for-conan <output file> - Expose all usable configure(.bat) options as Conan options - We want to query configure(.bat) for available options and features to avoid duplicating these in multiple places - The available configure(.bat) option names are formatted to suit as dictionary keys in Conan 'options' The recipe writes 'configure_options.json' and 'configure_features.txt' which are exported as part of the conan package. This is done only once during the 'conan export' i.e. when the initial Conan package is being created. The recipe will reference these files in later phases when needed. The recipe translates the Qt configure options and features as Conan options and default_options. When the build is invoked ('conan install') the recipe translates the Conan options back to suitable Qt configure options which are then passed to configure(.bat). Additional cmake flags can be passed via 'extra_cmake_args' option: $conan install ... -o extra_cmake_args="-DFOO=bar -DFOO2=bar2" Remove those options from 'package_id' that point to local environment like installation paths. These are most probably different on end user machines making it impossible to re-use the pre-built binaries by Qt CI as the path values would become of the 'package_id' checksum. Task-number: QTBUG-92031 Change-Id: I4e47d116fdef6a5daa23aba22bac2b2d74d12c6e Reviewed-by: Toni Saario <toni.saario@qt.io>