aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* | Loader: Detect cyclic dependencies involving Depends.productTypesChristian Kandeler2023-09-195-3/+64
| | | | | | | | | | | | | | | | | | | | These cannot be detected while the product with the bulk dependency is being handled, so record the respective tags and throw an error if a product with a matching type finishes after the product with the bulk dependency. Change-Id: I1d6d2370b1849ea9aa4602df960a4203abf5ffe0 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Loader: Do not share logger between threadsChristian Kandeler2023-09-186-19/+40
| | | | | | | | | | | | | | The logger is not thread-safe when stored warnings are enabled. Change-Id: Icb7a3add9f6162ab823c0b27059aea88822ff60a Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Merge "Merge 2.1 into master"The Qt Project2023-09-153-1/+7
|\ \
| * | Merge 2.1 into masterChristian Kandeler2023-09-153-1/+7
| |\| | | | | | | | | | Change-Id: Ic03c526f407d44d7d889a6a0a23c5e79795999b9
| | * Address.sanitizer: Prevent failure with Apple clang 13Christian Kandeler2023-09-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | The -fsanitize-address-use-after-return switch was added in LLVM 13, but Apple clang 13 does not have it. Change-Id: Id0bc7c18aa2ad17faed20c2af54f192661d63b3e Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
| | * Qt support: Fix selection of Qt build variantChristian Kandeler2023-09-142-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | ... when qbs.buildVariant is "profiling". Fixes: QBS-1758 Change-Id: Iae6e98af3b16860a5c8e5c20ebb52fac3127e9e8 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | | QuickJS: Fix argument type in function callChristian Kandeler2023-09-151-1/+1
|/ / | | | | | | | | | | | | Amends f19e6751987c54ee5cb16cfa144c82f4fd36dc73. Change-Id: I553eb521e2b51163f693ded13e9383de31a47b8b Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | capnproto.cpp: Set versionBjörn Schäpers2023-09-131-0/+1
| | | | | | | | | | | | | | | | Based on the capnp version. So one could use Depends { name: "capnproto.cpp"; versionAtLest: "..." } Change-Id: Ieb589deef2fd62d1526f8a0963a945ba01c5b000 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | protobuf.cpp: Require c++17 on all platformsChristian Kandeler2023-09-131-1/+1
| | | | | | | | | | | | | | At least on my ArchLinux machine, it won't work otherwise. Change-Id: I4179f51c72bf67f26c17c03e8cbe57dd805122d1 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Autotests: Fix a project pathChristian Kandeler2023-09-131-1/+1
| | | | | | | | | | | | | | This was broken in 268ad79759f75a25b7b192fc27283a6f1f446bb0. Change-Id: Ic97e63615bda5b6474ed31985e8e033dc8a9e371 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Bump minimum Qt versionChristian Kandeler2023-09-1220-71/+22
| | | | | | | | | | | | | | | | There's no need to drop Qt 5 just yet, but we should require the latest version. Change-Id: I2653ef5c3c244453db88a48d59e2c86eb38518b5 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Loader: Properly handle the case of a local profile as top-level profileChristian Kandeler2023-09-126-1/+46
| | | | | | | | | | | | | | | | | | | | The use case seems somewhat dubious, as the intention is that profiles defined inside a project should also be attached inside that project (via qbs.profile), but why not support it if we can. Fixes: QBS-1756 Change-Id: I569c4c7b39c34fe6f4f5d4172139046310524773 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Loader: Use per-thread loader statesChristian Kandeler2023-09-116-101/+114
| | | | | | | | | | | | | | | | | | This allows us to get rid of the mutex in ItemPool. There seems to be no measureable speed-up, but it's still the right thing to do. Change-Id: I509ad6d37c4cae812bee86e92981039ef210ba42 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Tests: Remove some dependencies on profilesChristian Kandeler2023-09-1114-117/+180
| | | | | | | | | | | | | | | | | | Various conditional tests were erroneously skipped when run without an explicit profile. Fix this by checking the actual toolchain used instead of profile contents. Change-Id: I9cc589f038d76112998a126cce4bf314a57c742e Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Merge 2.1 into masterChristian Kandeler2023-09-0813-82/+90
|\| | | | | | | Change-Id: I6176c269e1cb23e88179d6e53f1f2bf57a668176
| * apple: fix dmg.absoluteSourceBase default valueIvan Komissarov2023-09-082-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | Dmg module collects all installables and replaces the absoluteSourceBase with stageDirectory. However, by default, we install the bundle to the installRoot/installPrefix/installDir folder and absoluteSourceBase missed the installPrefix path which is "/usr/local" on mac by default. Change-Id: I24dfab27b0321308347883376a052c479388418a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| * apple: fix some DMG module issuesIvan Komissarov2023-09-074-64/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix keys used in settings to match those that are actually used in python. Removed Korean and Russian license agreements - they are not listed in the allowed languages. Also, even when added to the list, Russian eula.txt makes hdutil to return with an error for some reason. Those need further investigation. Fixes: QBS-1753 Change-Id: I510d4f1896625d6a0b63c4005288d29069776c9a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| * doc: add docs for some missing Qt.core propsIvan Komissarov2023-09-071-0/+42
| | | | | | | | | | Change-Id: I883be3f550706ed8178dbb247dcb481d0a9dad4c Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| * doc: fix Group item docIvan Komissarov2023-09-071-10/+18
| | | | | | | | | | Change-Id: I8ed20eb9bd4470941fc7b3b170bf4d9bab96a49b Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| * Properly clean up in ScriptEngine::ImporterChristian Kandeler2023-09-012-2/+3
| | | | | | | | | | | | | | | | We must not leave "require" values behind. Fixes: QBS-1751 Change-Id: If09c452d0df07642af0cd602d146173d9b638f79 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
| * ModuleProviderLoader: Make sure pseudo module instances have a scopeChristian Kandeler2023-09-013-1/+4
| | | | | | | | | | | | | | | | | | Otherwise the Evaluator will erroneously add the instantiating item as a scope. Fixes: QBS-1747 Change-Id: If13a9b8174000d63f020b51677b855b9027d66f1 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
| * Update change logIvan Komissarov2023-08-301-0/+4
| | | | | | | | | | Change-Id: I9b102f0efd9bb96470a37454a578f422f72202a8 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| * doc: fix typoIvan Komissarov2023-08-301-1/+1
| | | | | | | | | | Change-Id: I94938476436eb9164900a5104fa3c45af3ed95df Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Let users specify a job count also when resolvingChristian Kandeler2023-09-0512-12/+72
| | | | | | | | | | | | | | | | | | Preparation for loader parallelization. For simplicity, we do not introduce a new command-line option, but re- use the -j flag that was already present for building. Change-Id: I71ce31ec3ccc592d222bcfe14a8aaf311126020c Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Loader: Resolve products in parallelChristian Kandeler2023-09-0526-202/+807
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The resolveProduct() function is now executed for several products simultaneously, with the (relatively few) accesses to common resources guarded by mutexes. Using Qt Creator as a mid-to-large-sized test project, we see the following changes in the time it takes to resolve the project on some example machines: - Linux (36 cores): 10.5s -> 4.8s - Linux (8 cores): 17s -> 6.5s - macOS (6 cores): 41s -> 16s - Windows (8 cores): 20s -> 9s Unsurprisingly, the speed-up does not scale with the number of processors, as there are typically lots of inter-product dependencies and some expensive resources such as Probes are shared globally. However, we do see a factor of two to three across all the hardware and OS configuarations, which is a good practical result for users. Note that running with -j1, i.e. forcing the use of only a single core, takes the same amount of time everywhere as it did without the patch, so there is no scheduling overhead in the single-core case. The results of our benchmarker tool look interesting. Here they are for qbs and Qt Creator, respectively: ========== Performance data for Resolving ========== (qbs) Old instruction count: 9121688266 New instruction count: 15736125513 Relative change: +72 % Old peak memory usage: 84155384 Bytes New peak memory usage: 187776736 Bytes Relative change: +123 % ========== Performance data for Resolving ========== (QtC) Old instruction count: 59901017190 New instruction count: 65227937765 Relative change: +8 % Old peak memory usage: 621560008 Bytes New peak memory usage: 761732040 Bytes Relative change: +22 % The increased peak memory usage is to be expected, as there are now several JS engines running in parallel. The instruction count increase is likely due to a higher amount of deferrals. Importantly, it appears to go down massively with increased project size, so it does not seem that the parallelism hides a serious per-thread slowdown. Change-Id: Ib4d9ca9aa0687c1056ff82f9805b565cc5a35894 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | pkgconfig: deprecate mergeDependencies propIvan Komissarov2023-09-012-1/+7
| | | | | | | | | | Change-Id: Ibf553f9065e8002ba4dadd961de08d6f1951189a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Allow PropertyOptions within ModulesProvider itemsIvan Komissarov2023-08-315-1/+36
| | | | | | | | | | | | Task-number: QBS-1748 Change-Id: Icfc55fa6e57cbfc32ccafbdbffb156e9405cb88e Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Move checkAllowedValues() to PropertyDeclarationIvan Komissarov2023-08-293-40/+45
| | | | | | | | | | Change-Id: I43500e1d30c032cea80991bdf003c77b77a802d8 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | providers: report exceptions in Provider itemsIvan Komissarov2023-08-295-25/+63
| | | | | | | | | | | | | | | | | | If provider is seriously broken, we should give user some hints in case of optional dependencies; otherwise errors are silently ignored. Change-Id: Ie88c2c706bff600086d7760056df155b7a7e8705 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | probes: cache map variantsIvan Komissarov2023-08-2916-54/+183
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce a StoredVariantValue that is saved in Probe items. Only QVariantMaps/Lists are stored since they can contain potentially huge objects (e.g. info plists in XCode). Cached values are now "frozen" so that users won't acceidentally modify them. Bundle module is updated accordingly to avoid mutating stored objects. This saves about 7s when resolving QtC on Mac. Change-Id: I0dd134f95105b1e4cf16e4320819db81a1c1e9a7 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | probes: convert jsvalue to actual typeIvan Komissarov2023-08-255-21/+66
| | | | | | | | | | Change-Id: I00903408969ae49ea6499b71f0a4066394837453 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Merge 2.1 into masterChristian Kandeler2023-08-257-15/+76
|\| | | | | | | Change-Id: Id331ef3cc9e7b48470d391c1c3e917bb323e41f7
| * GitHub actions: add xcode-less job on macOSIvan Komissarov2023-08-221-0/+20
| | | | | | | | | | Change-Id: Ie535183ced8ee200c506b54d4958976f321cb7fb Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| * apple: Fix ApplicationExtension for the xcode-less profilesIvan Komissarov2023-08-222-2/+7
| | | | | | | | | | Change-Id: I2e5c754e20286b37c8b6d79321f5eb191eefc6d0 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| * apple: Fix BundleModule when using xcode-less profileIvan Komissarov2023-08-222-4/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | Unlike Module itself, within the Rule.prepare script, we cannot access properties of the non-present Module. Fix this by adding helper properties in the Bundle module that are set to 'undefined' if xcode is not present. This amends 9cfd88b1b7cca084fabe8053d988aa0685f0cfb3. Change-Id: I5f1c86bd093610f1de8ecb9f9732b2a1b0245baf Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| * Revert "Bump version"Christian Kandeler2023-08-221-1/+1
| | | | | | | | | | | | | | | | The commit planned to be 2.1.2 is not suitable for release. This reverts commit 0ec11ef97d82cba82495d26502167349e0acfb64. Change-Id: I1d7b240efe93b9600c2a300ea531c2d5a7301bc5 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
| * Bump versionChristian Kandeler2023-08-211-1/+1
| | | | | | | | | | Change-Id: I07bca49373987d9c8c5afc1d6d958f392560cf96 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
| * apple: fix tests with xcode-less profileIvan Komissarov2023-08-213-9/+37
| | | | | | | | | | Change-Id: Ib606da3047c078afc0bbc44fa62cb1c111e15755 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | ModuleLoader: Improve Module item initializationChristian Kandeler2023-08-251-31/+32
| | | | | | | | | | | | | | | | | | | | The code doing the initial Module item setup was scattered around various places, which not only made it more difficult to understand, but also lead to some of it potentially getting run more than once per item. Now all of it is in one properly named function. Change-Id: If95c0d25131f77f985980cea2b772dc1e2e92303 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Docker: Update Qt in Windows imageChristian Kandeler2023-08-232-3/+3
| | | | | | | | | | | | | | | | Qt 6.2 prints annoying warning messages when using QProcess in non-Qt threads. Change-Id: Id6e3d65052595c6b492bd53ad73160aed84100a3 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | pkgconfig: do not export comparison enum to JS codeIvan Komissarov2023-08-211-1/+0
| | | | | | | | | | | | | | | | It is not used and exported as int which is quite confusing. Also, reduces a bit the size of the exported object. Change-Id: Ia89dfe87fb3360081a3892a4cf1b38937e523de5 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Loader: Replace a null pointer check with an assertionChristian Kandeler2023-08-141-2/+3
| | | | | | | | | | | | | | | | The very same value was accessed unconditionally a few lines further down, so we can safely assume it to always be non-null. Change-Id: I8693360904341e4842f827d89bfc0b0e47c894dd Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Merge 2.1 into masterChristian Kandeler2023-08-046-2/+23
|\| | | | | | | Change-Id: I718fa87e4d71fe7ab33ecef5c09407c562f9077e
| * Bump version and update changelogsChristian Kandeler2023-08-033-3/+7
| | | | | | | | | | Change-Id: I9045a8f5d2a77d002b3ae4df24cc124f54aaa157 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
| * Make checking for float64 tags work on 32-bit architecturesv2.1.2Dmitry Shachnev2023-08-022-2/+3
| | | | | | | | | | | | Fixes: QBS-1745 Change-Id: I11fb7fc8d9b047e814fd090141a0c434e1b6cd63 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| * QuickJS: Fix building on x86v2.1.1Christian Kandeler2023-08-014-1/+17
| | | | | | | | | | | | Fixes: QBS-1744 Change-Id: Ic2a35650ac6dc00b63d7d274d4feba46cae676cb Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Loader: Fix two more cases of implicit Module item property evaluationChristian Kandeler2023-08-022-3/+5
| | | | | | | | | | | | | | | | | | As of fb52fed84a1510a7de0172e643d6fd66a780e2e8, the prototype link from ModuleInstance to Module should not be used for property evaluation anymore. Change-Id: I01975ffe7d981d9927018d4f2d7d965da57ce18c Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Fix API testChristian Kandeler2023-08-021-0/+3
| | | | | | | | | | | | | | | | Apparently, these checks were simply forgotten when the test was originally introduced. Change-Id: I70353b4aec14d9bcc0ab88e06be7ad9ac2098d39 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Profiling: Use nanosecond resolution for timersChristian Kandeler2023-08-022-5/+5
| | | | | | | | | | | | | | | | | | | | Otherwise, some code paths will be seriously underestimated: For instance, a function that takes just under one millisecond, but gets called a million times, would erroneously show up with zero total effort. Change-Id: Id67c423489c2e88df883d369861a2805e0a4a3b1 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* | Loader: Add another data point to profiling dataChristian Kandeler2023-07-314-8/+17
| | | | | | | | | | | | | | | | Namely, for exactly the parallelizable part. This will yield valuable information when comparing time taken with e.g. different thread counts. Change-Id: Ia2d988fdd0edba6e0468b1834368f7f2240b7387 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>