Commit Graph

561 Commits

Author SHA1 Message Date
Kai Koehne
c7e8d91332 Windows: Fix lookup of LLVM_INSTALL_DIR environment variables
"_ARCH_" was dynamically replaced by either 32 or 64 in
qttools/configure.pri. Anyhow, this is not supported by the
CMake build, and not needed, since we only build with 64
toolchains on Windows.

the qmake builds can still automatically select the "right"
toolchain by either loading LLVM_INSTALL_DIR_msvc,
LLVM_INSTALL_DIR_mingw. But for CMake builds
we now explicitly set LLVM_INSTALL_DIR in each configuration.

Fixes: QTBUG-87215
Change-Id: Iaa7e6eab676c03b34ea723d9f71888ca9ee7bb1f
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-08 16:57:21 +01:00
Heikki Halmet
134c2a1cb0 Upgrade msys2 package and the installation script
This change will upgrade the msys2 package

Change also updates the script to use cached
prebuilt package if available.

This will also remove unneeded x86 installation

Pick-to: 5.15
Pick-to: 5.12
Task-number: QTQAINFRA-3986
Change-Id: Ia6299f9d4750376676276a75613e7f1098de4102
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2020-10-30 16:14:37 +02:00
Edward Welbourne
9521eee18b Fix permissions on power-shell scripts and the shbang in a bash script
The power-shell scripts don't need to be executable (MS-Win doesn't
care and we don't run them on Unix).

The shbang line in a shell script only works if it's at the start of
the file, not after a blank line.

Change-Id: I12a927f414621187f867864617276528a59652e5
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2020-10-23 11:32:57 +02:00
Heikki Halmet
e98b85be22 Add CentOS 8.1 to CI
Insignificant flag is added for two targets. RedHat 7.6
will be kept as parallel until insignificant flag can be
removed from CentOS

Task-number: QTQAINFRA-2760
Task-number: QTQAINFRA-3065
Change-Id: If124600309644e6a066805cd728bf12862006a21
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2020-10-16 15:57:06 +03:00
Heikki Halmet
f1e911e344 Provisioning: Replace SLES-15 with SLES-15 SP2
Task-number: QTQAINFRA-3921
Change-Id: I325a4b8f272dda80168aed1389e647bbd525b10f
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2020-10-12 19:28:28 +03:00
Cristian Adam
ca02358af2 Provision RedHat libclang packages only for RedHat
While bulding on CentOS with Red Hat libclang packages we end up with
linker errors due to differences in C++ ABI used.

Ubuntu 18.04 package works fine with CentOS 8.1.

Task-number: QTBUG-86968
Change-Id: Idf0435a06046fb791b8ca1086e6465521ba6006a
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2020-10-11 14:10:42 +02:00
Heikki Halmet
aee06febca Provisioning: Install Ninja binary
Install Ninja binary without using brew

Pick-to: 5.15
Pick-to: 5.12
Task-number: QTQAINFRA-3954
Change-Id: I2f50814e26e756bbf5cf3d74a4a1c5c00426ab4a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Toni Saario <toni.saario@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-10-08 21:31:29 +03:00
Heikki Halmet
b9158ca889 Provisioning: Update MSVC 2019 to version 16.7.5
Visual Studio 2019 can be updated with version specific online installer

Change-Id: I1ec1f96e68e8e3440d85240d09eec59a421708db
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2020-09-30 10:26:12 +03:00
Cristian Adam
74f29a622a CMake: Update provisioned CMake to version 3.18.3
This version should fix the iOS PCH builds and Ninja Multi-Config,
as well as the issues with AUTOMOC and Ninja.

Temporarily explicitly disable the pkg_config feature on Windows
hosts, because otherwise the configuration will break. The
FindPkgConfig module in 3.18 has some additional behavior for checking
if the found pkg-config works, and that's not handled by our
qt_build_internals_disable_pkg_config_if_needed function in qtbase.

Fixes: QTBUG-86862
Change-Id: I80514d3d7896ae09ab252aed10e86725fae0cc9c
Reviewed-by: Toni Saario <toni.saario@qt.io>
2020-09-25 08:58:20 +02:00
Heikki Halmet
2076163c5e Provisioning: Install STM32CubeProgrammer
This will install STM32CubeProgrammer to Windows 10 needed by
MCU RTA

