Compare commits
136 Commits
nightly/20
...
nightly/20
| Author | SHA1 | Date | |
|---|---|---|---|
| 73aeb02ebd | |||
| 9d91317089 | |||
| 474bc5f6a4 | |||
| f5b64e955b | |||
| b88627d125 | |||
| 200978a044 | |||
| a673ff9890 | |||
| 7803dd0991 | |||
| a8a736bc8c | |||
| ff7acf9932 | |||
| afde816b23 | |||
| 0745c3b798 | |||
| 1376ee1f4b | |||
| 2b03107bd5 | |||
| cd1ab0ed12 | |||
| a13c6ae0e7 | |||
| 1ef9a85148 | |||
| 072eafbaf4 | |||
| 201f3182ca | |||
| 23130a5752 | |||
| f28d47bc51 | |||
| ee7818eefb | |||
| f25e66aa6a | |||
| 79b19aec01 | |||
| 4c92cb9936 | |||
| 1c81553245 | |||
| 5c2fec53da | |||
| f706abe5a6 | |||
| 610c27f751 | |||
| 6d20d3b515 | |||
| a0b583aa8d | |||
| 3855a5e951 | |||
| 6689bce782 | |||
| 860ddf22b6 | |||
| ef716d657d | |||
| b0fe0251d1 | |||
| 1ec2d5f27b | |||
| 23316993e5 | |||
| d42fe78676 | |||
| 78724c2a7b | |||
| e14fbe9437 | |||
| 82c63d5a89 | |||
| a72af9cba5 | |||
| d7c642a2fe | |||
| 08f3339693 | |||
| 402515365d | |||
| df102068bc | |||
| d40e884a1f | |||
| 5371dac882 | |||
| 0f62829588 | |||
| 39da97396c | |||
| 406edda453 | |||
| bbbeda6a26 | |||
| 6b3efff7cc | |||
| 3531b8b354 | |||
| 487446cbc3 | |||
| d5349490f5 | |||
| 7650f45d6f | |||
| a98f6ca4e3 | |||
| 0b96cf5f1f | |||
| 07e0b10478 | |||
| b38e216721 | |||
| 91f32f2421 | |||
| 06c3ffa6ce | |||
| ae53d92c2e | |||
| 97e477416a | |||
| 3d3b4612df | |||
| 7060afe467 | |||
| f56026439a | |||
| 0a24bec5ec | |||
| 38b7880d5f | |||
| 71a88b75ab | |||
| 37e1780762 | |||
| e054fc9592 | |||
| 8305c0a082 | |||
| 7b03484497 | |||
| 4d29e11cd3 | |||
| f67a181e83 | |||
| 24edba9a2f | |||
| d1cde3792b | |||
| 3dfcae1c09 | |||
| 50ce16e0ab | |||
| 66e31bea1e | |||
| 154ce53e2d | |||
| 35f850289f | |||
| c8b52262bc | |||
| 4b17fa1a12 | |||
| 35482fa92f | |||
| 788ecaa496 | |||
| f40a8215d1 | |||
| c6ff91bdb1 | |||
| 99d415b1fe | |||
| 4edc2d6369 | |||
| 146dd21679 | |||
| fa2caa6d7c | |||
| 90e9a36a9e | |||
| 95e36ef89b | |||
| 79b906f12f | |||
| 92522d5cce | |||
| 25b74cdf6e | |||
| 0245671855 | |||
| 7c3eab9107 | |||
| 5b6ab48037 | |||
| 6003d007b8 | |||
| 30db1ba5f5 | |||
| 6aaac12758 | |||
| a0fc85d0a9 | |||
| 9c6bdec0f0 | |||
| ce8381e817 | |||
| 677ebe3297 | |||
| fa67ac0462 | |||
| c0c56023cc | |||
| e7ee0acf3a | |||
| f1f521973b | |||
| a4300308dc | |||
| 815d324118 | |||
| 2343f34b4f | |||
| 692ba0d5a8 | |||
| 84150e8977 | |||
| 9360458b9e | |||
| 46a955aa3d | |||
| 009a3902cb | |||
| 32b76c8da4 | |||
| 2bbd9637da | |||
| 2d664eacb1 | |||
| f1c90f316a | |||
| 5abed96b56 | |||
| f524c39c5f | |||
| 2215d51f98 | |||
| 127b39bec2 | |||
| 43fecd1d4a | |||
| 760f6dc72c | |||
| eaf155d8a4 | |||
| 3e7087e5e6 | |||
| 4ebb881be4 | |||
| a4014b7b6f |
1
.clang-tidy
Normal file
@ -0,0 +1 @@
|
||||
Checks: '-*,analyzer-cplusplus.NewDeleteLeaks'
|
||||
2
3rdparty/md4c
vendored
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2020-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2020-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Albert Babí <albert.babi@savoirfairelinux.com>
|
||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
|
||||
@ -21,7 +21,7 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
cmake_minimum_required(VERSION 3.19)
|
||||
|
||||
if(APPLE)
|
||||
project(Jami)
|
||||
@ -29,13 +29,11 @@ else()
|
||||
project(jami)
|
||||
endif()
|
||||
|
||||
include(${PROJECT_SOURCE_DIR}/extras/build/cmake/extra_tools.cmake)
|
||||
|
||||
option(WITH_DAEMON_SUBMODULE "Build with daemon submodule" ON)
|
||||
option(JAMICORE_AS_SUBDIR "Build Jami-core as a subdir dependency" OFF)
|
||||
option(ENABLE_TESTS "Build with tests" OFF)
|
||||
option(WITH_WEBENGINE "Build with WebEngine" ON)
|
||||
if(WITH_WEBENGINE)
|
||||
add_definitions(-DWITH_WEBENGINE)
|
||||
endif()
|
||||
option(ENABLE_LIBWRAP "Enable libwrap (single process mode)" ON)
|
||||
if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
OR ENABLE_LIBWRAP
|
||||
@ -51,6 +49,10 @@ if(ENABLE_ASAN AND NOT MSVC)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
|
||||
endif()
|
||||
|
||||
# These values are exposed to QML and are better off being defined as values.
|
||||
define_macro_with_value(WITH_WEBENGINE)
|
||||
define_macro_with_value(APPSTORE)
|
||||
|
||||
# jami-core
|
||||
if(NOT WITH_DAEMON_SUBMODULE)
|
||||
set(DAEMON_DIR ${PROJECT_SOURCE_DIR}/../daemon)
|
||||
@ -75,6 +77,37 @@ if(NOT MSVC)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-Og -ggdb")
|
||||
endif()
|
||||
|
||||
include(${PROJECT_SOURCE_DIR}/extras/build/cmake/contrib_tools.cmake)
|
||||
set(EXTRA_PATCHES_DIR ${PROJECT_SOURCE_DIR}/extras/patches)
|
||||
|
||||
list(APPEND QWINDOWKIT_OPTIONS
|
||||
QWINDOWKIT_BUILD_WIDGETS OFF
|
||||
QWINDOWKIT_INSTALL OFF
|
||||
QWINDOWKIT_BUILD_STATIC ON
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
list(APPEND QWINDOWKIT_OPTIONS QWINDOWKIT_ENABLE_WINDOWS_SYSTEM_BORDERS OFF)
|
||||
endif()
|
||||
|
||||
# qmsetup uses the wrong package dir on some distributions
|
||||
# (including Fedora and openSUSE Leap at least)
|
||||
check_distro_needs_qmsetup_patch(DISTRO_NEEDS_QMSETUP_PATCH)
|
||||
if(DISTRO_NEEDS_QMSETUP_PATCH)
|
||||
list(APPEND QWINDOWKIT_PATCHES ${EXTRA_PATCHES_DIR}/0001-fix-fedora-fc-build.patch)
|
||||
set(qmsetup_cmake_path ${CMAKE_BINARY_DIR}/_install/lib64/cmake/qmsetup)
|
||||
endif()
|
||||
|
||||
# qwindowkit (frameless window)
|
||||
add_fetch_content(
|
||||
TARGET qwindowkit
|
||||
URL https://github.com/stdware/qwindowkit.git
|
||||
BRANCH 79b1f3110754f9c21af2d7dacbd07b1a9dbaf6ef
|
||||
PATCHES ${QWINDOWKIT_PATCHES}
|
||||
OPTIONS ${QWINDOWKIT_OPTIONS}
|
||||
)
|
||||
list(APPEND CLIENT_INCLUDE_DIRS ${QWindowKit_BINARY_DIR}/include)
|
||||
list(APPEND CLIENT_LIBS QWindowKit::Quick)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
@ -97,19 +130,24 @@ set(TESTS_DIR ${PROJECT_SOURCE_DIR}/tests)
|
||||
# Here we let find_package(<PackageName>...) try to find Qt 6,
|
||||
# If it is found, find_package will succeed, and the CMake variable
|
||||
# QT_VERSION_MAJOR will be defined 6.
|
||||
set(QT6_MINVER_MINOR 5)
|
||||
set(QT6_MINVER_MINOR 6)
|
||||
if(QT6_VER AND QT6_PATH)
|
||||
find_package(QT NAMES Qt6 REQUIRED
|
||||
PATHS ${QT6_PATH} NO_DEFAULT_PATH)
|
||||
else()
|
||||
message(STATUS "Looking for Qt 6" ${CMAKE_PREFIX_PATH})
|
||||
message(STATUS "Looking for Qt 6 in ${CMAKE_PREFIX_PATH}")
|
||||
find_package(QT NAMES Qt6 REQUIRED)
|
||||
endif()
|
||||
if (${QT_VERSION_MINOR} GREATER_EQUAL ${QT6_MINVER_MINOR})
|
||||
# Qt version is 6.5 or higher
|
||||
# Enforce a minimum Qt version of 6.6.2 for the Windows build
|
||||
# https://github.com/stdware/qwindowkit/issues/23
|
||||
if(MSVC AND ${QT_VERSION_MINOR} EQUAL 6 AND ${QT_VERSION_PATCH} LESS 2)
|
||||
message(FATAL_ERROR "Qt 6.6.2 or higher is required. Found ${QT_VERSION}")
|
||||
endif()
|
||||
# Qt version is 6.6 or higher
|
||||
message(STATUS "Found a suitable Qt version ${QT_VERSION}")
|
||||
else()
|
||||
message(FATAL_ERROR "Qt 6.5 or higher is required. Found ${QT_VERSION}")
|
||||
message(FATAL_ERROR "Qt 6.6 or higher is required. Found ${QT_VERSION}")
|
||||
endif()
|
||||
|
||||
# libjamiclient
|
||||
@ -188,6 +226,7 @@ execute_process(
|
||||
${PYTHON_EXEC} ${SCRIPTS_DIR}/gen_qml_qrc.py ${GEN_QRC_ARGS}
|
||||
WORKING_DIRECTORY ${APP_SRC_DIR})
|
||||
set(QML_RESOURCES_QML ${APP_SRC_DIR}/qml.qrc)
|
||||
|
||||
# Image and misc. resources
|
||||
# check files in the resources directory and force a reconfigure if it
|
||||
# changes
|
||||
@ -199,6 +238,11 @@ execute_process(
|
||||
WORKING_DIRECTORY ${APP_SRC_DIR})
|
||||
set(QML_RESOURCES ${APP_SRC_DIR}/resources.qrc)
|
||||
|
||||
# Find modules (QtCreator) under the root source dir.
|
||||
list(APPEND QML_DIRS ${APP_SRC_DIR})
|
||||
set(QML_IMPORT_PATH ${QML_DIRS}
|
||||
CACHE STRING "Qt Creator extra qml import paths" FORCE)
|
||||
|
||||
# library compatibility (boost, libnotify, etc.)
|
||||
add_definitions(-DQT_NO_KEYWORDS)
|
||||
|
||||
@ -262,6 +306,7 @@ set(COMMON_SOURCES
|
||||
${APP_SRC_DIR}/pluginversionmanager.cpp)
|
||||
|
||||
set(COMMON_HEADERS
|
||||
${APP_SRC_DIR}/global.h
|
||||
${APP_SRC_DIR}/avatarimageprovider.h
|
||||
${APP_SRC_DIR}/networkmanager.h
|
||||
${APP_SRC_DIR}/smartlistmodel.h
|
||||
@ -343,6 +388,8 @@ if(Vulkan_FOUND)
|
||||
add_definitions(-DHAS_VULKAN)
|
||||
include_directories(${Vulkan_INCLUDE_DIR})
|
||||
endif()
|
||||
# Define PREFER_VULKAN to prefer Vulkan over the default API
|
||||
# on GNU/Linux and Windows. Metal is always preferred on macOS.
|
||||
|
||||
if(MSVC)
|
||||
set(WINDOWS_SYS_LIBS
|
||||
@ -408,10 +455,12 @@ elseif (NOT APPLE)
|
||||
${APP_SRC_DIR}/xrectsel.c
|
||||
${APP_SRC_DIR}/connectivitymonitor.cpp
|
||||
${APP_SRC_DIR}/dbuserrorhandler.cpp
|
||||
${APP_SRC_DIR}/appversionmanager.cpp)
|
||||
${APP_SRC_DIR}/appversionmanager.cpp
|
||||
${APP_SRC_DIR}/screencastportal.cpp)
|
||||
list(APPEND COMMON_HEADERS
|
||||
${APP_SRC_DIR}/xrectsel.h
|
||||
${APP_SRC_DIR}/dbuserrorhandler.h)
|
||||
${APP_SRC_DIR}/dbuserrorhandler.h
|
||||
${APP_SRC_DIR}/screencastportal.h)
|
||||
list(APPEND QT_MODULES DBus)
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
@ -426,6 +475,11 @@ elseif (NOT APPLE)
|
||||
add_definitions(${GIO_CFLAGS})
|
||||
endif()
|
||||
|
||||
pkg_check_modules(GIOUNIX REQUIRED gio-unix-2.0)
|
||||
if(GIOUNIX_FOUND)
|
||||
add_definitions(${GIOUNIX_CFLAGS})
|
||||
endif()
|
||||
|
||||
pkg_check_modules(LIBNM libnm)
|
||||
if(LIBNM_FOUND)
|
||||
add_definitions(-DUSE_LIBNM)
|
||||
@ -537,6 +591,7 @@ include_directories(
|
||||
if(ENABLE_LIBWRAP)
|
||||
list(APPEND COMMON_HEADERS
|
||||
${LIBCLIENT_SRC_DIR}/qtwrapper/instancemanager_wrap.h)
|
||||
add_definitions(-DENABLE_LIBWRAP=true)
|
||||
endif()
|
||||
|
||||
# SFPM
|
||||
@ -545,6 +600,7 @@ add_subdirectory(3rdparty/SortFilterProxyModel)
|
||||
set(SFPM_OBJECTS $<TARGET_OBJECTS:SortFilterProxyModel>)
|
||||
|
||||
# md4c
|
||||
set(BUILD_MD2HTML_EXECUTABLE OFF CACHE BOOL "Don't build md2html executable" FORCE)
|
||||
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Don't build shared md4c library" FORCE)
|
||||
add_subdirectory(3rdparty/md4c EXCLUDE_FROM_ALL)
|
||||
list(APPEND CLIENT_LINK_DIRS ${MD4C_BINARY_DIR}/src)
|
||||
@ -798,7 +854,6 @@ else()
|
||||
MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}")
|
||||
if(APPSTORE)
|
||||
message(STATUS "app store version")
|
||||
add_definitions(-DAPPSTORE)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/resources/entitlements/appstore/Jami.entitlements")
|
||||
else()
|
||||
@ -827,7 +882,7 @@ qt_import_qml_plugins(${PROJECT_NAME})
|
||||
qt_finalize_executable(${PROJECT_NAME})
|
||||
|
||||
# tests
|
||||
if(ENABLE_TESTS)
|
||||
if(BUILD_TESTING)
|
||||
message("Add Jami tests")
|
||||
add_subdirectory(${TESTS_DIR})
|
||||
endif()
|
||||
|
||||
29
INSTALL.md
@ -7,9 +7,9 @@ There are essentially two ways to build `client-qt`:
|
||||
|
||||
## Disclaimer
|
||||
|
||||
Because the client-qt is multi-platforms and supporting macOS, we need a recent version of Qt to do rendering with Metal. So, Qt 6.5 is necessary.
|
||||
Because the client-qt is multi-platforms and supporting macOS, we need a recent version of Qt to do rendering with Metal. So, Qt 6.6 is necessary.
|
||||
This version is generally not packaged on a lot of platforms, and to control available plugins and such, we have our own Qt packaged (available on https://jami.net on the distributions we support).
|
||||
So, you will need to get Qt 6.5 first. For this, there is 3 methods:
|
||||
So, you will need to get Qt 6.6 first. For this, there is 3 methods:
|
||||
|
||||
### Qt from our repo (recommended)
|
||||
|
||||
@ -49,7 +49,7 @@ sudo dnf update && sudo dnf install jami-libqt
|
||||
|
||||
### Qt from your distribution
|
||||
|
||||
If Qt 6.5 is available, you can use the packages from your distribution:
|
||||
If Qt 6.6 is available, you can use the packages from your distribution:
|
||||
|
||||
It should be (For now qt5 only is packaged by distributions, so names can change).
|
||||
|
||||
@ -118,7 +118,7 @@ Then, you can build daemon and the client using:
|
||||
|
||||
If you use a Qt version that is not system-wide installed, you need to
|
||||
specify its path using the `--qt` flag, e.g.
|
||||
`./build.py --install --qt=/home/<username>/Qt/6.5.1/gcc_64`.
|
||||
`./build.py --install --qt=/home/<username>/Qt/6.6.1/gcc_64`.
|
||||
|
||||
Now you will have the daemon in `daemon/bin/dbus/jamid` and the client in
|
||||
`build/jami`. You can now run Jami using:
|
||||
@ -131,10 +131,15 @@ Notes:
|
||||
|
||||
- `--global-install` to install client-qt globally under /usr/local
|
||||
- `--prefix` to change the destination of the install.
|
||||
+ For developers:
|
||||
+ `--asan` add address sanitizer on the binary
|
||||
+ `--debug` enable debug symbols
|
||||
+ `--testing` will build the tests for both the daemon and client
|
||||
+ `--no-libwrap` will build the DBUS version.
|
||||
|
||||
## Build only the client
|
||||
|
||||
In order to use the Qt Client it is necessary to have the Qt version 6.5 or higher. If your system does not have it you can install it [from sources or download the binary installer](https://www.qt.io/download).
|
||||
In order to use the Qt Client it is necessary to have the Qt version 6.6 or higher. If your system does not have it you can install it [from sources or download the binary installer](https://www.qt.io/download).
|
||||
|
||||
## Build only this repository
|
||||
|
||||
@ -184,7 +189,7 @@ Only 64-bit MSVC build can be compiled.
|
||||
|
||||
- Download [Qt (Open Source)](https://www.qt.io/download-open-source?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5)
|
||||
|
||||
- Using the online installer, install the following Qt 6.5.3 components:
|
||||
- Using the online installer, install the following Qt 6.6.1 components:
|
||||
|
||||
- Git 2.10.2
|
||||
- MSVC 2019 64-bit
|
||||
@ -203,11 +208,11 @@ Only 64-bit MSVC build can be compiled.
|
||||
| ------------ | ------------ | --------------------------------------------------- | ---------------- |
|
||||
| Requirement: | 10.0.18362.0 | V142 (VisualStudio 2019) / V143 (VisualStudio 2022) | matching Toolset |
|
||||
|
||||
- Install Qt Vs Tools under extensions, and configure msvc2017*64 path under Qt Options. \_See the Qt notes below.*
|
||||
- Install Qt Vs Tools under extensions, and configure msvc2019\_64 path under Qt Options. *See the Qt notes below.*
|
||||
|
||||
| | Qt Version |
|
||||
| -------------------- | ---------- |
|
||||
| Minimum requirement: | 6.5.3 |
|
||||
| Minimum requirement: | 6.6.2 |
|
||||
|
||||
- Install [Python3](https://www.python.org/downloads/) for Windows
|
||||
|
||||
@ -233,7 +238,7 @@ Only 64-bit MSVC build can be compiled.
|
||||
- Using a new **Non-Elevated Command Prompt**
|
||||
|
||||
```bash
|
||||
python build.py --install --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.5.3/msvc2019_64)
|
||||
python build.py --install --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.6.2/msvc2019_64)
|
||||
```
|
||||
|
||||
> **SDK** Note:
|
||||
@ -276,7 +281,7 @@ Once the build has finished, you should then be able to use the Visual Studio So
|
||||
|
||||
```
|
||||
python extras\scripts\build-windows.py --init
|
||||
python extras\scripts\build-windows.py --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.5.3/msvc2019_64)
|
||||
python extras\scripts\build-windows.py --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.6.2/msvc2019_64)
|
||||
```
|
||||
|
||||
## Building On MacOS
|
||||
@ -286,9 +291,9 @@ Once the build has finished, you should then be able to use the Visual Studio So
|
||||
- macOS minimum version 10.15
|
||||
- install python3
|
||||
- download xcode
|
||||
- install Qt 6.5
|
||||
- install Qt 6.6
|
||||
|
||||
Qt 6.5 can be installed via brew
|
||||
Qt 6.6 can be installed via brew
|
||||
|
||||
```bash
|
||||
brew install qt
|
||||
|
||||
@ -38,7 +38,7 @@ cf [INSTALL.md](/INSTALL.md)
|
||||
|
||||
# License
|
||||
|
||||
Copyright (C) 2020-2023 Savoir-faire Linux Inc.
|
||||
Copyright (C) 2020-2024 Savoir-faire Linux Inc.
|
||||
|
||||
Jami is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
24
build.py
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
# build.py --- Convenience script for building and running Jami
|
||||
|
||||
# Copyright (C) 2016-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2016-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -99,7 +99,7 @@ ZYPPER_DEPENDENCIES = [
|
||||
# daemon
|
||||
'speexdsp-devel', 'speex-devel', 'libdbus-c++-devel', 'jsoncpp-devel', 'yaml-cpp-devel',
|
||||
'yasm', 'libuuid-devel', 'libnettle-devel', 'libopus-devel', 'libexpat-devel',
|
||||
'libgnutls-devel', 'msgpack-devel', 'libavcodec-devel', 'libavdevice-devel', 'pcre-devel',
|
||||
'libgnutls-devel', 'msgpack-c-devel', 'msgpack-cxx-devel', 'libavcodec-devel', 'libavdevice-devel', 'pcre-devel',
|
||||
'alsa-devel', 'libpulse-devel', 'libudev-devel', 'libva-devel', 'libvdpau-devel',
|
||||
'libopenssl-devel', 'libavutil-devel',
|
||||
]
|
||||
@ -108,8 +108,10 @@ ZYPPER_CLIENT_DEPENDENCIES = [
|
||||
# lrc
|
||||
'qt6-core-devel', 'qt6-dbus-devel', 'qt6-linguist-devel',
|
||||
# client-qt
|
||||
'qt6-svg-devel', 'qt6-multimedia-devel', 'qt6-declarative-devel',
|
||||
'qt6-quickcontrols2-devel',
|
||||
'qt6-concurrent-devel', 'qt6-qt5compat-devel', 'qt6-qt5compat-imports',
|
||||
'qt6-svg-devel', 'qt6-multimedia-devel', 'qt6-multimedia-imports',
|
||||
'qt6-declarative-devel', 'qt6-qmlcompiler-private-devel',
|
||||
'qt6-quickcontrols2-devel', 'qt6-shadertools-devel',
|
||||
'qrencode-devel', 'NetworkManager-devel'
|
||||
]
|
||||
|
||||
@ -244,8 +246,8 @@ def run_dependencies(args):
|
||||
|
||||
elif args.distribution in DNF_BASED_DISTROS:
|
||||
if args.assume_yes:
|
||||
for i, _ in enumerate(DNF_INSTALL_SCRIPT):
|
||||
DNF_INSTALL_SCRIPT[i] += ASSUME_YES_FLAG
|
||||
for i, _ in enumerate(RPM_INSTALL_SCRIPT):
|
||||
RPM_INSTALL_SCRIPT[i] += ASSUME_YES_FLAG
|
||||
execute_script(
|
||||
RPM_INSTALL_SCRIPT,
|
||||
{"packages": ' '.join(map(shlex.quote, DNF_DEPENDENCIES))})
|
||||
@ -387,6 +389,8 @@ def run_install(args):
|
||||
install_args.append('-u')
|
||||
if args.debug:
|
||||
install_args.append('-d')
|
||||
if args.testing:
|
||||
install_args.append('-t')
|
||||
if args.asan:
|
||||
install_args.append('-A')
|
||||
if args.no_libwrap:
|
||||
@ -395,6 +399,8 @@ def run_install(args):
|
||||
install_args.append('-w')
|
||||
if args.arch:
|
||||
install_args += ('-a', args.arch)
|
||||
if args.extra_cmake_flags:
|
||||
install_args += ('-D', args.extra_cmake_flags)
|
||||
|
||||
if args.distribution == OSX_DISTRIBUTION_NAME:
|
||||
# The `universal_newlines` parameter has been renamed to `text` in
|
||||
@ -723,6 +729,9 @@ def parse_args():
|
||||
default=True, action='store_false')
|
||||
ap.add_argument('--qt', type=str,
|
||||
help='Use the Qt path supplied')
|
||||
ap.add_argument('--testing', dest='testing',
|
||||
default=False, action='store_true',
|
||||
help='Enable testing for both client and daemon')
|
||||
ap.add_argument('--no-libwrap', dest='no_libwrap',
|
||||
default=False, action='store_true',
|
||||
help='Disable libwrap. Also set --disable-shared option to daemon configure')
|
||||
@ -738,6 +747,9 @@ def parse_args():
|
||||
ap.add_argument('--pywinmake', dest='pywinmake',
|
||||
default=False, action='store_true',
|
||||
help='Build Jami for Windows using pywinmake')
|
||||
# Allow supplying extra congifure flags to the client cmake.
|
||||
ap.add_argument('--extra-cmake-flags', type=str,
|
||||
help='Extra flags to pass to the client cmake')
|
||||
|
||||
dist = choose_distribution()
|
||||
|
||||
|
||||
2
daemon
@ -1,7 +1,7 @@
|
||||
# Taken from:
|
||||
# https://cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F
|
||||
#
|
||||
# Copyright (C) 2021-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2021-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
92
extras/build/cmake/contrib_tools.cmake
Normal file
@ -0,0 +1,92 @@
|
||||
# Copyright (C) 2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
include(FetchContent)
|
||||
include(CMakeParseArguments)
|
||||
|
||||
# Helper function to check if we're on a distribution that requires us
|
||||
# to apply a patch in order for qmsetup to use the right package directory
|
||||
function(check_distro_needs_qmsetup_patch DISTRO_NEEDS_QMSETUP_PATCH)
|
||||
set(${DISTRO_NEEDS_QMSETUP_PATCH} FALSE PARENT_SCOPE)
|
||||
# Check for the existence of /etc/os-release
|
||||
if(EXISTS "/etc/os-release")
|
||||
# Read the content of the file
|
||||
file(READ "/etc/os-release" OS_RELEASE_CONTENT)
|
||||
# Check if the distribution is Fedora or Red Hat-based
|
||||
string(REGEX MATCH "ID=fedora|ID_LIKE=\"rhel fedora\"|ID_LIKE=\"rhel centos fedora\"" RED_HAT_BASED "${OS_RELEASE_CONTENT}")
|
||||
# Check if the distribution is openSUSE Leap
|
||||
string(REGEX MATCH "ID=\"opensuse-leap\"" OPENSUSE_LEAP "${OS_RELEASE_CONTENT}")
|
||||
if(RED_HAT_BASED)
|
||||
set(${DISTRO_NEEDS_QMSETUP_PATCH} TRUE PARENT_SCOPE)
|
||||
message(STATUS "Running on a Red Hat-based distribution (Fedora, RHEL, CentOS, etc.)")
|
||||
elseif(OPENSUSE_LEAP)
|
||||
set(${DISTRO_NEEDS_QMSETUP_PATCH} TRUE PARENT_SCOPE)
|
||||
message(STATUS "Running on openSUSE Leap")
|
||||
else()
|
||||
message(STATUS "Distribution is not openSUSE Leap or Red Hat-based")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "Cannot determine the distribution type: /etc/os-release not found")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Helper function to add external content with patches and options.
|
||||
# Parameters:
|
||||
# TARGET: Name of the target to create
|
||||
# URL: URL of the git repository
|
||||
# BRANCH: Branch to checkout
|
||||
# PATCHES: List of patch files to apply
|
||||
# OPTIONS: List of options to set prior to calling FetchContent_MakeAvailable
|
||||
function(add_fetch_content)
|
||||
# Parse function arguments
|
||||
set(oneValueArgs TARGET URL BRANCH)
|
||||
set(multiValueArgs PATCHES OPTIONS)
|
||||
cmake_parse_arguments(PARSE_ARGV 0 AFCWP "" "${oneValueArgs}" "${multiValueArgs}")
|
||||
|
||||
# Create a string for the patch command
|
||||
set(patch_cmd "")
|
||||
# If patches is not empty, start the command with "git apply"
|
||||
if(NOT "${AFCWP_PATCHES}" STREQUAL "")
|
||||
set(patch_cmd git apply)
|
||||
endif()
|
||||
foreach(patch_file IN LISTS AFCWP_PATCHES)
|
||||
list(APPEND patch_cmd "${patch_file}")
|
||||
endforeach()
|
||||
|
||||
# Declare the external content
|
||||
FetchContent_Declare(
|
||||
${AFCWP_TARGET}
|
||||
GIT_REPOSITORY ${AFCWP_URL}
|
||||
GIT_TAG ${AFCWP_BRANCH}
|
||||
PATCH_COMMAND ${patch_cmd}
|
||||
UPDATE_DISCONNECTED 1
|
||||
)
|
||||
|
||||
# Apply options
|
||||
list(LENGTH AFCWP_OPTIONS options_length)
|
||||
if(NOT ${options_length} EQUAL 0)
|
||||
math(EXPR max_idx "${options_length} - 1")
|
||||
foreach(idx RANGE 0 ${max_idx} 2)
|
||||
list(GET AFCWP_OPTIONS ${idx} key)
|
||||
math(EXPR value_idx "${idx} + 1")
|
||||
list(GET AFCWP_OPTIONS ${value_idx} value)
|
||||
set(${key} ${value} CACHE STRING "${key}" FORCE)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# Make the content available
|
||||
FetchContent_MakeAvailable(${AFCWP_TARGET})
|
||||
endfunction()
|
||||
38
extras/build/cmake/extra_tools.cmake
Normal file
@ -0,0 +1,38 @@
|
||||
# Copyright (C) 2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
# Function to define a macro with a specific value or default to 0 if not already set.
|
||||
# This is useful to if within the code we don't want to use #ifdef but rather use the
|
||||
# value of the macro.
|
||||
function(define_macro_with_value MACRO_NAME)
|
||||
if(DEFINED ${MACRO_NAME})
|
||||
# Convert ON/OFF to 1/0
|
||||
if(${${MACRO_NAME}} STREQUAL "ON")
|
||||
set(MACRO_VALUE "1")
|
||||
elseif(${${MACRO_NAME}} STREQUAL "OFF")
|
||||
set(MACRO_VALUE "0")
|
||||
# If the macro is defined and its value is neither "ON" nor "OFF",
|
||||
# set MACRO_VALUE to the macro's current value
|
||||
else()
|
||||
set(MACRO_VALUE "${${MACRO_NAME}}")
|
||||
endif()
|
||||
else()
|
||||
set(MACRO_VALUE "0")
|
||||
endif()
|
||||
|
||||
# Add the macro definition to the compiler command line
|
||||
add_definitions("-D${MACRO_NAME}=${MACRO_VALUE}")
|
||||
endfunction()
|
||||
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2015-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2015-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
|
||||
# Author: Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
FROM ubuntu:20.04
|
||||
FROM ubuntu:22.04
|
||||
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
ENV QT_QUICK_BACKEND software
|
||||
@ -10,7 +10,7 @@ RUN apt-get update && \
|
||||
|
||||
RUN apt install gnupg dirmngr ca-certificates curl --no-install-recommends
|
||||
RUN curl -s https://dl.jami.net/public-key.gpg | tee /usr/share/keyrings/jami-archive-keyring.gpg > /dev/null
|
||||
RUN sh -c "echo 'deb [signed-by=/usr/share/keyrings/jami-archive-keyring.gpg] https://dl.jami.net/internal/ubuntu_20.04/ jami main' > /etc/apt/sources.list.d/jami.list"
|
||||
RUN sh -c "echo 'deb [signed-by=/usr/share/keyrings/jami-archive-keyring.gpg] https://dl.jami.net/internal/ubuntu_22.04/ jami main' > /etc/apt/sources.list.d/jami.list"
|
||||
RUN apt-get update && apt-get install libqt-jami -y
|
||||
|
||||
RUN apt-get install -y -o Acquire::Retries=10 \
|
||||
@ -51,6 +51,7 @@ RUN apt-get install -y -o Acquire::Retries=10 \
|
||||
libswscale-dev \
|
||||
libavdevice-dev \
|
||||
libopus-dev \
|
||||
libpipewire-0.3-dev \
|
||||
libudev-dev \
|
||||
libgsm1-dev \
|
||||
libjsoncpp-dev \
|
||||
@ -66,4 +67,9 @@ RUN apt-get install -y -o Acquire::Retries=10 \
|
||||
libssl-dev
|
||||
RUN apt-get install -y pandoc \
|
||||
googletest \
|
||||
libgtest-dev
|
||||
libgtest-dev \
|
||||
wget
|
||||
|
||||
# Install a recent version of CMake
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
4
extras/ci/client-qt-gnulinux/Jenkinsfile
vendored
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2022-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2022-2024 Savoir-faire Linux Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
@ -113,7 +113,7 @@ pipeline {
|
||||
cd ${dockerTopDir}
|
||||
./build.py --install --qt /usr/lib/libqt-jami/
|
||||
cd build
|
||||
cmake .. -DENABLE_TESTS=True
|
||||
cmake .. -DBUILD_TESTING=True
|
||||
make -j${cpuCount}
|
||||
""")
|
||||
// Run tests
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2015-2023 Savoir-faire Linux Inc. -->
|
||||
<!-- Copyright (C) 2015-2024 Savoir-faire Linux Inc. -->
|
||||
<component type="desktop-application">
|
||||
<id>net.jami.Jami</id>
|
||||
<metadata_license>CC-BY-SA-3.0</metadata_license>
|
||||
|
||||
2
extras/packaging/gnu-linux/Jenkinsfile
vendored
@ -1,4 +1,4 @@
|
||||
// Copyright (C) 2021-2023 Savoir-faire Linux Inc.
|
||||
// Copyright (C) 2021-2024 Savoir-faire Linux Inc.
|
||||
//
|
||||
// Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
|
||||
//
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
# -*- mode: makefile; -*-
|
||||
# Copyright (C) 2016-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2016-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
|
||||
#
|
||||
@ -46,9 +46,9 @@ DEBIAN_DSC_FILENAME := jami_$(DEBIAN_VERSION).dsc
|
||||
|
||||
# Qt versions
|
||||
QT_MAJOR := 6
|
||||
QT_MINOR := 5
|
||||
QT_PATCH := 4
|
||||
QT_TARBALL_CHECKSUM := 7cda4d119aad27a3887329cfc285f2aba5da85601212bcb0aea27bd6b7b544cb
|
||||
QT_MINOR := 6
|
||||
QT_PATCH := 1
|
||||
QT_TARBALL_CHECKSUM := dd3668f65645fe270bc615d748bd4dc048bd17b9dc297025106e6ecc419ab95d
|
||||
DEBIAN_QT_VERSION := $(QT_MAJOR).$(QT_MINOR).$(QT_PATCH)-0
|
||||
DEBIAN_QT_DSC_FILENAME := libqt-jami_$(DEBIAN_QT_VERSION).dsc
|
||||
QT_JAMI_PREFIX := /usr/lib/libqt-jami
|
||||
@ -173,6 +173,7 @@ DISTRIBUTIONS := \
|
||||
fedora_39 \
|
||||
alma_9 \
|
||||
opensuse-leap_15.4 \
|
||||
opensuse-leap_15.5 \
|
||||
snap
|
||||
|
||||
IS_SHELL_INTERACTIVE := $(shell [ -t 0 ] && echo yes)
|
||||
|
||||
@ -100,6 +100,7 @@ RUN dnf install -y \
|
||||
cmake \
|
||||
fmt-devel \
|
||||
python3-html5lib \
|
||||
cups-devel
|
||||
cups-devel \
|
||||
pipewire-devel
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
CMD ["/opt/build-package-rpm.sh"]
|
||||
@ -8,7 +8,12 @@ RUN apt-get update && \
|
||||
devscripts \
|
||||
equivs \
|
||||
python-is-python3 \
|
||||
wget
|
||||
wget \
|
||||
curl
|
||||
|
||||
# nodejs
|
||||
RUN curl -sL https://deb.nodesource.com/setup_20.x | bash -
|
||||
RUN apt install nodejs -y
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
|
||||
@ -18,9 +23,15 @@ RUN /opt/prebuild-package-debian.sh qt-deps
|
||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
# Install CMake 3.20 for Qt 6
|
||||
# Install CMake 3.21 for Qt 6
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
|
||||
# Setting this variable so that FFmpeg gets built without pipewiregrab
|
||||
# (see daemon/contrib/bootstrap and daemon/contrib/src/ffmpeg/rules.mak)
|
||||
# We rely on PipeWire for screen sharing on Wayland, but the version available on Debian 11 is too old.
|
||||
ENV DISABLE_PIPEWIRE=true
|
||||
|
||||
CMD ["/opt/build-package-debian.sh"]
|
||||
|
||||
@ -11,6 +11,14 @@ RUN apt-get update --allow-releaseinfo-change && \
|
||||
wget \
|
||||
nasm
|
||||
|
||||
# As of January 2024, the default compiler on Debian testing is GCC 13.2.0, which
|
||||
# can't build one of Qt 6.6.1's dependencies, see:
|
||||
# https://github.com/qt/qtquick3d-assimp/commit/253f8bfa621a9fa6cd2c36291cdaa8c60c99322c
|
||||
# The linked commit above fixes the problem and is included in more recent versions of Qt.
|
||||
# For now, we use GCC 12 as a temporary workaround:
|
||||
ADD extras/packaging/gnu-linux/scripts/install-gcc-debian.sh /opt/install-gcc-debian.sh
|
||||
RUN /opt/install-gcc-debian.sh 12
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
|
||||
@ -19,7 +27,7 @@ RUN /opt/prebuild-package-debian.sh qt-deps
|
||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
# Install CMake 3.19 for Qt 6
|
||||
# Install CMake 3.21 for Qt 6
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
|
||||
|
||||
@ -11,6 +11,14 @@ RUN apt-get update && \
|
||||
libdbus-1-dev \
|
||||
wget
|
||||
|
||||
# As of January 2024, the default compiler on Debian unstable is GCC 13.2.0, which
|
||||
# can't build one of Qt 6.6.1's dependencies, see:
|
||||
# https://github.com/qt/qtquick3d-assimp/commit/253f8bfa621a9fa6cd2c36291cdaa8c60c99322c
|
||||
# The linked commit above fixes the problem and is included in more recent versions of Qt.
|
||||
# For now, we use GCC 12 as a temporary workaround:
|
||||
ADD extras/packaging/gnu-linux/scripts/install-gcc-debian.sh /opt/install-gcc-debian.sh
|
||||
RUN /opt/install-gcc-debian.sh 12
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
|
||||
@ -19,7 +27,7 @@ RUN /opt/prebuild-package-debian.sh qt-deps
|
||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
# Install CMake 3.19 for Qt 6
|
||||
# Install CMake 3.21 for Qt 6
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
|
||||
|
||||
@ -98,6 +98,7 @@ RUN dnf install -y \
|
||||
clang \
|
||||
cmake \
|
||||
fmt-devel \
|
||||
pipewire-devel \
|
||||
cups-devel #Chromium for Qt
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
|
||||
@ -98,7 +98,8 @@ RUN dnf install -y \
|
||||
cmake \
|
||||
fmt-devel \
|
||||
python3-html5lib \
|
||||
cups-devel
|
||||
cups-devel \
|
||||
pipewire-devel
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
|
||||
|
||||
@ -97,7 +97,8 @@ RUN dnf install -y \
|
||||
cmake \
|
||||
fmt-devel \
|
||||
python3.10 \
|
||||
cups-devel
|
||||
cups-devel \
|
||||
pipewire-devel
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
|
||||
|
||||
@ -59,6 +59,7 @@ RUN zypper --non-interactive install -y \
|
||||
ffmpeg-4-libavutil-devel \
|
||||
gtk3-devel\
|
||||
qrencode-devel \
|
||||
python310 \
|
||||
python3-python-dateutil \
|
||||
python3-html5lib \
|
||||
libsndfile-devel \
|
||||
@ -67,7 +68,7 @@ RUN zypper --non-interactive install -y \
|
||||
bison \
|
||||
flex \
|
||||
ffmpeg ffmpeg-devel \
|
||||
nodejs12 \
|
||||
nodejs18 \
|
||||
mozilla-nss-devel \
|
||||
python-xml \
|
||||
python3-six \
|
||||
@ -98,7 +99,12 @@ RUN zypper --non-interactive install -y \
|
||||
gstreamer-plugins-bad-devel \
|
||||
gstreamer-plugins-base-devel \
|
||||
cmake \
|
||||
wget
|
||||
wget \
|
||||
pipewire-devel
|
||||
|
||||
# openSUSE Leap 15.4 comes with Python 3.6 by default,
|
||||
# but we need at least 3.7 to compile Qt 6.6.1
|
||||
RUN rm /usr/bin/python3 && ln -s /usr/bin/python3.10 /usr/bin/python3
|
||||
|
||||
RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 50
|
||||
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 50
|
||||
@ -107,4 +113,10 @@ ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-r
|
||||
|
||||
ENV CC=gcc
|
||||
ENV CXX=g++
|
||||
|
||||
# Setting this variable so that FFmpeg gets built without pipewiregrab
|
||||
# (see daemon/contrib/bootstrap and daemon/contrib/src/ffmpeg/rules.mak)
|
||||
# We rely on PipeWire for screen sharing on Wayland, but the version available on openSUSE Leap 15.4 is too old.
|
||||
ENV DISABLE_PIPEWIRE=true
|
||||
|
||||
CMD ["/opt/build-package-rpm.sh"]
|
||||
|
||||
117
extras/packaging/gnu-linux/docker/Dockerfile_opensuse-leap_15.5
Normal file
@ -0,0 +1,117 @@
|
||||
FROM opensuse/leap:15.5
|
||||
|
||||
RUN zypper refresh
|
||||
|
||||
RUN zypper --non-interactive install -y \
|
||||
dnf \
|
||||
dnf-command\(builddep\) \
|
||||
rpmdevtools \
|
||||
Mesa-dri-devel Mesa-dri \
|
||||
git \
|
||||
gcc10 \
|
||||
gcc10-c++ \
|
||||
rpm-build \
|
||||
tar \
|
||||
make \
|
||||
autoconf \
|
||||
automake \
|
||||
nasm \
|
||||
speexdsp-devel \
|
||||
libpulse-devel \
|
||||
libcanberra-devel \
|
||||
libcurl-devel \
|
||||
libtool \
|
||||
pcre-devel \
|
||||
yaml-cpp-devel \
|
||||
libXext-devel \
|
||||
libXfixes-devel \
|
||||
yasm \
|
||||
speex-devel \
|
||||
libgsm-devel \
|
||||
chrpath \
|
||||
check \
|
||||
astyle \
|
||||
gettext-devel \
|
||||
which \
|
||||
alsa-lib-devel \
|
||||
systemd-devel \
|
||||
libuuid-devel \
|
||||
uuid-devel \
|
||||
libopus-devel \
|
||||
patch \
|
||||
jsoncpp-devel \
|
||||
webkit2gtk3-devel \
|
||||
libcryptopp-devel \
|
||||
libva-devel \
|
||||
libvdpau-devel \
|
||||
msgpack-c-devel \
|
||||
msgpack-cxx-devel \
|
||||
clutter-devel \
|
||||
openssl-devel \
|
||||
clutter-gtk-devel \
|
||||
libnma-devel \
|
||||
libcryptopp-devel \
|
||||
libexpat-devel \
|
||||
gnome-icon-theme-symbolic \
|
||||
libgsm-devel \
|
||||
gtk3-devel \
|
||||
libappindicator-devel \
|
||||
sqlite-devel \
|
||||
ffmpeg-4-libavutil-devel \
|
||||
gtk3-devel\
|
||||
qrencode-devel \
|
||||
python310 \
|
||||
python3-python-dateutil \
|
||||
python3-html5lib \
|
||||
libsndfile-devel \
|
||||
libdrm \
|
||||
gperf \
|
||||
bison \
|
||||
flex \
|
||||
ffmpeg ffmpeg-devel \
|
||||
nodejs20 \
|
||||
mozilla-nss-devel \
|
||||
python-xml \
|
||||
python3-six \
|
||||
python3-importlib-metadata \
|
||||
libxcb* \
|
||||
libxkb* \
|
||||
libX11-devel \
|
||||
libXrender-devel \
|
||||
libfreetype6 \
|
||||
xcb-util-image-devel \
|
||||
xcb-util-keysyms-devel \
|
||||
xcb-util-renderutil-devel \
|
||||
xcb-util-wm-devel \
|
||||
xorg-x11-devel \
|
||||
xz \
|
||||
xkeyboard-config \
|
||||
libnotify \
|
||||
argon2-devel \
|
||||
libxshmfence-devel \
|
||||
xproto-devel \
|
||||
xcb-proto-devel \
|
||||
xcb-* \
|
||||
xorg-* \
|
||||
vulkan-devel \
|
||||
ninja \
|
||||
gstreamer-devel \
|
||||
gstreamer-plugins-good \
|
||||
gstreamer-plugins-bad-devel \
|
||||
gstreamer-plugins-base-devel \
|
||||
cmake \
|
||||
wget \
|
||||
pipewire-devel
|
||||
|
||||
# openSUSE Leap 15.5 comes with Python 3.6 by default,
|
||||
# but we need at least 3.7 to compile Qt 6.6.1
|
||||
RUN rm /usr/bin/python3 && ln -s /usr/bin/python3.10 /usr/bin/python3
|
||||
|
||||
RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 50
|
||||
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 50
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
|
||||
ENV CC=gcc
|
||||
ENV CXX=g++
|
||||
CMD ["/opt/build-package-rpm.sh"]
|
||||
@ -1,5 +1,5 @@
|
||||
ARG RISK=edge
|
||||
ARG UBUNTU=focal
|
||||
ARG UBUNTU=jammy
|
||||
|
||||
FROM ubuntu:$UBUNTU as builder
|
||||
ARG RISK
|
||||
@ -69,7 +69,11 @@ COPY --from=builder /snap/snapcraft /snap/snapcraft
|
||||
COPY --from=builder /snap/bin/snapcraft /snap/bin/snapcraft
|
||||
|
||||
# Generate locale and install dependencies.
|
||||
RUN apt-get update && apt-get dist-upgrade --yes && apt-get install --yes snapd sudo apt-transport-https locales && locale-gen en_US.UTF-8
|
||||
RUN apt-get update && apt-get dist-upgrade --yes && apt-get install --yes snapd sudo apt-transport-https locales wget && locale-gen en_US.UTF-8
|
||||
|
||||
# Install CMake 3.21 for Qt 6
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
|
||||
# Set the proper environment.
|
||||
ENV LANG="en_US.UTF-8"
|
||||
|
||||
@ -11,8 +11,13 @@ RUN apt-get update && \
|
||||
wget \
|
||||
curl
|
||||
|
||||
# Installing GCC 10 because GCC 9 (the default on Ubuntu 20.04) doesn't support
|
||||
# the --std=gnu++20 option, which is used by one of Qt 6.6.1's dependencies
|
||||
ADD extras/packaging/gnu-linux/scripts/install-gcc-debian.sh /opt/install-gcc-debian.sh
|
||||
RUN /opt/install-gcc-debian.sh 10
|
||||
|
||||
# nodejs
|
||||
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
|
||||
RUN curl -sL https://deb.nodesource.com/setup_20.x | bash -
|
||||
RUN apt install nodejs -y
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
@ -23,9 +28,15 @@ RUN /opt/prebuild-package-debian.sh qt-deps
|
||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
# Install CMake 3.19 for Qt 6
|
||||
# Install CMake 3.21 for Qt 6
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
|
||||
# Setting this variable so that FFmpeg gets built without pipewiregrab
|
||||
# (see daemon/contrib/bootstrap and daemon/contrib/src/ffmpeg/rules.mak)
|
||||
# We rely on PipeWire for screen sharing on Wayland, but the version available on Ubuntu 20.04 is too old.
|
||||
ENV DISABLE_PIPEWIRE=true
|
||||
|
||||
CMD ["/opt/build-package-debian.sh"]
|
||||
|
||||
@ -8,7 +8,12 @@ RUN apt-get update && \
|
||||
devscripts \
|
||||
equivs \
|
||||
python-is-python3 \
|
||||
wget
|
||||
wget \
|
||||
curl
|
||||
|
||||
# nodejs
|
||||
RUN curl -sL https://deb.nodesource.com/setup_20.x | bash -
|
||||
RUN apt install nodejs -y
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
|
||||
|
||||
@ -10,6 +10,14 @@ RUN apt-get update && \
|
||||
python-is-python3 \
|
||||
wget
|
||||
|
||||
# The default compiler on Ubuntu 23.10, GCC 13.2.0, can't build one of Qt 6.6.1's
|
||||
# dependencies, see:
|
||||
# https://github.com/qt/qtquick3d-assimp/commit/253f8bfa621a9fa6cd2c36291cdaa8c60c99322c
|
||||
# The linked commit above fixes the problem and is included in more recent versions of Qt.
|
||||
# For now, we use GCC 12 as a temporary workaround:
|
||||
ADD extras/packaging/gnu-linux/scripts/install-gcc-debian.sh /opt/install-gcc-debian.sh
|
||||
RUN /opt/install-gcc-debian.sh 12
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2021-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2021-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
|
||||
#
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
;;; Copyright (C) 2021-2023 Savoir-faire Linux Inc.
|
||||
;;; Copyright (C) 2021-2024 Savoir-faire Linux Inc.
|
||||
;;;
|
||||
;;; Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
|
||||
;;;
|
||||
|
||||
@ -314,7 +314,7 @@ Build-Depends: debhelper (>= 9),
|
||||
libxtst-dev,
|
||||
mesa-common-dev,
|
||||
ninja-build,
|
||||
nodejs (>= 10.19),
|
||||
nodejs (>= 14.21),
|
||||
# pkg-config,
|
||||
# pkg-kde-tools,
|
||||
protobuf-compiler,
|
||||
|
||||
@ -1,81 +0,0 @@
|
||||
From ecae5d93b0a89e2b8c16a2227b2d176f58579d04 Mon Sep 17 00:00:00 2001
|
||||
From: Rémi Denis-Courmont <remi@remlab.net>
|
||||
Date: Sun, 16 Jul 2023 18:18:02 +0300
|
||||
Subject: [PATCH] Fix ffmpeg assembly with newer binutil
|
||||
|
||||
avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
|
||||
|
||||
Fixes assembling with binutil as >= 2.41
|
||||
|
||||
FFmpeg commit effadce6c756247ea8bae32dc13bb3e6f464f0eb.
|
||||
|
||||
Deals with: "Error: operand type mismatch for `shr'"
|
||||
|
||||
Fixes: QTBUG-116649
|
||||
Change-Id: I094e8c23fed4a61fba3f1e3a9c73c016d129d830
|
||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/495990
|
||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
||||
(cherry picked from commit 29354c7c7def7bdc66bcd25d401677fd9421f657)
|
||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/509219
|
||||
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
||||
---
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
|
||||
index 6298f5e..ca7e2df 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
|
||||
@@ -35,12 +35,20 @@
|
||||
static av_always_inline av_const int MULL(int a, int b, unsigned shift)
|
||||
{
|
||||
int rt, dummy;
|
||||
+ if (__builtin_constant_p(shift))
|
||||
__asm__ (
|
||||
"imull %3 \n\t"
|
||||
"shrdl %4, %%edx, %%eax \n\t"
|
||||
:"=a"(rt), "=d"(dummy)
|
||||
- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
|
||||
+ :"a"(a), "rm"(b), "i"(shift & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ (
|
||||
+ "imull %3 \n\t"
|
||||
+ "shrdl %4, %%edx, %%eax \n\t"
|
||||
+ :"=a"(rt), "=d"(dummy)
|
||||
+ :"a"(a), "rm"(b), "c"((uint8_t)shift)
|
||||
+ );
|
||||
return rt;
|
||||
}
|
||||
|
||||
@@ -113,19 +121,31 @@
|
||||
// avoid +32 for shift optimization (gcc should do that ...)
|
||||
#define NEG_SSR32 NEG_SSR32
|
||||
static inline int32_t NEG_SSR32( int32_t a, int8_t s){
|
||||
+ if (__builtin_constant_p(s))
|
||||
__asm__ ("sarl %1, %0\n\t"
|
||||
: "+r" (a)
|
||||
- : "ic" ((uint8_t)(-s))
|
||||
+ : "i" (-s & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ ("sarl %1, %0\n\t"
|
||||
+ : "+r" (a)
|
||||
+ : "c" ((uint8_t)(-s))
|
||||
+ );
|
||||
return a;
|
||||
}
|
||||
|
||||
#define NEG_USR32 NEG_USR32
|
||||
static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
|
||||
+ if (__builtin_constant_p(s))
|
||||
__asm__ ("shrl %1, %0\n\t"
|
||||
: "+r" (a)
|
||||
- : "ic" ((uint8_t)(-s))
|
||||
+ : "i" (-s & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ ("shrl %1, %0\n\t"
|
||||
+ : "+r" (a)
|
||||
+ : "c" ((uint8_t)(-s))
|
||||
+ );
|
||||
return a;
|
||||
}
|
||||
@ -1,16 +0,0 @@
|
||||
qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
index 3488120..120e47a 100644
|
||||
--- a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
+++ b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
@@ -472,7 +472,7 @@ void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length)
|
||||
}
|
||||
catch (const DeadlyImportError& e)
|
||||
{
|
||||
- if (!is64bits && (length > std::numeric_limits<std::uint32_t>::max())) {
|
||||
+ if (!is64bits && (length > std::numeric_limits<uint32_t>::max())) {
|
||||
throw DeadlyImportError("The FBX file is invalid. This may be because the content is too big for this older version (", ai_to_string(version), ") of the FBX format. (", e.what(), ")");
|
||||
}
|
||||
throw;
|
||||
@ -1,81 +0,0 @@
|
||||
From ecae5d93b0a89e2b8c16a2227b2d176f58579d04 Mon Sep 17 00:00:00 2001
|
||||
From: Rémi Denis-Courmont <remi@remlab.net>
|
||||
Date: Sun, 16 Jul 2023 18:18:02 +0300
|
||||
Subject: [PATCH] Fix ffmpeg assembly with newer binutil
|
||||
|
||||
avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
|
||||
|
||||
Fixes assembling with binutil as >= 2.41
|
||||
|
||||
FFmpeg commit effadce6c756247ea8bae32dc13bb3e6f464f0eb.
|
||||
|
||||
Deals with: "Error: operand type mismatch for `shr'"
|
||||
|
||||
Fixes: QTBUG-116649
|
||||
Change-Id: I094e8c23fed4a61fba3f1e3a9c73c016d129d830
|
||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/495990
|
||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
||||
(cherry picked from commit 29354c7c7def7bdc66bcd25d401677fd9421f657)
|
||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/509219
|
||||
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
||||
---
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
|
||||
index 6298f5e..ca7e2df 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
|
||||
@@ -35,12 +35,20 @@
|
||||
static av_always_inline av_const int MULL(int a, int b, unsigned shift)
|
||||
{
|
||||
int rt, dummy;
|
||||
+ if (__builtin_constant_p(shift))
|
||||
__asm__ (
|
||||
"imull %3 \n\t"
|
||||
"shrdl %4, %%edx, %%eax \n\t"
|
||||
:"=a"(rt), "=d"(dummy)
|
||||
- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
|
||||
+ :"a"(a), "rm"(b), "i"(shift & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ (
|
||||
+ "imull %3 \n\t"
|
||||
+ "shrdl %4, %%edx, %%eax \n\t"
|
||||
+ :"=a"(rt), "=d"(dummy)
|
||||
+ :"a"(a), "rm"(b), "c"((uint8_t)shift)
|
||||
+ );
|
||||
return rt;
|
||||
}
|
||||
|
||||
@@ -113,19 +121,31 @@
|
||||
// avoid +32 for shift optimization (gcc should do that ...)
|
||||
#define NEG_SSR32 NEG_SSR32
|
||||
static inline int32_t NEG_SSR32( int32_t a, int8_t s){
|
||||
+ if (__builtin_constant_p(s))
|
||||
__asm__ ("sarl %1, %0\n\t"
|
||||
: "+r" (a)
|
||||
- : "ic" ((uint8_t)(-s))
|
||||
+ : "i" (-s & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ ("sarl %1, %0\n\t"
|
||||
+ : "+r" (a)
|
||||
+ : "c" ((uint8_t)(-s))
|
||||
+ );
|
||||
return a;
|
||||
}
|
||||
|
||||
#define NEG_USR32 NEG_USR32
|
||||
static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
|
||||
+ if (__builtin_constant_p(s))
|
||||
__asm__ ("shrl %1, %0\n\t"
|
||||
: "+r" (a)
|
||||
- : "ic" ((uint8_t)(-s))
|
||||
+ : "i" (-s & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ ("shrl %1, %0\n\t"
|
||||
+ : "+r" (a)
|
||||
+ : "c" ((uint8_t)(-s))
|
||||
+ );
|
||||
return a;
|
||||
}
|
||||
@ -1,16 +0,0 @@
|
||||
qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
index 3488120..120e47a 100644
|
||||
--- a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
+++ b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
@@ -472,7 +472,7 @@ void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length)
|
||||
}
|
||||
catch (const DeadlyImportError& e)
|
||||
{
|
||||
- if (!is64bits && (length > std::numeric_limits<std::uint32_t>::max())) {
|
||||
+ if (!is64bits && (length > std::numeric_limits<uint32_t>::max())) {
|
||||
throw DeadlyImportError("The FBX file is invalid. This may be because the content is too big for this older version (", ai_to_string(version), ") of the FBX format. (", e.what(), ")");
|
||||
}
|
||||
throw;
|
||||
@ -1,433 +0,0 @@
|
||||
qtbase/src/corelib/debug_script.py | 2 +-
|
||||
qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py | 2 +-
|
||||
qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py | 2 +-
|
||||
.../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py | 2 +-
|
||||
.../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py | 2 +-
|
||||
.../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py | 2 +-
|
||||
.../3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py | 2 +-
|
||||
31 files changed, 31 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/qtbase/src/corelib/debug_script.py b/qtbase/src/corelib/debug_script.py
|
||||
index f6207c6104..663c8e0ac1 100644
|
||||
--- a/qtbase/src/corelib/debug_script.py
|
||||
+++ b/qtbase/src/corelib/debug_script.py
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import os
|
||||
import sys
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
from distutils.version import LooseVersion
|
||||
|
||||
diff --git a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
|
||||
index 681039d34b..a1fe56fa05 100644
|
||||
--- a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
|
||||
+++ b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
|
||||
@@ -16,7 +16,7 @@ import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
# from TestCasePackagerConfig import *
|
||||
|
||||
diff --git a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
|
||||
index 92d4e6139b..7a18e12ced 100644
|
||||
--- a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
|
||||
+++ b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
|
||||
@@ -7,7 +7,7 @@ import unittest
|
||||
|
||||
import os
|
||||
import yaml
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
# add parent dir to search path
|
||||
import sys
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py b/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
|
||||
index c7412927c8..ad2caff318 100755
|
||||
--- a/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
import os
|
||||
import sys
|
||||
-import imp
|
||||
+import importlib
|
||||
import tempfile
|
||||
import unittest
|
||||
import PRESUBMIT
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py b/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
|
||||
index 5daee773ba..2d6b124162 100755
|
||||
--- a/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
|
||||
@@ -9,7 +9,7 @@
|
||||
"""
|
||||
from __future__ import print_function
|
||||
import abc
|
||||
-import imp
|
||||
+import importlib
|
||||
import optparse
|
||||
import os
|
||||
import re
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
|
||||
index bf626f5479..3fae129aaa 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
|
||||
@@ -3,7 +3,7 @@
|
||||
# found in the LICENSE file.
|
||||
|
||||
import errno
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
|
||||
index ff5753a291..04fc34f742 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import shutil
|
||||
import sys
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
|
||||
index 32c884a8c0..e761faa54c 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
import unittest
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
|
||||
index 95a916db08..4331e2fbfa 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
import unittest
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
|
||||
index 62798631db..28e9dbf705 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
import unittest
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
|
||||
index cba249b0f3..5a4051827a 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
|
||||
index 4a2fefc712..11a9879cb7 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
|
||||
index cc17ae0253..bcc944f06b 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
import unittest
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
|
||||
index bd72830e54..f2fdc9ae28 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
import unittest
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py b/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
|
||||
index 1feb303a48..8428de61bb 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
|
||||
@@ -6,7 +6,7 @@
|
||||
angle_presubmit_utils_unittest.py: Top-level unittest script for ANGLE presubmit checks.
|
||||
"""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os
|
||||
import unittest
|
||||
from angle_presubmit_utils import *
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py b/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
|
||||
index ed4f38c67b..cac734cefa 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
|
||||
@@ -7,7 +7,7 @@ See https://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
|
||||
for more details about the presubmit API built into gcl.
|
||||
"""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import inspect
|
||||
import os
|
||||
import re
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py b/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
|
||||
index 0244c9787e..f535afe99c 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
|
||||
@@ -32,7 +32,7 @@ if PY3:
|
||||
memoryview_type = memoryview
|
||||
struct_bool_decl = "?"
|
||||
else:
|
||||
- import imp
|
||||
+ import importlib
|
||||
string_types = (unicode,)
|
||||
if PY26 or PY27:
|
||||
binary_types = (str,bytearray)
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py b/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
|
||||
index 8430390eea..29212205bc 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
|
||||
@@ -732,7 +732,7 @@ class Environment(object):
|
||||
)
|
||||
py_compile = False
|
||||
else:
|
||||
- import imp
|
||||
+ import importlib
|
||||
import marshal
|
||||
|
||||
py_header = imp.get_magic() + u"\xff\xff\xff\xff".encode("iso-8859-15")
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py b/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
|
||||
index 06bb8d99f5..05089dc982 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
|
||||
@@ -115,7 +115,7 @@ if py3k:
|
||||
return module
|
||||
|
||||
else:
|
||||
- import imp
|
||||
+ import importlib
|
||||
|
||||
def load_module(module_id, path):
|
||||
fp = open(path, "rb")
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
|
||||
index a7dc683365..68b6804c78 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
|
||||
@@ -14,7 +14,7 @@
|
||||
# ==============================================================================
|
||||
"""Tests for call_trees module."""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
from tensorflow.python.autograph.converters import call_trees
|
||||
from tensorflow.python.autograph.converters import functions
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
|
||||
index 81a7fde808..1370f900fd 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
|
||||
@@ -14,7 +14,7 @@
|
||||
# ==============================================================================
|
||||
"""Tests for converter module."""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
from tensorflow.python.autograph.core import converter
|
||||
from tensorflow.python.autograph.core import converter_testing
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
|
||||
index b93cbb627b..452ec71f5b 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
|
||||
@@ -15,7 +15,7 @@
|
||||
"""Base class for tests in this module."""
|
||||
|
||||
import contextlib
|
||||
-import imp
|
||||
+import importlib
|
||||
import inspect
|
||||
import sys
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
|
||||
index 9a62d7c0d2..7ec4fa6dca 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
|
||||
@@ -19,7 +19,7 @@ import collections
|
||||
import contextlib
|
||||
import functools
|
||||
import gc
|
||||
-import imp
|
||||
+import importlib
|
||||
import inspect
|
||||
import os
|
||||
import re
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
|
||||
index 852af3efe7..6456c50446 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
|
||||
@@ -14,7 +14,7 @@
|
||||
# ==============================================================================
|
||||
"""Tests for conversion module."""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import sys
|
||||
import types
|
||||
import weakref
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
|
||||
index a50a64534a..ba0f31afa2 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
|
||||
@@ -17,7 +17,7 @@
|
||||
import abc
|
||||
import collections
|
||||
import functools
|
||||
-import imp
|
||||
+import importlib
|
||||
import textwrap
|
||||
|
||||
import six
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
|
||||
index 29f38d853a..7ca88fa371 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
|
||||
@@ -14,7 +14,7 @@
|
||||
# ==============================================================================
|
||||
"""Tests for templates module."""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
from absl.testing import parameterized
|
||||
import gast
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
|
||||
index e46460574b..a40fea6568 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
|
||||
@@ -14,7 +14,7 @@
|
||||
# =============================================================================
|
||||
"""Tests for create_python_api."""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import sys
|
||||
|
||||
from tensorflow.python.platform import test
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
|
||||
index 73d1742714..ea77dd7647 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
|
||||
@@ -1,5 +1,5 @@
|
||||
import importlib
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
from .browsers import product_list
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
|
||||
index 6a744472b5..9175cb5d34 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
|
||||
@@ -1,6 +1,6 @@
|
||||
import copy
|
||||
import functools
|
||||
-import imp
|
||||
+import importlib
|
||||
import io
|
||||
import os
|
||||
from collections import OrderedDict, defaultdict
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py b/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
|
||||
index 6912b6f3c0..7d851f7f76 100755
|
||||
--- a/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import optparse
|
||||
import os
|
||||
import pipes
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py b/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
|
||||
index 1c2aba80af..55260d697e 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
|
||||
@@ -10,7 +10,7 @@ from __future__ import print_function
|
||||
|
||||
import os
|
||||
import re
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
from _monkeyYaml import load as yamlLoad
|
||||
|
||||
@ -1,45 +0,0 @@
|
||||
diff --git a/qtbase/src/corelib/global/qnamespace.h b/qtbase/src/corelib/global/qnamespace.h
|
||||
index 8a2769a3ed..584d3620c9 100644
|
||||
--- a/qtbase/src/corelib/global/qnamespace.h
|
||||
+++ b/qtbase/src/corelib/global/qnamespace.h
|
||||
@@ -832,10 +832,6 @@ namespace Qt {
|
||||
Key_Dead_Small_Schwa = 0x0100128a,
|
||||
Key_Dead_Capital_Schwa = 0x0100128b,
|
||||
Key_Dead_Greek = 0x0100128c,
|
||||
- Key_Dead_Lowline = 0x01001290,
|
||||
- Key_Dead_Aboveverticalline = 0x01001291,
|
||||
- Key_Dead_Belowverticalline = 0x01001292,
|
||||
- Key_Dead_Longsolidusoverlay = 0x01001293,
|
||||
|
||||
// multimedia/internet keys - ignored by default - see QKeyEvent c'tor
|
||||
Key_Back = 0x01000061,
|
||||
diff --git a/qtbase/src/corelib/global/qnamespace.qdoc b/qtbase/src/corelib/global/qnamespace.qdoc
|
||||
index 78c69176d8..1623517b5a 100644
|
||||
--- a/qtbase/src/corelib/global/qnamespace.qdoc
|
||||
+++ b/qtbase/src/corelib/global/qnamespace.qdoc
|
||||
@@ -1654,10 +1654,6 @@
|
||||
\value Key_Dead_Small_Schwa
|
||||
\value Key_Dead_Capital_Schwa
|
||||
\value Key_Dead_Greek
|
||||
- \value Key_Dead_Lowline
|
||||
- \value Key_Dead_Aboveverticalline
|
||||
- \value Key_Dead_Belowverticalline
|
||||
- \value Key_Dead_Longsolidusoverlay
|
||||
\value Key_Back
|
||||
\value Key_Forward
|
||||
\value Key_Stop
|
||||
diff --git a/qtbase/src/gui/platform/unix/qxkbcommon.cpp b/qtbase/src/gui/platform/unix/qxkbcommon.cpp
|
||||
index fc014b38e2..af1cbbd42a 100644
|
||||
--- a/qtbase/src/gui/platform/unix/qxkbcommon.cpp
|
||||
+++ b/qtbase/src/gui/platform/unix/qxkbcommon.cpp
|
||||
@@ -239,10 +239,6 @@ static constexpr const auto KeyTbl = qMakeArray(
|
||||
Xkb2Qt<XKB_KEY_dead_small_schwa, Qt::Key_Dead_Small_Schwa>,
|
||||
Xkb2Qt<XKB_KEY_dead_capital_schwa, Qt::Key_Dead_Capital_Schwa>,
|
||||
Xkb2Qt<XKB_KEY_dead_greek, Qt::Key_Dead_Greek>,
|
||||
- Xkb2Qt<XKB_KEY_dead_lowline, Qt::Key_Dead_Lowline>,
|
||||
- Xkb2Qt<XKB_KEY_dead_aboveverticalline, Qt::Key_Dead_Aboveverticalline>,
|
||||
- Xkb2Qt<XKB_KEY_dead_belowverticalline, Qt::Key_Dead_Belowverticalline>,
|
||||
- Xkb2Qt<XKB_KEY_dead_longsolidusoverlay, Qt::Key_Dead_Longsolidusoverlay>,
|
||||
|
||||
// Special keys from X.org - This include multimedia keys,
|
||||
// wireless/bluetooth/uwb keys, special launcher keys, etc.
|
||||
@ -1,29 +0,0 @@
|
||||
qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp b/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
|
||||
index ec212f5a35..58bf4dce7d 100644
|
||||
--- a/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
|
||||
+++ b/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
|
||||
@@ -37,7 +37,10 @@ static Libs loadLibs()
|
||||
return {};
|
||||
}
|
||||
|
||||
-constexpr size_t symbolsCount = 39
|
||||
+constexpr size_t symbolsCount = 38
|
||||
+#if VA_CHECK_VERSION(1, 9, 0)
|
||||
+ + 1
|
||||
+#endif
|
||||
#ifdef DYNAMIC_RESOLVE_VA_DRM_SYMBOLS
|
||||
+ 1
|
||||
#endif
|
||||
@@ -79,7 +82,9 @@ DEFINE_FUNC(vaEndPicture, 2, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
DEFINE_FUNC(vaCreateBuffer, 7, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
DEFINE_FUNC(vaMapBuffer, 3, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
DEFINE_FUNC(vaUnmapBuffer, 2, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
+#if VA_CHECK_VERSION(1, 9, 0)
|
||||
DEFINE_FUNC(vaSyncBuffer, 3, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
+#endif
|
||||
DEFINE_FUNC(vaDestroyBuffer, 2, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
|
||||
DEFINE_FUNC(vaCreateSurfaces, 8, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
@ -1,4 +0,0 @@
|
||||
0001-fix-mathops.patch
|
||||
0002-fix-binary-tokenizer.patch
|
||||
0015-remove-deleted-xkb-keys.patch
|
||||
0016-fix-vaapi.patch
|
||||
@ -45,6 +45,8 @@ Build-Depends: debhelper (>= 9),
|
||||
libvdpau-dev,
|
||||
libssl-dev,
|
||||
libargon2-dev | libargon2-0-dev,
|
||||
# TODO: remove libpipewire-0.2-dev once we stop supporting Ubuntu 20.04
|
||||
libpipewire-0.3-dev | libpipewire-0.2-dev,
|
||||
# other
|
||||
nasm,
|
||||
yasm,
|
||||
@ -68,7 +70,7 @@ Depends: gnupg,
|
||||
Replaces: jami,
|
||||
jami-libclient,
|
||||
jami-daemon,
|
||||
libqt-jami (>= 6.5.3),
|
||||
libqt-jami (>= 6.6.1),
|
||||
Conflicts: jami,
|
||||
jami-libclient,
|
||||
jami-libclient-gnome,
|
||||
@ -84,7 +86,7 @@ Architecture: any
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
jami-daemon (=${binary:Version}),
|
||||
libqt-jami (>= 6.5.3)
|
||||
libqt-jami (>= 6.6.1)
|
||||
Provides: jami-qt
|
||||
Replaces: jami-all,
|
||||
jami-libclient (<= 20220516.0214.9b42ad3~dfsg1-1)
|
||||
|
||||
@ -3,7 +3,7 @@ Upstream-Name: jami
|
||||
Upstream-Contact: Amin Bandali <bandali@gnu.org>
|
||||
Source: https://dl.jami.net/release/tarballs/
|
||||
Files: *
|
||||
Copyright: 2004-2023 Savoir-faire Linux Inc.
|
||||
Copyright: 2004-2024 Savoir-faire Linux Inc.
|
||||
License: GPL-3+
|
||||
Comment: Upstream embeds everything that is needed to build Jami inside the release tarball.
|
||||
Everything that is already in Debian has been removed.
|
||||
@ -50,7 +50,7 @@ Files: daemon/src/media/audio/opensl/audio_common.h
|
||||
daemon/src/media/audio/opensl/audio_recorder.h
|
||||
daemon/src/media/audio/opensl/buf_manager.h
|
||||
Copyright: 2015 The Android Open Source Project
|
||||
2015-2023 Savoir-faire Linux Inc.
|
||||
2015-2024 Savoir-faire Linux Inc.
|
||||
License: Apache-2.0
|
||||
|
||||
Files: daemon/extras/tools/bootstrap
|
||||
|
||||
@ -50,6 +50,7 @@ BuildRequires: libuuid-devel
|
||||
BuildRequires: libva-devel
|
||||
BuildRequires: libvdpau-devel
|
||||
BuildRequires: pcre-devel
|
||||
BuildRequires: pipewire-devel
|
||||
BuildRequires: uuid-devel
|
||||
BuildRequires: yaml-cpp-devel
|
||||
|
||||
|
||||
@ -26,10 +26,6 @@ License: GPLv3+
|
||||
Vendor: Savoir-faire Linux Inc.
|
||||
URL: https://jami.net/
|
||||
Source: jami-libqt-%{version}.tar.xz
|
||||
Patch0: 0001-fix-mathops.patch
|
||||
Patch1: 0002-fix-binary-tokenizer.patch
|
||||
Patch2: 0015-remove-deleted-xkb-keys.patch
|
||||
Patch3: 0016-fix-vaapi.patch
|
||||
|
||||
%global gst 0.10
|
||||
%if 0%{?fedora} || 0%{?rhel} > 7
|
||||
@ -65,10 +61,6 @@ This package contains Qt libraries for Jami.
|
||||
|
||||
%prep
|
||||
%setup -n qt-everywhere-src-%{version}
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
|
||||
%build
|
||||
echo "Building Qt using %{job_count} parallel jobs"
|
||||
|
||||
@ -1,81 +0,0 @@
|
||||
From ecae5d93b0a89e2b8c16a2227b2d176f58579d04 Mon Sep 17 00:00:00 2001
|
||||
From: Rémi Denis-Courmont <remi@remlab.net>
|
||||
Date: Sun, 16 Jul 2023 18:18:02 +0300
|
||||
Subject: [PATCH] Fix ffmpeg assembly with newer binutil
|
||||
|
||||
avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
|
||||
|
||||
Fixes assembling with binutil as >= 2.41
|
||||
|
||||
FFmpeg commit effadce6c756247ea8bae32dc13bb3e6f464f0eb.
|
||||
|
||||
Deals with: "Error: operand type mismatch for `shr'"
|
||||
|
||||
Fixes: QTBUG-116649
|
||||
Change-Id: I094e8c23fed4a61fba3f1e3a9c73c016d129d830
|
||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/495990
|
||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
||||
(cherry picked from commit 29354c7c7def7bdc66bcd25d401677fd9421f657)
|
||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/509219
|
||||
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
||||
---
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
|
||||
index 6298f5e..ca7e2df 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
|
||||
@@ -35,12 +35,20 @@
|
||||
static av_always_inline av_const int MULL(int a, int b, unsigned shift)
|
||||
{
|
||||
int rt, dummy;
|
||||
+ if (__builtin_constant_p(shift))
|
||||
__asm__ (
|
||||
"imull %3 \n\t"
|
||||
"shrdl %4, %%edx, %%eax \n\t"
|
||||
:"=a"(rt), "=d"(dummy)
|
||||
- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
|
||||
+ :"a"(a), "rm"(b), "i"(shift & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ (
|
||||
+ "imull %3 \n\t"
|
||||
+ "shrdl %4, %%edx, %%eax \n\t"
|
||||
+ :"=a"(rt), "=d"(dummy)
|
||||
+ :"a"(a), "rm"(b), "c"((uint8_t)shift)
|
||||
+ );
|
||||
return rt;
|
||||
}
|
||||
|
||||
@@ -113,19 +121,31 @@
|
||||
// avoid +32 for shift optimization (gcc should do that ...)
|
||||
#define NEG_SSR32 NEG_SSR32
|
||||
static inline int32_t NEG_SSR32( int32_t a, int8_t s){
|
||||
+ if (__builtin_constant_p(s))
|
||||
__asm__ ("sarl %1, %0\n\t"
|
||||
: "+r" (a)
|
||||
- : "ic" ((uint8_t)(-s))
|
||||
+ : "i" (-s & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ ("sarl %1, %0\n\t"
|
||||
+ : "+r" (a)
|
||||
+ : "c" ((uint8_t)(-s))
|
||||
+ );
|
||||
return a;
|
||||
}
|
||||
|
||||
#define NEG_USR32 NEG_USR32
|
||||
static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
|
||||
+ if (__builtin_constant_p(s))
|
||||
__asm__ ("shrl %1, %0\n\t"
|
||||
: "+r" (a)
|
||||
- : "ic" ((uint8_t)(-s))
|
||||
+ : "i" (-s & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ ("shrl %1, %0\n\t"
|
||||
+ : "+r" (a)
|
||||
+ : "c" ((uint8_t)(-s))
|
||||
+ );
|
||||
return a;
|
||||
}
|
||||
@ -1,16 +0,0 @@
|
||||
qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
index 3488120..120e47a 100644
|
||||
--- a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
+++ b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
@@ -472,7 +472,7 @@ void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length)
|
||||
}
|
||||
catch (const DeadlyImportError& e)
|
||||
{
|
||||
- if (!is64bits && (length > std::numeric_limits<std::uint32_t>::max())) {
|
||||
+ if (!is64bits && (length > std::numeric_limits<uint32_t>::max())) {
|
||||
throw DeadlyImportError("The FBX file is invalid. This may be because the content is too big for this older version (", ai_to_string(version), ") of the FBX format. (", e.what(), ")");
|
||||
}
|
||||
throw;
|
||||
@ -1,81 +0,0 @@
|
||||
From ecae5d93b0a89e2b8c16a2227b2d176f58579d04 Mon Sep 17 00:00:00 2001
|
||||
From: Rémi Denis-Courmont <remi@remlab.net>
|
||||
Date: Sun, 16 Jul 2023 18:18:02 +0300
|
||||
Subject: [PATCH] Fix ffmpeg assembly with newer binutil
|
||||
|
||||
avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
|
||||
|
||||
Fixes assembling with binutil as >= 2.41
|
||||
|
||||
FFmpeg commit effadce6c756247ea8bae32dc13bb3e6f464f0eb.
|
||||
|
||||
Deals with: "Error: operand type mismatch for `shr'"
|
||||
|
||||
Fixes: QTBUG-116649
|
||||
Change-Id: I094e8c23fed4a61fba3f1e3a9c73c016d129d830
|
||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/495990
|
||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
||||
(cherry picked from commit 29354c7c7def7bdc66bcd25d401677fd9421f657)
|
||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/509219
|
||||
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
||||
---
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
|
||||
index 6298f5e..ca7e2df 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
|
||||
@@ -35,12 +35,20 @@
|
||||
static av_always_inline av_const int MULL(int a, int b, unsigned shift)
|
||||
{
|
||||
int rt, dummy;
|
||||
+ if (__builtin_constant_p(shift))
|
||||
__asm__ (
|
||||
"imull %3 \n\t"
|
||||
"shrdl %4, %%edx, %%eax \n\t"
|
||||
:"=a"(rt), "=d"(dummy)
|
||||
- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
|
||||
+ :"a"(a), "rm"(b), "i"(shift & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ (
|
||||
+ "imull %3 \n\t"
|
||||
+ "shrdl %4, %%edx, %%eax \n\t"
|
||||
+ :"=a"(rt), "=d"(dummy)
|
||||
+ :"a"(a), "rm"(b), "c"((uint8_t)shift)
|
||||
+ );
|
||||
return rt;
|
||||
}
|
||||
|
||||
@@ -113,19 +121,31 @@
|
||||
// avoid +32 for shift optimization (gcc should do that ...)
|
||||
#define NEG_SSR32 NEG_SSR32
|
||||
static inline int32_t NEG_SSR32( int32_t a, int8_t s){
|
||||
+ if (__builtin_constant_p(s))
|
||||
__asm__ ("sarl %1, %0\n\t"
|
||||
: "+r" (a)
|
||||
- : "ic" ((uint8_t)(-s))
|
||||
+ : "i" (-s & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ ("sarl %1, %0\n\t"
|
||||
+ : "+r" (a)
|
||||
+ : "c" ((uint8_t)(-s))
|
||||
+ );
|
||||
return a;
|
||||
}
|
||||
|
||||
#define NEG_USR32 NEG_USR32
|
||||
static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
|
||||
+ if (__builtin_constant_p(s))
|
||||
__asm__ ("shrl %1, %0\n\t"
|
||||
: "+r" (a)
|
||||
- : "ic" ((uint8_t)(-s))
|
||||
+ : "i" (-s & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ ("shrl %1, %0\n\t"
|
||||
+ : "+r" (a)
|
||||
+ : "c" ((uint8_t)(-s))
|
||||
+ );
|
||||
return a;
|
||||
}
|
||||
@ -1,16 +0,0 @@
|
||||
qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
index 3488120..120e47a 100644
|
||||
--- a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
+++ b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
@@ -472,7 +472,7 @@ void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length)
|
||||
}
|
||||
catch (const DeadlyImportError& e)
|
||||
{
|
||||
- if (!is64bits && (length > std::numeric_limits<std::uint32_t>::max())) {
|
||||
+ if (!is64bits && (length > std::numeric_limits<uint32_t>::max())) {
|
||||
throw DeadlyImportError("The FBX file is invalid. This may be because the content is too big for this older version (", ai_to_string(version), ") of the FBX format. (", e.what(), ")");
|
||||
}
|
||||
throw;
|
||||
@ -1,433 +0,0 @@
|
||||
qtbase/src/corelib/debug_script.py | 2 +-
|
||||
qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py | 2 +-
|
||||
qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py | 2 +-
|
||||
.../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py | 2 +-
|
||||
.../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py | 2 +-
|
||||
.../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py | 2 +-
|
||||
.../3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py | 2 +-
|
||||
31 files changed, 31 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/qtbase/src/corelib/debug_script.py b/qtbase/src/corelib/debug_script.py
|
||||
index f6207c6104..663c8e0ac1 100644
|
||||
--- a/qtbase/src/corelib/debug_script.py
|
||||
+++ b/qtbase/src/corelib/debug_script.py
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import os
|
||||
import sys
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
from distutils.version import LooseVersion
|
||||
|
||||
diff --git a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
|
||||
index 681039d34b..a1fe56fa05 100644
|
||||
--- a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
|
||||
+++ b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
|
||||
@@ -16,7 +16,7 @@ import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
# from TestCasePackagerConfig import *
|
||||
|
||||
diff --git a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
|
||||
index 92d4e6139b..7a18e12ced 100644
|
||||
--- a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
|
||||
+++ b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
|
||||
@@ -7,7 +7,7 @@ import unittest
|
||||
|
||||
import os
|
||||
import yaml
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
# add parent dir to search path
|
||||
import sys
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py b/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
|
||||
index c7412927c8..ad2caff318 100755
|
||||
--- a/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
import os
|
||||
import sys
|
||||
-import imp
|
||||
+import importlib
|
||||
import tempfile
|
||||
import unittest
|
||||
import PRESUBMIT
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py b/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
|
||||
index 5daee773ba..2d6b124162 100755
|
||||
--- a/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
|
||||
@@ -9,7 +9,7 @@
|
||||
"""
|
||||
from __future__ import print_function
|
||||
import abc
|
||||
-import imp
|
||||
+import importlib
|
||||
import optparse
|
||||
import os
|
||||
import re
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
|
||||
index bf626f5479..3fae129aaa 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
|
||||
@@ -3,7 +3,7 @@
|
||||
# found in the LICENSE file.
|
||||
|
||||
import errno
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
|
||||
index ff5753a291..04fc34f742 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import shutil
|
||||
import sys
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
|
||||
index 32c884a8c0..e761faa54c 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
import unittest
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
|
||||
index 95a916db08..4331e2fbfa 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
import unittest
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
|
||||
index 62798631db..28e9dbf705 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
import unittest
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
|
||||
index cba249b0f3..5a4051827a 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
|
||||
index 4a2fefc712..11a9879cb7 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
|
||||
index cc17ae0253..bcc944f06b 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
import unittest
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
|
||||
index bd72830e54..f2fdc9ae28 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
|
||||
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os.path
|
||||
import sys
|
||||
import unittest
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py b/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
|
||||
index 1feb303a48..8428de61bb 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
|
||||
@@ -6,7 +6,7 @@
|
||||
angle_presubmit_utils_unittest.py: Top-level unittest script for ANGLE presubmit checks.
|
||||
"""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import os
|
||||
import unittest
|
||||
from angle_presubmit_utils import *
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py b/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
|
||||
index ed4f38c67b..cac734cefa 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
|
||||
@@ -7,7 +7,7 @@ See https://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
|
||||
for more details about the presubmit API built into gcl.
|
||||
"""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import inspect
|
||||
import os
|
||||
import re
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py b/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
|
||||
index 0244c9787e..f535afe99c 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
|
||||
@@ -32,7 +32,7 @@ if PY3:
|
||||
memoryview_type = memoryview
|
||||
struct_bool_decl = "?"
|
||||
else:
|
||||
- import imp
|
||||
+ import importlib
|
||||
string_types = (unicode,)
|
||||
if PY26 or PY27:
|
||||
binary_types = (str,bytearray)
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py b/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
|
||||
index 8430390eea..29212205bc 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
|
||||
@@ -732,7 +732,7 @@ class Environment(object):
|
||||
)
|
||||
py_compile = False
|
||||
else:
|
||||
- import imp
|
||||
+ import importlib
|
||||
import marshal
|
||||
|
||||
py_header = imp.get_magic() + u"\xff\xff\xff\xff".encode("iso-8859-15")
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py b/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
|
||||
index 06bb8d99f5..05089dc982 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
|
||||
@@ -115,7 +115,7 @@ if py3k:
|
||||
return module
|
||||
|
||||
else:
|
||||
- import imp
|
||||
+ import importlib
|
||||
|
||||
def load_module(module_id, path):
|
||||
fp = open(path, "rb")
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
|
||||
index a7dc683365..68b6804c78 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
|
||||
@@ -14,7 +14,7 @@
|
||||
# ==============================================================================
|
||||
"""Tests for call_trees module."""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
from tensorflow.python.autograph.converters import call_trees
|
||||
from tensorflow.python.autograph.converters import functions
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
|
||||
index 81a7fde808..1370f900fd 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
|
||||
@@ -14,7 +14,7 @@
|
||||
# ==============================================================================
|
||||
"""Tests for converter module."""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
from tensorflow.python.autograph.core import converter
|
||||
from tensorflow.python.autograph.core import converter_testing
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
|
||||
index b93cbb627b..452ec71f5b 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
|
||||
@@ -15,7 +15,7 @@
|
||||
"""Base class for tests in this module."""
|
||||
|
||||
import contextlib
|
||||
-import imp
|
||||
+import importlib
|
||||
import inspect
|
||||
import sys
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
|
||||
index 9a62d7c0d2..7ec4fa6dca 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
|
||||
@@ -19,7 +19,7 @@ import collections
|
||||
import contextlib
|
||||
import functools
|
||||
import gc
|
||||
-import imp
|
||||
+import importlib
|
||||
import inspect
|
||||
import os
|
||||
import re
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
|
||||
index 852af3efe7..6456c50446 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
|
||||
@@ -14,7 +14,7 @@
|
||||
# ==============================================================================
|
||||
"""Tests for conversion module."""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import sys
|
||||
import types
|
||||
import weakref
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
|
||||
index a50a64534a..ba0f31afa2 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
|
||||
@@ -17,7 +17,7 @@
|
||||
import abc
|
||||
import collections
|
||||
import functools
|
||||
-import imp
|
||||
+import importlib
|
||||
import textwrap
|
||||
|
||||
import six
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
|
||||
index 29f38d853a..7ca88fa371 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
|
||||
@@ -14,7 +14,7 @@
|
||||
# ==============================================================================
|
||||
"""Tests for templates module."""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
from absl.testing import parameterized
|
||||
import gast
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
|
||||
index e46460574b..a40fea6568 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
|
||||
@@ -14,7 +14,7 @@
|
||||
# =============================================================================
|
||||
"""Tests for create_python_api."""
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import sys
|
||||
|
||||
from tensorflow.python.platform import test
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
|
||||
index 73d1742714..ea77dd7647 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
|
||||
@@ -1,5 +1,5 @@
|
||||
import importlib
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
from .browsers import product_list
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
|
||||
index 6a744472b5..9175cb5d34 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
|
||||
@@ -1,6 +1,6 @@
|
||||
import copy
|
||||
import functools
|
||||
-import imp
|
||||
+import importlib
|
||||
import io
|
||||
import os
|
||||
from collections import OrderedDict, defaultdict
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py b/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
|
||||
index 6912b6f3c0..7d851f7f76 100755
|
||||
--- a/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
-import imp
|
||||
+import importlib
|
||||
import optparse
|
||||
import os
|
||||
import pipes
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py b/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
|
||||
index 1c2aba80af..55260d697e 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
|
||||
@@ -10,7 +10,7 @@ from __future__ import print_function
|
||||
|
||||
import os
|
||||
import re
|
||||
-import imp
|
||||
+import importlib
|
||||
|
||||
from _monkeyYaml import load as yamlLoad
|
||||
|
||||
@ -1,45 +0,0 @@
|
||||
diff --git a/qtbase/src/corelib/global/qnamespace.h b/qtbase/src/corelib/global/qnamespace.h
|
||||
index 8a2769a3ed..584d3620c9 100644
|
||||
--- a/qtbase/src/corelib/global/qnamespace.h
|
||||
+++ b/qtbase/src/corelib/global/qnamespace.h
|
||||
@@ -832,10 +832,6 @@ namespace Qt {
|
||||
Key_Dead_Small_Schwa = 0x0100128a,
|
||||
Key_Dead_Capital_Schwa = 0x0100128b,
|
||||
Key_Dead_Greek = 0x0100128c,
|
||||
- Key_Dead_Lowline = 0x01001290,
|
||||
- Key_Dead_Aboveverticalline = 0x01001291,
|
||||
- Key_Dead_Belowverticalline = 0x01001292,
|
||||
- Key_Dead_Longsolidusoverlay = 0x01001293,
|
||||
|
||||
// multimedia/internet keys - ignored by default - see QKeyEvent c'tor
|
||||
Key_Back = 0x01000061,
|
||||
diff --git a/qtbase/src/corelib/global/qnamespace.qdoc b/qtbase/src/corelib/global/qnamespace.qdoc
|
||||
index 78c69176d8..1623517b5a 100644
|
||||
--- a/qtbase/src/corelib/global/qnamespace.qdoc
|
||||
+++ b/qtbase/src/corelib/global/qnamespace.qdoc
|
||||
@@ -1654,10 +1654,6 @@
|
||||
\value Key_Dead_Small_Schwa
|
||||
\value Key_Dead_Capital_Schwa
|
||||
\value Key_Dead_Greek
|
||||
- \value Key_Dead_Lowline
|
||||
- \value Key_Dead_Aboveverticalline
|
||||
- \value Key_Dead_Belowverticalline
|
||||
- \value Key_Dead_Longsolidusoverlay
|
||||
\value Key_Back
|
||||
\value Key_Forward
|
||||
\value Key_Stop
|
||||
diff --git a/qtbase/src/gui/platform/unix/qxkbcommon.cpp b/qtbase/src/gui/platform/unix/qxkbcommon.cpp
|
||||
index fc014b38e2..af1cbbd42a 100644
|
||||
--- a/qtbase/src/gui/platform/unix/qxkbcommon.cpp
|
||||
+++ b/qtbase/src/gui/platform/unix/qxkbcommon.cpp
|
||||
@@ -239,10 +239,6 @@ static constexpr const auto KeyTbl = qMakeArray(
|
||||
Xkb2Qt<XKB_KEY_dead_small_schwa, Qt::Key_Dead_Small_Schwa>,
|
||||
Xkb2Qt<XKB_KEY_dead_capital_schwa, Qt::Key_Dead_Capital_Schwa>,
|
||||
Xkb2Qt<XKB_KEY_dead_greek, Qt::Key_Dead_Greek>,
|
||||
- Xkb2Qt<XKB_KEY_dead_lowline, Qt::Key_Dead_Lowline>,
|
||||
- Xkb2Qt<XKB_KEY_dead_aboveverticalline, Qt::Key_Dead_Aboveverticalline>,
|
||||
- Xkb2Qt<XKB_KEY_dead_belowverticalline, Qt::Key_Dead_Belowverticalline>,
|
||||
- Xkb2Qt<XKB_KEY_dead_longsolidusoverlay, Qt::Key_Dead_Longsolidusoverlay>,
|
||||
|
||||
// Special keys from X.org - This include multimedia keys,
|
||||
// wireless/bluetooth/uwb keys, special launcher keys, etc.
|
||||
@ -1,29 +0,0 @@
|
||||
qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp b/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
|
||||
index ec212f5a35..58bf4dce7d 100644
|
||||
--- a/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
|
||||
+++ b/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
|
||||
@@ -37,7 +37,10 @@ static Libs loadLibs()
|
||||
return {};
|
||||
}
|
||||
|
||||
-constexpr size_t symbolsCount = 39
|
||||
+constexpr size_t symbolsCount = 38
|
||||
+#if VA_CHECK_VERSION(1, 9, 0)
|
||||
+ + 1
|
||||
+#endif
|
||||
#ifdef DYNAMIC_RESOLVE_VA_DRM_SYMBOLS
|
||||
+ 1
|
||||
#endif
|
||||
@@ -79,7 +82,9 @@ DEFINE_FUNC(vaEndPicture, 2, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
DEFINE_FUNC(vaCreateBuffer, 7, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
DEFINE_FUNC(vaMapBuffer, 3, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
DEFINE_FUNC(vaUnmapBuffer, 2, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
+#if VA_CHECK_VERSION(1, 9, 0)
|
||||
DEFINE_FUNC(vaSyncBuffer, 3, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
+#endif
|
||||
DEFINE_FUNC(vaDestroyBuffer, 2, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
|
||||
DEFINE_FUNC(vaCreateSurfaces, 8, VA_STATUS_ERROR_OPERATION_FAILED);
|
||||
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2019-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2019-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
|
||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
|
||||
@ -168,7 +168,7 @@ package-repositories:
|
||||
components: [main]
|
||||
suites: [jami]
|
||||
key-id: A295D773307D25A33AE72F2F64CD5FA175348F84
|
||||
url: https://dl.jami.net/nightly/ubuntu_20.04/
|
||||
url: https://dl.jami.net/nightly/ubuntu_22.04/
|
||||
|
||||
parts:
|
||||
desktop-launch:
|
||||
@ -304,6 +304,7 @@ parts:
|
||||
- libswscale-dev
|
||||
- libva-dev
|
||||
- libvdpau-dev
|
||||
- libpipewire-0.3-dev
|
||||
- libargon2-0-dev # opendht
|
||||
- libexpat1-dev
|
||||
- libjsoncpp-dev
|
||||
@ -326,7 +327,7 @@ parts:
|
||||
- libegl1
|
||||
- libgbm1
|
||||
- libgudev-1.0-0
|
||||
- libjsoncpp1
|
||||
- libjsoncpp25
|
||||
- libllvm12
|
||||
- libminizip1
|
||||
- libnm0
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2016-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2016-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com>
|
||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2016-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2016-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com>
|
||||
# Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
|
||||
@ -36,16 +36,14 @@ rpmdev-setuptree
|
||||
# Copy the source tarball.
|
||||
cp --reflink=auto "/src/$RELEASE_TARBALL_FILENAME" /root/rpmbuild/SOURCES
|
||||
|
||||
cp patches/*.patch /root/rpmbuild/SOURCES/
|
||||
|
||||
QT_JAMI_PREFIX="/usr/lib64/qt-jami"
|
||||
PATH="${QT_JAMI_PREFIX}/bin:${PATH}"
|
||||
LD_LIBRARY_PATH="${QT_JAMI_PREFIX}/lib:${LD_LIBRARY_PATH}"
|
||||
PKG_CONFIG_PATH="${QT_JAMI_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}"
|
||||
CMAKE_PREFIX_PATH="${QT_JAMI_PREFIX}/lib/cmake:${CMAKE_PREFIX_PATH}"
|
||||
QT_MAJOR=6
|
||||
QT_MINOR=5
|
||||
QT_PATCH=3
|
||||
QT_MINOR=6
|
||||
QT_PATCH=1
|
||||
QT_RELEASE_PATCH=0
|
||||
|
||||
QT_MAJOR_MINOR=${QT_MAJOR}.${QT_MINOR}
|
||||
@ -54,7 +52,7 @@ QT_MAJOR_MINOR_PATCH=${QT_MAJOR}.${QT_MINOR}.${QT_PATCH}
|
||||
QT_TARBALL_URL=https://download.qt.io/archive/qt/$QT_MAJOR_MINOR/\
|
||||
$QT_MAJOR_MINOR_PATCH/single/qt-everywhere-src-$QT_MAJOR_MINOR_PATCH.tar.xz
|
||||
|
||||
QT_TARBALL_SHA256="7cda4d119aad27a3887329cfc285f2aba5da85601212bcb0aea27bd6b7b544cb"
|
||||
QT_TARBALL_SHA256="dd3668f65645fe270bc615d748bd4dc048bd17b9dc297025106e6ecc419ab95d"
|
||||
QT_TARBALL_FILE_NAME=$(basename "$QT_TARBALL_URL")
|
||||
CACHED_QT_TARBALL=$TARBALLS/$QT_TARBALL_FILE_NAME
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2020-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2020-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
|
||||
#
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2016-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2016-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com>
|
||||
# Author: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
|
||||
|
||||
11
extras/packaging/gnu-linux/scripts/install-gcc-debian.sh
Executable file
@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
VERSION=$1
|
||||
|
||||
apt-get install -y -o Acquire::Retries=10 \
|
||||
gcc-$VERSION \
|
||||
g++-$VERSION
|
||||
|
||||
rm /usr/bin/gcc /usr/bin/g++
|
||||
ln -s /usr/bin/gcc-$VERSION /usr/bin/gcc
|
||||
ln -s /usr/bin/g++-$VERSION /usr/bin/g++
|
||||
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2021-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2021-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
|
||||
#
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) 2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
|
||||
#
|
||||
|
||||
25
extras/patches/0001-fix-fedora-fc-build.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 161d28abb6784115ad71fcb6977e112e9d5756d4 Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
|
||||
Date: Tue, 23 Jan 2024 15:38:34 -0500
|
||||
Subject: [PATCH] fix-fedora-fc-build
|
||||
|
||||
---
|
||||
CMakeLists.txt | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 0fb89c8..3a6ad6d 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -65,7 +65,7 @@ if(NOT TARGET qmsetup::library)
|
||||
)
|
||||
|
||||
# Find package again
|
||||
- find_package(qmsetup REQUIRED PATHS ${_package_path})
|
||||
+ find_package(qmsetup REQUIRED PATHS ${_package_path} ${qmsetup_cmake_path})
|
||||
|
||||
# Update import path
|
||||
set(qmsetup_DIR ${_package_path} CACHE PATH "" FORCE)
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@ -28,7 +28,7 @@ mutually exclusive required arguments:
|
||||
-z, --zip Build portable archive
|
||||
|
||||
examples:
|
||||
1. build.py --qt=C:/Qt/6.5.3/msvc2019_64 # Build the app using a specific Qt
|
||||
1. build.py --qt=C:/Qt/6.6.2/msvc2019_64 # Build the app using a specific Qt
|
||||
2. build.py --init pack --msi # Build the app and an MSI installer
|
||||
3. build.py --init --tests # Build the app and run tests
|
||||
build.py pack --zip --skip-build # Generate a 7z archive of the app
|
||||
@ -280,7 +280,7 @@ def build(config_str, qt_dir, tests):
|
||||
"-DCMAKE_INSTALL_PREFIX=" + os.getcwd(),
|
||||
"-DCMAKE_SYSTEM_VERSION=" + WIN_SDK_VERSION,
|
||||
"-DCMAKE_BUILD_TYPE=" + "Release",
|
||||
"-DENABLE_TESTS=" + str(tests).lower(),
|
||||
"-DBUILD_TESTING=" + str(tests).lower(),
|
||||
"-DBETA=" + str((0, 1)[config_str == "Beta"]),
|
||||
]
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright (C) 2022-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2022-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -62,7 +62,8 @@ def gen_qml_qrc(with_webengine):
|
||||
continue
|
||||
filtered = [k for k in files if k.endswith('.qml') or
|
||||
k.endswith('.js') or k.endswith('.html') or
|
||||
k.endswith('.css') or k.endswith('.conf')]
|
||||
k.endswith('.css') or k.endswith('.conf') or
|
||||
k == 'qmldir']
|
||||
# if there are no files of interest in this directory, skip it
|
||||
if not filtered:
|
||||
continue
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright (C) 2021-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2021-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -32,7 +32,7 @@ import re
|
||||
# script as set in the project CMakeLists, which should in turn be
|
||||
# where the resources.qrc will be located (currently 'src/app').
|
||||
resdir = os.path.join('..', '..', 'resources')
|
||||
qmlfile = os.path.join('constant', 'JamiResources.qml')
|
||||
qmlfile = os.path.join('net/jami/Constants', 'JamiResources.qml')
|
||||
resfile = os.path.join('resources.qrc')
|
||||
|
||||
print("Generating resource.qrc file ...")
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2019-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2019-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# install.sh --- build and install Jami daemon and client
|
||||
|
||||
# Copyright (C) 2016-2023 Savoir-faire Linux Inc.
|
||||
# Copyright (C) 2016-2024 Savoir-faire Linux Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -29,6 +29,8 @@ export OSTYPE
|
||||
# -W: disable libwrap and shared library
|
||||
# -w: do not use Qt WebEngine
|
||||
# -a: arch to build
|
||||
# -A: enable AddressSanitizer
|
||||
# -D: extra CMake flags for the client
|
||||
|
||||
set -ex
|
||||
|
||||
@ -44,9 +46,11 @@ priv_install=true
|
||||
enable_libwrap=true
|
||||
enable_webengine=true
|
||||
asan=
|
||||
extra_cmake_flags=''
|
||||
arch=''
|
||||
enable_testing=false
|
||||
|
||||
while getopts gsc:dQ:P:p:uWwa:A OPT; do
|
||||
while getopts gsc:dQ:P:p:uWwa:AtD: OPT; do
|
||||
case "$OPT" in
|
||||
g)
|
||||
global='true'
|
||||
@ -81,6 +85,12 @@ while getopts gsc:dQ:P:p:uWwa:A OPT; do
|
||||
A)
|
||||
asan='true'
|
||||
;;
|
||||
t)
|
||||
enable_testing='true'
|
||||
;;
|
||||
D)
|
||||
extra_cmake_flags="${OPTARG}"
|
||||
;;
|
||||
\?)
|
||||
exit 1
|
||||
;;
|
||||
@ -196,6 +206,12 @@ if [ "${asan}" = "true" ]; then
|
||||
client_cmake_flags+=(-DENABLE_ASAN=true)
|
||||
fi
|
||||
|
||||
if [ "${enable_testing}" = "true" ]; then
|
||||
client_cmake_flags+=(-DBUILD_TESTING=On)
|
||||
else
|
||||
client_cmake_flags+=(-DBUILD_TESTING=Off)
|
||||
fi
|
||||
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
#detect arch for macos
|
||||
CMAKE_OSX_ARCHITECTURES="arm64"
|
||||
@ -220,6 +236,11 @@ else
|
||||
-DWITH_DAEMON_SUBMODULE=true)
|
||||
fi
|
||||
|
||||
# Add extra flags for the client
|
||||
if [ -n "${extra_cmake_flags}" ]; then
|
||||
client_cmake_flags+=(${extra_cmake_flags})
|
||||
fi
|
||||
|
||||
echo "info: Configuring $client client with flags: ${client_cmake_flags[*]}"
|
||||
cmake .. "${client_cmake_flags[@]}"
|
||||
make -j"${proc}" V=1
|
||||
|
||||
@ -20,6 +20,8 @@ rm -rf Jami.app/Contents/Frameworks/QtWebEngineQuickDelegatesQml.framework
|
||||
rm -rf Jami.app/Contents/Frameworks/QtWebEngineQuick.framework
|
||||
rm -rf Jami.app/Contents/Frameworks/QtWebEngineCore.framework
|
||||
rm -rf Jami.app/Contents/Frameworks/QtWebChannel.framework
|
||||
echo "remove web dSYM files"
|
||||
find Jami.app/Contents/Resources/qml -type d -name "*.dSYM" -exec rm -r {} \;
|
||||
codesign --force --sign "${APP_CERTIFICATE}" --entitlements ../resources/entitlements/appstore/Jami.entitlements Jami.app
|
||||
codesign --verify Jami.app
|
||||
echo "create .pkg"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
##
|
||||
## Copyright (C) 2016-2023 Savoir-faire Linux Inc.
|
||||
## Copyright (C) 2016-2024 Savoir-faire Linux Inc.
|
||||
##
|
||||
## Author: Edric Milaret <edric.ladent-milaret@savoirfairelinux.com>
|
||||
## Author: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
|
||||
|
||||
10
resources/icons/Receive.svg
Normal file
@ -0,0 +1,10 @@
|
||||
<svg id="Receive" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="12" height="12" viewBox="0 0 12 12">
|
||||
<defs>
|
||||
<clipPath id="clip-path">
|
||||
<rect id="Rectangle_429" data-name="Rectangle 429" width="12" height="12" fill="none"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g id="Group_225" data-name="Group 225" clip-path="url(#clip-path)">
|
||||
<path id="Path_333" data-name="Path 333" d="M6.43,8.784,3.007,5.362,4.06,4.309l2.37,2.37,4.314-4.314A5.966,5.966,0,0,0,6,0c-.032,0-.061.008-.094.01A5.98,5.98,0,0,0,.094,5.074,5.911,5.911,0,0,0,0,6a5.911,5.911,0,0,0,.094.926A5.98,5.98,0,0,0,5.906,11.99c.032,0,.061.01.094.01a6,6,0,0,0,5.533-8.32Z" fill="#60c880"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 702 B |
3
resources/icons/incoming-call.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="22.08" height="22.08" viewBox="0 0 22.08 22.08">
|
||||
<path id="noun-arrow-1167262" d="M35.45,26.488l-4.476,4.476V18.9H28.916V30.964l-4.476-4.476L23,27.955,29.945,34.9l6.971-6.945Z" transform="translate(8.913 -29.202) rotate(45)" stroke="#000" stroke-width="0.5"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 316 B |
8
resources/icons/missed-incoming-call.svg
Normal file
@ -0,0 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="8.814" viewBox="0 0 16 8.814">
|
||||
<g id="noun-missed-3555066" transform="translate(-23.455 -28)">
|
||||
<g id="Group_82" data-name="Group 82" transform="translate(23.455 28)">
|
||||
<path id="Path_289" data-name="Path 289" d="M37.727,37.615a2.761,2.761,0,0,1-1.964-.815L31.17,32.211l1.782-1.782,4.589,4.593a.268.268,0,0,0,.368,0l5.852-5.852,1.782,1.782L39.691,36.8A2.761,2.761,0,0,1,37.727,37.615Z" transform="translate(-29.543 -28.802)"/>
|
||||
<path id="Path_290" data-name="Path 290" d="M28.518,35.555H26v-6.3A1.259,1.259,0,0,1,27.259,28h6.3v2.518H28.518Z" transform="translate(-26 -28)"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 672 B |
8
resources/icons/missed-outgoing-call.svg
Normal file
@ -0,0 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="8.814" viewBox="0 0 16 8.814">
|
||||
<g id="noun-missed-3555066" transform="translate(-0.001)">
|
||||
<g id="Group_82" data-name="Group 82" transform="translate(0.001)">
|
||||
<path id="Path_289" data-name="Path 289" d="M38.986,37.615A2.761,2.761,0,0,0,40.95,36.8l4.593-4.589-1.782-1.782-4.589,4.593a.268.268,0,0,1-.368,0L32.952,29.17,31.17,30.952,37.022,36.8A2.761,2.761,0,0,0,38.986,37.615Z" transform="translate(-31.17 -28.802)"/>
|
||||
<path id="Path_290" data-name="Path 290" d="M31.036,35.555h2.518v-6.3A1.259,1.259,0,0,0,32.3,28H26v2.518h5.036Z" transform="translate(-17.555 -28)"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 666 B |
3
resources/icons/outgoing-call.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="22.08" height="22.08" viewBox="0 0 22.08 22.08">
|
||||
<path id="noun-arrow-1167262" d="M12.45,7.589,7.974,12.064V0H5.916V12.064L1.44,7.588,0,9.055,6.945,16l6.971-6.945Z" transform="translate(10.267 21.654) rotate(-135)" stroke="#000" stroke-width="0.5"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 306 B |
15
resources/icons/window-bar_close.svg
Normal file
@ -0,0 +1,15 @@
|
||||
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" width="10.88" height="10.88"
|
||||
viewBox="0 0 10.88 10.88">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: none;
|
||||
stroke: white;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.25px;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<line class="cls-1" x1="0.44" y1="0.44" x2="10.44" y2="10.44" />
|
||||
<line class="cls-1" x1="0.44" y1="10.44" x2="10.44" y2="0.44" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 444 B |
11
resources/icons/window-bar_fullscreen.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1594017175519"
|
||||
class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1933"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16">
|
||||
<defs>
|
||||
<style type="text/css"></style>
|
||||
</defs>
|
||||
<path
|
||||
d="M874.666667 128h-170.666667a21.333333 21.333333 0 0 0 0 42.666667h119.168l-176.917333 176.917333a21.333333 21.333333 0 1 0 30.165333 30.165333L853.333333 200.832V320a21.333333 21.333333 0 0 0 42.666667 0V149.333333a21.333333 21.333333 0 0 0-21.333333-21.333333zM347.584 646.250667L170.666667 823.168V704a21.333333 21.333333 0 0 0-42.666667 0v170.666667a21.333333 21.333333 0 0 0 21.333333 21.333333h170.666667a21.333333 21.333333 0 0 0 0-42.666667H200.832l176.917333-176.917333a21.333333 21.333333 0 0 0-30.165333-30.165333zM874.666667 682.666667a21.333333 21.333333 0 0 0-21.333334 21.333333v119.168l-176.917333-176.917333a21.333333 21.333333 0 0 0-30.165333 30.165333L823.168 853.333333H704a21.333333 21.333333 0 0 0 0 42.666667h170.666667a21.333333 21.333333 0 0 0 21.333333-21.333333v-170.666667a21.333333 21.333333 0 0 0-21.333333-21.333333zM200.832 170.666667H320a21.333333 21.333333 0 0 0 0-42.666667H149.333333a21.333333 21.333333 0 0 0-21.333333 21.333333v170.666667a21.333333 21.333333 0 0 0 42.666667 0V200.832l176.917333 176.917333a21.333333 21.333333 0 0 0 30.165333-30.165333z"
|
||||
fill="#ffffff" p-id="1934"></path>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
12
resources/icons/window-bar_maximize.svg
Normal file
@ -0,0 +1,12 @@
|
||||
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 10 10">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: none;
|
||||
stroke: white;
|
||||
stroke-miterlimit: 10;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<rect class="cls-1" x="0.5" y="0.5" width="9" height="9" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 328 B |
11
resources/icons/window-bar_minimize.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 10 10" style="enable-background:new 0 0 10 10;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0 {
|
||||
fill: white;
|
||||
}
|
||||
</style>
|
||||
<rect y="4.5" class="st0" width="10" height="1" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 467 B |
16
resources/icons/window-bar_restore.svg
Normal file
@ -0,0 +1,16 @@
|
||||
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: none;
|
||||
stroke: white;
|
||||
stroke-miterlimit: 10;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<rect class="cls-1" x="0.5" y="2.5" width="9" height="9" />
|
||||
<line class="cls-1" x1="2.5" y1="2.5" x2="2.5" y2="0.5" />
|
||||
<line class="cls-1" x1="12" y1="0.5" x2="2" y2="0.5" />
|
||||
<line class="cls-1" x1="11.5" y1="10" x2="11.5" />
|
||||
<line class="cls-1" x1="10" y1="9.5" x2="12" y2="9.5" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 559 B |
@ -1,5 +1,6 @@
|
||||
<h4 align="left"><span style="font-weight:600"> Created by</span></h4>
|
||||
<p>Adrien Béraud<br>
|
||||
<p>Abhishek Ojha<br>
|
||||
Adrien Béraud<br>
|
||||
Albert Babí<br>
|
||||
Alexandre Lision<br>
|
||||
Alexandr Sergheev<br>
|
||||
@ -25,6 +26,7 @@ Emma Falkiewitz<br>
|
||||
Emmanuel Lepage-Vallée<br>
|
||||
Fadi Shehadeh<br>
|
||||
Franck Laurent<br>
|
||||
François-Simon Fauteux-Chapleau<br>
|
||||
Frédéric Guimont<br>
|
||||
Guillaume Heller<br>
|
||||
Guillaume Roguez<br>
|
||||
|
||||
4
src/app/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
# auto-gen files
|
||||
resources.qrc
|
||||
qml.qrc
|
||||
net/jami/Constants/JamiResources.qml
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2019-2024 Savoir-faire Linux Inc.
|
||||
* Author: Yang Wang <yang.wang@savoirfairelinux.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
||||
207
src/app/ComponentTestWindow.qml
Normal file
@ -0,0 +1,207 @@
|
||||
/*
|
||||
* Copyright (C) 2024 Savoir-faire Linux Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import Qt.labs.qmlmodels
|
||||
|
||||
import net.jami.Models 1.1
|
||||
import net.jami.Adapters 1.1
|
||||
import net.jami.Enums 1.1
|
||||
import net.jami.Helpers 1.1
|
||||
import net.jami.Constants 1.1
|
||||
|
||||
import "mainview"
|
||||
import "mainview/components"
|
||||
import "wizardview"
|
||||
import "commoncomponents"
|
||||
|
||||
// A window into which we can load a QML file for testing.
|
||||
ApplicationWindow {
|
||||
id: appWindow
|
||||
visible: true
|
||||
width: testWidth || loader.implicitWidth || 800
|
||||
height: testHeight || loader.implicitHeight || 600
|
||||
title: testComponentURI
|
||||
|
||||
// WARNING: The following currently must be maintained in tandem with MainApplicationWindow.qml
|
||||
// Used to manage full screen mode and save/restore window geometry.
|
||||
readonly property bool useFrameless: false
|
||||
property bool isRTL: UtilsAdapter.isRTL
|
||||
LayoutMirroring.enabled: isRTL
|
||||
LayoutMirroring.childrenInherit: isRTL
|
||||
property LayoutManager layoutManager: LayoutManager {
|
||||
appContainer: null
|
||||
}
|
||||
// Used to manage dynamic view loading and unloading.
|
||||
property ViewManager viewManager: ViewManager {}
|
||||
// Used to manage the view stack and the current view.
|
||||
property ViewCoordinator viewCoordinator: ViewCoordinator {}
|
||||
|
||||
Loader {
|
||||
id: loader
|
||||
|
||||
source: Qt.resolvedUrl(testComponentURI)
|
||||
onStatusChanged: {
|
||||
console.log("Status changed to:", loader.status)
|
||||
if (loader.status == Loader.Error || loader.status == Loader.Null) {
|
||||
console.error("Couldn't load component:", source)
|
||||
Qt.exit(1);
|
||||
} else if (loader.status == Loader.Ready) {
|
||||
console.info("Loaded component:", source);
|
||||
// If any of the dimensions are not set, set them to the appWindow's dimensions
|
||||
item.width = item.width || Qt.binding(() => appWindow.width);
|
||||
item.height = item.height || Qt.binding(() => appWindow.height);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Closing this window should always exit the application.
|
||||
onClosing: Qt.quit()
|
||||
|
||||
// A window to modify properties for Jamified components.
|
||||
// Sometimes we need to modify properties including current conversation ID, account ID, etc.
|
||||
// This window should have a simple layout: a list of editable parameters within a scroll view.
|
||||
Window {
|
||||
id: configTool
|
||||
width: 400
|
||||
height: 400
|
||||
title: "Config tool"
|
||||
|
||||
visible: true
|
||||
// Cannot be closed.
|
||||
flags: Qt.SplashScreen
|
||||
|
||||
// Anchor the window to the right of the parent window.
|
||||
x: appWindow.x + appWindow.width
|
||||
y: appWindow.y
|
||||
|
||||
color: "lightgray"
|
||||
|
||||
Page {
|
||||
anchors.fill: parent
|
||||
header: Control {
|
||||
contentItem: Text {
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: "Config tool"
|
||||
}
|
||||
background: Rectangle { color: configTool.color }
|
||||
}
|
||||
contentItem: Control {
|
||||
background: Rectangle { color: Qt.lighter(configTool.color, 1.1) }
|
||||
padding: 10
|
||||
contentItem: ListView {
|
||||
// Declare types of controls. TODO: add as needed.
|
||||
Component {
|
||||
id: checkComponent
|
||||
CheckBox {
|
||||
text: label
|
||||
onCheckedChanged: checkChangedCb(checked)
|
||||
}
|
||||
}
|
||||
Component {
|
||||
id: comboComponent
|
||||
Control {
|
||||
contentItem: RowLayout {
|
||||
Text { text: label }
|
||||
ComboBox {
|
||||
id: comboBox
|
||||
displayText: CurrentConversation.title || "undefined"
|
||||
model: getDataModel()
|
||||
delegate: ItemDelegate {
|
||||
highlighted: comboBox.highlightedIndex === index
|
||||
width: parent.width
|
||||
text: JamiQmlUtils.getModelData(comboBox.model, index, displayRole)
|
||||
}
|
||||
onCurrentIndexChanged: onIndexChanged(model, currentIndex)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
spacing: 5
|
||||
model: ListModel {
|
||||
ListElement {
|
||||
label: "Conversation ID"
|
||||
type: "combobox"
|
||||
getDataModel: () => ConversationsAdapter.convListProxyModel
|
||||
displayRole: ConversationList.Title
|
||||
onIndexChanged: function(model, index) {
|
||||
const convUid = JamiQmlUtils.getModelData(model, index, ConversationList.UID);
|
||||
LRCInstance.selectConversation(convUid);
|
||||
}
|
||||
}
|
||||
ListElement {
|
||||
label: "Force local preview"
|
||||
type: "checkbox"
|
||||
value: false
|
||||
checkChangedCb: function(checked) {
|
||||
// Find any child component of type `LocalVideo` and start it.
|
||||
const localVideo = findChild(loader.item, LocalVideo, "type");
|
||||
if (localVideo) {
|
||||
if (checked) {
|
||||
localVideo.startWithId(VideoDevices.getDefaultDevice());
|
||||
} else {
|
||||
localVideo.startWithId("");
|
||||
}
|
||||
} else {
|
||||
console.error("LocalVideo not found");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
delegate: DelegateChooser {
|
||||
role: "type"
|
||||
DelegateChoice {
|
||||
roleValue: "checkbox"
|
||||
delegate: checkComponent
|
||||
}
|
||||
DelegateChoice {
|
||||
roleValue: "combobox"
|
||||
delegate: comboComponent
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// From TestCase.qml, refactored to find a child by type or name.
|
||||
function findChild(parent, searchValue, searchBy = "name") {
|
||||
if (!parent || parent.children === undefined) {
|
||||
console.error("No children found");
|
||||
return null;
|
||||
}
|
||||
// Search directly under the given parent
|
||||
for (var i = 0; i < parent.children.length; ++i) {
|
||||
var child = parent.children[i];
|
||||
var match = false;
|
||||
if (searchBy === "name" && child.objectName === searchValue) {
|
||||
match = true;
|
||||
} else if (searchBy === "type" && child instanceof searchValue) {
|
||||
match = true;
|
||||
}
|
||||
if (match) return child;
|
||||
}
|
||||
// Recursively search in child objects
|
||||
for (i = 0; i < parent.children.length; ++i) {
|
||||
var found = findChild(parent.children[i], searchValue, searchBy);
|
||||
if (found) return found;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2020-2024 Savoir-faire Linux Inc.
|
||||
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2022-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2022-2024 Savoir-faire Linux Inc.
|
||||
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -41,6 +41,20 @@ QtObject {
|
||||
// Used to store if a OngoingCallPage component is fullscreened.
|
||||
property bool isCallFullscreen: false
|
||||
|
||||
// QWK: Provide spacing for widgets that may be occluded by the system buttons.
|
||||
property QtObject qwkSystemButtonSpacing: QtObject {
|
||||
id: qwkSystemButtonSpacing
|
||||
readonly property bool isMacOS: Qt.platform.os.toString() === "osx"
|
||||
// macOS buttons are on the left.
|
||||
readonly property real left: {
|
||||
appWindow.useFrameless && isMacOS && viewCoordinator.isInSinglePaneMode ? 80 : 0
|
||||
}
|
||||
// Windows and Linux buttons are on the right.
|
||||
readonly property real right: {
|
||||
appWindow.useFrameless && !isMacOS && !root.isFullscreen ? sysBtnsLoader.width + 24 : 0
|
||||
}
|
||||
}
|
||||
|
||||
// Restore a visible windowed mode.
|
||||
function restoreApp() {
|
||||
if (isHidden) {
|
||||
@ -73,17 +87,26 @@ QtObject {
|
||||
function saveWindowSettings() {
|
||||
// If closed-to-tray or minimized or fullscreen, save the cached windowedVisibility
|
||||
// value instead.
|
||||
if (isHidden || isFullScreen) {
|
||||
AppSettingsManager.setValue(Settings.WindowState, priv.windowedVisibility)
|
||||
} else {
|
||||
AppSettingsManager.setValue(Settings.WindowState, visibility)
|
||||
}
|
||||
const visibilityToSave = isHidden || isFullScreen ? priv.windowedVisibility : visibility;
|
||||
|
||||
// Likewise, don't save fullscreen geometry.
|
||||
const geometry = isFullScreen ?
|
||||
priv.windowedGeometry :
|
||||
Qt.rect(appWindow.x, appWindow.y,
|
||||
appWindow.width, appWindow.height)
|
||||
appWindow.width, appWindow.height);
|
||||
|
||||
// QWK: Account for the frameless window's offset.
|
||||
if (appWindow.useFrameless) {
|
||||
if (Qt.platform.os.toString() !== "osx") {
|
||||
// Add [7, 30, 0, 0] on Windows and GNU/Linux.
|
||||
geometry.x += 7;
|
||||
geometry.y += 30;
|
||||
}
|
||||
}
|
||||
|
||||
console.debug("Saving window: " + JSON.stringify(geometry) + " " + visibilityToSave);
|
||||
|
||||
AppSettingsManager.setValue(Settings.WindowState, visibilityToSave)
|
||||
AppSettingsManager.setValue(Settings.WindowGeometry, geometry)
|
||||
}
|
||||
|
||||
@ -111,6 +134,8 @@ QtObject {
|
||||
const visibilityStr = AppSettingsManager.getValue(Settings.WindowState)
|
||||
var visibilitySetting = parseInt(visibilityStr)
|
||||
|
||||
console.debug("Restoring window: " + JSON.stringify(geometry) + " " + visibilitySetting)
|
||||
|
||||
// We should never restore a hidden or fullscreen state here. Default to normal
|
||||
// windowed state in such a case. This shouldn't happen.
|
||||
if (visibilitySetting === Window.Hidden || visibilitySetting === Window.FullScreen) {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2020-2024 Savoir-faire Linux Inc.
|
||||
* Author: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
|
||||
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
|
||||
* Author: Albert Babí <albert.babi@savoirfairelinux.com>
|
||||
@ -24,30 +24,28 @@ import QtQuick.Window
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import Qt5Compat.GraphicalEffects
|
||||
|
||||
import net.jami.Models 1.1
|
||||
import net.jami.Adapters 1.1
|
||||
import net.jami.Enums 1.1
|
||||
import net.jami.Helpers 1.1
|
||||
import net.jami.Constants 1.1
|
||||
|
||||
import "mainview"
|
||||
import "mainview/components"
|
||||
import "wizardview"
|
||||
import "commoncomponents"
|
||||
|
||||
import QWindowKit
|
||||
|
||||
ApplicationWindow {
|
||||
id: root
|
||||
id: appWindow
|
||||
|
||||
readonly property bool useFrameless: UtilsAdapter.getAppValue(Settings.Key.UseFramelessWindow)
|
||||
property bool isRTL: UtilsAdapter.isRTL
|
||||
|
||||
LayoutMirroring.enabled: isRTL
|
||||
LayoutMirroring.childrenInherit: isRTL
|
||||
|
||||
enum LoadedSource {
|
||||
MainView,
|
||||
AccountMigrationView,
|
||||
None
|
||||
}
|
||||
|
||||
onActiveFocusItemChanged: {
|
||||
focusOverlay.margin = -5;
|
||||
if (activeFocusItem && ((activeFocusItem.focusReason === Qt.TabFocusReason) || (activeFocusItem.focusReason === Qt.BacktabFocusReason))) {
|
||||
@ -70,7 +68,7 @@ ApplicationWindow {
|
||||
sourceComponent: GenericErrorsRow {
|
||||
id: genericError
|
||||
text: CurrentAccount.enabled ? JamiStrings.noNetworkConnectivity : JamiStrings.disabledAccount
|
||||
height: visible? JamiTheme.chatViewHeaderPreferredHeight : 0
|
||||
height: visible? JamiTheme.qwkTitleBarHeight : 0
|
||||
}
|
||||
}
|
||||
|
||||
@ -88,37 +86,25 @@ ApplicationWindow {
|
||||
border.color: JamiTheme.tintedBlue
|
||||
}
|
||||
|
||||
property ApplicationWindow appWindow: root
|
||||
property LayoutManager layoutManager: LayoutManager {
|
||||
appContainer: appContainer
|
||||
}
|
||||
property ViewManager viewManager: ViewManager {
|
||||
}
|
||||
property ViewCoordinator viewCoordinator: ViewCoordinator {
|
||||
viewManager: root.viewManager
|
||||
// Used to manage full screen mode and save/restore window geometry.
|
||||
LayoutManager {
|
||||
id: layoutManager
|
||||
appContainer: fullscreenContainer
|
||||
}
|
||||
// Used to manage dynamic view loading and unloading.
|
||||
property ViewManager viewManager: ViewManager {}
|
||||
// Used to manage the view stack and the current view.
|
||||
property ViewCoordinator viewCoordinator: ViewCoordinator {}
|
||||
|
||||
// Used to prevent the window from being visible until the
|
||||
// window geometry has been restored and the view stack has
|
||||
// been loaded.
|
||||
property bool windowSettingsLoaded: false
|
||||
|
||||
// This setting can be used to block a loading Jami instance
|
||||
// from showNormal() and showMaximized() when starting minimized.
|
||||
property bool allowVisibleWindow: true
|
||||
|
||||
function checkLoadedSource() {
|
||||
var sourceString = mainApplicationLoader.source.toString();
|
||||
if (sourceString === JamiQmlUtils.mainViewLoadPath)
|
||||
return MainApplicationWindow.LoadedSource.MainView;
|
||||
return MainApplicationWindow.LoadedSource.None;
|
||||
}
|
||||
|
||||
function startClient() {
|
||||
setMainLoaderSource(JamiQmlUtils.mainViewLoadPath);
|
||||
}
|
||||
|
||||
function setMainLoaderSource(source) {
|
||||
if (checkLoadedSource() === MainApplicationWindow.LoadedSource.MainView) {
|
||||
cleanupMainView();
|
||||
}
|
||||
mainApplicationLoader.setSource(source);
|
||||
}
|
||||
|
||||
function cleanupMainView() {
|
||||
// Save the main view window size if loading anything else.
|
||||
layoutManager.saveWindowSettings();
|
||||
@ -139,88 +125,137 @@ ApplicationWindow {
|
||||
|
||||
title: JamiStrings.appTitle
|
||||
|
||||
visible: mainApplicationLoader.status === Loader.Ready && windowSettingsLoaded && allowVisibleWindow
|
||||
visible: mainViewLoader.status === Loader.Ready && windowSettingsLoaded && allowVisibleWindow
|
||||
|
||||
// To facilitate reparenting of the callview during
|
||||
// fullscreen mode, we need QQuickItem based object.
|
||||
Item {
|
||||
id: appContainer
|
||||
Connections {
|
||||
id: connectionMigrationEnded
|
||||
|
||||
anchors.fill: parent
|
||||
target: CurrentAccountToMigrate
|
||||
|
||||
function onAccountNeedsMigration(accountId) {
|
||||
viewCoordinator.present("AccountMigrationView");
|
||||
}
|
||||
|
||||
function onAllMigrationsFinished() {
|
||||
viewCoordinator.dismiss("AccountMigrationView");
|
||||
viewCoordinator.present("WelcomePage");
|
||||
}
|
||||
}
|
||||
|
||||
function initMainView(view) {
|
||||
console.info("Initializing main view");
|
||||
|
||||
// Main window, load any valid app settings, and allow the
|
||||
// layoutManager to handle as much as possible.
|
||||
layoutManager.restoreWindowSettings();
|
||||
|
||||
// QWK: setup
|
||||
if (useFrameless) {
|
||||
windowAgent.setTitleBar(titleBar);
|
||||
// Now register the system buttons (non-macOS).
|
||||
if (sysBtnsLoader.item) {
|
||||
const sysBtns = sysBtnsLoader.item;
|
||||
windowAgent.setSystemButton(WindowAgent.Minimize, sysBtns.minButton);
|
||||
windowAgent.setSystemButton(WindowAgent.Maximize, sysBtns.maxButton);
|
||||
windowAgent.setSystemButton(WindowAgent.Close, sysBtns.closeButton);
|
||||
}
|
||||
}
|
||||
|
||||
// Set the viewCoordinator's root item.
|
||||
viewCoordinator.init(view);
|
||||
|
||||
// Navigate to something.
|
||||
if (UtilsAdapter.getAccountListSize() > 0) {
|
||||
// Already have an account.
|
||||
if (CurrentAccountToMigrate.accountToMigrateListSize > 0)
|
||||
// Do we need to migrate any accounts?
|
||||
viewCoordinator.present("AccountMigrationView");
|
||||
else
|
||||
// Okay now just start the client normally.
|
||||
viewCoordinator.present("WelcomePage");
|
||||
} else {
|
||||
// No account, so start the wizard.
|
||||
viewCoordinator.present("WizardView");
|
||||
}
|
||||
|
||||
// Set up the event filter for macOS.
|
||||
if (Qt.platform.os.toString() === "osx") {
|
||||
MainApplication.setEventFilter();
|
||||
}
|
||||
|
||||
// Quiet check for updates on start if set to.
|
||||
if (Qt.platform.os.toString() === "windows") {
|
||||
if (UtilsAdapter.getAppValue(Settings.AutoUpdate)) {
|
||||
AppVersionManager.checkForUpdates(true);
|
||||
AppVersionManager.setAutoUpdateCheck(true);
|
||||
}
|
||||
}
|
||||
|
||||
// Handle a start URI if set as start option.
|
||||
MainApplication.handleUriAction();
|
||||
|
||||
// This will allow visible to become true if not starting minimized.
|
||||
windowSettingsLoaded = true;
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
// QWK: setup
|
||||
if (useFrameless) {
|
||||
windowAgent.setup(appWindow);
|
||||
}
|
||||
|
||||
mainViewLoader.active = true;
|
||||
|
||||
// Dbus error handler for Linux.
|
||||
if (Qt.platform.os.toString() !== "windows" && Qt.platform.os.toString() !== "osx")
|
||||
DBusErrorHandler.setActive(true);
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: mainApplicationLoader
|
||||
|
||||
id: mainViewLoader
|
||||
active: false
|
||||
source: "qrc:/mainview/MainView.qml"
|
||||
anchors.fill: parent
|
||||
z: -1
|
||||
onLoaded: initMainView(item)
|
||||
}
|
||||
|
||||
asynchronous: true
|
||||
visible: status == Loader.Ready
|
||||
// Use this as a parent for fullscreen items.
|
||||
Item {
|
||||
id: fullscreenContainer
|
||||
anchors.fill: parent
|
||||
}
|
||||
|
||||
Connections {
|
||||
id: connectionMigrationEnded
|
||||
|
||||
target: CurrentAccountToMigrate
|
||||
|
||||
function onAccountNeedsMigration(accountId) {
|
||||
viewCoordinator.present("AccountMigrationView");
|
||||
}
|
||||
|
||||
function onAllMigrationsFinished() {
|
||||
viewCoordinator.dismiss("AccountMigrationView");
|
||||
startClient();
|
||||
}
|
||||
// QWK: Window Title bar
|
||||
Item {
|
||||
id: titleBar
|
||||
height: JamiTheme.qwkTitleBarHeight
|
||||
anchors {
|
||||
top: parent.top
|
||||
right: parent.right
|
||||
left: parent.left
|
||||
}
|
||||
|
||||
// Set `visible = false` when loading a new QML file.
|
||||
onSourceChanged: windowSettingsLoaded = false
|
||||
|
||||
onLoaded: {
|
||||
if (UtilsAdapter.getAccountListSize() === 0) {
|
||||
layoutManager.restoreWindowSettings();
|
||||
if (!viewCoordinator.rootView)
|
||||
// Set the viewCoordinator's root item.
|
||||
viewCoordinator.init(item);
|
||||
viewCoordinator.present("WizardView");
|
||||
} else {
|
||||
// Main window, load any valid app settings, and allow the
|
||||
// layoutManager to handle as much as possible.
|
||||
layoutManager.restoreWindowSettings();
|
||||
|
||||
// Present the welcome view once the viewCoordinator is setup.
|
||||
viewCoordinator.initialized.connect(function () {
|
||||
viewCoordinator.preload("SidePanel");
|
||||
viewCoordinator.preload("SettingsSidePanel");
|
||||
viewCoordinator.present("WelcomePage");
|
||||
viewCoordinator.preload("ConversationView");
|
||||
});
|
||||
if (!viewCoordinator.rootView)
|
||||
// Set the viewCoordinator's root item.
|
||||
viewCoordinator.init(item);
|
||||
if (CurrentAccountToMigrate.accountToMigrateListSize > 0)
|
||||
viewCoordinator.present("AccountMigrationView");
|
||||
// On Windows and Linux, use custom system buttons.
|
||||
Loader {
|
||||
id: sysBtnsLoader
|
||||
active: Qt.platform.os.toString() !== "osx" && useFrameless
|
||||
height: titleBar.height
|
||||
anchors {
|
||||
top: parent.top
|
||||
right: parent.right
|
||||
// Note: leave these margins, they prevent image scaling artifacts
|
||||
topMargin: 1
|
||||
rightMargin: 1
|
||||
}
|
||||
if (Qt.platform.os.toString() === "osx") {
|
||||
MainApplication.setEventFilter();
|
||||
}
|
||||
|
||||
// This will trigger `visible = true`.
|
||||
windowSettingsLoaded = true;
|
||||
|
||||
// Quiet check for updates on start if set to.
|
||||
if (Qt.platform.os.toString() === "windows") {
|
||||
if (UtilsAdapter.getAppValue(Settings.AutoUpdate)) {
|
||||
AppVersionManager.checkForUpdates(true);
|
||||
AppVersionManager.setAutoUpdateCheck(true);
|
||||
}
|
||||
}
|
||||
|
||||
// Handle a start URI if set as start option.
|
||||
MainApplication.handleUriAction();
|
||||
source: "qrc:/commoncomponents/QWKSystemButtonGroup.qml"
|
||||
}
|
||||
}
|
||||
|
||||
// QWK: Main interop component.
|
||||
WindowAgent {
|
||||
id: windowAgent
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: LRCInstance
|
||||
|
||||
@ -234,6 +269,12 @@ ApplicationWindow {
|
||||
raise();
|
||||
layoutManager.restoreApp();
|
||||
}
|
||||
|
||||
function onCurrentAccountRemoved() {
|
||||
if (UtilsAdapter.getAccountListSize() === 0) {
|
||||
viewCoordinator.present("WizardView");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
@ -339,11 +380,5 @@ ApplicationWindow {
|
||||
}
|
||||
}
|
||||
|
||||
onClosing: root.close()
|
||||
|
||||
Component.onCompleted: {
|
||||
startClient();
|
||||
if (Qt.platform.os.toString() !== "windows" && Qt.platform.os.toString() !== "osx")
|
||||
DBusErrorHandler.setActive(true);
|
||||
}
|
||||
onClosing: appWindow.close()
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2024 Savoir-faire Linux Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -24,14 +24,6 @@ import "commoncomponents"
|
||||
QtObject {
|
||||
id: root
|
||||
|
||||
required property QtObject viewManager
|
||||
|
||||
signal initialized
|
||||
|
||||
function requestAppWindowWizardView() {
|
||||
viewCoordinator.present("WizardView");
|
||||
}
|
||||
|
||||
// A map of view names to file paths for QML files that define each view.
|
||||
property variant resources: {
|
||||
"SidePanel": "mainview/components/SidePanel.qml",
|
||||
@ -47,12 +39,44 @@ QtObject {
|
||||
// The `main` view of the application window.
|
||||
property StackView rootView
|
||||
|
||||
property var currentViewName: rootView && rootView.currentItem && rootView.currentItem.objectName || null
|
||||
readonly property Item currentView: rootView && rootView.currentItem || null
|
||||
readonly property var currentViewName: currentView && currentView.objectName || null
|
||||
readonly property bool isDualPane: currentView && currentView instanceof DualPaneView
|
||||
readonly property bool isInSinglePaneMode: !isDualPane || currentView.isSinglePane
|
||||
readonly property bool isRTL: Qt.application.layoutDirection === Qt.RightToLeft
|
||||
// A list of the current visible views. This could be a single view or two views in
|
||||
// dual pane mode. The list is ordered [minor, major] where major is the view on the
|
||||
// right side when not in RTL and should represent the main or content-type view.
|
||||
readonly property var visibleViews: {
|
||||
if (!currentView)
|
||||
return []
|
||||
if (isDualPane) {
|
||||
if (isInSinglePaneMode)
|
||||
return [currentView.rightPaneItem]
|
||||
return [currentView.leftPaneItem, currentView.rightPaneItem]
|
||||
}
|
||||
return [currentView]
|
||||
}
|
||||
// Aggregate this info and expose it as a single string for convenience.
|
||||
// JSON indented by 2 spaces.
|
||||
readonly property string currentViewInfo: {
|
||||
var info = {
|
||||
currentViewName: currentViewName,
|
||||
isDualPane: isDualPane,
|
||||
isInSinglePaneMode: isInSinglePaneMode,
|
||||
visibleViews: visibleViews.map(function(view) {
|
||||
return view && view.objectName || null;
|
||||
}),
|
||||
visibleViewWidths: visibleViews.map(function(view) {
|
||||
return view && view.width || null;
|
||||
}),
|
||||
};
|
||||
return JSON.stringify(info, null, 2);
|
||||
}
|
||||
|
||||
function init(mainStackView) {
|
||||
rootView = Qt.createQmlObject(`import QtQuick; import QtQuick.Controls
|
||||
StackView { anchors.fill: parent }`, mainStackView);
|
||||
initialized();
|
||||
}
|
||||
|
||||
function deinit() {
|
||||
@ -171,6 +195,8 @@ QtObject {
|
||||
var objectName = view ? view.objectName : obj.objectName;
|
||||
if (!viewManager.destroyView(resources[objectName])) {
|
||||
print("could not destroy view:", objectName);
|
||||
} else {
|
||||
print("destroyed view:", objectName);
|
||||
}
|
||||
} else
|
||||
view.dismissed();
|
||||
@ -197,8 +223,20 @@ QtObject {
|
||||
}
|
||||
}
|
||||
|
||||
function getView(viewName) {
|
||||
return viewManager.getView(viewName);
|
||||
function getView(viewName, forceCreate = false) {
|
||||
// If the view is already loaded, return it.
|
||||
var view = viewManager.getView(viewName);
|
||||
if (view)
|
||||
return view;
|
||||
if (!forceCreate)
|
||||
return null;
|
||||
// Otherwise, create it.
|
||||
view = viewManager.createView(resources[viewName], null);
|
||||
if (!view) {
|
||||
console.log("Failed to load view: " + viewName);
|
||||
return null;
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
// Load a view without presenting it.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2024 Savoir-faire Linux Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2019-2024 Savoir-faire Linux Inc.
|
||||
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2020-2024 Savoir-faire Linux Inc.
|
||||
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
|
||||
* Author: Yang Wang <yang.yang@savoirfairelinux.com>
|
||||
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
|
||||
@ -22,7 +22,9 @@
|
||||
|
||||
#include "appsettingsmanager.h"
|
||||
#include "qtutils.h"
|
||||
#include "qmlregister.h"
|
||||
#include "systemtray.h"
|
||||
#include "lrcinstance.h"
|
||||
#include "accountlistmodel.h"
|
||||
|
||||
#include <QtConcurrent/QtConcurrent>
|
||||
|
||||
@ -33,14 +35,7 @@ AccountAdapter::AccountAdapter(AppSettingsManager* settingsManager,
|
||||
: QmlAdapterBase(instance, parent)
|
||||
, settingsManager_(settingsManager)
|
||||
, systemTray_(systemTray)
|
||||
, accountListModel_(new AccountListModel(instance))
|
||||
, deviceItemListModel_(new DeviceItemListModel(instance, parent))
|
||||
, moderatorListModel_(new ModeratorListModel(instance, parent))
|
||||
{
|
||||
QML_REGISTERSINGLETONTYPE_POBJECT(NS_MODELS, accountListModel_.get(), "AccountListModel");
|
||||
QML_REGISTERSINGLETONTYPE_POBJECT(NS_MODELS, deviceItemListModel_.get(), "DeviceItemListModel");
|
||||
QML_REGISTERSINGLETONTYPE_POBJECT(NS_MODELS, moderatorListModel_.get(), "ModeratorListModel");
|
||||
|
||||
connect(&lrcInstance_->accountModel(),
|
||||
&AccountModel::accountStatusChanged,
|
||||
this,
|
||||
@ -53,8 +48,13 @@ AccountAdapter::AccountAdapter(AppSettingsManager* settingsManager,
|
||||
|
||||
connect(systemTray_,
|
||||
&SystemTray::countChanged,
|
||||
accountListModel_.get(),
|
||||
qApp->property("AccountListModel").value<AccountListModel*>(),
|
||||
&AccountListModel::updateNotifications);
|
||||
|
||||
// Switch account to the specified index when an account is added.
|
||||
connect(this, &AccountAdapter::accountAdded, this, [this](const QString&, int index) {
|
||||
changeAccount(index);
|
||||
});
|
||||
}
|
||||
|
||||
AccountModel*
|
||||
@ -63,6 +63,14 @@ AccountAdapter::getModel()
|
||||
return &(lrcInstance_->accountModel());
|
||||
}
|
||||
|
||||
AccountAdapter*
|
||||
AccountAdapter::create(QQmlEngine*, QJSEngine*)
|
||||
{
|
||||
return new AccountAdapter(qApp->property("AppSettingsManager").value<AppSettingsManager*>(),
|
||||
qApp->property("SystemTray").value<SystemTray*>(),
|
||||
qApp->property("LRCInstance").value<LRCInstance*>());
|
||||
}
|
||||
|
||||
void
|
||||
AccountAdapter::changeAccount(int row)
|
||||
{
|
||||
@ -219,7 +227,7 @@ AccountAdapter::createJAMSAccount(const QVariantMap& settings)
|
||||
&lrcInstance_->accountModel(),
|
||||
&lrc::api::AccountModel::accountAdded,
|
||||
[this](const QString& accountId) {
|
||||
if (!lrcInstance_->accountModel().getAccountList().size())
|
||||
if (!lrcInstance_->accountModel().getAccountCount())
|
||||
return;
|
||||
|
||||
Utils::oneShotConnect(&lrcInstance_->accountModel(),
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2021-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2021-2024 Savoir-faire Linux Inc.
|
||||
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -20,21 +20,20 @@
|
||||
|
||||
#include "qmladapterbase.h"
|
||||
|
||||
#include "accountlistmodel.h"
|
||||
#include "deviceitemlistmodel.h"
|
||||
#include "moderatorlistmodel.h"
|
||||
#include "systemtray.h"
|
||||
#include "lrcinstance.h"
|
||||
#include "utils.h"
|
||||
#include "api/accountmodel.h"
|
||||
|
||||
#include <QSettings>
|
||||
#include <QString>
|
||||
#include <QQmlEngine> // QML registration
|
||||
#include <QApplication> // QML registration
|
||||
|
||||
class AppSettingsManager;
|
||||
class SystemTray;
|
||||
|
||||
class AccountAdapter final : public QmlAdapterBase
|
||||
{
|
||||
Q_OBJECT
|
||||
QML_SINGLETON
|
||||
|
||||
Q_PROPERTY(lrc::api::AccountModel* model READ getModel NOTIFY modelChanged)
|
||||
|
||||
@ -45,6 +44,8 @@ Q_SIGNALS:
|
||||
void modelChanged();
|
||||
|
||||
public:
|
||||
static AccountAdapter* create(QQmlEngine*, QJSEngine*);
|
||||
|
||||
explicit AccountAdapter(AppSettingsManager* settingsManager,
|
||||
SystemTray* systemTray,
|
||||
LRCInstance* instance,
|
||||
@ -100,9 +101,5 @@ private:
|
||||
|
||||
AppSettingsManager* settingsManager_;
|
||||
SystemTray* systemTray_;
|
||||
|
||||
QScopedPointer<AccountListModel> accountListModel_;
|
||||
QScopedPointer<DeviceItemListModel> deviceItemListModel_;
|
||||
QScopedPointer<ModeratorListModel> moderatorListModel_;
|
||||
};
|
||||
Q_DECLARE_METATYPE(AccountAdapter*)
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2019-2024 Savoir-faire Linux Inc.
|
||||
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
|
||||
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
|
||||
*
|
||||
@ -20,11 +20,8 @@
|
||||
#include "accountlistmodel.h"
|
||||
|
||||
#include "lrcinstance.h"
|
||||
#include "utils.h"
|
||||
|
||||
#include "api/account.h"
|
||||
#include "api/contact.h"
|
||||
#include "api/conversation.h"
|
||||
|
||||
#include <QDateTime>
|
||||
|
||||
@ -38,7 +35,7 @@ int
|
||||
AccountListModel::rowCount(const QModelIndex& parent) const
|
||||
{
|
||||
if (!parent.isValid() && lrcInstance_) {
|
||||
return lrcInstance_->accountModel().getAccountList().size();
|
||||
return lrcInstance_->accountModel().getAccountCount();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -74,7 +71,7 @@ AccountListModel::data(const QModelIndex& index, int role) const
|
||||
void
|
||||
AccountListModel::updateNotifications()
|
||||
{
|
||||
for (int i = 0; i < lrcInstance_->accountModel().getAccountList().size(); ++i) {
|
||||
for (int i = 0; i < lrcInstance_->accountModel().getAccountCount(); ++i) {
|
||||
QModelIndex modelIndex = QAbstractListModel::index(i, 0);
|
||||
Q_EMIT dataChanged(modelIndex, modelIndex, {Role::NotificationCount});
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2019-2024 Savoir-faire Linux Inc.
|
||||
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
|
||||
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
|
||||
*
|
||||
@ -51,11 +51,9 @@ public:
|
||||
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
|
||||
QHash<int, QByteArray> roleNames() const override;
|
||||
|
||||
// reset the model when there's new account added
|
||||
Q_INVOKABLE void reset();
|
||||
|
||||
void updateNotifications();
|
||||
|
||||
protected:
|
||||
private:
|
||||
using Role = AccountList::Role;
|
||||
};
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2021-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2021-2024 Savoir-faire Linux Inc.
|
||||
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -137,4 +137,11 @@ AppSettingsManager::loadTranslations()
|
||||
}
|
||||
|
||||
Q_EMIT retranslate();
|
||||
loadHistory();
|
||||
}
|
||||
|
||||
void
|
||||
AppSettingsManager::loadHistory()
|
||||
{
|
||||
Q_EMIT reloadHistory();
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2020-2024 Savoir-faire Linux Inc.
|
||||
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -33,13 +33,20 @@
|
||||
extern const QString defaultDownloadPath;
|
||||
|
||||
// clang-format off
|
||||
|
||||
// Define USE_FRAMELESS_WINDOW_DEFAULT based on the platform
|
||||
#ifdef Q_OS_LINUX
|
||||
#define USE_FRAMELESS_WINDOW_DEFAULT false
|
||||
#else
|
||||
#define USE_FRAMELESS_WINDOW_DEFAULT true
|
||||
#endif
|
||||
|
||||
// Common key-value pairs for both APPSTORE and non-APPSTORE builds
|
||||
#define COMMON_KEYS \
|
||||
X(MinimizeOnClose, false) \
|
||||
X(DownloadPath, defaultDownloadPath) \
|
||||
X(ScreenshotPath, {}) \
|
||||
X(EnableNotifications, true) \
|
||||
X(EnableTypingIndicator, true) \
|
||||
X(EnableReadReceipt, true) \
|
||||
X(AcceptTransferBelow, 20) \
|
||||
X(AutoAcceptFiles, true) \
|
||||
@ -66,8 +73,9 @@ extern const QString defaultDownloadPath;
|
||||
X(ChatViewEnterIsNewLine, false) \
|
||||
X(ShowSendOption, false) \
|
||||
X(EnablePtt, false) \
|
||||
X(PttKeys, 32)
|
||||
#ifdef APPSTORE
|
||||
X(PttKeys, 32) \
|
||||
X(UseFramelessWindow, USE_FRAMELESS_WINDOW_DEFAULT)
|
||||
#if APPSTORE
|
||||
#define KEYS COMMON_KEYS
|
||||
#else
|
||||
// Additional key-value pairs for non-APPSTORE builds including donation
|
||||
@ -75,7 +83,7 @@ extern const QString defaultDownloadPath;
|
||||
#define KEYS COMMON_KEYS \
|
||||
X(Donation2023VisibleDate, "2023-11-27 05:00") \
|
||||
X(IsDonationVisible, true) \
|
||||
X(Donation2023EndDate, "2024-01-31 00:00")
|
||||
X(Donation2023EndDate2, "2024-04-01 00:00")
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -140,9 +148,11 @@ public:
|
||||
QString getLanguage();
|
||||
|
||||
void loadTranslations();
|
||||
void loadHistory();
|
||||
|
||||
Q_SIGNALS:
|
||||
void retranslate();
|
||||
void reloadHistory();
|
||||
|
||||
private:
|
||||
QSettings* settings_;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2020-2024 Savoir-faire Linux Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2020-2024 Savoir-faire Linux Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2021-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2021-2024 Savoir-faire Linux Inc.
|
||||
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2021-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2021-2024 Savoir-faire Linux Inc.
|
||||
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2019-2024 Savoir-faire Linux Inc.
|
||||
* Author: Yang Wang <yang.wang@savoirfairelinux.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2019-2024 Savoir-faire Linux Inc.
|
||||
* Author: Yang Wang <yang.wang@savoirfairelinux.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2023 Savoir-faire Linux Inc.
|
||||
* Copyright (C) 2020-2024 Savoir-faire Linux Inc.
|
||||
* Author : Edric Ladent Milaret<edric.ladent - milaret @savoirfairelinux.com>
|
||||
* Author : Andreas Traczyk<andreas.traczyk @savoirfairelinux.com>
|
||||
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
|
||||
@ -25,7 +25,11 @@
|
||||
#include "api/devicemodel.h"
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
#include "screencastportal.h"
|
||||
#include "xrectsel.h"
|
||||
#ifndef ENABLE_LIBWRAP
|
||||
#include <sys/prctl.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <QtConcurrent/QtConcurrent>
|
||||
@ -58,6 +62,12 @@ AvAdapter::AvAdapter(LRCInstance* instance, QObject* parent)
|
||||
&lrc::api::AVModel::onRendererFpsChange,
|
||||
this,
|
||||
&AvAdapter::updateRenderersFPSInfo);
|
||||
#ifdef Q_OS_LINUX
|
||||
connect(&lrcInstance_->behaviorController(),
|
||||
&BehaviorController::callStatusChanged,
|
||||
this,
|
||||
&AvAdapter::onCallStatusChanged);
|
||||
#endif
|
||||
}
|
||||
|
||||
// The top left corner of primary screen is (0, 0).
|
||||
@ -119,6 +129,93 @@ AvAdapter::shareEntireScreen(int screenNumber)
|
||||
->addMedia(callId, resource, lrc::api::CallModel::MediaRequestType::SCREENSHARING);
|
||||
}
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
static std::map<QString, std::unique_ptr<ScreenCastPortal>> callPortal;
|
||||
|
||||
void
|
||||
AvAdapter::onCallStatusChanged(const QString& accountId, const QString& callId)
|
||||
{
|
||||
auto& accInfo = lrcInstance_->accountModel().getAccountInfo(accountId);
|
||||
auto& callModel = accInfo.callModel;
|
||||
const auto call = callModel->getCall(callId);
|
||||
|
||||
if (call.status == lrc::api::call::Status::ENDED) {
|
||||
closePortal(callId);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
AvAdapter::closePortal(const QString& callId)
|
||||
{
|
||||
if (callPortal.count(callId)) {
|
||||
lrcInstance_->avModel().stopPreview(callPortal[callId]->videoInputId);
|
||||
callPortal.erase(callId);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
AvAdapter::shareWayland(bool entireScreen)
|
||||
{
|
||||
QString callId = lrcInstance_->getCurrentCallId();
|
||||
closePortal(callId);
|
||||
|
||||
PortalCaptureType captureType = entireScreen ? PortalCaptureType::SCREEN
|
||||
: PortalCaptureType::WINDOW;
|
||||
auto portal = std::make_unique<ScreenCastPortal>(captureType);
|
||||
|
||||
int err = portal->getPipewireFd();
|
||||
if (err == EACCES) {
|
||||
qInfo() << "Can't share screen: permission denied";
|
||||
return;
|
||||
} else if (err != 0) {
|
||||
qWarning() << "Failed to get PipeWire fd. Error code:" << err;
|
||||
return;
|
||||
}
|
||||
QString resource = QString("%1%2pipewire pid:%3 fd:%4 node:%5")
|
||||
.arg(libjami::Media::VideoProtocolPrefix::DISPLAY)
|
||||
.arg(libjami::Media::VideoProtocolPrefix::SEPARATOR)
|
||||
.arg(getpid())
|
||||
.arg(portal->pipewireFd)
|
||||
.arg(portal->pipewireNode);
|
||||
#ifndef ENABLE_LIBWRAP
|
||||
// If the daemon is running as a separate process, then it can't directly use the
|
||||
// PipeWire file descriptor opened by the client, so it will attempt to duplicate
|
||||
// it using the pidfd_getfd system call. This requires the daemon process to have
|
||||
// ptrace permission on the client process. On some systems, this will be true by
|
||||
// default (as long as the client and daemon processes have the same uid), but it
|
||||
// may not be if the Yama Linux Security Module is used. The call to prctl below
|
||||
// will grant permission if the Yama LSM is enabled and set to mode 1.
|
||||
//
|
||||
// References:
|
||||
// https://man7.org/linux/man-pages/man2/pidfd_getfd.2.html
|
||||
// https://man7.org/linux/man-pages/man2/prctl.2.html
|
||||
// https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/LSM/Yama.rst
|
||||
prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY);
|
||||
#endif
|
||||
// We open the video input here (instead of letting the daemon do it) to ensure
|
||||
// that the daemon doesn't try to restart it while we still need it, since this
|
||||
// would require getting a new file descriptor for PipeWire.
|
||||
portal->videoInputId = lrcInstance_->avModel().startPreview(resource);
|
||||
|
||||
callPortal[callId] = std::move(portal);
|
||||
muteCamera_ = !isCapturing();
|
||||
lrcInstance_->getCurrentCallModel()
|
||||
->addMedia(callId, resource, lrc::api::CallModel::MediaRequestType::SCREENSHARING);
|
||||
}
|
||||
|
||||
void
|
||||
AvAdapter::shareEntireScreenWayland()
|
||||
{
|
||||
shareWayland(true);
|
||||
}
|
||||
|
||||
void
|
||||
AvAdapter::shareWindowWayland()
|
||||
{
|
||||
shareWayland(false);
|
||||
}
|
||||
#endif // Q_OS_LINUX
|
||||
|
||||
void
|
||||
AvAdapter::shareAllScreens()
|
||||
{
|
||||
@ -204,10 +301,14 @@ AvAdapter::shareFile(const QString& filePath)
|
||||
&lrc::api::AVModel::fileOpened,
|
||||
this,
|
||||
[this, callId, filePath, resource](bool hasAudio, bool hasVideo) {
|
||||
lrcInstance_->avModel().setAutoRestart(resource, true);
|
||||
lrcInstance_->getCurrentCallModel()
|
||||
->addMedia(callId, filePath, lrc::api::CallModel::MediaRequestType::FILESHARING, false, hasAudio);
|
||||
lrcInstance_->avModel().pausePlayer(resource, false);
|
||||
lrcInstance_->avModel().setAutoRestart(resource, true);
|
||||
lrcInstance_->getCurrentCallModel()
|
||||
->addMedia(callId,
|
||||
filePath,
|
||||
lrc::api::CallModel::MediaRequestType::FILESHARING,
|
||||
false,
|
||||
hasAudio);
|
||||
lrcInstance_->avModel().pausePlayer(resource, false);
|
||||
});
|
||||
|
||||
lrcInstance_->avModel().createMediaPlayer(resource);
|
||||
@ -307,6 +408,9 @@ void
|
||||
AvAdapter::stopSharing(const QString& source)
|
||||
{
|
||||
auto callId = lrcInstance_->getCurrentCallId();
|
||||
#ifdef Q_OS_LINUX
|
||||
closePortal(callId);
|
||||
#endif
|
||||
if (!source.isEmpty() && !callId.isEmpty()) {
|
||||
if (source.startsWith(libjami::Media::VideoProtocolPrefix::DISPLAY)) {
|
||||
qDebug() << "Stopping display: " << source;
|
||||
|
||||