summaryrefslogtreecommitdiffstats
path: root/util
Commit message (Collapse)AuthorAgeFilesLines
* Core: make Unicode Database constexprYuhang Zhao2022-05-301-11/+11
| | | | | | | | Task-number: QTBUG-100485 Change-Id: I41480a34b14fd86a68a5c10b7e0f3d250e785d0f Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit 34c21d040766d54d959ed835bdf5464f657b7693)
* Core: make CLDR data constexprYuhang Zhao2022-05-272-12/+12
| | | | | | | | Task-number: QTBUG-100485 Change-Id: Ib8c5160ca0994662a5fdc2293dc734c1bdcac4f2 Reviewed-by: Marc Mutz <marc.mutz@qt.io> (cherry picked from commit 42fe677584dc672f63c2efc812005e3a49f82d10) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Unicode: Extract EastAsianWidth propertyIevgenii Meshcheriakov2022-05-262-2/+2695
| | | | | | | | | | This property is needed to properly implement the line breaking algorithm from UAX #14. Task-number: QTBUG-97537 Change-Id: Ia83cc553c9ef19fae33560721630849d2a95af84 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit 838a7a01f388673c45af2dd60bc38992de1a2a05)
* Unicode: Remove obsolete word break classesIevgenii Meshcheriakov2022-05-261-12/+0
| | | | | | | | | | Remove E_Base, Glue_After_Zwj, E_Base_GAZ, and E_Modifier obsoleted by UTS #29, version 33 (Unicode 11.0.0). Task-number: QTBUG-97537 Change-Id: If5dc36ae17cd8746bbe81b73bbcc0863181e4a7a Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit 1a26719c541756c1c784b7395e9ed72ed72e1a5f)
* Android: fix default name of the CI emulatorAssam Boudjelthia2022-05-191-1/+1
| | | | | | | | | | | This name was changed in qt5/coin but wasn't reflected here. Currently, things works correctly because the test target provide the correct name as an env var. Change-Id: I8968285de2c7759d16f303c48d6295295dffbef6 Reviewed-by: Simo Fält <simo.falt@qt.io> (cherry picked from commit 53604df833c3cb99375763dfd7a068ac61ef8eb2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Add a simple Qt 6/CMake-compatible script a la includemocs.pyMarc Mutz2022-05-051-0/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Perl is dead and I don't speak Python, so if someone wants to port it, be my guest. I needed something that I can use to roll out includemocs across all Qt modules, and this is it. It works for me™, so I don't expect to do much development with it. This is an automated committer script I've been using so far: # SRCDIR=~~~ # BUILDDIR=~~~~ cd $BUILDDIR find */src -name mocs_compilation.cpp | while read FILE; do if grep -qsE '^#include' "$FILE"; then DIR="$(dirname "$FILE")" LIB="$(basename "$DIR")" case "$LIB" in Q*) LIB="${LIB%%_autogen}" ;; *) LIB="Qt${LIB%%_autogen}" ;; esac DIR="${DIR%/*}" path/to/includemocs6.sh "$SRCROOT/$DIR" "$DIR" "$FILE" (cd "$SRCROOT/$DIR" && git commit -am "$LIB: includemocs $(cat "$SRCROOT/commit-msg.txt")" --no-edit) fi done If the script cannot associate a moc file with a cpp file, it will print a warning and continue. The script tries to include the moc-file right after the QT_END_NAMESPACE to work around many TUs ending in an #endif from some #if QT_CONFIG or other. If there's no QT_END_NAMESPACE, it appends the include and prints a warning. Fixes: QTBUG-102886 Change-Id: I16c5a9f845777ea2e82f15611b4fdd32f98ce0bb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit dffca8bb0eac54a29248e5cbb69c35f85be333bf) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Cherry-pick qt-testrunner.py from dev branchDimitrios Apostolou2022-04-274-0/+983
| | | | | | | Task-number: QTBUG-96353 Change-Id: Ic3cae315ad2c7e05e0173cf5e0149ebb63761546 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Remove the qmake2cmake wrapper scripts and document where they areJoerg Bornemann2022-04-121-0/+3
| | | | | | | Change-Id: Ib36f4e614845a3b375f4a86239fa7e6e26d7adea Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 2c364aef4c9b3f9a1b459cb2bd01689158ad5f78) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Bump version to 6.3.1Jani Heikkinen2022-03-251-1/+1
| | | | | Change-Id: I86541faf74b256b3321e12accef1b65822f64608 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* CMake: Rename FindZSTD to FindWrapZSTDAlexandru Croitor2022-03-021-1/+1
| | | | | | | | | | | | | And the target ZSTD::ZSTD to WrapZSTD::WrapZSTD. This should allow building Qt with the -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON set. Fixes: QTBUG-100537 Change-Id: I748601e4ad6f518323bf1034d6fc1de582c815e1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 34a4fe01663c3d8b193e42c6609e75c431f8a897) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Properly wait for the Android emulator to fully bootDimitrios Apostolou2022-01-071-34/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It had been noticed that sometimes the Android emulator in our CI took several minutes to fully boot. It turns out that this behavior can be reproduced locally by removing the image files under $HOME/.android especially the "userdata-qemu.img.qcow2" file. Then the emulator goes through several reboots until fully booted with a full set of packages installed. We discovered that the property that signifies it is finished is dev.bootcomplete=1. So we now check for this flag and remove the other heuristics we had. We also disable the debug output to avoid hundreds lines of logs. Instead we selectively print the values that the emulator returns, every second until full boot is detected. We increase the Coin timeout for the shell script, from 5min to 10min, since it has been measured that it takes about 2.5min on a good day, and the script itself retries several times to restart the emulator in case of failure. Finally we adjust the coding style a bit to be more consistent. Fixes: QTQAINFRA-4681 Change-Id: I77062dceb91477e957696c89bfacb4ebabc34c1f Reviewed-by: Toni Saario <toni.saario@qt.io> Reviewed-by: Daniel Smith <Daniel.Smith@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 98f1034f96edbd7e7e88a513f8549259fd07c35b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Wait for boot to be fully complete with all packages installedDimitrios Apostolou2022-01-061-3/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | It happens that the android emulator supposedly "finishes" booting and getprop shows bootanim=stopped and boot_completed=1. But sometimes not all packages have been installed (`pm list packages` shows only 16 packages installed). After around half a minute the boot animation starts spinning (bootanim=running) again despite boot_completed=1 all the time. After some minutes the boot animation stops again and the list of packages contains 80 packages, among which is also the "development" package. Only then is the device ready for `adb install` of custom packages. This should be the last time we see the message: Error: Could not access the Package Manager. Is the system running? Just for completeness, we also properly disown the emulator process and its file descriptors, since the parent shell dies but the process stays. Fixes: QTQAINFRA-4681 Change-Id: I2b9d4bdc3dac0f10d09d4f09c83b4028ebc31f48 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io> (cherry picked from commit c8e0a742fb316cf266ec6d56b9b702f07557e2e4) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Do not hide android emulator outputDimitrios Apostolou2022-01-061-1/+4
| | | | | | | | | | | | | | It might print useful messages, even though they might come mixed with other test messages. However we can't leave stdout/stderr as is, because Coin agent hangs at the end of the shell script, waiting for them to close. So we just redirect them to a file. Change-Id: I797af78786b7df31131b3c3261e1c1fc00e5d460 Reviewed-by: Daniel Smith <Daniel.Smith@qt.io> (cherry picked from commit 8bf1beb9bd4281626eb6740a69ccb7cb70e56ae7) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Wait for android emulator to be up and running properlyDimitrios Apostolou2022-01-061-11/+41
| | | | | | | | Fixes: QTQAINFRA-4681 Change-Id: Icfa75b6982964970172726379e5a2a2bb640f8bf Reviewed-by: Daniel Smith <Daniel.Smith@qt.io> (cherry picked from commit 0aaf51404272e0b16d0e670d469ece0730412c35) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QLocale: Extend support for language codesIevgenii Meshcheriakov2021-12-092-4/+154
| | | | | | | | | | | | | | | | | | | | | | | | | | | This commit extends functionality for QLocale::codeToLanguage() and QLocale::languageToCode() by adding an additional argument that allows selection of the ISO 639 code-set to consider for those operations. The following ISO 639 codes are supported: * Part 1 * Part 2 bibliographic * Part 2 terminological * Part 3 As a result of this change the codeToLanguage() overload without the additional argument now returns a Language value if it matches any know code. Previously a valid language was returned only if the function argument matched the first code defined for that language from the above list. [ChangeLog][QtCore][QLocale] Added overloads for codeToLanguage() and languageToCode() that support specifying which ISO 639 codes to consider. Fixes: QTBUG-98129 Change-Id: I4da8a89e2e68a673cf63a621359cded609873fa2 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Say hello to qtwasmserverMorten Johan Sørvig2021-12-062-0/+161
| | | | | | | | | | | | | | | | | | | | | | | | | | | Development web server for web applications. Supports http and https. Sets COOP and COEP headers. The web server script supports certificate generation using mkcert (github.com/FiloSottile/mkcert). Briefly, mkcert supports generating server certificates for the current local ip address(es), using a certificate authority which can be installed on devices where the app should run. The COOP and COEP headers are required to enable the SharedArrayBuffer API, which is required for Emscripten’s pthreads implementation. The server serves the current directory on localhost by default. Use the “-a” argument to bind to an additional address, or "--all” to bind to all IPv4 addresses found on local network interfaces. Change the directory by passing it as a positional argument. Task-number: QTBUG-79087 Change-Id: Id0cba649e42af53ed8106e336a77e78398bcf901 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: David Skoland <david.skoland@qt.io>
* QLocale: Add support for Kaingang and Nheengatu languagesIevgenii Meshcheriakov2021-11-101-0/+2
| | | | | | | | | | Update the locale generation script to support Kaingang and Nheengatu languages. These are new in CLDR v40. Regenerate the locale data. Task-number: QTBUG-94358 Change-Id: I5195d5161d8c4d9f17129bbcfde39dfd3fcf1cd5 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* locale_database: Add entry for 'South Sudan Standard Time'Ievgenii Meshcheriakov2021-11-101-0/+1
| | | | | | | | | | | | This timezone is new in CLDR 40, Olson database calls it Africa/Juba. The offset is UTC+2. Reference: https://techcommunity.microsoft.com/t5/daylight-saving-time-time-zone/2021-time-zone-updates-for-republic-of-south-sudan-now-available/ba-p/2234981 Task-number: QTBUG-94358 Pick-to: 6.2 Change-Id: Ib70dbd9b472eb9cf8cb62a0eb5e241199148c077 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Use a HTTPS URL for the CLDR download linkIevgenii Meshcheriakov2021-11-051-1/+1
| | | | | | | | | FTP is insecure and is not supported by modern browsers anymore. See also: https://mywiki.wooledge.org/FtpMustDie Change-Id: Iad65d29912e79a4f3fadb9317bb5d9c5fe9b68d7 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* configure: Remove unused facility to define variable assignmentsJoerg Bornemann2021-11-011-7/+1
| | | | | | | | | | | | The function qt_commandline_assignment and everything related to it is removed from configure. It was only used in qtbase, and all usage has been removed. More general variable assignments will be added in a subsequent commit. Task-number: QTBUG-88210 Change-Id: I7cfa782e89914f2b0dc0277c46e425c8a825557e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Rename deprecated ANDROID_SDK_HOME to ANDROID_SDK_ROOTAssam Boudjelthia2021-10-221-2/+2
| | | | | | | Pick-to: 6.2 Task-number: QTBUG-97002 Change-Id: I777491f542e5388e04ed4c1b7ff5d9db75f9e778 Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
* Update UCD to Revision 28Ievgenii Meshcheriakov2021-10-1817-319/+1999
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This corresponds to Unicode version 14.0.0. Added the following scripts: * CyproMinoan * OldUyghur * Tangsa * Toto * Vithkuqi Full support of these scripts requires harfbuzz version 3.0.0, this version adds support for Unicode 14.0: https://github.com/harfbuzz/harfbuzz/releases/tag/3.0.0 With this release 10 test cases in tst_qurluts46 were fixed, one additional test case is failing in tst_qtextboundaryfinder and is commented out. In total 62 line break test cases and 44 word break test cases are failing. A comment in src/corelib/text/qt_attribution.json was updated to include the URL of the page containing UCD version number. Fixes: QTBUG-94359 Change-Id: Iefc9ff13f3df279f91cbdb1246d56f75b20ecb35 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Don't use libs in /usr/local for configure tests by default on macOSJoerg Bornemann2021-10-081-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit f3c7d22dd04afe8d889585fb5d6426f3d4591e74 we do not use libraries from /usr/local and other non-system locations on macOS. But our configure tests still did. This led to discrepancies between find_package calls in configure tests and the Qt project itself. Mentioned commit removed /usr/local and friends from CMAKE_SYSTEM_PREFIX_PATH. But we can't pass this variable to the configure tests, because CMake sets it up and overwrites our value. Pass CMAKE_SYSTEM_PREFIX_PATH and CMAKE_SYSTEM_FRAMEWORK_PATH as QT_CONFIGURE_TEST_CMAKE_SYSTEM_{PREFIX|FRAMEWORK}_PATH variables to tests. Tests with separate project files that call find_package() must add code like this after the project() command: if(DEFINED QT_CONFIGURE_TEST_CMAKE_SYSTEM_PREFIX_PATH) set(CMAKE_SYSTEM_PREFIX_PATH "${QT_CONFIGURE_TEST_CMAKE_SYSTEM_PREFIX_PATH}") endif() if(DEFINED QT_CONFIGURE_TEST_CMAKE_SYSTEM_FRAMEWORK_PATH) set(CMAKE_SYSTEM_FRAMEWORK_PATH "${QT_CONFIGURE_TEST_CMAKE_SYSTEM_FRAMEWORK_PATH}") endif() Adjust pro2cmake accordingly. Task-number: QTBUG-97076 Change-Id: Iac1622768d1200e6ea63be569eef12b7eada6c76 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Remove util/harfbuzz/update-harfbuzzIevgenii Meshcheriakov2021-10-051-63/+0
| | | | | | | | This is not the correct script to update harfbuzz. The correct one is src/3rdparty/harfbuzz-ng/import_from_tarball.sh Change-Id: Ic9ed43cae591cd6957effb10f557166c43498ad9 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Unicode: Add script to facilitate UCD updateIevgenii Meshcheriakov2021-10-052-11/+90
| | | | | | | | | | | | | Add a script that downloads UCD data for a given Unicode version, unpacks it, and copies the used files to appropriate locations inside the Qt source code. Also update the README and use an HTTPS link for the UCD data file. FTP links are no longer supported by some browsers. Task-number: QTBUG-94359 Change-Id: I2aa70a588f675e411fa6b3ce5b4444a7c07ed707 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* pro2cmake: Generate public CMake API code for projects by defaultAlexandru Croitor2021-09-271-4/+43
| | | | | | | | | | | | | | | | | | | | | | | | | Previously pro2cmake assumed that all .pro were internal Qt projects like qtbase/src/corelib.pro and generated private api calls like qt_internal_add_module(). Public CMake API calls (like qt_add_executable) were only generated if an --is-example command line flag was passed to the script or if the .pro file was located under the examples subfolder of a qt repo source directory (indicated by the presence of a .qmake.conf file). Change the logic to always generate public CMake API code by default, unless a .cmake.conf/.qmake.conf file is encountered with a valid repo module version inside, in which case apply the old heuristic of checking for the ./examples subfolder. The intention is to have a sensible default so that Qt users can use the script to more easily migrate their qmake projects without having to explicitly specify the --is-example flag. Pick-to: 6.2 Task-number: QTBUG-96799 Change-Id: I38f4f1b349a5b9688cf7bc5914d4fde72e660a98 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* pro2cmake: Augment searching of .qmake.conf with .cmake.confAlexandru Croitor2021-09-271-42/+58
| | | | | | | | | | | | | | | | | | Adapt to fb656c036db0549180073e133773862d08f6cd24 which removes .qmake.conf files in repos by searching for either .qmake.conf or .cmake.conf. The locations of those files are only used to compute relative paths based on the directory where the conf file is. For now, remove the warning if a conf file is not found, because we intend to change the script to generate user project code by default, instead of Qt internal project code and the warning looks scary. Pick-to: 6.2 Task-number: QTBUG-96799 Change-Id: I301e93d2ce5c05a52877eb6ed9eb9cee54fc5b15 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Skip unnecessary commands when cross-building toolsJoerg Bornemann2021-09-271-0/+3
| | | | | | | | | | | | | | | Introduce a new macro qt_internal_return_unless_building_tools which simply calls return() if tools are not built. This macro is supposed to be called after qt_internal_add_tool(). Using this macro avoids having to special-case code for when qt_internal_add_tool() creates imported targets in cross-builds. Adjust pro2cmake accordingly. Task-number: QTBUG-85084 Change-Id: I9e1c455c29535dd8c318efa890ebd739c42effc1 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Bump almost all cmake_minimum_required calls to 3.16Alexandru Croitor2021-09-221-1/+1
| | | | | | | | | | | | Needed for subsequent change that will check and error out if the version is lower than 3.16. We do that to ensure all policies introduced by CMake up to version 3.16 have their behavior set to NEW. Pick-to: 6.2 Task-number: QTBUG-95018 Change-Id: Ieaf82c10987dd797d86a3fd4a986a67e72de486a Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Remove conditioning on Android embeddedEdward Welbourne2021-09-176-18/+14
| | | | | | | | It is no longer handled separately from Android. This effectively reverts commit 6d50f746fe05a7008b63818e77784dd0c99270a1 Change-Id: Ic2d75b8c5a09895810913311ab2fe3355d4d2983 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* unicode: Fix typo s/supersting/superstring/Ievgenii Meshcheriakov2021-09-151-1/+1
| | | | | | | Thanks to Konstantin Ritt for spotting it. Change-Id: Ia3b5c4103b315cdb690fcd8b42239f000acdbef0 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Remove trailing zero rows from qtimezoneprivate_data_p.h's tablesEdward Welbourne2021-09-101-4/+1
| | | | | | | | | | They are not needed. Iterations over the table track their sizes. The size-of-table constants just needed their -1s removed. Incidentally use std::size() rather than sizeof(array)/sizeof(element). Change-Id: Ie20eef9f6f5786d93c10b830a87e006d3c5bcc1a Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* pro2cmake: Fix reported make flake8 issuesAlexandru Croitor2021-09-091-1/+0
| | | | | | | | | pro2cmake.py:458:5: F841 local variable 'is_parent_path' is assigned to but never used Pick-to: 6.2 Change-Id: I1c61efe5cf568fa0c99b07eed28b93d3444a5fac Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* pro2cmake: run make format to fix styling issuesAlexandru Croitor2021-09-094-34/+82
| | | | | | Pick-to: 6.2 Change-Id: I718e34d628576bb709096c0672da3a69b71ae8df Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* pro2cmake.py: generate examples with properties in qt_add_executable()Oliver Eftevaag2021-09-081-5/+18
| | | | | | | | | | | | | | | | This patch will slightly change the output of CMakeLists.txt files that are generated for examples. * set_target_properties() will no longer be added to the top-level scope. If the WIN32 and MACOSX_BUNDLE properties should be added, they will instead be added to qt_add_executable(). * The version in cmake_minimum_required() will now be 3.16, rather than 3.14. Pick-to: 6.2 Change-Id: I79e1865dace5538d2b7ff264da02f9e28a655ae9 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* unicode: Build IDNA map superstring greedilyIevgenii Meshcheriakov2021-09-031-7/+100
| | | | | | | | | | | | This slightly reduces memory required for mapping tables: uncompressed size: 1146 characters consolidated size: 904 characters memory usage: 47856 bytes Task-number: QTBUG-85323 Change-Id: Ic960789e433e80acf1a4e36791533a1c55a735c8 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* unicode: Pack 2 QChar's into one entry for IDNA mappingIevgenii Meshcheriakov2021-09-031-13/+18
| | | | | | | | | | | | | | | | Store up to 2 QChar's for mapping values inside the mapping table itself. This reduces the size of the superstring for other mapping values. results: uncompressed size: 1146 characters consolidated size: 1001 characters memory usage: 48050 bytes Task-number: QTBUG-85323 Change-Id: I922a6d2037551d0532ddae1a032ec1a9890f40a7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* unicode: More compact IDNA mapping tables implementationIevgenii Meshcheriakov2021-09-032-34/+111
| | | | | | | | | | | | | | | | | | | | | | This implementation stores mapping that are 1 QChar long inside the mapping tables, the longer mappings are stored as an offset and length pairs pointing into the common superstring of all such mapping values. Size comparison with the existing implementation follows. old: max mapping length: 6 memory usage: 103608 bytes new: uncompressed size: 3250 characters consolidated size: 2367 characters memory usage: 50782 bytes Task-number: QTBUG-85323 Change-Id: I9f2e32438dd463457e0fcd783136bb17145e27a8 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* tests: Add test for UTS #46 implementation using Unicode dataIevgenii Meshcheriakov2021-09-011-0/+2
| | | | | | | | | | | | The new test is called tst_qurluts46. It verifies QUrl::{to,from}Ace() functionality using the data from IdnaTestV2.txt supplied by Unicode. The file was downloaded from https://www.unicode.org/Public/idna/13.0.0/IdnaTestV2.txt Task-Id: QTBUG-85371 Change-Id: I4c6a4942ef6018dafc90cb84ef73f6b2614566d7 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* unicode: Generate tables for IDNA/UTS #46Ievgenii Meshcheriakov2021-08-263-2/+9000
| | | | | | | | | | | | | | | Update the Unicode data processing tool to generate properties and mapping tables needed to implement UTS #46 (https://unicode.org/reports/tr46/). The implementation extends the standard to allow usage of underscores in URLs. This is done for compatibility with DNS-SD and SMB protocols. The data file needed to generate the new properties was taken from https://www.unicode.org/Public/idna/13.0.0/IdnaMappingTable.txt Task-number: QTBUG-85323 Change-Id: I2c303bf8a08aefb18a7491fb9b55385563bfa219 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* CMake: Bump project versionsAlexandru Croitor2021-08-021-1/+1
| | | | | | Fixes: QTBUG-95454 Change-Id: I2467d3ae27b54424e59a7a4ab00d364eaec517d5 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* locale_database: Use context manager interface to update source filesIevgenii Meshcheriakov2021-07-203-129/+134
| | | | | | | | | | | | Use context manager interface (with statement) to atomically update source files. This ensures that all files are properly closed and the temporary file is removed even in case of errors. Task-number: QTBUG-83488 Pick-to: 6.2 Change-Id: I18cd96f1d03e467dea6212f6576a41e65f414ce1 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* locale_database: Use NamedTemporaryFile for temporary filesIevgenii Meshcheriakov2021-07-191-14/+7
| | | | | | | | | | | Using NamedTemporaryFile instead mkstemp + fdopen simplifies the code. It also makes it easier to switch to using context managers for handling source file modification. Task-number: QTBUG-83488 Pick-to: 6.2 Change-Id: Ibeae840ac6dde3d0b49cd7f985cfa6cd775b7f47 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* locale_database: Use pathlib to manipulate paths in Python codeIevgenii Meshcheriakov2021-07-195-65/+76
| | | | | | | | | | | pathlib's API is more modern and easier to use than os.path. It also allows to distinguish between paths and other strings in type annotations. Task-number: QTBUG-83488 Pick-to: 6.2 Change-Id: Ie6d9b4e35596f7f6befa4c9635f4a65ea3b20025 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* locale_database: Use argparse module to parse command line argumentsIevgenii Meshcheriakov2021-07-163-72/+71
| | | | | | | | | | | arparse is the standard way to parse command line arguments in Python. It provides help and usage information for free and is easier to extend than a custom argument parser. Task-number: QTBUG-83488 Pick-to: 6.2 Change-Id: I1e4c9cd914449e083d01932bc871ef10d26f0bc2 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* locale_database: Use f-strings in Python codeIevgenii Meshcheriakov2021-07-166-140/+131
| | | | | | | | | | | Replace most uses of str.format() and string arithmetic by f-strings. This results in more compact code and the code is easier to read when using an appropriate editor. Task-number: QTBUG-83488 Pick-to: 6.2 Change-Id: I3409f745b5d0324985cbd5690f5eda8d09b869ca Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* locale_database: Add schema for intermediate locale data filesIevgenii Meshcheriakov2021-07-162-0/+151
| | | | | | | | | The schema is in RelaxNG Compact syntax. It can be used to validate files produced by the cldr2qlocalexml.py script and also gives an overview of the file format. Change-Id: I344978f2201c5e67e236ab580a12ad33262f33cb Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* locale_database: Use super() to call base class methodsIevgenii Meshcheriakov2021-07-152-10/+5
| | | | | | | | | | | This is the standard way to call base class methods in Python 3 and it is shorter than the custom one used now. Task-number: QTBUG-83488 Pick-to: 6.2 Change-Id: Ifaff591a46e92148fbf514856109ff794a50c9f7 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* locale_database: Don't use u prefix for strings in python filesIevgenii Meshcheriakov2021-07-154-188/+188
| | | | | | | | | | This prefix is useless with Python 3. Task-number: QTBUG-83488 Pick-to: 6.2 Change-Id: Ic008d53fe506865759e9a5003f439f7ac107b9e6 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Convert CLDR scripts to Python 3Ievgenii Meshcheriakov2021-07-158-30/+23
| | | | | | | | | | | The convertion is moslty done using 2to3 script with manual cleanup afterwards. Task-number: QTBUG-83488 Pick-to: 6.2 Change-Id: I4d33b04e7269c55a83ff2deb876a23a78a89f39d Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>