Task-number: UL-3091
Change-Id: I97f7df33af9bf4c56849c1cf3c93b3a413ba6f44
Reviewed-by: Milla Pohjanheimo <milla.pohjanheimo@qt.io>
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
2020-09-24 10:12:54 +03:00
Heikki Halmet
08c253a625 Provisioning: Install MCUXpresso
MCUXpresso IDE provides the tools for flashing and onboard debugging

Task-number: UL-3091
Change-Id: I05224af4ae7528f219f1b682ecd14bd0e331e3bf
Reviewed-by: Milla Pohjanheimo <milla.pohjanheimo@qt.io>
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
2020-09-22 14:27:46 +03:00
Konstantin Tokarev
f73fa57088 Provisioning: Update Conan to 1.29.0
Task-bumber: QTQAINFRA-3916
Change-Id: I52d8a0255efcc7b4b139ec5050cf3d59003f12a9
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
2020-09-16 08:58:35 +03:00
Konstantin Tokarev
c79904c463 Provisioning: Update Conan packages
* Update libjpeg-turbo to 2.0.5
* Replace MinGW 7 packages with MinGW 8
* Remove zlib packages as Qt is consistently built with -qt-zlib now

Task-bumber: QTQAINFRA-3916
Change-Id: Ib3355265dc35326d30eacb60d0e3c97f06e6f9be
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
2020-09-16 08:58:33 +03:00
Johanna Äijälä
b43c199d4a Add missing Squish installation to win10 x86 Squish archive
Win10 x86 archive was missing msvc142 x86 package.

Pick-to: 5.15
Change-Id: I532c3a1129d75968c22b721390ff474548e642bf
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
2020-09-11 08:05:30 +00:00
Alexandru Croitor
572aadf1fb Android: Fix typo in ANDROID_SDK_HOME Windows host env var
Apparently qmake doesn't actually use the env var, but this failed
the WIP CMake Android configurations.

Amends e3600116b3

Change-Id: I30866af0eb63efefe72b709182f8cb5ba3250b12
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-09-09 13:58:17 +02:00
Heikki Halmet
e3600116b3 Provisioning: Update Android ndk and build tools
Task-number: QTQAINFRA-3846
Change-Id: I5d3c0efce86e3b8bc3c6070ed4a9e438647bb955
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2020-09-08 14:52:22 +03:00
Heikki Halmet
6e3cb240df Provisioning: Retry python installation if failure occurs
Python installation is flaky and we haven't be able to determine the
root cause for it. Re-running the installation might help.
(Might) because we can't reproduce this manually.

Task-number: QTQAINFRA-3875
Change-Id: Id46d250a02e01007f03dfbb886d75b23c23a6216
Reviewed-by: Toni Saario <toni.saario@qt.io>
2020-09-04 08:19:15 +03:00
Johanna Äijälä
91c267a677 Provisioning: update Squish to 6.6.1 based on Qt5.15.0
Add Squish for Web installation, update Squish license.

Pick-to:5.15

Change-Id: Id418830e82718afc20ac7390400342a6b0401a64
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
2020-09-03 10:39:41 +03:00
Heikki Halmet
9028eb10a5 Revert "Print all error messages during Python provisioning"
This reverts commit 59f141ec3c.

Reason for revert: Provisioning will continue even if python installation fails

Change-Id: Iaa0a48a2179c2198a32fb9a4feb55266cc64c396
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2020-09-01 09:00:36 +00:00
Heikki Halmet
59f141ec3c Print all error messages during Python provisioning
Print verbose, debugging and error messages to log in case of installer
failure.

Task-number: QTQAINFRA-3875
Change-Id: I2a701a655bd5e9b434011d3c68a2d8a31e119103
Reviewed-by: Toni Saario <toni.saario@qt.io>
2020-08-27 15:02:55 +03:00
Tony Sarajärvi
7a5069e979 Update QDoc libclang to 10.0
Change-Id: Ic4899f188c92502c6f6808dcc05922d4980cadfd
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-08-25 21:39:00 +02:00
Heikki Halmet
48dd29987f Provisioning: Add more sleep to msys2 installation
Latest Windows 10 v2004 needs more sleep for msys2 installation so that
gpg-agent will be killed after the installation process is finished.
Otherwise the provisioning won't continue and it will fail to timeout.

Task-number: QTQAINFRA-3691
Change-Id: I8b214415e777845e9ff711c1de9b09553b715d92
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2020-08-23 14:30:04 +03:00
Alexandru Croitor
177b0b0ea4 CMake: Update provisioned CMake version to 3.17.4
This CMake version among other things, fixes a bug with
Ninja Multi-Config writing into the same response file
on Windows, which can cause wrong libraries to be linked
(mixing Debug and Release libs).

Also disable PCH for iOS configs, because that seems to be broken
again.

We can't upgrade to 3.18.2 because that breaks iOS PCH in a different
way than 3.17.4, and because of an AUTOMOC regression introduced when
using Ninja Multi-Config.

Fixes: QTBUG-85586
Change-Id: I04c08d3a8bfb88433f2d50f4d41d11fc0df3d7ec
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-08-21 17:45:48 +02:00
Jędrzej Nowacki
015c86534c Enable use of sccache in the CI
The sccache may significantly reduce build times.
We need to evaluate real cases to see how much is to gain.

This patch enables sccache only on cmake, exluding one msvc target
with debug flag -Zi, which creates separate debug symbols.
Related sccache issue:
  https://github.com/mozilla/sccache/issues/242

Task-number: COIN-130
Done-with: Aapo Keskimolo <aapo.keskimolo@qt.io>
Change-Id: Ic1f599c5194bcdee9528a548dabead1097821cd1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-08-19 12:59:16 +03:00
Heikki Halmet
163c23f97c Provisioning: Upgrade GCC version from 9.2 to 9.3
Task-number: QTQAINFRA-3858
Change-Id: I5266162d1c144b117e3a61988f3348f2cd3d3c0a
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2020-08-07 08:29:30 +03:00
Simo Fält
969acbce6e Provisioning: Fix PYTHON3_WHEEL_CACHE pointing to wrong dir
Earlier we set the env variable point to latest Python install. It
did work by accident, while the default python was installed as last.
Now each python install has its own matching ENV variable that can
be used buildtime. The PYTHON3_WHEEL_CACHE will now point to 64 bit
default Python3, while the variable is already used in Qt codebase.

Pick-to: 5.15
Change-Id: I6a67936c06ed0209ef9e903120f2416aaa8eb3ff
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2020-07-30 21:27:48 +03:00
Toni Saario
3271bb2fe2 Provisioning: Add delay after network setting change
In many cases without waiting, next script would be missing network
and fails.

Pick-to: 5.15
Change-Id: Iab50945716860618b495029ce179183d844dc98a
Reviewed-by: Simo Fält <simo.falt@qt.io>
2020-07-22 05:33:26 +00:00
Simo Fält
607b33aab2 Provisioning: Install Python 3.8 for testing Qt for Python
This installs Python 3.8.1 to be used with Qt for Python. It keeps
the old 3.6 as a default python3.

Pick-to: 5.15
Change-Id: I8ea121514f6a4092f700688363c282cbea37a75b
Reviewed-by: Toni Saario <toni.saario@qt.io>
2020-07-16 10:10:23 +03:00
Liang Qi
029cabb729 Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
	coin/platform_configs/default.yaml
	coin/platform_configs/qt5.yaml
	coin/provisioning/qtci-linux-SLES-15-x86_64/02-zypperpackages.sh

Change-Id: I57f8a62c4f146cd1eda26885ce1507c072cb107f
2020-07-02 11:22:30 +02:00
Heikki Halmet
7143d018dc Provisioning: Update OpenSSL to version 1.1.1g
Task-number: QTQAINFRA-3819
Change-Id: Ie7d0f3a0c73d123c3f3536e6b2dd2eb8608eb9cd
(cherry picked from commit 2ac3dd2d6f)
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2020-06-30 07:00:46 +00:00
Tony Sarajärvi
75ae2c8579 Disable LSO from the network adapters on Windows
Disabling LSO from the adapter gives us huge performance boosts
on Windows. In our tests 2 VMs within the same hosts had transfer
speeds of 30 Mbit/s with this enabled, and 2Gbit/s with this disabled.

Change-Id: Id794e7559c9e9005043361289a3db246a8528dd4
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
(cherry picked from commit 97aa7a0031)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2020-06-29 05:21:35 +00:00
Tony Sarajärvi
97aa7a0031 Disable LSO from the network adapters on Windows
Disabling LSO from the adapter gives us huge performance boosts
on Windows. In our tests 2 VMs within the same hosts had transfer
speeds of 30 Mbit/s with this enabled, and 2Gbit/s with this disabled.

Pick-to: 5.15
Pick-to: 5.12
Change-Id: Id794e7559c9e9005043361289a3db246a8528dd4
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
2020-06-26 10:22:54 +00:00
Heikki Halmet
2ac3dd2d6f Provisioning: Update OpenSSL to version 1.1.1g
Pick-to: 5.15
Pick-to: 5.12
Task-number: QTQAINFRA-3819
Change-Id: Ie7d0f3a0c73d123c3f3536e6b2dd2eb8608eb9cd
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2020-06-23 06:36:38 +00:00
Heikki Halmet
5be3dc5f60 Provisioning: Change mounting folder for Squish installation
Sometimes some process is locking the mounted folder (/tmp) so that
it can't be unmounted untill the process has been ended.
Let's create squish folder under tmp and use that for mounting
instead

Task-number: QTQAINFRA-3709
Change-Id: I49ab8fd90af37a670e45764a176b62d7a732cc6c
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
(cherry picked from commit c671c2352e)
Reviewed-by: Johanna Äijälä <johanna.aijala@qt.io>
2020-06-12 08:33:24 +03:00
Heikki Halmet
30714c7cb7 Provisioning: Install Node.js
Node.js is needed by QtWebengine

Task-number: QTQAINFRA-3729
Change-Id: I23ece8567c569d8376eff52b7845589c60d069b8
Reviewed-by: Toni Saario <toni.saario@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 122cf4cc0e)
2020-06-10 20:50:30 +03:00
Heikki Halmet
2c0816aa99 Provisioning: Change mounting folder for Squish installation
Sometimes some process is locking the mounted folder (/tmp) so that
it can't be unmounted untill the process has been ended.
Let's create squish folder under tmp and use that for mounting
instead

Task-number: QTQAINFRA-3709
Change-Id: I49ab8fd90af37a670e45764a176b62d7a732cc6c
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
(cherry picked from commit c671c2352e)
Reviewed-by: Antti Kokko <antti.kokko@qt.io>
2020-06-10 07:24:41 +03:00
Heikki Halmet
122cf4cc0e Provisioning: Install Node.js
Node.js is needed by QtWebengine

Pick-to: 5.15
Task-number: QTQAINFRA-3729
Change-Id: I23ece8567c569d8376eff52b7845589c60d069b8
Reviewed-by: Toni Saario <toni.saario@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-06-09 20:58:09 +03:00
Heikki Halmet
c4e49e7464 Provisioning: Use signed opengl32 package
Task-number: QTBUG-80252
Change-Id: Ife9942796ed64c4e2894fb3342259c674cf5d7ed
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
(cherry picked from commit 9c33fe844a)
2020-06-09 20:57:19 +03:00
Heikki Halmet
5279f32fdf Provisioning: Fetch pre-installed squish from local cache
Squish installation is flaky so the installation phase has been
moved from provisioning to Jenkins. Jenkins job will install the
squish to target VM and copy it to local cache. This change only
fetch the installed squish packages from local cache and
uncompress those to VMs.

Task-number: QTQAINFRA-3510
Task-number: QTQAINFRA-3107
Change-Id: I862da3250120dc6a43d9c04d973a25a691ca66a1
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
(cherry picked from commit b0286d6cd6)
Reviewed-by: Toni Saario <toni.saario@qt.io>
2020-06-09 17:57:17 +00:00
Heikki Halmet
4ca819a713 Provisioning: Fetch pre-installed squish from local cache
Squish installation is flaky so the installation phase has been
moved from provisioning to Jenkins. Jenkins job will install the
squish to target VM and copy it to local cache. This change only
fetch the installed squish packages from local cache and
uncompress those to VMs.

Task-number: QTQAINFRA-3510
Task-number: QTQAINFRA-3107
Change-Id: I862da3250120dc6a43d9c04d973a25a691ca66a1
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
(cherry picked from commit b0286d6cd6)
Reviewed-by: Toni Saario <toni.saario@qt.io>
2020-06-09 06:09:45 +00:00
Heikki Halmet
9c33fe844a Provisioning: Use signed opengl32 package
Task-number: QTBUG-80252
Change-Id: Ife9942796ed64c4e2894fb3342259c674cf5d7ed
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-06-05 13:22:07 +03:00
Alexandru Croitor
68134db435 Update provisioned CMake version to 3.17.2
This should fix the ninja deps issue we had on Windows with the
Ninja Multi-Config generator, where calling ninja a second time to
rebuild the project failed.

More details at https://gitlab.kitware.com/cmake/cmake/-/issues/20723

Change-Id: I0029e57fbc704120d2241499a87cad0ad40c2e50
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-05-26 21:57:20 +02:00
Alexandru Croitor
3652f77aa3 Provisioning: Set macOS locale to "en_US.UTF-8"
The 419f42903154489e2dace8d1eba183036275448b commit in qtbase
introduced a regression where the tst_fusion test in qtqtuickcontrols2
hits a deadlock while trying to print a warning about a non-UTF-8
locale.

The warning is due to the fact that the agent executed in Coin's VM
does not have an explicit locale set, and thus it defaults to "C".
There is no explicit locale set in any .bashrc (or similar files),
and neither in any launchd configuration (because the agent is
executed at macOS startup via launchd).

The deadlock is due to trying to acquire the same lock twice while
trying to write output to stdout.

The test only deadlocks on CMake configurations, and not qmake
configurations, because Coin has a hardcoded instruction to set the
locale to UTF-8 when running qmake tests.

Until the deadlock situation is addressed in another change, the issue
can be fixed by setting the macOS configuration locale to UTF-8
explicitly, by assigning the LANG environment variable
into ~/.bashrc at provisioning time, like we do with other environment
variables like PATH.

Fixes: COIN-578
Change-Id: Ib6a5849a6868c1776dd425aeb8b5e7d6faa8cde0
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-05-07 21:52:16 +02:00
Heikki Halmet
8f653ce4f8 Provisioning: Add sleep before killing gpg-agent in msys installation
Task-number: QTQAINFRA-3691
Change-Id: If84fd2d0d1cd6dccadf21cbf688aca6182cdd920
(cherry picked from commit 5f03b84e65)
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2020-05-04 14:42:03 +03:00
Heikki Halmet
71043ca243 Provisioning: Update expired QNX license
Task-number: QTQAINFRA-3708
Change-Id: Id2d6d10d88fc50c9985014c44df0b1cf51cc3410
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2020-05-04 14:41:54 +03:00
Liang Qi
54c94ae681 Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
	.gitmodules
	coin/platform_configs/default.yaml
	coin/platform_configs/qt5.yaml
	coin/platform_configs/qtbase.yaml
	coin/platform_configs/qtwebkit.yaml
	coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/02-apt.sh

Change-Id: If6b0f7a671a69d6a2444ee4d26b324e4d269970c
2020-04-30 18:35:08 +02:00
Heikki Halmet
5f03b84e65 Provisioning: Add sleep before killing gpg-agent in msys installation
Task-number: QTQAINFRA-3691
Change-Id: If84fd2d0d1cd6dccadf21cbf688aca6182cdd920
Reviewed-by: Simo Fält <simo.falt@qt.io>
2020-04-30 11:05:15 +03:00
Liang Qi
cc4fdea014 Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts:
	.gitmodules
	coin/platform_configs/qt5.yaml
	coin/platform_configs/qtsdk.yaml
	coin/platform_configs/tqtc-qt-rta.yaml
	coin/provisioning/qtci-linux-Ubuntu-18.04-x86_64/02-apt.sh

Change-Id: I2221262edc024e0aa11b9dab4d08c2df3a0b53b0
2020-04-24 15:31:01 +02:00
Liang Qi
882294edc3 Merge remote-tracking branch 'origin/5.14.2' into 5.14
Conflicts:
	.gitmodules

Change-Id: I950588f85d1b39ba6ce994821db9f340b72fa6d2
2020-04-23 12:27:46 +02:00
Mårten Nordheim
176d9ce09c Don't manually rerun conan Run-Conan-Install
Modern conan will retry downloads on its own. Change default number of
attempts to 5 for more reliability.

Change-Id: Iafd4845b31c3e5fb296ba0b897cbf2030c412b04
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-04-15 09:53:44 +03:00