Compare commits
150 Commits
nightly/20
...
beta/20250
| Author | SHA1 | Date | |
|---|---|---|---|
| e7d626a421 | |||
| 185869824a | |||
| 9858891fea | |||
| be7ec378c8 | |||
| cbed58544f | |||
| c642c1ddfa | |||
| aa8c1edbd4 | |||
| 2a28438275 | |||
| 92945ad29f | |||
| c22260fb20 | |||
| 0163ad7da1 | |||
| becd7ac144 | |||
| 8b19f733af | |||
| 25c9f0ef5c | |||
| f1895b31b8 | |||
| 13a314bde5 | |||
| 8c9f6a85a3 | |||
| 82eb5c59a6 | |||
| 84a9ba4196 | |||
| 6dac4d2ee3 | |||
| 674bf38766 | |||
| 52f3a9bc28 | |||
| abce881b50 | |||
| 666b149033 | |||
| eb10ccbd4a | |||
| f513358236 | |||
| 3c00829afb | |||
| 84a59889e3 | |||
| 6c35561817 | |||
| 6ffdda7b81 | |||
| a51078c900 | |||
| 76a710e2ab | |||
| bc324aa8bb | |||
| 5c772960bc | |||
| da2acefced | |||
| 524c9b0ed4 | |||
| 8677349c4a | |||
| 905b2e858e | |||
| 6fc2e75a33 | |||
| c738caa3a4 | |||
| cb13d4f771 | |||
| 436e11a6a4 | |||
| 869aef8929 | |||
| e0f939318e | |||
| 136dea011f | |||
| af09269d81 | |||
| 5a5ef4711d | |||
| 1dd745d446 | |||
| 3dd2d26d86 | |||
| eb6b6a2b93 | |||
| b15d692a0e | |||
| e76bcbd555 | |||
| b5a979e6b1 | |||
| 898444dd3c | |||
| 99f246016d | |||
| e24f3d91e8 | |||
| 3a7850b398 | |||
| 1e1750024b | |||
| 2ba53a2e40 | |||
| ceec1f95b9 | |||
| 1ac3db4f33 | |||
| 93d3d18c7b | |||
| d4b7891f48 | |||
| d7c294edd0 | |||
| 945cfe176d | |||
| fa3a153896 | |||
| e9106b2bcc | |||
| a967518d45 | |||
| 7ebed53e97 | |||
| ca05963c40 | |||
| df98c6c3fd | |||
| 05501e33e9 | |||
| 91780ae400 | |||
| 4900ca9f1b | |||
| 0f965aae28 | |||
| f8c29fc4a1 | |||
| 2e1889caf1 | |||
| 8070d1bfc2 | |||
| 4ee1a309a1 | |||
| 0333016c44 | |||
| 32b7525ee3 | |||
| 32b941ab96 | |||
| e4932abd39 | |||
| 718d1d266d | |||
| 8d55f352b4 | |||
| 2a72da564e | |||
| 88d0539085 | |||
| 4b1c299a1d | |||
| 479da3ca54 | |||
| 02140a11c4 | |||
| b5dbe23c17 | |||
| ff5f94b34a | |||
| def2e19abe | |||
| 69430c4af3 | |||
| 911fdbc9e5 | |||
| 80b3336f1b | |||
| f8bafd4154 | |||
| b8b06ccfa1 | |||
| 6cb5a8206a | |||
| ae1a2462e2 | |||
| 31581db7f5 | |||
| c323dcfe13 | |||
| 8a31aca346 | |||
| 7eeabbe1c6 | |||
| 8c0ecaf3c5 | |||
| c91bff35b6 | |||
| cb05b4afd0 | |||
| 4419f7bfbc | |||
| deaa15a36e | |||
| 6b70ffcf3e | |||
| a407fa2c47 | |||
| 3143d60760 | |||
| 73eacd5125 | |||
| fc70ddc6dc | |||
| e2e5a0c8cc | |||
| dd9ed8d57d | |||
| 7eea1484c5 | |||
| 6fac40340b | |||
| 04a1544d56 | |||
| 91fd8a0295 | |||
| bad5698e71 | |||
| 7f0a94dd48 | |||
| 81112ff1f8 | |||
| b63eb384b6 | |||
| ebcc60c570 | |||
| c12a753979 | |||
| 386b578e47 | |||
| 76417edfa4 | |||
| 960fdc0f05 | |||
| 2567d81359 | |||
| e700d8160a | |||
| 37065cb7d6 | |||
| 03efee4c14 | |||
| 04e43b07f4 | |||
| a00a191371 | |||
| 65d3befad8 | |||
| 84ac5dba02 | |||
| a149a575a7 | |||
| 407561732f | |||
| 82c2a9d9c6 | |||
| 1414e1804f | |||
| 7146f20b18 | |||
| 5ee4990534 | |||
| 0d1bdfdfdd | |||
| f3dd3b4643 | |||
| d3c76eac8d | |||
| 33da15daba | |||
| 82c876c0fa | |||
| 83765dcebf | |||
| b76570b892 |
1
.gitignore
vendored
@ -7,6 +7,7 @@ doc/Doxyfile
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
*.code-workspace
|
||||
|
||||
### VisualStudioCode Patch ###
|
||||
# Ignore all local history of files
|
||||
|
||||
10
.gitmodules
vendored
@ -21,9 +21,17 @@
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/md4c"]
|
||||
path = 3rdparty/md4c
|
||||
url = https://github.com/mity/md4c.git
|
||||
url = https://github.com/fsimonfc/md4c.git
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/tidy-html5"]
|
||||
path = 3rdparty/tidy-html5
|
||||
url = https://github.com/htacg/tidy-html5.git
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/zxing-cpp"]
|
||||
path = 3rdparty/zxing-cpp
|
||||
url = https://github.com/nu-book/zxing-cpp.git
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/hunspell"]
|
||||
path = 3rdparty/hunspell
|
||||
url = https://gitlab.savoirfairelinux.com/jami/hunspell.git
|
||||
ignore = dirty
|
||||
|
||||
1
3rdparty/hunspell
vendored
Submodule
2
3rdparty/md4c
vendored
1
3rdparty/zxing-cpp
vendored
Submodule
159
CMakeLists.txt
@ -76,6 +76,7 @@ list(APPEND QWINDOWKIT_OPTIONS
|
||||
QWINDOWKIT_BUILD_WIDGETS OFF
|
||||
QWINDOWKIT_INSTALL OFF
|
||||
QWINDOWKIT_BUILD_STATIC ON
|
||||
QWINDOWKIT_BUILD_QUICK ON
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
@ -83,29 +84,27 @@ if(WIN32)
|
||||
if(BETA)
|
||||
message(STATUS "Beta config enabled")
|
||||
add_definitions(-DBETA)
|
||||
set(JAMI_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/x64/Beta)
|
||||
else()
|
||||
set(JAMI_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/x64/Release)
|
||||
endif()
|
||||
set(JAMI_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/x64/${CMAKE_BUILD_TYPE})
|
||||
endif()
|
||||
|
||||
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)
|
||||
# If qwindowkit can't find qmsetup via cmake's find_package function, it will install it and
|
||||
# then call find_package again. Unfortunately, even the second call to find_package sometimes
|
||||
# fails due to qmsetup having been installed in the wrong directory. The following patch
|
||||
# ensures that qmsetup is always installed in the directory where find_package looks for it.
|
||||
if(NOT WIN32)
|
||||
list(APPEND QWINDOWKIT_PATCHES ${EXTRA_PATCHES_DIR}/0001-fix-qm_install_package-function.patch)
|
||||
endif()
|
||||
|
||||
# qwindowkit (frameless window)
|
||||
add_fetch_content(
|
||||
TARGET qwindowkit
|
||||
URL https://github.com/stdware/qwindowkit.git
|
||||
BRANCH 79b1f3110754f9c21af2d7dacbd07b1a9dbaf6ef
|
||||
BRANCH 758b00cb6c2d924be3a1ea137ec366dc33a5132d
|
||||
PATCHES ${QWINDOWKIT_PATCHES}
|
||||
OPTIONS ${QWINDOWKIT_OPTIONS}
|
||||
)
|
||||
@ -172,7 +171,7 @@ 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 6)
|
||||
set(QT6_MINVER_MINOR 8)
|
||||
if(QT6_VER AND QT6_PATH)
|
||||
find_package(QT NAMES Qt6 REQUIRED
|
||||
PATHS ${QT6_PATH} NO_DEFAULT_PATH)
|
||||
@ -181,15 +180,9 @@ else()
|
||||
find_package(QT NAMES Qt6 REQUIRED)
|
||||
endif()
|
||||
if (${QT_VERSION_MINOR} GREATER_EQUAL ${QT6_MINVER_MINOR})
|
||||
# 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.6 or higher is required. Found ${QT_VERSION}")
|
||||
message(FATAL_ERROR "Qt 6.8 or higher is required. Found ${QT_VERSION}")
|
||||
endif()
|
||||
|
||||
# libjamiclient
|
||||
@ -245,7 +238,7 @@ set(CMAKE_MODULE_PATH
|
||||
${CMAKE_MODULE_PATH} "${EXTRAS_DIR}/build/cmake/modules")
|
||||
find_package(LibJami REQUIRED)
|
||||
if(LIBJAMI_FOUND)
|
||||
include_directories(${LIBJAMI_INCLUDE_DIRS})
|
||||
include_directories(${LIBJAMI_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
include(FindPython3)
|
||||
@ -254,7 +247,7 @@ set(PYTHON_EXEC ${Python3_EXECUTABLE})
|
||||
|
||||
# Versioning and build ID generation
|
||||
set(VERSION_FILE ${CMAKE_CURRENT_BINARY_DIR}/version_info.cpp)
|
||||
# Touch the file to make sure it exists at configure time as
|
||||
# Touch the file to ensure it exists at configure time as
|
||||
# we add it to the target_sources below.
|
||||
file(TOUCH ${VERSION_FILE})
|
||||
add_custom_target(
|
||||
@ -265,6 +258,7 @@ add_custom_target(
|
||||
-DAPP_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}
|
||||
-DCORE_SOURCE_DIR=${DAEMON_DIR}
|
||||
-DCPP_INT_FILE=${VERSION_INFO_DIR}/version_info.cpp.in
|
||||
-DBUILD_VERSION=${BUILD_VERSION}
|
||||
-P ${CMAKE_SCRIPTS_DIR}/generate_version_info.cmake
|
||||
)
|
||||
list(APPEND CLIENT_INCLUDE_DIRS ${VERSION_INFO_DIR})
|
||||
@ -346,6 +340,8 @@ set(COMMON_SOURCES
|
||||
${APP_SRC_DIR}/conversationlistmodel.cpp
|
||||
${APP_SRC_DIR}/searchresultslistmodel.cpp
|
||||
${APP_SRC_DIR}/calloverlaymodel.cpp
|
||||
${APP_SRC_DIR}/spellcheckdictionarylistmodel.cpp
|
||||
${APP_SRC_DIR}/spellcheckadapter.cpp
|
||||
${APP_SRC_DIR}/filestosendlistmodel.cpp
|
||||
${APP_SRC_DIR}/wizardviewstepmodel.cpp
|
||||
${APP_SRC_DIR}/avatarregistry.cpp
|
||||
@ -360,11 +356,13 @@ set(COMMON_SOURCES
|
||||
${APP_SRC_DIR}/currentcall.cpp
|
||||
${APP_SRC_DIR}/messageparser.cpp
|
||||
${APP_SRC_DIR}/previewengine.cpp
|
||||
${APP_SRC_DIR}/imagedownloader.cpp
|
||||
${APP_SRC_DIR}/filedownloader.cpp
|
||||
${APP_SRC_DIR}/pluginversionmanager.cpp
|
||||
${APP_SRC_DIR}/connectioninfolistmodel.cpp
|
||||
${APP_SRC_DIR}/pluginversionmanager.cpp
|
||||
)
|
||||
${APP_SRC_DIR}/linkdevicemodel.cpp
|
||||
${APP_SRC_DIR}/qrcodescannermodel.cpp
|
||||
${APP_SRC_DIR}/spellchecker.cpp)
|
||||
|
||||
set(COMMON_HEADERS
|
||||
${APP_SRC_DIR}/global.h
|
||||
@ -374,7 +372,6 @@ set(COMMON_HEADERS
|
||||
${APP_SRC_DIR}/appversionmanager.h
|
||||
${APP_SRC_DIR}/utils.h
|
||||
${APP_SRC_DIR}/bannedlistmodel.h
|
||||
${APP_SRC_DIR}/version.h
|
||||
${APP_SRC_DIR}/accountlistmodel.h
|
||||
${APP_SRC_DIR}/instancemanager.h
|
||||
${APP_SRC_DIR}/connectivitymonitor.h
|
||||
@ -416,6 +413,8 @@ set(COMMON_HEADERS
|
||||
${APP_SRC_DIR}/conversationlistmodel.h
|
||||
${APP_SRC_DIR}/searchresultslistmodel.h
|
||||
${APP_SRC_DIR}/calloverlaymodel.h
|
||||
${APP_SRC_DIR}/spellcheckdictionarylistmodel.h
|
||||
${APP_SRC_DIR}/spellcheckadapter.h
|
||||
${APP_SRC_DIR}/filestosendlistmodel.h
|
||||
${APP_SRC_DIR}/wizardviewstepmodel.h
|
||||
${APP_SRC_DIR}/avatarregistry.h
|
||||
@ -430,13 +429,15 @@ set(COMMON_HEADERS
|
||||
${APP_SRC_DIR}/currentcall.h
|
||||
${APP_SRC_DIR}/messageparser.h
|
||||
${APP_SRC_DIR}/htmlparser.h
|
||||
${APP_SRC_DIR}/imagedownloader.h
|
||||
${APP_SRC_DIR}/filedownloader.h
|
||||
${APP_SRC_DIR}/pluginversionmanager.h
|
||||
${APP_SRC_DIR}/connectioninfolistmodel.h
|
||||
${APP_SRC_DIR}/pttlistener.h
|
||||
${APP_SRC_DIR}/crashreportclient.h
|
||||
${APP_SRC_DIR}/crashreporter.h
|
||||
)
|
||||
${APP_SRC_DIR}/linkdevicemodel.h
|
||||
${APP_SRC_DIR}/qrcodescannermodel.h
|
||||
${APP_SRC_DIR}/spellchecker.h)
|
||||
|
||||
# For libavutil/avframe.
|
||||
set(LIBJAMI_CONTRIB_DIR "${DAEMON_DIR}/contrib")
|
||||
@ -464,6 +465,25 @@ if(ENABLE_CRASHREPORTS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
# hunspell
|
||||
pkg_search_module(hunspell IMPORTED_TARGET hunspell)
|
||||
if(hunspell_FOUND)
|
||||
message(STATUS "hunspell found")
|
||||
set(HUNSPELL_LIBRARIES PkgConfig::hunspell)
|
||||
else()
|
||||
message(STATUS "hunspell not found - building hunspell")
|
||||
|
||||
set(HUNSPELL_DIR ${PROJECT_SOURCE_DIR}/3rdparty/hunspell)
|
||||
|
||||
# Build using the submodule and its CMakeLists.txt
|
||||
add_subdirectory(${HUNSPELL_DIR} hunspell_build EXCLUDE_FROM_ALL)
|
||||
|
||||
set(HUNSPELL_INCLUDE_DIR ${HUNSPELL_DIR}/src)
|
||||
set(HUNSPELL_LIBRARIES hunspell::hunspell)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
set(WINDOWS_SYS_LIBS
|
||||
windowsapp.lib
|
||||
@ -526,8 +546,6 @@ elseif (NOT APPLE)
|
||||
${APP_SRC_DIR}/screencastportal.h)
|
||||
list(APPEND QT_MODULES DBus)
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
pkg_check_modules(GLIB REQUIRED glib-2.0)
|
||||
if(GLIB_FOUND)
|
||||
add_definitions(${GLIB_CFLAGS_OTHER})
|
||||
@ -556,19 +574,25 @@ elseif (NOT APPLE)
|
||||
add_definitions(${LIBGDKPIXBUF_CFLAGS})
|
||||
endif()
|
||||
|
||||
# Link against the version of libavutil built in the daemon's contribs to
|
||||
# make sure we don't have ABI incompatibility issues.
|
||||
set(ARCHITECTURE ${CMAKE_LIBRARY_ARCHITECTURE})
|
||||
if (NOT ARCHITECTURE)
|
||||
execute_process(COMMAND gcc -dumpmachine COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE)
|
||||
endif()
|
||||
list(PREPEND CMAKE_PREFIX_PATH
|
||||
${LIBJAMI_CONTRIB_DIR}/native/ffmpeg/libavutil)
|
||||
pkg_check_modules(LIBAVUTIL libavutil>=55.75.100)
|
||||
${LIBJAMI_CONTRIB_DIR}/${ARCHITECTURE})
|
||||
pkg_check_modules(avutil REQUIRED IMPORTED_TARGET libavutil=58.2.100)
|
||||
list(REMOVE_ITEM CMAKE_PREFIX_PATH
|
||||
${LIBJAMI_CONTRIB_DIR}/native/ffmpeg/libavutil)
|
||||
${LIBJAMI_CONTRIB_DIR}/${ARCHITECTURE})
|
||||
list(APPEND CLIENT_LIBS PkgConfig::avutil)
|
||||
|
||||
include_directories(
|
||||
${LIBCLIENT_SRC_DIR}
|
||||
${LIBNM_INCLUDE_DIRS}
|
||||
${LIBNOTIFY_INCLUDE_DIRS}
|
||||
${LIBGDKPIXBUF_INCLUDE_DIRS}
|
||||
${GLIB_INCLUDE_DIRS}
|
||||
${LIBAVUTIL_INCLUDE_DIRS})
|
||||
${GLIB_INCLUDE_DIRS})
|
||||
|
||||
set(JAMI_DATA_PREFIX "${CMAKE_INSTALL_PREFIX}/share")
|
||||
|
||||
@ -610,6 +634,13 @@ else() # APPLE
|
||||
endif()
|
||||
endif()
|
||||
|
||||
message(STATUS "Adding HUNSPELL_INCLUDE_DIR" ${HUNSPELL_INCLUDE_DIR})
|
||||
list(APPEND CLIENT_INCLUDE_DIRS ${HUNSPELL_INCLUDE_DIR} ${CMAKE_BINARY_DIR}/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/hunspell/src)
|
||||
|
||||
message(STATUS "Adding HUNSPELL_LIBRARIES" ${HUNSPELL_INCLUDE_DIR})
|
||||
list(APPEND CLIENT_LIBS ${HUNSPELL_LIBRARIES})
|
||||
|
||||
# Qt find package
|
||||
if(QT6_VER AND QT6_PATH)
|
||||
message(STATUS "Using custom Qt version")
|
||||
@ -663,20 +694,43 @@ 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)
|
||||
list(APPEND CLIENT_INCLUDE_DIRS ${MD4C_SOURCE_DIR}/src)
|
||||
list(APPEND CLIENT_LIBS md4c-html)
|
||||
find_package(md4c)
|
||||
if(md4c_FOUND)
|
||||
message(STATUS "Using system-provided md4c-html")
|
||||
list(APPEND CLIENT_LIBS md4c::md4c-html)
|
||||
else()
|
||||
message("Using bundled md4c-html library")
|
||||
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)
|
||||
list(APPEND CLIENT_INCLUDE_DIRS ${MD4C_SOURCE_DIR}/src)
|
||||
list(APPEND CLIENT_LIBS md4c-html)
|
||||
endif()
|
||||
|
||||
# tidy-html5
|
||||
set(BUILD_SHARED_LIB OFF CACHE BOOL "Don't build shared tidy library" FORCE)
|
||||
set(SUPPORT_CONSOLE_APP OFF CACHE BOOL "Don't build tidy console app" FORCE)
|
||||
add_subdirectory(3rdparty/tidy-html5 EXCLUDE_FROM_ALL)
|
||||
list(APPEND CLIENT_LINK_DIRS ${tidy_BINARY_DIR}/Release)
|
||||
list(APPEND CLIENT_INCLUDE_DIRS ${tidy_SOURCE_DIR}/include)
|
||||
list(APPEND CLIENT_LIBS tidy-static)
|
||||
pkg_check_modules(tidy IMPORTED_TARGET tidy)
|
||||
if(tidy_FOUND)
|
||||
message(STATUS "Using system-provided tidy")
|
||||
list(APPEND CLIENT_LIBS PkgConfig::tidy)
|
||||
else()
|
||||
message("Using bundled tidy library")
|
||||
set(BUILD_SHARED_LIB OFF CACHE BOOL "Don't build shared tidy library" FORCE)
|
||||
set(SUPPORT_CONSOLE_APP OFF CACHE BOOL "Don't build tidy console app" FORCE)
|
||||
add_subdirectory(3rdparty/tidy-html5 EXCLUDE_FROM_ALL)
|
||||
list(APPEND CLIENT_LINK_DIRS ${tidy_BINARY_DIR}/Release)
|
||||
list(APPEND CLIENT_INCLUDE_DIRS ${tidy_SOURCE_DIR}/include)
|
||||
list(APPEND CLIENT_LIBS tidy-static)
|
||||
endif()
|
||||
|
||||
# ZXing-cpp configuration
|
||||
set(BUILD_EXAMPLES OFF CACHE BOOL "")
|
||||
set(BUILD_BLACKBOX_TESTS OFF CACHE BOOL "")
|
||||
add_subdirectory(3rdparty/zxing-cpp EXCLUDE_FROM_ALL)
|
||||
|
||||
# Add ZXing-cpp to includes and libraries
|
||||
list(APPEND CLIENT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/zxing-cpp/core/src)
|
||||
list(APPEND CLIENT_LIBS ZXing)
|
||||
|
||||
# common executable sources
|
||||
qt_add_executable(
|
||||
@ -687,9 +741,12 @@ qt_add_executable(
|
||||
${COMMON_SOURCES}
|
||||
${QML_RESOURCES}
|
||||
${QML_RESOURCES_QML}
|
||||
${SFPM_OBJECTS})
|
||||
${SFPM_OBJECTS}
|
||||
src/app/spellcheckadapter.h src/app/spellcheckadapter.cpp)
|
||||
|
||||
# Make sure we can find the generated version file
|
||||
#add_dependencies(${PROJECT_NAME} hunspell)
|
||||
|
||||
# Ensure the generated version file can be found.
|
||||
add_dependencies(${PROJECT_NAME} generate_version_info)
|
||||
|
||||
foreach(MODULE ${QT_MODULES})
|
||||
@ -783,14 +840,19 @@ elseif (NOT APPLE)
|
||||
PRIVATE
|
||||
JAMI_INSTALL_PREFIX="${JAMI_DATA_PREFIX}")
|
||||
|
||||
target_compile_definitions(
|
||||
${PROJECT_NAME}
|
||||
PRIVATE
|
||||
HUNSPELL_INSTALL_DIR="${HUNSPELL_DICT_DIR}")
|
||||
|
||||
# Logos
|
||||
install(
|
||||
FILES resources/images/jami.svg
|
||||
FILES resources/images/net.jami.Jami.svg
|
||||
DESTINATION
|
||||
${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps)
|
||||
|
||||
install(
|
||||
FILES resources/images/jami-48px.png
|
||||
FILES resources/images/net.jami.Jami-48px.png
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps
|
||||
RENAME jami.png)
|
||||
|
||||
@ -968,5 +1030,6 @@ qt_finalize_executable(${PROJECT_NAME})
|
||||
# tests
|
||||
if(BUILD_TESTING)
|
||||
message("Add Jami tests")
|
||||
enable_testing()
|
||||
add_subdirectory(${TESTS_DIR})
|
||||
endif()
|
||||
|
||||
17
INSTALL.md
@ -189,18 +189,20 @@ 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.6.1 components:
|
||||
- Using the online installer, install the following Qt 6.8.3 components:
|
||||
|
||||
- Git 2.10.2
|
||||
- MSVC 2019 64-bit
|
||||
- Qt 5 Compatibility Module
|
||||
- MSVC 2022 64-bit
|
||||
- Extension :
|
||||
- Qt WebEngine
|
||||
- Additional Libraries
|
||||
- Qt Multimedia
|
||||
- Qt Network Authorization
|
||||
- Qt WebChannel
|
||||
- Qt WebEngine
|
||||
- Qt WebSockets
|
||||
- Qt WebView
|
||||
- Qt 5 Compatibility Module
|
||||
- Qt Positioning
|
||||
|
||||
- Download [Visual Studio](https://visualstudio.microsoft.com/) (versions 2019 or 2022). _See the SDK notes below._
|
||||
|
||||
@ -212,7 +214,7 @@ Only 64-bit MSVC build can be compiled.
|
||||
|
||||
| | Qt Version |
|
||||
| -------------------- | ---------- |
|
||||
| Minimum requirement: | 6.6.2 |
|
||||
| Minimum requirement: | 6.8.3 |
|
||||
|
||||
- Install [Python3](https://www.python.org/downloads/) for Windows
|
||||
|
||||
@ -238,12 +240,13 @@ Only 64-bit MSVC build can be compiled.
|
||||
- Using a new **Non-Elevated Command Prompt**
|
||||
|
||||
```bash
|
||||
python build.py --init --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.6.2/msvc2019_64)
|
||||
python build.py --init --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.8.3/msvc2022_64)
|
||||
```
|
||||
|
||||
```bash
|
||||
python build.py --install --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.6.2/msvc2019_64)
|
||||
python build.py --install --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.8.3/msvc2022_64)
|
||||
```
|
||||
> **CMake** Note: The build script does not specify what CMake generator should be used. This means CMake will search the system for the appropriate generator, which might not always select the right one if, for instance, Ninja is installed. To resolve that, the CMAKE_GENERATOR environment variable can be used, set to "Visual Studio 16 2019" or "Visual Studio 19 2022" depending on the installed Visual Studio version.
|
||||
|
||||
> **SDK** Note:
|
||||
> Jami can be build with more recent Windows SDK than the one specified in the table above. However, if your have another version than SDK 10.0.18362.0 installed, you need to identify it according to the example below. And you still need to have the required version in addition to the one you chose.
|
||||
|
||||
@ -4,10 +4,5 @@
|
||||
<?define ExeName="Jami" ?>
|
||||
<?define AppName="Jami" ?>
|
||||
<?define Manufacturer="Savoir-Faire Linux"?>
|
||||
|
||||
<?if $(var.Configuration) = Release ?>
|
||||
<?define ReleaseDir="..\x64\Release"?>
|
||||
<?else?>
|
||||
<?define ReleaseDir="..\x64\Beta"?>
|
||||
<?endif ?>
|
||||
</Include>
|
||||
|
||||
@ -16,9 +16,9 @@
|
||||
<InstallerPlatform>x64</InstallerPlatform>
|
||||
<DefineSolutionProperties>false</DefineSolutionProperties>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<OutputPath>bin\$(Configuration)\</OutputPath>
|
||||
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
|
||||
<PropertyGroup>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<IntermediateOutputPath>obj\Release\</IntermediateOutputPath>
|
||||
<DefineConstants>AppHarvestPath=..\x64\Release;CrtHarvestPath=$(VC_CRT_Dir)</DefineConstants>
|
||||
<SuppressPdbOutput>True</SuppressPdbOutput>
|
||||
<CompilerAdditionalOptions>
|
||||
@ -26,16 +26,6 @@
|
||||
<WixVariables>
|
||||
</WixVariables>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Beta|x64' ">
|
||||
<OutputPath>bin\$(Configuration)\</OutputPath>
|
||||
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
|
||||
<DefineConstants>AppHarvestPath=..\x64\Beta;CrtHarvestPath=$(VC_CRT_Dir)</DefineConstants>
|
||||
<SuppressPdbOutput>True</SuppressPdbOutput>
|
||||
<CompilerAdditionalOptions>
|
||||
</CompilerAdditionalOptions>
|
||||
<WixVariables>
|
||||
</WixVariables>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Product.wxs" />
|
||||
<Compile Include="AppComponents.wxs" />
|
||||
@ -70,7 +60,7 @@
|
||||
<Error Text="The WiX Toolset v3.11 (or newer) build tools must be installed to build this project. To download the WiX Toolset, see http://wixtoolset.org/releases/" />
|
||||
</Target>
|
||||
<Target Name="BeforeBuild">
|
||||
<HeatDirectory Directory="..\x64\$(Configuration)"
|
||||
<HeatDirectory Directory="..\x64\Release"
|
||||
PreprocessorVariable="var.AppHarvestPath"
|
||||
OutputFile="AppComponents.wxs"
|
||||
ComponentGroupName="AppHeatGenerated"
|
||||
|
||||
10
build.py
@ -112,7 +112,7 @@ ZYPPER_CLIENT_DEPENDENCIES = [
|
||||
'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'
|
||||
'qrencode-devel', 'NetworkManager-devel', 'hunspell-devel', 'libhunspell-devel'
|
||||
]
|
||||
|
||||
ZYPPER_QT_WEBENGINE = [
|
||||
@ -139,7 +139,7 @@ DNF_CLIENT_DEPENDENCIES = [
|
||||
'libnotify-devel',
|
||||
'qt6-qtbase-devel',
|
||||
'qt6-qtsvg-devel', 'qt6-qtmultimedia-devel', 'qt6-qtdeclarative-devel',
|
||||
'qrencode-devel', 'NetworkManager-libnm-devel'
|
||||
'qrencode-devel', 'NetworkManager-libnm-devel', 'hunspell-devel', 'libhunspell-devel'
|
||||
]
|
||||
|
||||
DNF_QT_WEBENGINE = ['qt6-qtwebengine-devel']
|
||||
@ -171,7 +171,7 @@ APT_CLIENT_DEPENDENCIES = [
|
||||
'qml6-module-qtquick-dialogs', 'qml6-module-qtquick-layouts',
|
||||
'qml6-module-qtquick-shapes', 'qml6-module-qtquick-window',
|
||||
'qml6-module-qtquick-templates', 'qml6-module-qt-labs-platform',
|
||||
'libqrencode-dev', 'libnm-dev'
|
||||
'libqrencode-dev', 'libnm-dev', 'hunspell', 'libhunspell-dev'
|
||||
]
|
||||
|
||||
APT_QT_WEBENGINE = [
|
||||
@ -194,7 +194,7 @@ PACMAN_CLIENT_DEPENDENCIES = [
|
||||
'qt6-declarative', 'qt6-5compat', 'qt6-multimedia',
|
||||
'qt6-networkauth', 'qt6-shadertools',
|
||||
'qt6-svg', 'qt6-tools',
|
||||
'qrencode', 'libnm'
|
||||
'qrencode', 'libnm', 'hunspell'
|
||||
]
|
||||
|
||||
PACMAN_QT_WEBENGINE = ['qt6-webengine']
|
||||
@ -374,7 +374,7 @@ def run_install(args):
|
||||
# Prepare the build-windows.py script call
|
||||
build_windows = 'extras/scripts/build-windows.py'
|
||||
# Initialize build environment
|
||||
execute_script([f'python {build_windows} --init'])
|
||||
execute_script([f'python {build_windows} --init --qt={args.qt}'])
|
||||
|
||||
# Construct build command with options
|
||||
build_cmd = [
|
||||
|
||||
2
daemon
@ -17,32 +17,6 @@
|
||||
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
|
||||
|
||||
@ -24,6 +24,7 @@ set(CMAKE_CURRENT_BINARY_DIR ${APP_BINARY_DIR})
|
||||
# Generate the version string for the application and core
|
||||
configure_version_string(${APP_SOURCE_DIR} APP_VERSION_STRING)
|
||||
configure_version_string(${CORE_SOURCE_DIR} CORE_VERSION_STRING)
|
||||
set(BUILD_VERSION_STRING ${BUILD_VERSION})
|
||||
|
||||
# Get output file names with the .in extension removed
|
||||
get_filename_component(VERSION_CPP_FILENAME ${CPP_INT_FILE} NAME_WE)
|
||||
|
||||
@ -16,30 +16,19 @@
|
||||
|
||||
# Once done, this find module will set:
|
||||
#
|
||||
# LIBJAMI_INCLUDE_DIRS - libjami include directories
|
||||
# LIBJAMI_INCLUDE_DIR - libjami include directory
|
||||
# LIBJAMI_FOUND - whether it was able to find the include directories
|
||||
# LIBJAMI_LIB - path to libjami or libring library
|
||||
|
||||
set(LIBJAMI_FOUND true)
|
||||
|
||||
if(WITH_DAEMON_SUBMODULE)
|
||||
set(LIBJAMI_INCLUDE_DIRS ${DAEMON_DIR}/src/jami)
|
||||
set(LIBJAMI_INCLUDE_DIR ${DAEMON_DIR}/src/jami)
|
||||
else()
|
||||
if(EXISTS ${LIBJAMI_INCLUDE_DIR}/jami.h)
|
||||
set(LIBJAMI_INCLUDE_DIRS ${LIBJAMI_INCLUDE_DIR})
|
||||
elseif(EXISTS ${LIBJAMI_BUILD_DIR}/jami/jami.h)
|
||||
set(LIBJAMI_INCLUDE_DIRS ${LIBJAMI_BUILD_DIR}/jami)
|
||||
elseif(EXISTS ${RING_INCLUDE_DIR}/jami.h)
|
||||
set(LIBJAMI_INCLUDE_DIRS ${RING_INCLUDE_DIR})
|
||||
elseif(EXISTS ${RING_BUILD_DIR}/jami/jami.h)
|
||||
set(LIBJAMI_INCLUDE_DIRS ${RING_BUILD_DIR}/jami)
|
||||
elseif(EXISTS ${CMAKE_INSTALL_PREFIX}/include/jami/jami.h)
|
||||
set(LIBJAMI_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include/jami)
|
||||
elseif(EXISTS ${CMAKE_INSTALL_PREFIX}/daemon/include/jami/jami.h)
|
||||
set(LIBJAMI_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/daemon/include/jami)
|
||||
else()
|
||||
find_path(LIBJAMI_INCLUDE_DIR jami.h PATH_SUFFIXES jami)
|
||||
if(NOT LIBJAMI_INCLUDE_DIR)
|
||||
message(STATUS "Jami daemon headers not found!
|
||||
Set -DLIBJAMI_BUILD_DIR or -DCMAKE_INSTALL_PREFIX")
|
||||
To build using the daemon git submodule, set -DWITH_DAEMON_SUBMODULE")
|
||||
set(LIBJAMI_FOUND false)
|
||||
endif()
|
||||
endif()
|
||||
@ -121,5 +110,5 @@ endif()
|
||||
# Restore the original value of CMAKE_FIND_LIBRARY_SUFFIXES.
|
||||
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_orig})
|
||||
|
||||
message(STATUS "Jami daemon headers are in " ${LIBJAMI_INCLUDE_DIRS})
|
||||
message(STATUS "Jami daemon headers are in " ${LIBJAMI_INCLUDE_DIR})
|
||||
message(STATUS "Jami daemon library is at " ${LIBJAMI_LIB})
|
||||
|
||||
@ -4,11 +4,24 @@ ENV DEBIAN_FRONTEND noninteractive
|
||||
ENV QT_QUICK_BACKEND software
|
||||
ENV QT_QPA_PLATFORM offscreen
|
||||
|
||||
RUN apt-get clean
|
||||
RUN apt-get update && \
|
||||
apt-get install -y devscripts equivs
|
||||
apt-get install -y --no-install-recommends ca-certificates && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Use only the custom Savoir-faire Linux Ubuntu mirror
|
||||
RUN rm -f /etc/apt/sources.list /etc/apt/sources.list.d/* && \
|
||||
echo "deb http://gpl.savoirfairelinux.net/pub/mirrors/ubuntu jammy main restricted universe multiverse" > /etc/apt/sources.list && \
|
||||
echo "deb http://gpl.savoirfairelinux.net/pub/mirrors/ubuntu jammy-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
|
||||
echo "deb http://gpl.savoirfairelinux.net/pub/mirrors/ubuntu jammy-security main restricted universe multiverse" >> /etc/apt/sources.list
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
devscripts \
|
||||
equivs \
|
||||
gnupg \
|
||||
dirmngr \
|
||||
curl
|
||||
|
||||
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_22.04/ jami main' > /etc/apt/sources.list.d/jami.list"
|
||||
RUN apt-get update && apt-get install libqt-jami -y
|
||||
@ -69,7 +82,8 @@ RUN apt-get install -y pandoc \
|
||||
libcppunit-dev \
|
||||
googletest \
|
||||
libgtest-dev \
|
||||
wget
|
||||
wget && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install a recent version of CMake
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
|
||||
@ -85,7 +85,7 @@
|
||||
<id>net.jami.daemon</id>
|
||||
</requires>
|
||||
<launchable type="desktop-id">net.jami.Jami.desktop</launchable>
|
||||
<icon type="stock">jami</icon>
|
||||
<icon type="stock">net.jami.Jami</icon>
|
||||
<url type="homepage">https://jami.net/</url>
|
||||
<url type="bugtracker">https://git.jami.net/savoirfairelinux/jami-client-qt/issues</url>
|
||||
<url type="faq">https://docs.jami.net/user/faq.html</url>
|
||||
|
||||
@ -1,14 +1,83 @@
|
||||
[Desktop Entry]
|
||||
Name=Jami
|
||||
GenericName=Jami
|
||||
Comment=Privacy-oriented voice, video, chat, and conference platform
|
||||
Comment[hu]=Adatvédelem-orientált hang-, video-, csevegés- és konferenciaplatform
|
||||
Comment[ru]=Jami — приложение для защищённой связи с распределённой архитектурой
|
||||
Comment=Share, freely and privately
|
||||
Comment[ab]=Ацеиҩшара, хақәиҭла, хала
|
||||
Comment[af]=Deel, vrylik en privaat
|
||||
Comment[am]=በነጻ እና በግል ያካፍሉ።
|
||||
Comment[ar]=شارك بحرية وبشكل خاص
|
||||
Comment[az]=Sərbəst və gizli şəkildə paylaşın
|
||||
Comment[be]=Падзяліцеся свабодна і прыватна
|
||||
Comment[bg]=Споделяйте, свободно и частно
|
||||
Comment[bn]=শেয়ার করুন, অবাধে এবং গোপনে
|
||||
Comment[ca]=Comparteix, lliurement i de forma privada
|
||||
Comment[cs]=Sdílejte svobodně a soukromě
|
||||
Comment[da]=Del, frit og privat
|
||||
Comment[de]=Teilen, frei und privat
|
||||
Comment[el]=Κοινοποιήστε, ελεύθερα και ιδιωτικά
|
||||
Comment[eo]=Kunhavigu, libere kaj private
|
||||
Comment[es]=Comparte, libre y privadamente
|
||||
Comment[et]=Jaga, vabalt ja privaatselt
|
||||
Comment[fa]=به اشتراک بگذارید، آزادانه و خصوصی
|
||||
Comment[fi]=Jaa, vapaasti ja yksityisesti
|
||||
Comment[fil]=Ibahagi, libre at pribado
|
||||
Comment[fr]=Partagez, librement, gratuitement et en toute confidentialité
|
||||
Comment[gl]=Comparte, de xeito libre e privado
|
||||
Comment[he]=שתפו, באופן חופשי ופרטי
|
||||
Comment[hi]=स्वतंत्र रूप से और निजी तौर पर साझा करें
|
||||
Comment[hr]=Dijelite, slobodno i privatno
|
||||
Comment[hu]=Megosztás, szabadon és bizalmasan
|
||||
Comment[hy]=Տարածեք, ազատ և մասնավոր
|
||||
Comment[id]=Berbagi, secara bebas dan pribadi
|
||||
Comment[is]=Deildu, frjálslega og einslega
|
||||
Comment[it]=Condividere, liberamente e privatamente
|
||||
Comment[ja]=自由に、プライベートに共有
|
||||
Comment[ka]=გააზიარეთ, თავისუფლად და პირადად
|
||||
Comment[km]=ចែករំលែកដោយសេរី និងឯកជន
|
||||
Comment[kn]=ಮುಕ್ತವಾಗಿ ಮತ್ತು ಖಾಸಗಿಯಾಗಿ ಹಂಚಿಕೊಳ್ಳಿ
|
||||
Comment[ko]=자유롭고 비공개적으로 공유하세요
|
||||
Comment[ky]=Бөлүшүү, эркин жана купуя
|
||||
Comment[la]=Communicantes, libere et privatim
|
||||
Comment[lo]=ແບ່ງປັນ, ຢ່າງເສລີແລະເປັນສ່ວນຕົວ
|
||||
Comment[lt]=Dalintis, laisvai ir privačiai
|
||||
Comment[lv]=Kopīgojiet, brīvi un privāti
|
||||
Comment[mk]=Споделете, слободно и приватно
|
||||
Comment[ml]=സ്വതന്ത്രമായും സ്വകാര്യമായും പങ്കിടുക
|
||||
Comment[mn]=Чөлөөт, хувийн байдлаар хуваалцах
|
||||
Comment[mr]=सामायिक करा, मुक्तपणे आणि खाजगीरित्या
|
||||
Comment[ms]=Kongsi, secara bebas dan peribadi
|
||||
Comment[my]=လွတ်လပ်စွာ သီးသန့်မျှဝေပါ။
|
||||
Comment[ne]=स्वतन्त्र र गोप्य रूपमा सेयर गर्नुहोस्
|
||||
Comment[nl]=Deel, vrij en privé
|
||||
Comment[no]=Del, fritt og privat
|
||||
Comment[pl]=Udostępniaj swobodnie i prywatnie
|
||||
Comment[pt_BR]=Compartilhe, livre e privadamente
|
||||
Comment[pt_PT]=Partilhe, livre e privadamente
|
||||
Comment[ro]=Distribuie, în mod liber și privat
|
||||
Comment[ru]=Делитесь, свободно и конфиденциально
|
||||
Comment[si]=නිදහසේ සහ පෞද්ගලිකව බෙදා ගන්න
|
||||
Comment[sk]=Zdieľajte, slobodne a súkromne
|
||||
Comment[sl]=Delite brezplačno in zasebno
|
||||
Comment[sq]=Shpërndaje, lirisht dhe privatisht
|
||||
Comment[sr]=Делите, слободно и приватно
|
||||
Comment[sv]=Dela, fritt och privat
|
||||
Comment[sw]=Shiriki, kwa uhuru na kwa faragha
|
||||
Comment[ta]=பகிரவும், சுதந்திரமாகவும் தனிப்பட்ட முறையிலும்
|
||||
Comment[te]=ఉచితంగా మరియు ప్రైవేట్గా షేర్ చేయండి
|
||||
Comment[th]=แบ่งปันได้อย่างอิสระและเป็นส่วนตัว
|
||||
Comment[tl]=Ibahagi, libre at pribado
|
||||
Comment[tr]=Özgürce ve özel olarak paylaşın
|
||||
Comment[uk]=Поділіться вільно та приватно
|
||||
Comment[vi]=Chia sẻ, tự do và riêng tư
|
||||
Comment[zh_CN]=自由且私密地分享
|
||||
Comment[zh_HK]=自由且私密地分享
|
||||
Comment[zh_TW]=自由且私密地分享
|
||||
Comment[zu]=Yabelana, ngokukhululekile nangasese
|
||||
Exec=jami %u
|
||||
Icon=jami
|
||||
Icon=net.jami.Jami
|
||||
StartupNotify=true
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Network;Telephony;
|
||||
Categories=Chat;FileTransfer;InstantMessaging;Network;P2P;Telephony;VideoConference;
|
||||
Keywords=Qt;chat;talk;im;message;voip;
|
||||
MimeType=x-scheme-handler/jami;
|
||||
MimeType=x-scheme-handler/jami;
|
||||
|
||||
8
extras/packaging/gnu-linux/Jenkinsfile
vendored
@ -33,7 +33,9 @@
|
||||
def SUBMODULES = ['daemon',
|
||||
'3rdparty/SortFilterProxyModel',
|
||||
'3rdparty/md4c',
|
||||
'3rdparty/tidy-html5']
|
||||
'3rdparty/tidy-html5',
|
||||
'3rdparty/zxing-cpp',
|
||||
'3rdparty/hunspell']
|
||||
def TARGETS = [:]
|
||||
def REMOTE_HOST = env.SSH_HOST_DL_RING_CX
|
||||
def REMOTE_BASE_DIR = '/srv/repository/ring'
|
||||
@ -83,6 +85,10 @@ pipeline {
|
||||
|
||||
environment {
|
||||
TARBALLS = '/var/cache/jami' // set the cache directory
|
||||
BUILD_VERSION = sh(
|
||||
returnStdout: true,
|
||||
script: 'date +"%Y%m%d%H%M"'
|
||||
).trim()
|
||||
}
|
||||
|
||||
stages {
|
||||
|
||||
@ -44,10 +44,10 @@ DEBIAN_DSC_FILENAME := jami_$(DEBIAN_VERSION).dsc
|
||||
|
||||
# Qt versions
|
||||
QT_MAJOR := 6
|
||||
QT_MINOR := 6
|
||||
QT_PATCH := 1
|
||||
QT_TARBALL_CHECKSUM := dd3668f65645fe270bc615d748bd4dc048bd17b9dc297025106e6ecc419ab95d
|
||||
DEBIAN_QT_VERSION := $(QT_MAJOR).$(QT_MINOR).$(QT_PATCH)-1
|
||||
QT_MINOR := 8
|
||||
QT_PATCH := 3
|
||||
QT_TARBALL_CHECKSUM := cdd3a69967208276bb01af7ace7dba0ba53e679f886a4cbe624225c60fb73f2c
|
||||
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
|
||||
|
||||
@ -127,7 +127,9 @@ $(RELEASE_TARBALL_FILENAME): tarballs.manifest
|
||||
. \
|
||||
./3rdparty/SortFilterProxyModel \
|
||||
./3rdparty/md4c \
|
||||
./3rdparty/tidy-html5; do \
|
||||
./3rdparty/tidy-html5 \
|
||||
./3rdparty/zxing-cpp \
|
||||
./3rdparty/hunspell; do \
|
||||
(cd "$$m" && git archive --prefix "$$m/" HEAD \
|
||||
| tar xf - -C $(TMPDIR)/$(RELEASE_DIRNAME)); \
|
||||
done
|
||||
@ -162,18 +164,14 @@ DISTRIBUTIONS := \
|
||||
debian_12 \
|
||||
debian_testing \
|
||||
debian_unstable \
|
||||
ubuntu_20.04 \
|
||||
ubuntu_22.04 \
|
||||
ubuntu_24.04 \
|
||||
ubuntu_24.10 \
|
||||
fedora_37 \
|
||||
fedora_38 \
|
||||
fedora_39 \
|
||||
fedora_40 \
|
||||
ubuntu_25.04 \
|
||||
fedora_41 \
|
||||
fedora_42 \
|
||||
alma_9 \
|
||||
opensuse-leap_15.4 \
|
||||
opensuse-leap_15.5 \
|
||||
alma_10 \
|
||||
opensuse-leap_15.6 \
|
||||
snap
|
||||
|
||||
IS_SHELL_INTERACTIVE := $(shell [ -t 0 ] && echo yes)
|
||||
@ -192,6 +190,7 @@ $(1)-docker-image-name := jami-packaging-$(1)
|
||||
$(1)-docker-image-file := .docker-image-$$($(1)-docker-image-name)
|
||||
$(1)-docker-run-command := docker run \
|
||||
--rm --privileged --security-opt apparmor=docker-default \
|
||||
-e BUILD_VERSION=${BUILD_VERSION} \
|
||||
-e RELEASE_VERSION="$(RELEASE_VERSION)" \
|
||||
-e RELEASE_DIRNAME="$(RELEASE_DIRNAME)" \
|
||||
-e RELEASE_TARBALL_FILENAME="$(RELEASE_TARBALL_FILENAME)" \
|
||||
@ -251,7 +250,7 @@ define guix-pack-command
|
||||
guix pack -C xz -f $(1) -m $(CURDIR)/extras/packaging/gnu-linux/guix/guix-pack-manifest.scm -v3 \
|
||||
-S /usr/bin/jami=bin/jami \
|
||||
-S /usr/share/applications/net.jami.Jami.desktop=share/applications/net.jami.Jami.desktop \
|
||||
-S /usr/share/icons/hicolor/scalable/apps/jami.svg=share/icons/hicolor/scalable/apps/jami.svg \
|
||||
-S /usr/share/icons/hicolor/scalable/apps/net.jami.Jami.svg=share/icons/hicolor/scalable/apps/net.jami.Jami.svg \
|
||||
-S /usr/share/icons/hicolor/48x48/apps/jami.png=share/icons/hicolor/48x48/apps/jami.png \
|
||||
-S /usr/share/metainfo/net.jami.Jami.metainfo.xml=share/metainfo/net.jami.Jami.metainfo.xml \
|
||||
-S /usr/share/swcatalog/xml/jami.xml=share/swcatalog/xml/jami.xml \
|
||||
|
||||
@ -1,106 +1,94 @@
|
||||
FROM fedora:37
|
||||
|
||||
RUN dnf clean all
|
||||
RUN dnf update -y
|
||||
|
||||
FROM almalinux:10
|
||||
RUN dnf clean all && dnf update -y
|
||||
RUN dnf install -y epel-release
|
||||
RUN dnf install -y 'dnf-command(config-manager)'
|
||||
RUN dnf config-manager --set-enabled crb
|
||||
RUN dnf config-manager --set-enabled appstream
|
||||
RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
|
||||
dnf install -y mock
|
||||
|
||||
RUN dnf groupinstall -y "X Software Development"
|
||||
|
||||
RUN yum install -y xorg-x11-xauth
|
||||
RUN dnf install -y \
|
||||
git \
|
||||
rpm-build \
|
||||
tar \
|
||||
make \
|
||||
alsa-lib-devel \
|
||||
astyle \
|
||||
autoconf \
|
||||
automake \
|
||||
nasm \
|
||||
speexdsp-devel \
|
||||
pulseaudio-libs-devel \
|
||||
libcanberra-devel \
|
||||
libcurl-devel \
|
||||
libtool \
|
||||
mesa-libgbm-devel \
|
||||
mesa-dri-drivers \
|
||||
bison \
|
||||
check \
|
||||
chrpath \
|
||||
clang15-devel \
|
||||
cmake \
|
||||
cryptopp-devel \
|
||||
cups-devel \
|
||||
dbus-devel \
|
||||
expat-devel \
|
||||
pcre-devel \
|
||||
yaml-cpp-devel \
|
||||
libXext-devel \
|
||||
libXfixes-devel \
|
||||
yasm \
|
||||
python2.7 \
|
||||
python3-html5lib \
|
||||
speex-devel \
|
||||
gsm-devel \
|
||||
chrpath \
|
||||
check \
|
||||
astyle \
|
||||
uuid-c++-devel \
|
||||
gettext-devel \
|
||||
gcc-c++ \
|
||||
which \
|
||||
alsa-lib-devel \
|
||||
systemd-devel \
|
||||
libuuid-devel \
|
||||
uuid-devel \
|
||||
gnutls-devel \
|
||||
nettle-devel \
|
||||
opus-devel \
|
||||
patch \
|
||||
jsoncpp-devel \
|
||||
libnatpmp-devel \
|
||||
webkitgtk4-devel \
|
||||
cryptopp-devel \
|
||||
libva-devel \
|
||||
libvdpau-devel \
|
||||
msgpack-devel \
|
||||
NetworkManager-libnm-devel \
|
||||
openssl-devel \
|
||||
clutter-devel \
|
||||
clutter-gtk-devel \
|
||||
libappindicator-gtk3-devel \
|
||||
libnotify-devel \
|
||||
libupnp-devel \
|
||||
qrencode-devel \
|
||||
libargon2-devel \
|
||||
libsndfile-devel \
|
||||
libdrm \
|
||||
gperf \
|
||||
bison \
|
||||
clang \
|
||||
clang-devel \
|
||||
llvm-devel \
|
||||
nodejs \
|
||||
flex \
|
||||
fmt-devel \
|
||||
gcc-c++ \
|
||||
gettext-devel \
|
||||
git \
|
||||
gnutls-devel \
|
||||
gperf \
|
||||
gsm-devel \
|
||||
gstreamer1 gstreamer1-devel \
|
||||
gstreamer1-plugins-bad-free-devel \
|
||||
gstreamer1-plugins-base-devel \
|
||||
gstreamer1-plugins-good \
|
||||
gstreamer1-plugins-bad-free-devel \
|
||||
nss-devel \
|
||||
jsoncpp-devel \
|
||||
libX11-devel \
|
||||
libXext-devel \
|
||||
libXfixes-devel \
|
||||
libXrender-devel \
|
||||
libappindicator-gtk3-devel \
|
||||
libargon2-devel \
|
||||
libcanberra-devel \
|
||||
libcurl-devel \
|
||||
libdrm \
|
||||
libnatpmp-devel \
|
||||
libnotify \
|
||||
libnotify-devel \
|
||||
libsndfile-devel \
|
||||
libstdc++-static \
|
||||
libtool \
|
||||
libupnp-devel \
|
||||
libuuid-devel \
|
||||
libva-devel \
|
||||
libvdpau-devel \
|
||||
libxcb* \
|
||||
libxkb* \
|
||||
libX11-devel \
|
||||
vulkan-devel \
|
||||
libXrender-devel \
|
||||
xcb-util-* \
|
||||
xz \
|
||||
xkeyboard-config \
|
||||
libnotify \
|
||||
wget \
|
||||
libstdc++-static \
|
||||
sqlite-devel \
|
||||
perl-generators \
|
||||
perl-English \
|
||||
libxshmfence-devel \
|
||||
llvm15-devel \
|
||||
make \
|
||||
mesa-dri-drivers \
|
||||
mesa-libgbm-devel \
|
||||
msgpack-devel \
|
||||
nasm \
|
||||
nettle-devel \
|
||||
NetworkManager-libnm-devel \
|
||||
ninja-build \
|
||||
clang \
|
||||
cmake \
|
||||
fmt-devel \
|
||||
nodejs \
|
||||
nss-devel \
|
||||
openssl-devel \
|
||||
opus-devel \
|
||||
pcre2-devel \
|
||||
perl-English \
|
||||
perl-generators \
|
||||
pipewire-devel \
|
||||
cups-devel #Chromium for Qt
|
||||
|
||||
pulseaudio-libs-devel \
|
||||
python3-html5lib \
|
||||
qrencode-devel \
|
||||
speex-devel \
|
||||
speexdsp-devel \
|
||||
sqlite-devel \
|
||||
systemd-devel \
|
||||
uuid-devel \
|
||||
vulkan-devel \
|
||||
webkitgtk6.0-devel \
|
||||
wget \
|
||||
which \
|
||||
xcb-util-* \
|
||||
xkeyboard-config \
|
||||
yaml-cpp-devel \
|
||||
yasm
|
||||
ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
|
||||
CMD ["/opt/build-package-rpm.sh"]
|
||||
CMD ["/opt/build-package-rpm.sh"]
|
||||
@ -70,9 +70,8 @@ RUN dnf install -y \
|
||||
libdrm \
|
||||
gperf \
|
||||
bison \
|
||||
clang \
|
||||
clang-devel \
|
||||
llvm-devel \
|
||||
clang16-devel \
|
||||
llvm16-devel \
|
||||
nodejs \
|
||||
flex \
|
||||
gstreamer1 gstreamer1-devel \
|
||||
@ -96,11 +95,11 @@ RUN dnf install -y \
|
||||
perl-English \
|
||||
libxshmfence-devel \
|
||||
ninja-build \
|
||||
clang \
|
||||
cmake \
|
||||
fmt-devel \
|
||||
python3-html5lib \
|
||||
cups-devel \
|
||||
pipewire-devel
|
||||
ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
CMD ["/opt/build-package-rpm.sh"]
|
||||
@ -27,6 +27,7 @@ RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.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
|
||||
|
||||
@ -18,5 +18,6 @@ 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
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
CMD ["/opt/build-package-debian.sh"]
|
||||
|
||||
@ -11,14 +11,6 @@ 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
|
||||
# is unable to 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
|
||||
@ -29,5 +21,6 @@ RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
RUN apt-get remove -y libre2-dev libre2-11
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
CMD ["/opt/build-package-debian.sh"]
|
||||
|
||||
@ -11,14 +11,6 @@ RUN apt-get update && \
|
||||
libdbus-1-dev \
|
||||
wget
|
||||
|
||||
# As of January 2024, the default compiler on Debian unstable is GCC 13.2.0, which
|
||||
# is unable to 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
|
||||
@ -29,5 +21,6 @@ RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
RUN apt-get remove -y libre2-dev libre2-11
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
CMD ["/opt/build-package-debian.sh"]
|
||||
|
||||
@ -1,105 +0,0 @@
|
||||
FROM fedora:39
|
||||
|
||||
RUN dnf clean all
|
||||
RUN dnf update -y
|
||||
|
||||
RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
|
||||
dnf install -y mock
|
||||
|
||||
RUN dnf groupinstall -y "X Software Development"
|
||||
|
||||
RUN dnf install -y \
|
||||
git \
|
||||
rpm-build \
|
||||
tar \
|
||||
make \
|
||||
autoconf \
|
||||
automake \
|
||||
nasm \
|
||||
speexdsp-devel \
|
||||
pulseaudio-libs-devel \
|
||||
libcanberra-devel \
|
||||
libcurl-devel \
|
||||
libtool \
|
||||
mesa-libgbm-devel \
|
||||
mesa-dri-drivers \
|
||||
dbus-devel \
|
||||
expat-devel \
|
||||
pcre-devel \
|
||||
yaml-cpp-devel \
|
||||
libXext-devel \
|
||||
libXfixes-devel \
|
||||
yasm \
|
||||
speex-devel \
|
||||
gsm-devel \
|
||||
chrpath \
|
||||
check \
|
||||
astyle \
|
||||
uuid-c++-devel \
|
||||
gettext-devel \
|
||||
gcc-c++ \
|
||||
which \
|
||||
alsa-lib-devel \
|
||||
systemd-devel \
|
||||
libuuid-devel \
|
||||
uuid-devel \
|
||||
gnutls-devel \
|
||||
nettle-devel \
|
||||
opus-devel \
|
||||
patch \
|
||||
jsoncpp-devel \
|
||||
libnatpmp-devel \
|
||||
webkitgtk4-devel \
|
||||
cryptopp-devel \
|
||||
libva-devel \
|
||||
libvdpau-devel \
|
||||
msgpack-devel \
|
||||
NetworkManager-libnm-devel \
|
||||
openssl-devel \
|
||||
clutter-devel \
|
||||
clutter-gtk-devel \
|
||||
libappindicator-gtk3-devel \
|
||||
libnotify-devel \
|
||||
libupnp-devel \
|
||||
qrencode-devel \
|
||||
libargon2-devel \
|
||||
libsndfile-devel \
|
||||
libdrm \
|
||||
gperf \
|
||||
bison \
|
||||
clang \
|
||||
clang-devel \
|
||||
llvm-devel \
|
||||
nodejs \
|
||||
flex \
|
||||
gstreamer1 gstreamer1-devel \
|
||||
gstreamer1-plugins-base-devel \
|
||||
gstreamer1-plugins-good \
|
||||
gstreamer1-plugins-bad-free-devel \
|
||||
nss-devel \
|
||||
libxcb* \
|
||||
libxkb* \
|
||||
libX11-devel \
|
||||
vulkan-devel \
|
||||
libXrender-devel \
|
||||
xcb-util-* \
|
||||
xz \
|
||||
xkeyboard-config \
|
||||
libnotify \
|
||||
wget \
|
||||
libstdc++-static \
|
||||
sqlite-devel \
|
||||
perl-generators \
|
||||
perl-English \
|
||||
libxshmfence-devel \
|
||||
ninja-build \
|
||||
clang \
|
||||
cmake \
|
||||
fmt-devel \
|
||||
python3.10 \
|
||||
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"]
|
||||
@ -1,105 +0,0 @@
|
||||
FROM fedora:40
|
||||
|
||||
RUN dnf clean all
|
||||
RUN dnf update -y
|
||||
|
||||
RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
|
||||
dnf install -y mock
|
||||
|
||||
RUN dnf groupinstall -y "X Software Development"
|
||||
|
||||
RUN dnf install -y \
|
||||
git \
|
||||
rpm-build \
|
||||
tar \
|
||||
make \
|
||||
autoconf \
|
||||
automake \
|
||||
nasm \
|
||||
speexdsp-devel \
|
||||
pulseaudio-libs-devel \
|
||||
libcanberra-devel \
|
||||
libcurl-devel \
|
||||
libtool \
|
||||
mesa-libgbm-devel \
|
||||
mesa-dri-drivers \
|
||||
dbus-devel \
|
||||
expat-devel \
|
||||
pcre-devel \
|
||||
yaml-cpp-devel \
|
||||
libXext-devel \
|
||||
libXfixes-devel \
|
||||
yasm \
|
||||
speex-devel \
|
||||
gsm-devel \
|
||||
chrpath \
|
||||
check \
|
||||
astyle \
|
||||
uuid-c++-devel \
|
||||
gettext-devel \
|
||||
gcc-c++ \
|
||||
which \
|
||||
alsa-lib-devel \
|
||||
systemd-devel \
|
||||
libuuid-devel \
|
||||
uuid-devel \
|
||||
gnutls-devel \
|
||||
nettle-devel \
|
||||
opus-devel \
|
||||
patch \
|
||||
jsoncpp-devel \
|
||||
libnatpmp-devel \
|
||||
webkitgtk4-devel \
|
||||
cryptopp-devel \
|
||||
libva-devel \
|
||||
libvdpau-devel \
|
||||
msgpack-devel \
|
||||
NetworkManager-libnm-devel \
|
||||
openssl-devel \
|
||||
clutter-devel \
|
||||
clutter-gtk-devel \
|
||||
libappindicator-gtk3-devel \
|
||||
libnotify-devel \
|
||||
libupnp-devel \
|
||||
qrencode-devel \
|
||||
libargon2-devel \
|
||||
libsndfile-devel \
|
||||
libdrm \
|
||||
gperf \
|
||||
bison \
|
||||
clang \
|
||||
clang-devel \
|
||||
llvm-devel \
|
||||
nodejs \
|
||||
flex \
|
||||
gstreamer1 gstreamer1-devel \
|
||||
gstreamer1-plugins-base-devel \
|
||||
gstreamer1-plugins-good \
|
||||
gstreamer1-plugins-bad-free-devel \
|
||||
nss-devel \
|
||||
libxcb* \
|
||||
libxkb* \
|
||||
libX11-devel \
|
||||
vulkan-devel \
|
||||
libXrender-devel \
|
||||
xcb-util-* \
|
||||
xz \
|
||||
xkeyboard-config \
|
||||
libnotify \
|
||||
wget \
|
||||
libstdc++-static \
|
||||
sqlite-devel \
|
||||
perl-generators \
|
||||
perl-English \
|
||||
libxshmfence-devel \
|
||||
ninja-build \
|
||||
clang \
|
||||
cmake \
|
||||
fmt-devel \
|
||||
python3.10 \
|
||||
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"]
|
||||
@ -94,10 +94,11 @@ RUN dnf install -y \
|
||||
ninja-build \
|
||||
cmake \
|
||||
fmt-devel \
|
||||
python3.10 \
|
||||
python3-html5lib \
|
||||
cups-devel \
|
||||
pipewire-devel
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
|
||||
CMD ["/opt/build-package-rpm.sh"]
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
FROM fedora:38
|
||||
FROM fedora:42
|
||||
|
||||
RUN dnf clean all
|
||||
RUN dnf update -y
|
||||
@ -6,12 +6,10 @@ RUN dnf update -y
|
||||
RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
|
||||
dnf install -y mock
|
||||
|
||||
RUN dnf groupinstall -y "X Software Development"
|
||||
RUN dnf group install -y x-software-development
|
||||
|
||||
RUN dnf install -y \
|
||||
git \
|
||||
rpm-build \
|
||||
tar \
|
||||
make \
|
||||
autoconf \
|
||||
automake \
|
||||
@ -22,15 +20,11 @@ RUN dnf install -y \
|
||||
libcurl-devel \
|
||||
libtool \
|
||||
mesa-libgbm-devel \
|
||||
mesa-dri-drivers \
|
||||
dbus-devel \
|
||||
expat-devel \
|
||||
pcre-devel \
|
||||
yaml-cpp-devel \
|
||||
libXext-devel \
|
||||
libXfixes-devel \
|
||||
yasm \
|
||||
python2.7 \
|
||||
speex-devel \
|
||||
gsm-devel \
|
||||
chrpath \
|
||||
@ -38,16 +32,15 @@ RUN dnf install -y \
|
||||
astyle \
|
||||
uuid-c++-devel \
|
||||
gettext-devel \
|
||||
gcc-c++ \
|
||||
gcc14 \
|
||||
gcc14-c++ \
|
||||
which \
|
||||
alsa-lib-devel \
|
||||
systemd-devel \
|
||||
libuuid-devel \
|
||||
uuid-devel \
|
||||
gnutls-devel \
|
||||
nettle-devel \
|
||||
opus-devel \
|
||||
patch \
|
||||
jsoncpp-devel \
|
||||
libnatpmp-devel \
|
||||
webkitgtk4-devel \
|
||||
@ -65,28 +58,20 @@ RUN dnf install -y \
|
||||
qrencode-devel \
|
||||
libargon2-devel \
|
||||
libsndfile-devel \
|
||||
libdrm \
|
||||
gperf \
|
||||
bison \
|
||||
clang \
|
||||
clang-devel \
|
||||
llvm-devel \
|
||||
clang18-devel \
|
||||
llvm18-devel \
|
||||
nodejs \
|
||||
flex \
|
||||
gstreamer1 gstreamer1-devel \
|
||||
gstreamer1-plugins-base-devel \
|
||||
gstreamer1-plugins-good \
|
||||
gstreamer1-plugins-bad-free-devel \
|
||||
nss-devel \
|
||||
libxcb* \
|
||||
libxkb* \
|
||||
libX11-devel \
|
||||
vulkan-devel \
|
||||
libXrender-devel \
|
||||
xcb-util-* \
|
||||
xz \
|
||||
xkeyboard-config \
|
||||
libnotify \
|
||||
wget \
|
||||
libstdc++-static \
|
||||
sqlite-devel \
|
||||
@ -94,13 +79,13 @@ RUN dnf install -y \
|
||||
perl-English \
|
||||
libxshmfence-devel \
|
||||
ninja-build \
|
||||
clang \
|
||||
cmake \
|
||||
fmt-devel \
|
||||
python3-html5lib \
|
||||
cups-devel \
|
||||
pipewire-devel
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
|
||||
CMD ["/opt/build-package-rpm.sh"]
|
||||
@ -1,122 +0,0 @@
|
||||
FROM opensuse/leap:15.4
|
||||
|
||||
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-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 \
|
||||
nodejs18 \
|
||||
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.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
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
|
||||
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"]
|
||||
@ -1,10 +1,9 @@
|
||||
FROM opensuse/leap:15.5
|
||||
FROM opensuse/leap:15.6
|
||||
|
||||
RUN zypper --gpg-auto-import-keys refresh
|
||||
|
||||
RUN zypper --non-interactive install -y \
|
||||
dnf \
|
||||
dnf-command\(builddep\) \
|
||||
rpmdevtools \
|
||||
Mesa-dri-devel Mesa-dri \
|
||||
git \
|
||||
@ -29,11 +28,11 @@ RUN zypper --non-interactive install -y \
|
||||
speex-devel \
|
||||
libgsm-devel \
|
||||
chrpath \
|
||||
check \
|
||||
check-devel \
|
||||
astyle \
|
||||
gettext-devel \
|
||||
gettext-tools \
|
||||
which \
|
||||
alsa-lib-devel \
|
||||
alsa-devel \
|
||||
systemd-devel \
|
||||
libuuid-devel \
|
||||
uuid-devel \
|
||||
@ -47,7 +46,7 @@ RUN zypper --non-interactive install -y \
|
||||
msgpack-c-devel \
|
||||
msgpack-cxx-devel \
|
||||
clutter-devel \
|
||||
openssl-devel \
|
||||
libopenssl-devel \
|
||||
clutter-gtk-devel \
|
||||
libnma-devel \
|
||||
libcryptopp-devel \
|
||||
@ -56,24 +55,22 @@ RUN zypper --non-interactive install -y \
|
||||
libgsm-devel \
|
||||
gtk3-devel \
|
||||
libappindicator-devel \
|
||||
sqlite-devel \
|
||||
ffmpeg-4-libavutil-devel \
|
||||
sqlite3-devel \
|
||||
gtk3-devel\
|
||||
qrencode-devel \
|
||||
python310 \
|
||||
python3-python-dateutil \
|
||||
python3-html5lib \
|
||||
python311 \
|
||||
python311-python-dateutil \
|
||||
python311-html5lib \
|
||||
python311-six \
|
||||
python311-importlib-metadata \
|
||||
libsndfile-devel \
|
||||
libdrm \
|
||||
libdrm-devel \
|
||||
gperf \
|
||||
bison \
|
||||
flex \
|
||||
ffmpeg ffmpeg-devel \
|
||||
nodejs20 \
|
||||
mozilla-nss-devel \
|
||||
python-xml \
|
||||
python3-six \
|
||||
python3-importlib-metadata \
|
||||
libxcb* \
|
||||
libxkb* \
|
||||
libX11-devel \
|
||||
@ -86,7 +83,7 @@ RUN zypper --non-interactive install -y \
|
||||
xorg-x11-devel \
|
||||
xz \
|
||||
xkeyboard-config \
|
||||
libnotify \
|
||||
libnotify-devel \
|
||||
argon2-devel \
|
||||
libxshmfence-devel \
|
||||
xproto-devel \
|
||||
@ -103,13 +100,14 @@ RUN zypper --non-interactive install -y \
|
||||
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
|
||||
# openSUSE Leap 15.6 comes with Python 3.6 by default,
|
||||
# but we need at least 3.7 to compile Qt 6.8.3
|
||||
RUN rm /usr/bin/python3 && ln -s /usr/bin/python3.11 /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/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
|
||||
ENV CC=gcc
|
||||
@ -2,7 +2,7 @@
|
||||
# https://snapcraft.io/docs/build-on-docker
|
||||
# https://github.com/canonical/snapcraft/issues/5079#issuecomment-2414199613
|
||||
|
||||
ARG UBUNTU=focal
|
||||
ARG UBUNTU=jammy
|
||||
|
||||
FROM ubuntu:$UBUNTU AS builder
|
||||
ARG UBUNTU
|
||||
@ -21,11 +21,6 @@ RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/sna
|
||||
RUN mkdir -p /snap/core22
|
||||
RUN unsquashfs -d /snap/core22/current core22.snap
|
||||
|
||||
# Download and unpack the core20 snap
|
||||
RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core20' | jq '.download_url' -r) --output core20.snap
|
||||
RUN mkdir -p /snap/core20
|
||||
RUN unsquashfs -d /snap/core20/current core20.snap
|
||||
|
||||
# Download and unpack the core24 snap
|
||||
RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core24' | jq '.download_url' -r) --output core24.snap
|
||||
RUN mkdir -p /snap/core24
|
||||
@ -36,12 +31,6 @@ RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/sna
|
||||
RUN mkdir -p /snap/snapcraft
|
||||
RUN unsquashfs -d /snap/snapcraft/current snapcraft.snap
|
||||
|
||||
# Fix Python3 installation: Make sure we use the interpreter from
|
||||
# the snapcraft snap:
|
||||
RUN unlink /snap/snapcraft/current/usr/bin/python3
|
||||
RUN ln -s /snap/snapcraft/current/usr/bin/python3.* /snap/snapcraft/current/usr/bin/python3
|
||||
RUN echo /snap/snapcraft/current/lib/python3.*/site-packages >> /snap/snapcraft/current/usr/lib/python3/dist-packages/site-packages.pth
|
||||
|
||||
# Create a snapcraft runner
|
||||
RUN mkdir -p /snap/bin
|
||||
RUN echo "#!/bin/sh" > /snap/bin/snapcraft
|
||||
@ -54,7 +43,6 @@ RUN chmod +x /snap/bin/snapcraft
|
||||
# time so they can be cached.
|
||||
FROM ubuntu:$UBUNTU
|
||||
|
||||
COPY --from=builder /snap/core20 /snap/core20
|
||||
COPY --from=builder /snap/core22 /snap/core22
|
||||
COPY --from=builder /snap/core24 /snap/core24
|
||||
COPY --from=builder /snap/snapcraft /snap/snapcraft
|
||||
@ -63,10 +51,6 @@ 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 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"
|
||||
ENV LANGUAGE="en_US:en"
|
||||
@ -75,6 +59,7 @@ ENV PATH="/snap/bin:/snap/snapcraft/current/usr/bin:/snap/snapcraft/current/libe
|
||||
ENV SNAP="/snap/snapcraft/current"
|
||||
ENV SNAP_NAME="snapcraft"
|
||||
ENV SNAP_ARCH="amd64"
|
||||
ENV SNAPCRAFT_BUILD_ENVIRONMENT=host
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-snap.sh /opt/build-package-snap.sh
|
||||
CMD ["/opt/build-package-snap.sh"]
|
||||
|
||||
@ -1,42 +0,0 @@
|
||||
FROM ubuntu:20.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get clean
|
||||
RUN apt-get update && \
|
||||
apt-get install -y -o Acquire::Retries=10 \
|
||||
devscripts \
|
||||
equivs \
|
||||
python-is-python3 \
|
||||
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_20.x | bash -
|
||||
RUN apt install nodejs -y
|
||||
|
||||
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
|
||||
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.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"]
|
||||
@ -23,5 +23,6 @@ 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
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
CMD ["/opt/build-package-debian.sh"]
|
||||
|
||||
@ -21,5 +21,6 @@ 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
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
CMD ["/opt/build-package-debian.sh"]
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
FROM ubuntu:24.10
|
||||
FROM ubuntu:25.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
@ -18,12 +18,6 @@ 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
|
||||
|
||||
# Remove the libre2-dev package in order to force Qt to build using the bundled
|
||||
# version of the RE2 library. This is necessary because the system version of the
|
||||
# library on Ubuntu 24.10 (libre2-11) is not compatible with the one used in
|
||||
# Qt 6.6.1 due to an API change:
|
||||
# https://codereview.qt-project.org/c/qt/qtwebengine/+/516094
|
||||
RUN apt-get remove -y libre2-dev libre2-11
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
CMD ["/opt/build-package-debian.sh"]
|
||||
@ -24,7 +24,10 @@
|
||||
(list
|
||||
;; Minimal requirements of the daemon contrib build system.
|
||||
"coreutils"
|
||||
"gcc-toolchain"
|
||||
;; When using GCC 15, Jami fails to link with errors like:
|
||||
;; ld: CMakeFiles/jami.dir/src/app/main.cpp.o:(.rodata+0x0):
|
||||
;; multiple definition of `QtPrivate::IsFloatType_v<_Float16>'
|
||||
"gcc-toolchain@14"
|
||||
"git-minimal"
|
||||
"grep"
|
||||
"gzip"
|
||||
@ -42,18 +45,12 @@
|
||||
"alsa-lib"
|
||||
"autoconf"
|
||||
"automake"
|
||||
"asio"
|
||||
"bash"
|
||||
"bzip2"
|
||||
"cmake"
|
||||
"dbus"
|
||||
;; Bundled because broken with GCC 7 upstream (unmaintained). When
|
||||
;; attempting to use it, it would cause confusing errors such as
|
||||
;; "ld: ../src/.libs/libring.a(libupnpcontrol_la-upnp_context.o): in
|
||||
;; function `jami::upnp::UPnPContext::updateMappingList(bool)':
|
||||
;; upnp_context.cpp:(.text+0xa4be): undefined reference to
|
||||
;; `std::__cxx11::basic_ostringstream<char, std::char_traits<char>,
|
||||
;; std::allocator<char> >::basic_ostringstream()'
|
||||
;;"dbus-c++" ;for dbusxx-xml2cpp
|
||||
;;"dhtnet" ;bundled because tightly coupled
|
||||
"diffutils"
|
||||
"doxygen"
|
||||
"eudev" ;udev library
|
||||
@ -67,6 +64,7 @@
|
||||
"gsm"
|
||||
"gtk-doc"
|
||||
"http-parser"
|
||||
"jack@0"
|
||||
"jsoncpp"
|
||||
"libarchive"
|
||||
"libgit2"
|
||||
@ -84,16 +82,24 @@
|
||||
"patch"
|
||||
"pcre"
|
||||
"perl"
|
||||
"pipewire"
|
||||
;;"pjproject" ;bundled because patched
|
||||
"pulseaudio"
|
||||
"sdbus-c++@1"
|
||||
"speex"
|
||||
"speexdsp"
|
||||
"webrtc-audio-processing@0"
|
||||
"which"
|
||||
"yaml-cpp"
|
||||
"yasm"
|
||||
|
||||
;; For the Qt client.
|
||||
"glib"
|
||||
"hunspell"
|
||||
"libnotify"
|
||||
"libxcb"
|
||||
"libxkbcommon"
|
||||
"md4c"
|
||||
"network-manager" ;libnm
|
||||
"qrencode"
|
||||
"qtbase"
|
||||
@ -103,10 +109,13 @@
|
||||
"qtnetworkauth"
|
||||
"qtpositioning"
|
||||
"qtsvg"
|
||||
"qwindowkit"
|
||||
"qttools"
|
||||
"qtwebchannel"
|
||||
"qtwebengine"
|
||||
"tidy-html"
|
||||
"vulkan-headers"
|
||||
"zxing-cpp"
|
||||
|
||||
;; For tests and debugging.
|
||||
"file"
|
||||
|
||||
@ -261,7 +261,7 @@ Build-Depends: debhelper (>= 9),
|
||||
gperf,
|
||||
khronos-api,
|
||||
# libasound2-dev [linux-any],
|
||||
libavcodec-dev (>= 7:3.4.8~),
|
||||
libavcodec-dev (>= 7:3.4.8~) | libavcodec-extra-dev (>= 7:3.4.8~),
|
||||
libavformat-dev (>= 7:3.4.8~),
|
||||
libavutil-dev (>= 7:3.4.8~),
|
||||
libcap-dev [linux-any],
|
||||
|
||||
@ -1,348 +0,0 @@
|
||||
From 24fb774485f719df1e84dda31605d3f69202d69f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?=
|
||||
<francois-simon.fauteux-chapleau@savoirfairelinux.com>
|
||||
Date: Thu, 8 Aug 2024 14:59:17 -0400
|
||||
Subject: [PATCH] qtwebengine: enable building with Python 3.12
|
||||
|
||||
Replace the deprecated imp module by importlib:
|
||||
https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/524014
|
||||
https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/534568
|
||||
|
||||
Update six to fix html5lib import failure:
|
||||
https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/535605
|
||||
https://issues.chromium.org/issues/40286977
|
||||
---
|
||||
.../protobufs/binary_proto_generator.py | 8 ++++++--
|
||||
.../mojo/public/tools/mojom/mojom/fileutil.py | 1 -
|
||||
.../tools/mojom/mojom/fileutil_unittest.py | 5 +----
|
||||
.../mojom/mojom/generate/generator_unittest.py | 7 ++-----
|
||||
.../mojom/mojom/generate/translate_unittest.py | 4 ----
|
||||
.../tools/mojom/mojom/parse/ast_unittest.py | 6 ------
|
||||
.../mojom/parse/conditional_features_unittest.py | 8 ++------
|
||||
.../mojo/public/tools/mojom/mojom/parse/lexer.py | 1 -
|
||||
.../tools/mojom/mojom/parse/lexer_unittest.py | 7 ++-----
|
||||
.../tools/mojom/mojom/parse/parser_unittest.py | 5 -----
|
||||
.../third_party/catapult/third_party/six/six.py | 16 ++++++++++++++++
|
||||
11 files changed, 29 insertions(+), 39 deletions(-)
|
||||
|
||||
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 2a1802dccdc..8b9de65ed0b 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
|
||||
+from importlib import util as imp_util
|
||||
import optparse
|
||||
import os
|
||||
import re
|
||||
@@ -68,7 +68,11 @@ class GoogleProtobufModuleImporter:
|
||||
raise ImportError(fullname)
|
||||
|
||||
filepath = self._fullname_to_filepath(fullname)
|
||||
- return imp.load_source(fullname, filepath)
|
||||
+ spec = imp_util.spec_from_file_location(fullname, filepath)
|
||||
+ loaded = imp_util.module_from_spec(spec)
|
||||
+ spec.loader.exec_module(loaded)
|
||||
+
|
||||
+ return loaded
|
||||
|
||||
class BinaryProtoGenerator:
|
||||
|
||||
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 29daec367c5..124f12c134b 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,6 @@
|
||||
# found in the LICENSE file.
|
||||
|
||||
import errno
|
||||
-import imp
|
||||
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 48eaf4eca94..c93d22898d2 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,19 +2,16 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
import os.path
|
||||
import shutil
|
||||
-import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
from mojom import fileutil
|
||||
|
||||
-
|
||||
class FileUtilTest(unittest.TestCase):
|
||||
def testEnsureDirectoryExists(self):
|
||||
- """Test that EnsureDirectoryExists fuctions correctly."""
|
||||
+ """Test that EnsureDirectoryExists functions correctly."""
|
||||
|
||||
temp_dir = tempfile.mkdtemp()
|
||||
try:
|
||||
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 76cda3981f3..7143e07c4d7 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,12 +2,11 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib.util
|
||||
import os.path
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
-
|
||||
def _GetDirAbove(dirname):
|
||||
"""Returns the directory "above" this file containing |dirname| (which must
|
||||
also be "above" this file)."""
|
||||
@@ -20,12 +19,11 @@ def _GetDirAbove(dirname):
|
||||
|
||||
|
||||
try:
|
||||
- imp.find_module("mojom")
|
||||
+ importlib.util.find_spec("mojom")
|
||||
except ImportError:
|
||||
sys.path.append(os.path.join(_GetDirAbove("pylib"), "pylib"))
|
||||
from mojom.generate import generator
|
||||
|
||||
-
|
||||
class StringManipulationTest(unittest.TestCase):
|
||||
"""generator contains some string utilities, this tests only those."""
|
||||
|
||||
@@ -69,6 +67,5 @@ class StringManipulationTest(unittest.TestCase):
|
||||
self.assertEquals("SNAKE_D3D11_CASE",
|
||||
generator.ToUpperSnakeCase("snakeD3d11Case"))
|
||||
|
||||
-
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
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 4259374513f..558e71e1193 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,16 +2,12 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
-import os.path
|
||||
-import sys
|
||||
import unittest
|
||||
|
||||
from mojom.generate import module as mojom
|
||||
from mojom.generate import translate
|
||||
from mojom.parse import ast
|
||||
|
||||
-
|
||||
class TranslateTest(unittest.TestCase):
|
||||
"""Tests |parser.Parse()|."""
|
||||
|
||||
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 c36376712e7..b289f7b11f6 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,14 +2,10 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
-import os.path
|
||||
-import sys
|
||||
import unittest
|
||||
|
||||
from mojom.parse import ast
|
||||
|
||||
-
|
||||
class _TestNode(ast.NodeBase):
|
||||
"""Node type for tests."""
|
||||
|
||||
@@ -20,13 +16,11 @@ class _TestNode(ast.NodeBase):
|
||||
def __eq__(self, other):
|
||||
return super().__eq__(other) and self.value == other.value
|
||||
|
||||
-
|
||||
class _TestNodeList(ast.NodeListBase):
|
||||
"""Node list type for tests."""
|
||||
|
||||
_list_item_type = _TestNode
|
||||
|
||||
-
|
||||
class ASTTest(unittest.TestCase):
|
||||
"""Tests various AST classes."""
|
||||
|
||||
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 5fc582025ee..2fa5d2be6ab 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,12 +2,11 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib.util
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
-
|
||||
def _GetDirAbove(dirname):
|
||||
"""Returns the directory "above" this file containing |dirname| (which must
|
||||
also be "above" this file)."""
|
||||
@@ -18,9 +17,8 @@ def _GetDirAbove(dirname):
|
||||
if tail == dirname:
|
||||
return path
|
||||
|
||||
-
|
||||
try:
|
||||
- imp.find_module('mojom')
|
||||
+ importlib.util.find_spec("mojom")
|
||||
except ImportError:
|
||||
sys.path.append(os.path.join(_GetDirAbove('pylib'), 'pylib'))
|
||||
import mojom.parse.ast as ast
|
||||
@@ -29,7 +27,6 @@ import mojom.parse.parser as parser
|
||||
|
||||
ENABLED_FEATURES = frozenset({'red', 'green', 'blue'})
|
||||
|
||||
-
|
||||
class ConditionalFeaturesTest(unittest.TestCase):
|
||||
"""Tests |mojom.parse.conditional_features|."""
|
||||
|
||||
@@ -356,6 +353,5 @@ class ConditionalFeaturesTest(unittest.TestCase):
|
||||
conditional_features.RemoveDisabledDefinitions,
|
||||
definition, ENABLED_FEATURES)
|
||||
|
||||
-
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
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 73ca15df94c..1083a1af7bb 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,6 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
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 ce376da66e0..bc9f8354316 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,12 +2,11 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
+import importlib.util
|
||||
import os.path
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
-
|
||||
def _GetDirAbove(dirname):
|
||||
"""Returns the directory "above" this file containing |dirname| (which must
|
||||
also be "above" this file)."""
|
||||
@@ -18,17 +17,15 @@ def _GetDirAbove(dirname):
|
||||
if tail == dirname:
|
||||
return path
|
||||
|
||||
-
|
||||
sys.path.insert(1, os.path.join(_GetDirAbove("mojo"), "third_party"))
|
||||
from ply import lex
|
||||
|
||||
try:
|
||||
- imp.find_module("mojom")
|
||||
+ importlib.util.find_spec("mojom")
|
||||
except ImportError:
|
||||
sys.path.append(os.path.join(_GetDirAbove("pylib"), "pylib"))
|
||||
import mojom.parse.lexer
|
||||
|
||||
-
|
||||
# This (monkey-patching LexToken to make comparison value-based) is evil, but
|
||||
# we'll do it anyway. (I'm pretty sure ply's lexer never cares about comparing
|
||||
# for object identity.)
|
||||
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 0513343ec7e..0a26307b1a3 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,16 +2,12 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import imp
|
||||
-import os.path
|
||||
-import sys
|
||||
import unittest
|
||||
|
||||
from mojom.parse import ast
|
||||
from mojom.parse import lexer
|
||||
from mojom.parse import parser
|
||||
|
||||
-
|
||||
class ParserTest(unittest.TestCase):
|
||||
"""Tests |parser.Parse()|."""
|
||||
|
||||
@@ -1375,6 +1371,5 @@ class ParserTest(unittest.TestCase):
|
||||
r" *associated\? MyInterface& a;$"):
|
||||
parser.Parse(source3, "my_file.mojom")
|
||||
|
||||
-
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/catapult/third_party/six/six.py b/qtwebengine/src/3rdparty/chromium/third_party/catapult/third_party/six/six.py
|
||||
index 83f69783d1a..5e7f0ce4437 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/catapult/third_party/six/six.py
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/catapult/third_party/six/six.py
|
||||
@@ -71,6 +71,11 @@ else:
|
||||
MAXSIZE = int((1 << 63) - 1)
|
||||
del X
|
||||
|
||||
+if PY34:
|
||||
+ from importlib.util import spec_from_loader
|
||||
+else:
|
||||
+ spec_from_loader = None
|
||||
+
|
||||
|
||||
def _add_doc(func, doc):
|
||||
"""Add documentation to a function."""
|
||||
@@ -186,6 +191,11 @@ class _SixMetaPathImporter(object):
|
||||
return self
|
||||
return None
|
||||
|
||||
+ def find_spec(self, fullname, path, target=None):
|
||||
+ if fullname in self.known_modules:
|
||||
+ return spec_from_loader(fullname, self)
|
||||
+ return None
|
||||
+
|
||||
def __get_module(self, fullname):
|
||||
try:
|
||||
return self.known_modules[fullname]
|
||||
@@ -223,6 +233,12 @@ class _SixMetaPathImporter(object):
|
||||
return None
|
||||
get_source = get_code # same as get_code
|
||||
|
||||
+ def create_module(self, spec):
|
||||
+ return self.load_module(spec.name)
|
||||
+
|
||||
+ def exec_module(self, module):
|
||||
+ pass
|
||||
+
|
||||
_importer = _SixMetaPathImporter(__name__)
|
||||
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
From 0d0856252b48895a8d6cad7bff66c904ccfc0725 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?=
|
||||
<francois-simon.fauteux-chapleau@savoirfairelinux.com>
|
||||
Date: Wed, 16 Jul 2025 13:49:54 -0400
|
||||
Subject: [PATCH] qtwebengine: fix build error due to missing chromium
|
||||
dependency
|
||||
|
||||
Error:
|
||||
|
||||
In file included from ../../../3rdparty/chromium/ui/gl/gl_surface.h:30,
|
||||
from ../../../3rdparty/chromium/tools/v8_context_snapshot/qt_overrides.cc:13:
|
||||
../../../3rdparty/chromium/ui/gl/gl_implementation.h:18:10: fatal error: ui/gl/buildflags.h: No such file or directory
|
||||
18 | #include "ui/gl/buildflags.h"
|
||||
| ^~~~~~~~~~~~~~~~~~~~
|
||||
compilation terminated.
|
||||
|
||||
Patch taken from: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/637889
|
||||
---
|
||||
.../src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn b/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn
|
||||
index 812445d934..97cd46140d 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn
|
||||
@@ -455,6 +455,10 @@ if (is_linux && !is_qtwebengine) {
|
||||
output_name = "webenginedriver"
|
||||
deps -= [ "//net/traffic_annotation:test_support" ]
|
||||
|
||||
+ if (is_linux || is_mac) {
|
||||
+ deps += [ "//ui/gl:buildflags" ]
|
||||
+ }
|
||||
+
|
||||
if (is_linux) {
|
||||
sources += [
|
||||
"//content/public/common/content_switches.cc",
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@ -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 3488120543..120e47a76f 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;
|
||||
@ -0,0 +1,79 @@
|
||||
From 24dd03e131cd3edc89907a699369562e61d8aa86 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?=
|
||||
<francois-simon.fauteux-chapleau@savoirfairelinux.com>
|
||||
Date: Mon, 21 Jul 2025 13:19:58 -0400
|
||||
Subject: [PATCH] qtwebengine: fix ASSERT_TRIVIALLY_COPYABLE failure
|
||||
|
||||
Some compilers don't implement std::is_trivially_copyable correctly,
|
||||
which can cause chromium's build to fail with the following error:
|
||||
|
||||
In file included from ../../../3rdparty/chromium/v8/src/base/bits.h:12,
|
||||
from ../../../3rdparty/chromium/v8/src/base/small-vector.h:12,
|
||||
from ../../../3rdparty/chromium/v8/src/compiler/turboshaft/graph.h:17,
|
||||
from ../../../3rdparty/chromium/v8/src/compiler/turboshaft/analyzer-iterator.h:9,
|
||||
from ./../../../3rdparty/chromium/v8/src/compiler/turboshaft/analyzer-iterator.cc:5,
|
||||
from gen/v8/v8_turboshaft_jumbo_1.cc:5:
|
||||
../../../3rdparty/chromium/v8/src/base/small-vector.h: In instantiation of 'class v8::base::SmallVector<std::pair<const v8::internal::compiler::turboshaft::PhiOp*, const v8::internal::compiler::turboshaft::OpIndex>, 16>':
|
||||
../../../3rdparty/chromium/v8/src/compiler/turboshaft/loop-unrolling-reducer.h:433:11: required from here
|
||||
../../../3rdparty/chromium/v8/src/base/macros.h:206:55: error: static assertion failed: T should be trivially copyable
|
||||
206 | static_assert(::v8::base::is_trivially_copyable<T>::value, \
|
||||
| ^~~~~
|
||||
../../../3rdparty/chromium/v8/src/base/small-vector.h:25:3: note: in expansion of macro 'ASSERT_TRIVIALLY_COPYABLE'
|
||||
25 | ASSERT_TRIVIALLY_COPYABLE(T);
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
../../../3rdparty/chromium/v8/src/base/macros.h:206:55: note: 'v8::base::is_trivially_copyable<std::pair<const v8::internal::compiler::turboshaft::PhiOp*, const v8::internal::compiler::turboshaft::OpIndex> >::value' evaluates to false
|
||||
206 | static_assert(::v8::base::is_trivially_copyable<T>::value, \
|
||||
| ^~~~~
|
||||
../../../3rdparty/chromium/v8/src/base/small-vector.h:25:3: note: in expansion of macro 'ASSERT_TRIVIALLY_COPYABLE'
|
||||
25 | ASSERT_TRIVIALLY_COPYABLE(T);
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
References:
|
||||
https://chromium-review.googlesource.com/c/v8/v8/+/5679182
|
||||
https://chromium-review.googlesource.com/c/v8/v8/+/5872655
|
||||
https://github.com/rubyjs/libv8-node/pull/57
|
||||
https://github.com/nodejs/node/issues/54576
|
||||
---
|
||||
qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | 3 ++-
|
||||
qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h | 4 ++--
|
||||
2 files changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
index 93a99ec136..88c6555189 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
@@ -173,7 +173,8 @@ namespace base {
|
||||
// base::is_trivially_copyable will differ for these cases.
|
||||
template <typename T>
|
||||
struct is_trivially_copyable {
|
||||
-#if V8_CC_MSVC
|
||||
+#if V8_CC_MSVC || (__GNUC__ == 12 && __GNUC_MINOR__ <= 2) || \
|
||||
+ (defined(__clang__) && __clang_major__ <= 17)
|
||||
// Unfortunately, MSVC 2015 is broken in that std::is_trivially_copyable can
|
||||
// be false even though it should be true according to the standard.
|
||||
// (status at 2018-02-26, observed on the msvc waterfall bot).
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h
|
||||
index b1b5d64198..ce2e003fb9 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h
|
||||
@@ -22,7 +22,7 @@ template <typename T, size_t kSize, typename Allocator = std::allocator<T>>
|
||||
class SmallVector {
|
||||
// Currently only support trivially copyable and trivially destructible data
|
||||
// types, as it uses memcpy to copy elements and never calls destructors.
|
||||
- ASSERT_TRIVIALLY_COPYABLE(T);
|
||||
+ // ASSERT_TRIVIALLY_COPYABLE(T);
|
||||
static_assert(std::is_trivially_destructible<T>::value);
|
||||
|
||||
public:
|
||||
@@ -193,7 +193,7 @@ class SmallVector {
|
||||
|
||||
void resize_no_init(size_t new_size) {
|
||||
// Resizing without initialization is safe if T is trivially copyable.
|
||||
- ASSERT_TRIVIALLY_COPYABLE(T);
|
||||
+ // ASSERT_TRIVIALLY_COPYABLE(T);
|
||||
if (new_size > capacity()) Grow(new_size);
|
||||
end_ = begin_ + new_size;
|
||||
}
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@ -1,26 +0,0 @@
|
||||
From cf208d11dc8a9a02160a57283596ec8bab964a09 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastien Blin <sebastien.blin@savoirfairelinux.com>
|
||||
Date: Mon, 27 May 2024 16:01:21 -0400
|
||||
Subject: [PATCH] qtwayland: downgrade wl-seat to avoid high-resolution
|
||||
scrolling events
|
||||
|
||||
---
|
||||
qtwayland/src/client/qwaylandinputdevice.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/qtwayland/src/client/qwaylandinputdevice.cpp b/qtwayland/src/client/qwaylandinputdevice.cpp
|
||||
index a4f8757e3c..ad0aa7941c 100644
|
||||
--- a/qtwayland/src/client/qwaylandinputdevice.cpp
|
||||
+++ b/qtwayland/src/client/qwaylandinputdevice.cpp
|
||||
@@ -383,7 +383,7 @@ QWaylandInputDevice::Touch::~Touch()
|
||||
}
|
||||
|
||||
QWaylandInputDevice::QWaylandInputDevice(QWaylandDisplay *display, int version, uint32_t id)
|
||||
- : QtWayland::wl_seat(display->wl_registry(), id, qMin(version, 9))
|
||||
+ : QtWayland::wl_seat(display->wl_registry(), id, qMin(version, 7))
|
||||
, mQDisplay(display)
|
||||
, mDisplay(display->wl_display())
|
||||
{
|
||||
--
|
||||
2.45.0
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
From 5c247c7a084661932969acf2f7103096b8b0d6b4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?=
|
||||
<francois-simon.fauteux-chapleau@savoirfairelinux.com>
|
||||
Date: Tue, 22 Jul 2025 13:40:55 -0400
|
||||
Subject: [PATCH] qtwebengine: fix zygote_communication_linux dependency
|
||||
|
||||
Commit 42e09c7bea of qtwebengine-chromium added
|
||||
content/public/browser/child_process_host.h to the list of header files
|
||||
included in zygote_communication_linux.cc, which can cause the build to
|
||||
fail with the following error:
|
||||
|
||||
In file included from ../../../3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc:21:
|
||||
../../../3rdparty/chromium/content/public/browser/child_process_host.h:17:10: fatal error: content/common/buildflags.h: No such file or directory
|
||||
17 | #include "content/common/buildflags.h"
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
---
|
||||
.../content/common/zygote/zygote_communication_linux.cc | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc b/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc
|
||||
index 5bd9a53568..ff883d59e4 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc
|
||||
@@ -18,7 +18,7 @@
|
||||
#include "base/posix/eintr_wrapper.h"
|
||||
#include "base/posix/unix_domain_socket.h"
|
||||
#include "content/common/zygote/zygote_commands_linux.h"
|
||||
-#include "content/public/browser/child_process_host.h"
|
||||
+#include "content/public/common/content_paths.h"
|
||||
#include "content/public/common/content_switches.h"
|
||||
#include "content/public/common/result_codes.h"
|
||||
#include "sandbox/policy/switches.h"
|
||||
@@ -237,8 +237,11 @@ void ZygoteCommunication::Init(
|
||||
base::OnceCallback<pid_t(base::CommandLine*, base::ScopedFD*)> launcher) {
|
||||
CHECK(!init_);
|
||||
|
||||
- base::FilePath chrome_path = content::ChildProcessHost::GetChildPath(
|
||||
- content::ChildProcessHost::CHILD_NORMAL);
|
||||
+ base::FilePath chrome_path = base::CommandLine::ForCurrentProcess()->GetSwitchValuePath(
|
||||
+ switches::kBrowserSubprocessPath);
|
||||
+ if (chrome_path.empty()) {
|
||||
+ base::PathService::Get(CHILD_PROCESS_EXE, &chrome_path);
|
||||
+ }
|
||||
|
||||
base::CommandLine cmd_line(chrome_path);
|
||||
cmd_line.AppendSwitchASCII(switches::kProcessType, switches::kZygoteProcess);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@ -1,40 +0,0 @@
|
||||
From 420b3e5ac2e91b7a99488ac34577e2798a84a68c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?=
|
||||
<francois-simon.fauteux-chapleau@savoirfairelinux.com>
|
||||
Date: Tue, 6 Aug 2024 17:35:56 -0400
|
||||
Subject: [PATCH] qtbase: fix CMake error
|
||||
|
||||
For more information, see:
|
||||
https://github.com/qt/qtbase/commit/3411f2984a5325a35e3bed1f961e5973d8a565b9
|
||||
---
|
||||
qtbase/configure.cmake | 1 +
|
||||
qtbase/src/corelib/CMakeLists.txt | 1 -
|
||||
2 files changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/qtbase/configure.cmake b/qtbase/configure.cmake
|
||||
index 43de2aa026..37a82dcdb6 100644
|
||||
--- a/qtbase/configure.cmake
|
||||
+++ b/qtbase/configure.cmake
|
||||
@@ -18,6 +18,7 @@ if(TARGET ZLIB::ZLIB)
|
||||
set_property(TARGET ZLIB::ZLIB PROPERTY IMPORTED_GLOBAL TRUE)
|
||||
endif()
|
||||
|
||||
+qt_find_package(Threads PROVIDED_TARGETS Threads::Threads)
|
||||
qt_find_package(WrapOpenSSLHeaders PROVIDED_TARGETS WrapOpenSSLHeaders::WrapOpenSSLHeaders MODULE_NAME core)
|
||||
# openssl_headers
|
||||
# OPENSSL_VERSION_MAJOR is not defined for OpenSSL 1.1.1
|
||||
diff --git a/qtbase/src/corelib/CMakeLists.txt b/qtbase/src/corelib/CMakeLists.txt
|
||||
index 31b81734e8..b62e2f763b 100644
|
||||
--- a/qtbase/src/corelib/CMakeLists.txt
|
||||
+++ b/qtbase/src/corelib/CMakeLists.txt
|
||||
@@ -1,7 +1,6 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
-qt_find_package(Threads PROVIDED_TARGETS Threads::Threads)
|
||||
qt_find_package(WrapPCRE2 PROVIDED_TARGETS WrapPCRE2::WrapPCRE2)
|
||||
qt_find_package(WrapZLIB PROVIDED_TARGETS WrapZLIB::WrapZLIB)
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@ -1,40 +0,0 @@
|
||||
From 4c7360faeb0fb7f1dfd995619fb8c596b4e15606 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?=
|
||||
<francois-simon.fauteux-chapleau@savoirfairelinux.com>
|
||||
Date: Thu, 8 Aug 2024 10:29:43 -0400
|
||||
Subject: [PATCH] qtwebengine: add missing chromium dependencies
|
||||
|
||||
For more information, see:
|
||||
https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/555586
|
||||
---
|
||||
chromium/content/public/browser/BUILD.gn | 1 +
|
||||
chromium/extensions/browser/api/declarative_net_request/BUILD.gn | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/content/public/browser/BUILD.gn b/qtwebengine/src/3rdparty/chromium/content/public/browser/BUILD.gn
|
||||
index b25bf5764e7..dfbfb2ec77b 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/content/public/browser/BUILD.gn
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/content/public/browser/BUILD.gn
|
||||
@@ -515,6 +515,7 @@ jumbo_source_set("browser_sources") {
|
||||
"//cc",
|
||||
"//components/services/storage/public/cpp",
|
||||
"//components/viz/host",
|
||||
+ "//components/spellcheck:buildflags",
|
||||
"//content/browser", # Must not be public_deps!
|
||||
"//device/fido",
|
||||
"//gpu",
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/extensions/browser/api/declarative_net_request/BUILD.gn b/qtwebengine/src/3rdparty/chromium/extensions/browser/api/declarative_net_request/BUILD.gn
|
||||
index 1fc492f5a0c..13a266e22f1 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/extensions/browser/api/declarative_net_request/BUILD.gn
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/extensions/browser/api/declarative_net_request/BUILD.gn
|
||||
@@ -23,6 +23,7 @@ source_set("declarative_net_request") {
|
||||
"//extensions/common",
|
||||
"//extensions/common/api",
|
||||
"//services/preferences/public/cpp",
|
||||
+ "//components/web_cache/browser",
|
||||
]
|
||||
|
||||
public_deps = [ "//extensions/browser:browser_sources" ]
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@ -1,49 +0,0 @@
|
||||
From ab6d5bebaf68a9f4d00440b2adbaffe0e5b2ae6c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?=
|
||||
<francois-simon.fauteux-chapleau@savoirfairelinux.com>
|
||||
Date: Thu, 8 Aug 2024 10:55:08 -0400
|
||||
Subject: [PATCH] qtwebengine: fix libxml2 build error
|
||||
|
||||
Version 2.12 of libxml2 introduced a change that broke chromium's build,
|
||||
see: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/523633
|
||||
---
|
||||
.../third_party/blink/renderer/core/xml/xslt_processor.h | 5 +++++
|
||||
.../blink/renderer/core/xml/xslt_processor_libxslt.cc | 4 ++++
|
||||
2 files changed, 9 insertions(+)
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/core/xml/xslt_processor.h b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/core/xml/xslt_processor.h
|
||||
index d53835e9675..72536e4fd7d 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/core/xml/xslt_processor.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/core/xml/xslt_processor.h
|
||||
@@ -77,7 +77,12 @@ class XSLTProcessor final : public ScriptWrappable {
|
||||
|
||||
void reset();
|
||||
|
||||
+#if LIBXML_VERSION >= 21200
|
||||
+ static void ParseErrorFunc(void* user_data, const xmlError*);
|
||||
+#else
|
||||
static void ParseErrorFunc(void* user_data, xmlError*);
|
||||
+#endif
|
||||
+
|
||||
static void GenericErrorFunc(void* user_data, const char* msg, ...);
|
||||
|
||||
// Only for libXSLT callbacks
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc
|
||||
index 133e0b3355d..e8e6a09f485 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc
|
||||
@@ -66,7 +66,11 @@ void XSLTProcessor::GenericErrorFunc(void*, const char*, ...) {
|
||||
// It would be nice to do something with this error message.
|
||||
}
|
||||
|
||||
+#if LIBXML_VERSION >= 21200
|
||||
+void XSLTProcessor::ParseErrorFunc(void* user_data, const xmlError* error) {
|
||||
+#else
|
||||
void XSLTProcessor::ParseErrorFunc(void* user_data, xmlError* error) {
|
||||
+#endif
|
||||
FrameConsole* console = static_cast<FrameConsole*>(user_data);
|
||||
if (!console)
|
||||
return;
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@ -1,34 +0,0 @@
|
||||
From 6e0848a1c51c6494e3b7410c5fe38941d48fcb36 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?=
|
||||
<francois-simon.fauteux-chapleau@savoirfairelinux.com>
|
||||
Date: Wed, 16 Oct 2024 22:32:12 -0400
|
||||
Subject: [PATCH] qtwebengine: fix v8 build error
|
||||
|
||||
In file included from ../../../3rdparty/chromium/v8/src/heap/cppgc/sweeper.h:14,
|
||||
from ./../../../3rdparty/chromium/v8/src/heap/cppgc/sweeper.cc:5,
|
||||
from gen/v8/cppgc_base_jumbo_7.cc:5:
|
||||
../../../3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h: In member function 'void cppgc::internal::StatsCollector::ForAllAllocationObservers(Callback)':
|
||||
../../../3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h:401:48: error: cannot convert 'std::vector<cppgc::internal::StatsCollector::AllocationObserver*>::iterator' to 'const char*'
|
||||
401 | std::remove(allocation_observers_.begin(), allocation_observers_.end(),
|
||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
|
||||
| |
|
||||
| std::vector<cppgc::internal::StatsCollector::AllocationObserver*>::iterator
|
||||
---
|
||||
.../src/3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h b/qtwebengine/src/3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h
|
||||
index 2cf728489d..d8414ae3c6 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
+#include <algorithm>
|
||||
#include <atomic>
|
||||
#include <vector>
|
||||
|
||||
--
|
||||
2.47.0
|
||||
|
||||
@ -1,7 +1,3 @@
|
||||
0001-qtwebengine-enable-building-with-Python-3.12.patch
|
||||
0002-fix-binary-tokenizer.patch
|
||||
0003-qtwayland-downgrade-wl-seat-to-avoid-high-resolution.patch
|
||||
0004-qtbase-fix-CMake-error.patch
|
||||
0005-qtwebengine-add-missing-chromium-dependencies.patch
|
||||
0006-qtwebengine-fix-libxml2-build-error.patch
|
||||
0007-qtwebengine-fix-v8-build-error.patch
|
||||
0001-qtwebengine-fix-build-error-due-to-missing-chromium-dependency.patch
|
||||
0002-qtwebengine-fix-ASSERT_TRIVIALLY_COPYABLE-failure.patch
|
||||
0003-qtwebengine-fix-zygote_communication_linux-dependency.patch
|
||||
@ -12,10 +12,14 @@ override_dh_auto_configure:
|
||||
-confirm-license \
|
||||
-nomake examples \
|
||||
-nomake tests \
|
||||
-prefix "${QT_JAMI_PREFIX}"
|
||||
-prefix "${QT_JAMI_PREFIX}" \
|
||||
-- -DFFMPEG_DIR=/opt/libqt-jami-ffmpeg -DQT_DEPLOY_FFMPEG=ON
|
||||
|
||||
override_dh_auto_build:
|
||||
cmake --build . --parallel
|
||||
|
||||
override_dh_auto_install:
|
||||
cmake --install . --prefix $(CURDIR)/debian/tmp/${QT_JAMI_PREFIX}
|
||||
|
||||
override_dh_shlibdeps:
|
||||
dh_shlibdeps -v -l$(CURDIR)/debian/libqt-jami/usr/lib/libqt-jami/lib
|
||||
|
||||
@ -30,7 +30,7 @@ Build-Depends: debhelper (>= 9),
|
||||
libspeex-dev,
|
||||
libspeexdsp-dev,
|
||||
uuid-dev,
|
||||
libavcodec-dev,
|
||||
libavcodec-dev | libavcodec-extra-dev,
|
||||
libavutil-dev,
|
||||
libavformat-dev,
|
||||
libswscale-dev,
|
||||
|
||||
@ -95,14 +95,12 @@ if [ -f /etc/os-release ]; then
|
||||
ENDTAG="debian_11"
|
||||
elif [ "${VERSION_CODENAME}" = "bookworm" ] || [ "${ID}_${VERSION_ID}" = "debian_12" ]; then
|
||||
ENDTAG="debian_12"
|
||||
elif [ "${UBUNTU_CODENAME}" = "focal" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_20.04" ]; then
|
||||
ENDTAG="ubuntu_20.04"
|
||||
elif [ "${UBUNTU_CODENAME}" = "jammy" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_22.04" ]; then
|
||||
ENDTAG="ubuntu_22.04"
|
||||
elif [ "${UBUNTU_CODENAME}" = "noble" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_24.04" ]; then
|
||||
ENDTAG="ubuntu_24.04"
|
||||
elif [ "${UBUNTU_CODENAME}" = "oracular" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_24.10" ]; then
|
||||
ENDTAG="ubuntu_24.10"
|
||||
elif [ "${UBUNTU_CODENAME}" = "plucky" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_25.04" ]; then
|
||||
ENDTAG="ubuntu_25.04"
|
||||
elif [ "${ID}" = "debian" ] && \
|
||||
[ "$(command -v lsb_release)" ] && \
|
||||
[ "$(lsb_release -rs)" = "testing" ]; then
|
||||
|
||||
@ -45,7 +45,7 @@ QT_JAMI_PREFIX := ${QT_JAMI_PREFIX}
|
||||
export PATH := $(QT_JAMI_PREFIX)/bin:${PATH}
|
||||
export LD_LIBRARY_PATH := $(QT_JAMI_PREFIX)/lib:${LD_LIBRARY_PATH}
|
||||
export PKG_CONFIG_PATH := $(QT_JAMI_PREFIX)/lib/pkgconfig:${PKG_CONFIG_PATH}
|
||||
export CMAKE_PREFIX_PATH := $(QT_JAMI_PREFIX)/lib/cmake:${CMAKE_PREFIX_PATH}
|
||||
export CMAKE_PREFIX_PATH := $(QT_JAMI_PREFIX):${CMAKE_PREFIX_PATH}
|
||||
export CFLAGS := $(CFLAGS) -fno-lto
|
||||
export CXXFLAGS := $(CXXFLAGS) -fno-lto
|
||||
|
||||
@ -74,7 +74,7 @@ override_dh_auto_build:
|
||||
--disable-gsm \
|
||||
--disable-speexdsp \
|
||||
--disable-natpmp \
|
||||
--enable-gnutls $(BUNDLED_PKGS) && \
|
||||
$(BUNDLED_PKGS) && \
|
||||
make list && \
|
||||
make -j$(NO_CPUS) V=1
|
||||
cd daemon && \
|
||||
@ -91,11 +91,12 @@ override_dh_auto_build:
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake \
|
||||
-DBUILD_VERSION=$(BUILD_VERSION) \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DLIBJAMI_BUILD_DIR=$(CURDIR)/daemon/src \
|
||||
-DENABLE_LIBWRAP=true \
|
||||
$(CMAKE_OPTIONS) ..
|
||||
make -C build -j$(NO_CPUS) V=1
|
||||
make -C build -j$(NO_CPUS) VERBOSE=1
|
||||
|
||||
override_dh_auto_clean:
|
||||
# Daemon clean
|
||||
|
||||
@ -49,7 +49,7 @@ BuildRequires: libXfixes-devel
|
||||
BuildRequires: libuuid-devel
|
||||
BuildRequires: libva-devel
|
||||
BuildRequires: libvdpau-devel
|
||||
BuildRequires: pcre-devel
|
||||
BuildRequires: (pcre-devel or pcre2-devel)
|
||||
BuildRequires: pipewire-devel
|
||||
BuildRequires: uuid-devel
|
||||
BuildRequires: yaml-cpp-devel
|
||||
@ -82,7 +82,6 @@ cd %{_builddir}/jami-%{version}/daemon/contrib/native && \
|
||||
make list && \
|
||||
make fetch && \
|
||||
make %{_smp_mflags} V=1 && \
|
||||
make %{_smp_mflags} V=1 .ffmpeg
|
||||
# Configure the daemon.
|
||||
cd %{_builddir}/jami-%{version}/daemon && \
|
||||
./autogen.sh && \
|
||||
|
||||
@ -16,9 +16,9 @@
|
||||
%define computed_job_count_ %(echo $(( %available_memory / %memory_required_per_core / %max_parallel_builds )))
|
||||
%define computed_job_count %max %computed_job_count_ 1
|
||||
%define job_count %min %cpu_count %computed_job_count
|
||||
# Exclude vendored Qt6 from dependency generator
|
||||
# Exclude vendored Qt6 and FFmpeg libraries from dependency generator
|
||||
%define __provides_exclude_from ^%{_libdir}/qt-jami/.*$
|
||||
%define __requires_exclude ^libQt6.*$
|
||||
%define __requires_exclude ^(libQt6.*|libavcodec.*|libavformat.*|libavutil.*|libswresample.*|libswscale.*)$
|
||||
|
||||
Name: %{name}
|
||||
Version: %{version}
|
||||
@ -29,8 +29,9 @@ License: GPLv3+
|
||||
Vendor: Savoir-faire Linux Inc.
|
||||
URL: https://jami.net/
|
||||
Source: jami-libqt-%{version}.tar.xz
|
||||
Patch0: 0001-fix-gcc14.patch
|
||||
Patch1: 0002-qtwebengine-add-missing-chromium-dependencies.patch
|
||||
Patch0: 0001-qtwebengine-fix-build-error-due-to-missing-chromium-dependency.patch
|
||||
Patch1: 0002-qtwebengine-fix-ASSERT_TRIVIALLY_COPYABLE-failure.patch
|
||||
Patch2: 0003-qtwebengine-fix-zygote_communication_linux-dependency.patch
|
||||
|
||||
%global gst 0.10
|
||||
%if 0%{?fedora} || 0%{?rhel} > 7
|
||||
@ -68,34 +69,10 @@ This package contains Qt libraries for Jami.
|
||||
%setup -n qt-everywhere-src-%{version}
|
||||
%patch -P 0 -p1
|
||||
%patch -P 1 -p1
|
||||
%patch -P 2 -p1
|
||||
|
||||
%build
|
||||
echo "Building Qt using %{job_count} parallel jobs"
|
||||
# Qt 6.4 (https://wiki.linuxfromscratch.org/blfs/ticket/14729)
|
||||
sed -i 's,default=False,default=True,g' qtwebengine/src/3rdparty/chromium/third_party/catapult/tracing/tracing_build/generate_about_tracing_contents.py
|
||||
# Gcc 13
|
||||
sed -i 's,std::uint32_t,uint32_t,g' qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
sed -i 's,std::uint32_t,uint32_t,g' qtquick3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
|
||||
# https://bugs.gentoo.org/768261 (Qt 5.15)
|
||||
sed -i 's,#include "absl/base/internal/spinlock.h"1,#include "absl/base/internal/spinlock.h"1\n#include <limits>,g' qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc
|
||||
sed -i 's,#include <stdint.h>,#include <stdint.h>\n#include <limits>,g' qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.h
|
||||
# else, break build for fedora 35
|
||||
sed -i 's/static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ);/static const size_t kSigStackSize = std::max(size_t(16384), size_t(SIGSTKSZ));/g' qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
|
||||
# https://bugreports.qt.io/browse/QTBUG-93452 (Qt 5.15)
|
||||
sed -i 's,# include <utility>,# include <utility>\n# include <limits>,g' qtbase/src/corelib/global/qglobal.h
|
||||
sed -i 's,#include <string.h>,#include <string.h>\n#include <limits>,g' qtbase/src/corelib/global/qendian.h
|
||||
cat qtbase/src/corelib/global/qendian.h
|
||||
sed -i 's,#include <string.h>,#include <string.h>\n#include <limits>,g' qtbase/src/corelib/global/qfloat16.h
|
||||
sed -i 's,#include <QtCore/qbytearray.h>,#include <QtCore/qbytearray.h>\n#include <limits>,g' qtbase/src/corelib/text/qbytearraymatcher.h
|
||||
cat qtwebengine/configure.cmake
|
||||
|
||||
#https://bugreports.qt.io/browse/QTBUG-117979
|
||||
if test -f "/usr/bin/python3.10"; then
|
||||
/usr/bin/python3.10 -m venv env
|
||||
source env/bin/activate
|
||||
python -m pip install html5lib
|
||||
python -m pip install six
|
||||
fi
|
||||
|
||||
# recent gcc version do not like lto from qt
|
||||
CXXFLAGS="${CXXFLAGS} -fno-lto" CFLAGS="${CFLAGS} -fno-lto" LDFLAGS="$(CFLAGS) ${LDFLAGS}" ./configure \
|
||||
@ -103,8 +80,8 @@ CXXFLAGS="${CXXFLAGS} -fno-lto" CFLAGS="${CFLAGS} -fno-lto" LDFLAGS="$(CFLAGS) $
|
||||
-confirm-license \
|
||||
-nomake examples \
|
||||
-nomake tests \
|
||||
-prefix "%{_libdir}/qt-jami"
|
||||
sed -i 's,bin/python,bin/env python3,g' qtbase/mkspecs/features/uikit/devices.py
|
||||
-prefix "%{_libdir}/qt-jami" \
|
||||
-- -DFFMPEG_DIR=/opt/libqt-jami-ffmpeg -DQT_DEPLOY_FFMPEG=ON
|
||||
# Chromium is built using Ninja, which doesn't honor MAKEFLAGS.
|
||||
cmake --build . --parallel
|
||||
|
||||
|
||||
@ -1,16 +1,7 @@
|
||||
%define name jami
|
||||
%define version RELEASE_VERSION
|
||||
%define release 0
|
||||
|
||||
# The AppStream 1.0 spec says that the catalog file must be put in /usr/share/swcatalog/xml
|
||||
# (see https://www.freedesktop.org/software/appstream/docs/chap-CatalogData.html).
|
||||
#
|
||||
# However, openSUSE Leap still uses the legacy path /usr/share/app-info/xmls as of version 15.5.
|
||||
%if 0%{?sle_version} && 0%{?sle_version} <= 150500
|
||||
%define appstream_catalog_dir /share/app-info/xmls
|
||||
%else
|
||||
%define appstream_catalog_dir /share/swcatalog/xml
|
||||
%endif
|
||||
|
||||
# Exclude vendored Qt6 from dependency generator
|
||||
%define __requires_exclude ^libQt6.*$
|
||||
@ -82,8 +73,10 @@ cd %{_builddir}/jami-%{version} && \
|
||||
-DAPPSTREAM_CATALOG_DIR=%{appstream_catalog_dir} \
|
||||
-DWITH_DAEMON_SUBMODULE=true \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DBUILD_VERSION=${BUILD_VERSION} \
|
||||
-DCMAKE_PREFIX_PATH=%{QT_JAMI_PREFIX} \
|
||||
..
|
||||
make -C %{_builddir}/jami-%{version}/build %{_smp_mflags} V=2
|
||||
make -C %{_builddir}/jami-%{version}/build %{_smp_mflags} VERBOSE=1
|
||||
|
||||
%install
|
||||
DESTDIR=%{buildroot} make -C %{_builddir}/jami-%{version}/build install V=2
|
||||
@ -93,7 +86,7 @@ DESTDIR=%{buildroot} make -C %{_builddir}/jami-%{version}/build install V=2
|
||||
%{_bindir}/jami
|
||||
%{_datadir}/applications/net.jami.Jami.desktop
|
||||
%{_datadir}/jami/net.jami.Jami.desktop
|
||||
%{_datadir}/icons/hicolor/scalable/apps/jami.svg
|
||||
%{_datadir}/icons/hicolor/scalable/apps/net.jami.Jami.svg
|
||||
%{_datadir}/icons/hicolor/48x48/apps/jami.png
|
||||
%{_datadir}/pixmaps/jami.xpm
|
||||
%{_datadir}/metainfo/net.jami.Jami.metainfo.xml
|
||||
|
||||
@ -1,26 +0,0 @@
|
||||
From 9721082687c9529fe6ae3c5304dcf079158e8a77 Mon Sep 17 00:00:00 2001
|
||||
From: Sam James <sam@gentoo.org>
|
||||
Date: Sun, 04 Jun 2023 04:15:16 +0100
|
||||
Subject: [PATCH] heap: Add missing <algorithm> include for std::remove
|
||||
|
||||
GCC 14 changes some internal includes within libstdc++ so this transient
|
||||
include gets lost. Include <algorithm> explicitly for std::remove.
|
||||
|
||||
Change-Id: Iab8a2c751a0f9c9dc6a770d6296ad6de724ef3bb
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4583222
|
||||
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
|
||||
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
|
||||
Cr-Commit-Position: refs/heads/main@{#88037}
|
||||
---
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h b/qtwebengine/src/3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h
|
||||
index 2cf728489d..d8414ae3c6 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
+#include <algorithm>
|
||||
#include <atomic>
|
||||
#include <vector>
|
||||
@ -0,0 +1,39 @@
|
||||
From 0d0856252b48895a8d6cad7bff66c904ccfc0725 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?=
|
||||
<francois-simon.fauteux-chapleau@savoirfairelinux.com>
|
||||
Date: Wed, 16 Jul 2025 13:49:54 -0400
|
||||
Subject: [PATCH] qtwebengine: fix build error due to missing chromium
|
||||
dependency
|
||||
|
||||
Error:
|
||||
|
||||
In file included from ../../../3rdparty/chromium/ui/gl/gl_surface.h:30,
|
||||
from ../../../3rdparty/chromium/tools/v8_context_snapshot/qt_overrides.cc:13:
|
||||
../../../3rdparty/chromium/ui/gl/gl_implementation.h:18:10: fatal error: ui/gl/buildflags.h: No such file or directory
|
||||
18 | #include "ui/gl/buildflags.h"
|
||||
| ^~~~~~~~~~~~~~~~~~~~
|
||||
compilation terminated.
|
||||
|
||||
Patch taken from: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/637889
|
||||
---
|
||||
.../src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn b/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn
|
||||
index 812445d934..97cd46140d 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn
|
||||
@@ -455,6 +455,10 @@ if (is_linux && !is_qtwebengine) {
|
||||
output_name = "webenginedriver"
|
||||
deps -= [ "//net/traffic_annotation:test_support" ]
|
||||
|
||||
+ if (is_linux || is_mac) {
|
||||
+ deps += [ "//ui/gl:buildflags" ]
|
||||
+ }
|
||||
+
|
||||
if (is_linux) {
|
||||
sources += [
|
||||
"//content/public/common/content_switches.cc",
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@ -1,40 +0,0 @@
|
||||
From 04778c7f54c8a1a0e7fced75c5ef39ced82cece1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?=
|
||||
<francois-simon.fauteux-chapleau@savoirfairelinux.com>
|
||||
Date: Sat, 12 Oct 2024 16:21:35 -0400
|
||||
Subject: [PATCH] qtwebengine: add missing chromium dependencies
|
||||
|
||||
For more information, see:
|
||||
https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/555586
|
||||
---
|
||||
chromium/content/public/browser/BUILD.gn | 1 +
|
||||
chromium/extensions/browser/api/declarative_net_request/BUILD.gn | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/content/public/browser/BUILD.gn b/qtwebengine/src/3rdparty/chromium/content/public/browser/BUILD.gn
|
||||
index b25bf5764e7..dfbfb2ec77b 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/content/public/browser/BUILD.gn
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/content/public/browser/BUILD.gn
|
||||
@@ -515,6 +515,7 @@ jumbo_source_set("browser_sources") {
|
||||
"//cc",
|
||||
"//components/services/storage/public/cpp",
|
||||
"//components/viz/host",
|
||||
+ "//components/spellcheck:buildflags",
|
||||
"//content/browser", # Must not be public_deps!
|
||||
"//device/fido",
|
||||
"//gpu",
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/extensions/browser/api/declarative_net_request/BUILD.gn b/qtwebengine/src/3rdparty/chromium/extensions/browser/api/declarative_net_request/BUILD.gn
|
||||
index 1fc492f5a0c..13a266e22f1 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/extensions/browser/api/declarative_net_request/BUILD.gn
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/extensions/browser/api/declarative_net_request/BUILD.gn
|
||||
@@ -23,6 +23,7 @@ source_set("declarative_net_request") {
|
||||
"//extensions/common",
|
||||
"//extensions/common/api",
|
||||
"//services/preferences/public/cpp",
|
||||
+ "//components/web_cache/browser",
|
||||
]
|
||||
|
||||
public_deps = [ "//extensions/browser:browser_sources" ]
|
||||
--
|
||||
2.47.0
|
||||
|
||||
@ -0,0 +1,79 @@
|
||||
From 24dd03e131cd3edc89907a699369562e61d8aa86 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?=
|
||||
<francois-simon.fauteux-chapleau@savoirfairelinux.com>
|
||||
Date: Mon, 21 Jul 2025 13:19:58 -0400
|
||||
Subject: [PATCH] qtwebengine: fix ASSERT_TRIVIALLY_COPYABLE failure
|
||||
|
||||
Some compilers don't implement std::is_trivially_copyable correctly,
|
||||
which can cause chromium's build to fail with the following error:
|
||||
|
||||
In file included from ../../../3rdparty/chromium/v8/src/base/bits.h:12,
|
||||
from ../../../3rdparty/chromium/v8/src/base/small-vector.h:12,
|
||||
from ../../../3rdparty/chromium/v8/src/compiler/turboshaft/graph.h:17,
|
||||
from ../../../3rdparty/chromium/v8/src/compiler/turboshaft/analyzer-iterator.h:9,
|
||||
from ./../../../3rdparty/chromium/v8/src/compiler/turboshaft/analyzer-iterator.cc:5,
|
||||
from gen/v8/v8_turboshaft_jumbo_1.cc:5:
|
||||
../../../3rdparty/chromium/v8/src/base/small-vector.h: In instantiation of 'class v8::base::SmallVector<std::pair<const v8::internal::compiler::turboshaft::PhiOp*, const v8::internal::compiler::turboshaft::OpIndex>, 16>':
|
||||
../../../3rdparty/chromium/v8/src/compiler/turboshaft/loop-unrolling-reducer.h:433:11: required from here
|
||||
../../../3rdparty/chromium/v8/src/base/macros.h:206:55: error: static assertion failed: T should be trivially copyable
|
||||
206 | static_assert(::v8::base::is_trivially_copyable<T>::value, \
|
||||
| ^~~~~
|
||||
../../../3rdparty/chromium/v8/src/base/small-vector.h:25:3: note: in expansion of macro 'ASSERT_TRIVIALLY_COPYABLE'
|
||||
25 | ASSERT_TRIVIALLY_COPYABLE(T);
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
../../../3rdparty/chromium/v8/src/base/macros.h:206:55: note: 'v8::base::is_trivially_copyable<std::pair<const v8::internal::compiler::turboshaft::PhiOp*, const v8::internal::compiler::turboshaft::OpIndex> >::value' evaluates to false
|
||||
206 | static_assert(::v8::base::is_trivially_copyable<T>::value, \
|
||||
| ^~~~~
|
||||
../../../3rdparty/chromium/v8/src/base/small-vector.h:25:3: note: in expansion of macro 'ASSERT_TRIVIALLY_COPYABLE'
|
||||
25 | ASSERT_TRIVIALLY_COPYABLE(T);
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
References:
|
||||
https://chromium-review.googlesource.com/c/v8/v8/+/5679182
|
||||
https://chromium-review.googlesource.com/c/v8/v8/+/5872655
|
||||
https://github.com/rubyjs/libv8-node/pull/57
|
||||
https://github.com/nodejs/node/issues/54576
|
||||
---
|
||||
qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | 3 ++-
|
||||
qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h | 4 ++--
|
||||
2 files changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
index 93a99ec136..88c6555189 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
@@ -173,7 +173,8 @@ namespace base {
|
||||
// base::is_trivially_copyable will differ for these cases.
|
||||
template <typename T>
|
||||
struct is_trivially_copyable {
|
||||
-#if V8_CC_MSVC
|
||||
+#if V8_CC_MSVC || (__GNUC__ == 12 && __GNUC_MINOR__ <= 2) || \
|
||||
+ (defined(__clang__) && __clang_major__ <= 17)
|
||||
// Unfortunately, MSVC 2015 is broken in that std::is_trivially_copyable can
|
||||
// be false even though it should be true according to the standard.
|
||||
// (status at 2018-02-26, observed on the msvc waterfall bot).
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h
|
||||
index b1b5d64198..ce2e003fb9 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h
|
||||
@@ -22,7 +22,7 @@ template <typename T, size_t kSize, typename Allocator = std::allocator<T>>
|
||||
class SmallVector {
|
||||
// Currently only support trivially copyable and trivially destructible data
|
||||
// types, as it uses memcpy to copy elements and never calls destructors.
|
||||
- ASSERT_TRIVIALLY_COPYABLE(T);
|
||||
+ // ASSERT_TRIVIALLY_COPYABLE(T);
|
||||
static_assert(std::is_trivially_destructible<T>::value);
|
||||
|
||||
public:
|
||||
@@ -193,7 +193,7 @@ class SmallVector {
|
||||
|
||||
void resize_no_init(size_t new_size) {
|
||||
// Resizing without initialization is safe if T is trivially copyable.
|
||||
- ASSERT_TRIVIALLY_COPYABLE(T);
|
||||
+ // ASSERT_TRIVIALLY_COPYABLE(T);
|
||||
if (new_size > capacity()) Grow(new_size);
|
||||
end_ = begin_ + new_size;
|
||||
}
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
From 5c247c7a084661932969acf2f7103096b8b0d6b4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?=
|
||||
<francois-simon.fauteux-chapleau@savoirfairelinux.com>
|
||||
Date: Tue, 22 Jul 2025 13:40:55 -0400
|
||||
Subject: [PATCH] qtwebengine: fix zygote_communication_linux dependency
|
||||
|
||||
Commit 42e09c7bea of qtwebengine-chromium added
|
||||
content/public/browser/child_process_host.h to the list of header files
|
||||
included in zygote_communication_linux.cc, which can cause the build to
|
||||
fail with the following error:
|
||||
|
||||
In file included from ../../../3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc:21:
|
||||
../../../3rdparty/chromium/content/public/browser/child_process_host.h:17:10: fatal error: content/common/buildflags.h: No such file or directory
|
||||
17 | #include "content/common/buildflags.h"
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
---
|
||||
.../content/common/zygote/zygote_communication_linux.cc | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc b/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc
|
||||
index 5bd9a53568..ff883d59e4 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc
|
||||
@@ -18,7 +18,7 @@
|
||||
#include "base/posix/eintr_wrapper.h"
|
||||
#include "base/posix/unix_domain_socket.h"
|
||||
#include "content/common/zygote/zygote_commands_linux.h"
|
||||
-#include "content/public/browser/child_process_host.h"
|
||||
+#include "content/public/common/content_paths.h"
|
||||
#include "content/public/common/content_switches.h"
|
||||
#include "content/public/common/result_codes.h"
|
||||
#include "sandbox/policy/switches.h"
|
||||
@@ -237,8 +237,11 @@ void ZygoteCommunication::Init(
|
||||
base::OnceCallback<pid_t(base::CommandLine*, base::ScopedFD*)> launcher) {
|
||||
CHECK(!init_);
|
||||
|
||||
- base::FilePath chrome_path = content::ChildProcessHost::GetChildPath(
|
||||
- content::ChildProcessHost::CHILD_NORMAL);
|
||||
+ base::FilePath chrome_path = base::CommandLine::ForCurrentProcess()->GetSwitchValuePath(
|
||||
+ switches::kBrowserSubprocessPath);
|
||||
+ if (chrome_path.empty()) {
|
||||
+ base::PathService::Get(CHILD_PROCESS_EXE, &chrome_path);
|
||||
+ }
|
||||
|
||||
base::CommandLine cmd_line(chrome_path);
|
||||
cmd_line.AppendSwitchASCII(switches::kProcessType, switches::kZygoteProcess);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@ -98,7 +98,7 @@ description: |
|
||||
|
||||
confinement: strict
|
||||
grade: stable
|
||||
base: core20
|
||||
base: core22
|
||||
|
||||
plugs:
|
||||
gnome-3-38-2004:
|
||||
@ -129,8 +129,8 @@ slots:
|
||||
name: cx.ring.Ring
|
||||
|
||||
layout:
|
||||
/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/alsa-lib:
|
||||
bind: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/alsa-lib
|
||||
/usr/lib/$CRAFT_ARCH_TRIPLET/alsa-lib:
|
||||
bind: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/alsa-lib
|
||||
/usr/share/alsa:
|
||||
bind: $SNAP/usr/share/alsa
|
||||
/usr/share/X11/xkb:
|
||||
@ -139,7 +139,7 @@ layout:
|
||||
environment:
|
||||
XDG_CURRENT_DESKTOP: Unity
|
||||
QT_BASE_DIR: "/usr/lib/libqt-jami"
|
||||
LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP$QT_BASE_DIR/lib"
|
||||
LD_LIBRARY_PATH: "${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$SNAP$QT_BASE_DIR/lib"
|
||||
|
||||
apps:
|
||||
jami:
|
||||
@ -153,8 +153,8 @@ apps:
|
||||
desktop: usr/share/applications/net.jami.Jami.desktop
|
||||
environment:
|
||||
PIPEWIRE_CONFIG_NAME: "$SNAP/usr/share/pipewire/pipewire.conf"
|
||||
PIPEWIRE_MODULE_DIR: "$SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/pipewire-0.3"
|
||||
SPA_PLUGIN_DIR: "$SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/spa-0.2"
|
||||
PIPEWIRE_MODULE_DIR: "$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/pipewire-0.3"
|
||||
SPA_PLUGIN_DIR: "$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/spa-0.2"
|
||||
slots:
|
||||
- dbus-jami
|
||||
- dbus-ring
|
||||
@ -185,7 +185,7 @@ package-repositories:
|
||||
components: [main]
|
||||
suites: [jami]
|
||||
key-id: A295D773307D25A33AE72F2F64CD5FA175348F84
|
||||
url: https://dl.jami.net/internal/ubuntu_20.04/
|
||||
url: https://dl.jami.net/internal/ubuntu_22.04/
|
||||
|
||||
parts:
|
||||
desktop-launch:
|
||||
@ -201,14 +201,14 @@ parts:
|
||||
- devscripts
|
||||
- equivs
|
||||
override-pull: |
|
||||
snapcraftctl pull
|
||||
craftctl default
|
||||
sed -i -E 's|\. \$SNAP/flavor-select|USE_gtk3=true|' gtk/launcher-specific
|
||||
sed -i -E 's|\. \$SNAP/flavor-select|USE_qt5=true|' qt/launcher-specific
|
||||
sed -i -E 's|(append_dir GTK_PATH \$RUNTIME/usr/lib/\$ARCH/gtk-2.0)|#\1|' qt/launcher-specific
|
||||
sed -i -E 's|\$RUNTIME|$SNAP|g' qt/launcher-specific
|
||||
sed -i -E 's|\$WITH_RUNTIME|no|g' qt/launcher-specific
|
||||
override-build: |
|
||||
snapcraftctl build
|
||||
craftctl default
|
||||
gcc -Wall -O2 -o bindtextdomain.so -fPIC -shared src/bindtextdomain.c -ldl
|
||||
|
||||
echo "#!/bin/bash" > desktop-launch
|
||||
@ -224,10 +224,10 @@ parts:
|
||||
|
||||
cat common/mark-and-exec >> desktop-launch
|
||||
|
||||
install -D -m755 desktop-launch $SNAPCRAFT_PART_INSTALL/bin/desktop-launch
|
||||
install -D -m644 bindtextdomain.so $SNAPCRAFT_PART_INSTALL/lib/bindtextdomain.so
|
||||
install -D -m755 desktop-launch $CRAFT_PART_INSTALL/bin/desktop-launch
|
||||
install -D -m644 bindtextdomain.so $CRAFT_PART_INSTALL/lib/bindtextdomain.so
|
||||
|
||||
mkdir -pv $SNAPCRAFT_PART_INSTALL/gnome-platform
|
||||
mkdir -pv $CRAFT_PART_INSTALL/gnome-platform
|
||||
|
||||
scripts:
|
||||
plugin: dump
|
||||
@ -264,44 +264,47 @@ parts:
|
||||
build-environment:
|
||||
- QT_BASE_DIR: "/usr/lib/libqt-jami"
|
||||
- PATH: "$QT_BASE_DIR/bin:$PATH"
|
||||
- LD_LIBRARY_PATH: "$QT_BASE_DIR/lib:$LD_LIBRARY_PATH"
|
||||
- PKG_CONFIG_PATH: "$QT_BASE_DIR/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||
- LD_LIBRARY_PATH: "$QT_BASE_DIR/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
||||
- PKG_CONFIG_PATH: "$QT_BASE_DIR/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
|
||||
override-pull: |
|
||||
ls
|
||||
snapcraftctl pull
|
||||
craftctl default
|
||||
sed -i -E 's|(tmpName) << (PACKAGE_NAME << "_shm_")|\1 << "snap.jami." << \2|' ./daemon/src/media/video/sinkclient.cpp
|
||||
sed -i -E 's|^Icon=.*|Icon=${SNAP}/usr/share/icons/hicolor/scalable/apps/jami.svg|' extras/data/net.jami.Jami.desktop
|
||||
sed -i -E 's|^Icon=.*|Icon=${SNAP}/usr/share/icons/hicolor/scalable/apps/net.jami.Jami.svg|' extras/data/net.jami.Jami.desktop
|
||||
override-build: |
|
||||
$SNAPCRAFT_PART_BUILD/extras/packaging/gnu-linux/scripts/install-pipewire-from-source.sh
|
||||
$CRAFT_PART_BUILD/extras/packaging/gnu-linux/scripts/install-pipewire-from-source.sh
|
||||
|
||||
cd $SNAPCRAFT_PART_BUILD/daemon/contrib
|
||||
cd $CRAFT_PART_BUILD/daemon/contrib
|
||||
mkdir -p native
|
||||
cd native
|
||||
../bootstrap
|
||||
make .ffmpeg
|
||||
make
|
||||
|
||||
cd $SNAPCRAFT_PART_BUILD/daemon
|
||||
cd $CRAFT_PART_BUILD/daemon
|
||||
./autogen.sh
|
||||
./configure --prefix=/usr --without-dbus
|
||||
make -j$SNAPCRAFT_PARALLEL_BUILD_COUNT
|
||||
DESTDIR=$SNAPCRAFT_PART_INSTALL make install
|
||||
make -j$CRAFT_PARALLEL_BUILD_COUNT
|
||||
DESTDIR=$CRAFT_PART_INSTALL make install
|
||||
|
||||
cd $SNAPCRAFT_PART_BUILD/
|
||||
cd $CRAFT_PART_BUILD/
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DENABLE_LIBWRAP=true \
|
||||
-DLIBJAMI_BUILD_DIR=$SNAPCRAFT_PART_BUILD/daemon/src \
|
||||
-DLIBJAMI_BUILD_DIR=$CRAFT_PART_BUILD/daemon/src \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
make -j$SNAPCRAFT_PARALLEL_BUILD_COUNT
|
||||
DESTDIR=$SNAPCRAFT_PART_INSTALL make install
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_PREFIX_PATH=$QT_BASE_DIR \
|
||||
-DBUILD_VERSION=BUILD_VERSION_PLACEHOLDER
|
||||
make -j$CRAFT_PARALLEL_BUILD_COUNT
|
||||
DESTDIR=$CRAFT_PART_INSTALL make install
|
||||
build-packages:
|
||||
- autoconf
|
||||
- autoconf-archive
|
||||
- automake
|
||||
- autopoint
|
||||
- bzip2
|
||||
- cmake
|
||||
- curl
|
||||
- gcc
|
||||
- g++
|
||||
@ -339,6 +342,7 @@ parts:
|
||||
- gnutls-bin
|
||||
- libssl-dev
|
||||
- git # PipeWire build dependencies
|
||||
- meson #
|
||||
- libasound2-dev #
|
||||
- libdbus-1-dev # These packages are needed by the
|
||||
- libglib2.0-dev # install-pipewire-from-source.sh
|
||||
@ -351,7 +355,7 @@ parts:
|
||||
- libegl1
|
||||
- libgbm1
|
||||
- libgudev-1.0-0
|
||||
- libjsoncpp1
|
||||
- libjsoncpp25
|
||||
- libllvm12
|
||||
- libminizip1
|
||||
- libnm0
|
||||
@ -384,6 +388,6 @@ parts:
|
||||
- -usr/lib/libqt-jami/bin/
|
||||
- -usr/lib/libqt-jami/docs/
|
||||
- -usr/lib/libqt-jami/examples/
|
||||
- -usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libLLVM-*.so*
|
||||
- -usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libclang-*.so*
|
||||
- -usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libflite*.so*
|
||||
- -usr/lib/$CRAFT_ARCH_TRIPLET/libLLVM-*.so*
|
||||
- -usr/lib/$CRAFT_ARCH_TRIPLET/libclang-*.so*
|
||||
- -usr/lib/$CRAFT_ARCH_TRIPLET/libflite*.so*
|
||||
|
||||
@ -44,26 +44,12 @@ QUILT_REFRESH_ARGS="-p 1"
|
||||
|
||||
if [ ! -f "${qt_deb_path}" ] || [ "${FORCE_REBUILD_QT}" = "true" ]; then
|
||||
(
|
||||
|
||||
# HACK: For now on ubuntu 24.04 there is no python3.10 package
|
||||
# So create a PyEnv environment to install the required packages
|
||||
if cat /etc/os-release | grep -Eq "24.04"; then
|
||||
apt-get install git gcc make python3-pip libssl-dev curl libreadline-dev -y
|
||||
curl https://pyenv.run | bash
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
eval "$(pyenv init -)"
|
||||
pyenv install 3.10.0
|
||||
pyenv local 3.10.0
|
||||
|
||||
python -m pip install html5lib
|
||||
python -m pip install six
|
||||
fi
|
||||
|
||||
|
||||
flock 9 # block until the lock file is gone
|
||||
test -f "${qt_deb_path}" && exit 0 # check again
|
||||
|
||||
# Build and install the correct version of FFmpeg.
|
||||
/opt/install-ffmpeg-for-qt.sh
|
||||
|
||||
# Build Qt.
|
||||
mkdir /opt/libqt-jami-build
|
||||
cd /opt/libqt-jami-build
|
||||
|
||||
@ -38,9 +38,9 @@ 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}"
|
||||
CMAKE_PREFIX_PATH="${QT_JAMI_PREFIX}:${CMAKE_PREFIX_PATH}"
|
||||
QT_MAJOR=6
|
||||
QT_MINOR=6
|
||||
QT_MINOR=8
|
||||
QT_PATCH=3
|
||||
QT_RELEASE_PATCH=0
|
||||
|
||||
@ -50,7 +50,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="69d0348fef415da98aa890a34651e9cfb232f1bffcee289b7b4e21386bf36104"
|
||||
QT_TARBALL_SHA256="cdd3a69967208276bb01af7ace7dba0ba53e679f886a4cbe624225c60fb73f2c"
|
||||
QT_TARBALL_FILE_NAME=$(basename "$QT_TARBALL_URL")
|
||||
CACHED_QT_TARBALL=$TARBALLS/$QT_TARBALL_FILE_NAME
|
||||
|
||||
@ -67,6 +67,10 @@ if [ ! -f "${RPM_PATH}" ]; then
|
||||
flock 9 # block until the lock is available
|
||||
test -f "$RPM_PATH" && exit 0 # check again
|
||||
|
||||
# Build and install the correct version of FFmpeg.
|
||||
/opt/install-ffmpeg-for-qt.sh
|
||||
|
||||
# Build Qt.
|
||||
mkdir /opt/qt-jami-build
|
||||
cd /opt/qt-jami-build
|
||||
tar xf "/src/$RELEASE_TARBALL_FILENAME" \
|
||||
@ -101,20 +105,14 @@ if [ ! -f "${RPM_PATH}" ]; then
|
||||
# Cache the built Qt RPM package.
|
||||
if [[ "${DISTRIBUTION:0:4}" == "rhel" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.el8.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "fedora_36" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc36.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "fedora_37" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc37.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "fedora_38" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc38.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "fedora_39" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc39.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "fedora_40" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc40.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "fedora_41" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc41.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "fedora_42" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc42.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "alma_9" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.el9.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "alma_10" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.el10.x86_64.rpm "${RPM_PATH}"
|
||||
else
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-*.rpm "${RPM_PATH}"
|
||||
fi
|
||||
@ -138,7 +136,10 @@ rpmbuild --define "debug_package %{nil}" -ba jami-libclient.spec
|
||||
rpmbuild --define "debug_package %{nil}" -ba jami-qt.spec
|
||||
|
||||
# Build the Qt client.
|
||||
rpmbuild --define "debug_package %{nil}" -ba jami.spec
|
||||
rpmbuild --define "debug_package %{nil}" \
|
||||
--define "BUILD_VERSION ${BUILD_VERSION}" \
|
||||
--define "QT_JAMI_PREFIX ${QT_JAMI_PREFIX}" \
|
||||
-ba jami.spec
|
||||
|
||||
# Move the built packages to the output directory.
|
||||
mv /root/rpmbuild/RPMS/*/* /opt/output
|
||||
|
||||
@ -29,6 +29,9 @@ cp -r extras/packaging/gnu-linux/rules/snap/${SNAP_PKG_NAME}/snapcraft.yaml .
|
||||
# set the version and tarball filename
|
||||
sed -i "s/RELEASE_VERSION/${RELEASE_VERSION}/g" snapcraft.yaml
|
||||
|
||||
# set the build version of the app
|
||||
sed -i "s/BUILD_VERSION_PLACEHOLDER/${BUILD_VERSION}/g" snapcraft.yaml
|
||||
|
||||
snapcraft # requires snapcraft >= 4.8
|
||||
|
||||
# move the built snap to output
|
||||
|
||||
@ -80,9 +80,6 @@ EOF
|
||||
find ./extras/packaging/gnu-linux/packages -type f -name '*.ddeb' -print0 | xargs -0 -I{} mv {} {}.deb
|
||||
|
||||
for package in ./extras/packaging/gnu-linux/packages/${DISTRIBUTION}*/*.deb; do
|
||||
echo "## signing: ${package} ##"
|
||||
dpkg-sig -k ${KEYID} --sign builder ${package}
|
||||
|
||||
echo "## including ${package} ##"
|
||||
package_name=$(dpkg -I ${package} | grep -m 1 Package: | awk '{print $2}')
|
||||
package_arch=$(dpkg -I ${package} | grep -m 1 Architecture: | awk '{print $2}')
|
||||
|
||||
28
extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh
Executable file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Building Qt Multimedia requires the FFmpeg headers and libraries to be installed:
|
||||
# https://doc.qt.io/qt-6.8/qtmultimedia-building-from-source.html
|
||||
# For Qt 6.8.3, the recommended FFmpeg version is 7.1:
|
||||
# https://doc.qt.io/qt-6.8/qtmultimedia-index.html#target-platform-and-backend-notes
|
||||
# This script is based on the instructions at:
|
||||
# https://doc.qt.io/qt-6.8/qtmultimedia-building-ffmpeg-linux.html
|
||||
|
||||
set -e
|
||||
|
||||
INSTALL_DIR=/opt/libqt-jami-ffmpeg
|
||||
|
||||
cd /tmp
|
||||
git clone --branch n11.1.5.2 https://github.com/FFmpeg/nv-codec-headers.git nv-codec-headers
|
||||
cd nv-codec-headers
|
||||
make -j install
|
||||
|
||||
cd /tmp
|
||||
git clone --branch n7.1.1 https://git.ffmpeg.org/ffmpeg.git ffmpeg
|
||||
cd ffmpeg
|
||||
mkdir build
|
||||
cd build
|
||||
../configure --prefix=${INSTALL_DIR} --disable-doc --enable-network --enable-shared
|
||||
make -j install
|
||||
|
||||
cd /tmp
|
||||
rm -rf nv-codec-headers ffmpeg
|
||||
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# The purpose of this script is to build PipeWire from source in a snap based on core20 / Ubuntu 20.04
|
||||
# The purpose of this script is to build PipeWire from source in a snap based on core22 / Ubuntu 22.04
|
||||
# It must be called in the "override-build" section of the relevant part in snapcraft.yaml
|
||||
|
||||
set -e
|
||||
@ -8,28 +8,23 @@ set -e
|
||||
OLD_WD=$(pwd)
|
||||
cd /tmp
|
||||
|
||||
# Get a version of Meson that's recent enough to build PipeWire 1.0.5 (the one available via apt is too old)
|
||||
wget -q https://github.com/mesonbuild/meson/releases/download/0.61.1/meson-0.61.1.tar.gz
|
||||
echo "feb2cefb325b437dbf36146df7c6b87688ddff0b0205caa31dc64055c6da410c meson-0.61.1.tar.gz" | sha256sum --check
|
||||
tar xzf meson-0.61.1.tar.gz
|
||||
|
||||
# Build PipeWire 1.0.5 and install it in the /usr directory of the build environment
|
||||
wget -q https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/1.0.5/pipewire-1.0.5.tar.gz
|
||||
echo "c5a5de26d684a1a84060ad7b6131654fb2835e03fccad85059be92f8e3ffe993 pipewire-1.0.5.tar.gz" | sha256sum --check
|
||||
tar xzf pipewire-1.0.5.tar.gz
|
||||
cd pipewire-1.0.5
|
||||
../meson-0.61.1/meson.py setup builddir -Dsession-managers=media-session -Dalsa=disabled -Dprefix=/usr
|
||||
../meson-0.61.1/meson.py compile -C builddir
|
||||
../meson-0.61.1/meson.py install -C builddir
|
||||
meson setup builddir -Dsession-managers=media-session -Dalsa=disabled -Dprefix=/usr
|
||||
meson compile -C builddir
|
||||
meson install -C builddir
|
||||
|
||||
# The files installed by the previous command are only for the "Build" step of the snap
|
||||
# creation process (https://snapcraft.io/docs/how-snapcraft-builds). In order to ensure
|
||||
# that PipeWire is installed in the final snap archive, we also need to copy all the
|
||||
# required files under the $SNAPCRAFT_PART_INSTALL directory.
|
||||
../meson-0.61.1/meson.py configure builddir -Dprefix=$SNAPCRAFT_PART_INSTALL/usr/
|
||||
../meson-0.61.1/meson.py install -C builddir
|
||||
meson configure builddir -Dprefix=$SNAPCRAFT_PART_INSTALL/usr/
|
||||
meson install -C builddir
|
||||
|
||||
# Cleanup
|
||||
cd /tmp
|
||||
rm -rf meson-0.61.1 meson-0.61.1.tar.gz pipewire-1.0.5 pipewire-1.0.5.tar.gz
|
||||
rm -rf pipewire-1.0.5 pipewire-1.0.5.tar.gz
|
||||
cd $OLD_WD
|
||||
@ -1,25 +0,0 @@
|
||||
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
|
||||
|
||||
32
extras/patches/0001-fix-qm_install_package-function.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From 56830725e641705e0113a068ee58df7029202439 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?=
|
||||
<francois-simon.fauteux-chapleau@savoirfairelinux.com>
|
||||
Date: Wed, 2 Apr 2025 20:54:02 -0400
|
||||
Subject: [PATCH] fix qm_install_package function
|
||||
|
||||
---
|
||||
cmake/modules/private/InstallPackage.cmake | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/qmsetup/cmake/modules/private/InstallPackage.cmake b/qmsetup/cmake/modules/private/InstallPackage.cmake
|
||||
index 70174bc..f067de5 100644
|
||||
--- a/qmsetup/cmake/modules/private/InstallPackage.cmake
|
||||
+++ b/qmsetup/cmake/modules/private/InstallPackage.cmake
|
||||
@@ -101,6 +101,7 @@ function(qm_install_package _name)
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -S ${_src_dir} -B ${_build_dir}
|
||||
${_extra_args} ${_build_type}
|
||||
+ "-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}"
|
||||
"-DCMAKE_INSTALL_PREFIX=${_install_dir}" ${FUNC_CONFIGURE_ARGS}
|
||||
OUTPUT_FILE ${_log_file}
|
||||
ERROR_FILE ${_log_file}
|
||||
@@ -150,4 +151,4 @@ function(qm_install_package _name)
|
||||
if(FUNC_RESULT_PATH)
|
||||
set(${FUNC_RESULT_PATH} ${_install_cmake_dir} PARENT_SCOPE)
|
||||
endif()
|
||||
-endfunction()
|
||||
\ No newline at end of file
|
||||
+endfunction()
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@ -211,6 +211,8 @@ def init_submodules():
|
||||
"3rdparty/SortFilterProxyModel",
|
||||
"3rdparty/md4c",
|
||||
"3rdparty/tidy-html5",
|
||||
"3rdparty/zxing-cpp",
|
||||
"3rdparty/hunspell",
|
||||
]
|
||||
if execute_cmd(["git", "submodule", "update", "--init" ] + submodules,
|
||||
False):
|
||||
@ -261,7 +263,7 @@ def cmake_build(config_str, env_vars, cmake_build_dir):
|
||||
return True
|
||||
|
||||
|
||||
def build(config_str, qt_dir, tests, enable_crash_reports, crash_report_url=None):
|
||||
def build(config_str, qt_dir, tests, build_version, enable_crash_reports, crash_report_url=None):
|
||||
"""Use cmake to build the project."""
|
||||
print("Building with Qt at " + qt_dir)
|
||||
|
||||
@ -292,6 +294,9 @@ def build(config_str, qt_dir, tests, enable_crash_reports, crash_report_url=None
|
||||
else:
|
||||
cmake_options.append("-DENABLE_CRASHREPORTS=OFF")
|
||||
|
||||
if build_version:
|
||||
cmake_options.append("-DBUILD_VERSION=" + build_version)
|
||||
|
||||
# Make sure the build directory exists.
|
||||
if not os.path.exists(build_dir):
|
||||
os.makedirs(build_dir)
|
||||
@ -305,11 +310,11 @@ def build(config_str, qt_dir, tests, enable_crash_reports, crash_report_url=None
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def deploy_runtimes(config_str, qt_dir):
|
||||
def deploy_runtimes(qt_dir):
|
||||
"""Deploy the dependencies to the runtime directory."""
|
||||
print("Deploying runtime dependencies")
|
||||
|
||||
runtime_dir = os.path.join(repo_root_dir, "x64", config_str)
|
||||
runtime_dir = os.path.join(repo_root_dir, "x64", "Release")
|
||||
stamp_file = os.path.join(runtime_dir, ".deploy.stamp")
|
||||
if os.path.exists(stamp_file):
|
||||
return
|
||||
@ -468,6 +473,8 @@ def parse_args():
|
||||
help='Sets the Qt root path')
|
||||
parser.add_argument(
|
||||
"-a", "--arch", default="x64", help="Sets the build architecture")
|
||||
parser.add_argument(
|
||||
"--build-version", help="Sets the build version string used for defining app build version")
|
||||
parser.add_argument(
|
||||
"-t", "--tests", action="store_true", help="Build and run tests")
|
||||
parser.add_argument(
|
||||
@ -550,10 +557,11 @@ def main():
|
||||
def do_build(do_tests):
|
||||
if not parsed_args.skip_build:
|
||||
build(config_str, parsed_args.qt, do_tests,
|
||||
parsed_args.build_version,
|
||||
parsed_args.enable_crash_reports,
|
||||
parsed_args.crash_report_url)
|
||||
if not parsed_args.skip_deploy:
|
||||
deploy_runtimes(config_str, parsed_args.qt)
|
||||
deploy_runtimes(parsed_args.qt)
|
||||
|
||||
if parsed_args.subcommand == "pack":
|
||||
do_build(False)
|
||||
|
||||
@ -52,7 +52,7 @@ for ARCH in "${ARCHS[@]}"; do
|
||||
# force to build every contrib
|
||||
for dir in "$DAEMON"/contrib/src/*/; do
|
||||
PKG=$(basename -- "$dir")
|
||||
if [ "$PKG" != "sdbus-cpp" ] && [ "$PKG" != "natpmp" ] &&
|
||||
if [ "$PKG" != "sdbus-cpp" ] && [ "$PKG" != "freetype" ] &&
|
||||
[ "$PKG" != "portaudio" ] && [ "$PKG" != "pthreads" ] &&
|
||||
[ "$PKG" != "lttng-ust" ] && [ "$PKG" != "openssl" ] &&
|
||||
[ "$PKG" != "media-sdk" ] && [ "$PKG" != "jack" ] &&
|
||||
|
||||
|
Before Width: | Height: | Size: 514 KiB |
|
Before Width: | Height: | Size: 622 KiB |
|
Before Width: | Height: | Size: 779 KiB |
|
Before Width: | Height: | Size: 653 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
BIN
resources/images/welcome_bg_dark.jpg
Normal file
|
After Width: | Height: | Size: 522 KiB |
BIN
resources/images/welcome_bg_light.jpg
Normal file
|
After Width: | Height: | Size: 528 KiB |
382
resources/misc/available_dictionaries.json
Normal file
@ -0,0 +1,382 @@
|
||||
{
|
||||
"af_ZA": {
|
||||
"nativeName": "Afrikaans (Suid-Afrika)",
|
||||
"path": "af_ZA/af_ZA"
|
||||
},
|
||||
"an_ES": {
|
||||
"nativeName": "aragonés (España)",
|
||||
"path": "an_ES/an_ES"
|
||||
},
|
||||
"ar": {
|
||||
"nativeName": "العربية",
|
||||
"path": "ar/ar"
|
||||
},
|
||||
"as_IN": {
|
||||
"nativeName": "অসমীয়া (भारत)",
|
||||
"path": "as_IN/as_IN"
|
||||
},
|
||||
"be-official": {
|
||||
"nativeName": "беларуская",
|
||||
"path": "be_BY/be-official"
|
||||
},
|
||||
"bg_BG": {
|
||||
"nativeName": "български",
|
||||
"path": "bg_BG/bg_BG"
|
||||
},
|
||||
"bn_BD": {
|
||||
"nativeName": "বাঙ্গালি (বাংলাদেশ)",
|
||||
"path": "bn_BD/bn_BD"
|
||||
},
|
||||
"bn_IN": {
|
||||
"nativeName": "বাঙ্গালি (ভারত)",
|
||||
"path": "bn_BD/bn_IN"
|
||||
},
|
||||
"bo": {
|
||||
"nativeName": "བོད་སྐད་",
|
||||
"path": "bo/bo"
|
||||
},
|
||||
"br_FR": {
|
||||
"nativeName": "breton (France)",
|
||||
"path": "br_FR/br_FR"
|
||||
},
|
||||
"bs_BA": {
|
||||
"nativeName": "bosanski",
|
||||
"path": "bs_BA/bs_BA"
|
||||
},
|
||||
"cs_CZ": {
|
||||
"nativeName": "čeština",
|
||||
"path": "cs_CZ/cs_CZ"
|
||||
},
|
||||
"da_DK": {
|
||||
"nativeName": "dansk",
|
||||
"path": "da_DK/da_DK"
|
||||
},
|
||||
"de_AT_frami": {
|
||||
"nativeName": "Deutsch (Österreich)",
|
||||
"path": "de/de_AT_frami"
|
||||
},
|
||||
"de_CH_frami": {
|
||||
"nativeName": "Deutsch (Schweiz)",
|
||||
"path": "de/de_CH_frami"
|
||||
},
|
||||
"de_DE_frami": {
|
||||
"nativeName": "Deutsch (Deutschland)",
|
||||
"path": "de/de_DE_frami"
|
||||
},
|
||||
"el_GR": {
|
||||
"nativeName": "Ελληνικά",
|
||||
"path": "el_GR/el_GR"
|
||||
},
|
||||
"en_AU": {
|
||||
"nativeName": "English (Australia)",
|
||||
"path": "en/en_AU"
|
||||
},
|
||||
"en_CA": {
|
||||
"nativeName": "English (Canada)",
|
||||
"path": "en/en_CA"
|
||||
},
|
||||
"en_GB": {
|
||||
"nativeName": "English (British)",
|
||||
"path": "en/en_GB"
|
||||
},
|
||||
"en_US": {
|
||||
"nativeName": "English (American)",
|
||||
"path": "en/en_US"
|
||||
},
|
||||
"en_ZA": {
|
||||
"nativeName": "English (Suid-Afrika)",
|
||||
"path": "en/en_ZA"
|
||||
},
|
||||
"eo": {
|
||||
"nativeName": "esperanto",
|
||||
"path": "eo/eo"
|
||||
},
|
||||
"es_AR": {
|
||||
"nativeName": "español (Argentina)",
|
||||
"path": "es/es_AR"
|
||||
},
|
||||
"es_BO": {
|
||||
"nativeName": "español (Bolivia)",
|
||||
"path": "es/es_BO"
|
||||
},
|
||||
"es_CL": {
|
||||
"nativeName": "español (Chile)",
|
||||
"path": "es/es_CL"
|
||||
},
|
||||
"es_CO": {
|
||||
"nativeName": "español (Colombia)",
|
||||
"path": "es/es_CO"
|
||||
},
|
||||
"es_CR": {
|
||||
"nativeName": "español (Costa Rica)",
|
||||
"path": "es/es_CR"
|
||||
},
|
||||
"es_CU": {
|
||||
"nativeName": "español (Cuba)",
|
||||
"path": "es/es_CU"
|
||||
},
|
||||
"es_DO": {
|
||||
"nativeName": "español (República Dominicana)",
|
||||
"path": "es/es_DO"
|
||||
},
|
||||
"es_EC": {
|
||||
"nativeName": "español (Ecuador)",
|
||||
"path": "es/es_EC"
|
||||
},
|
||||
"es_ES": {
|
||||
"nativeName": "español (España)",
|
||||
"path": "es/es_ES"
|
||||
},
|
||||
"es_GQ": {
|
||||
"nativeName": "español (Guinea Ecuatorial)",
|
||||
"path": "es/es_GQ"
|
||||
},
|
||||
"es_GT": {
|
||||
"nativeName": "español (Guatemala)",
|
||||
"path": "es/es_GT"
|
||||
},
|
||||
"es_HN": {
|
||||
"nativeName": "español (Honduras)",
|
||||
"path": "es/es_HN"
|
||||
},
|
||||
"es_MX": {
|
||||
"nativeName": "español (México)",
|
||||
"path": "es/es_MX"
|
||||
},
|
||||
"es_NI": {
|
||||
"nativeName": "español (Nicaragua)",
|
||||
"path": "es/es_NI"
|
||||
},
|
||||
"es_PA": {
|
||||
"nativeName": "español (Panamá)",
|
||||
"path": "es/es_PA"
|
||||
},
|
||||
"es_PE": {
|
||||
"nativeName": "español (Perú)",
|
||||
"path": "es/es_PE"
|
||||
},
|
||||
"es_PH": {
|
||||
"nativeName": "español (Pilipinas)",
|
||||
"path": "es/es_PH"
|
||||
},
|
||||
"es_PR": {
|
||||
"nativeName": "español (Puerto Rico)",
|
||||
"path": "es/es_PR"
|
||||
},
|
||||
"es_PY": {
|
||||
"nativeName": "español (Paraguai)",
|
||||
"path": "es/es_PY"
|
||||
},
|
||||
"es_SV": {
|
||||
"nativeName": "español (El Salvador)",
|
||||
"path": "es/es_SV"
|
||||
},
|
||||
"es_US": {
|
||||
"nativeName": "español (United States)",
|
||||
"path": "es/es_US"
|
||||
},
|
||||
"es_UY": {
|
||||
"nativeName": "español (Uruguay)",
|
||||
"path": "es/es_UY"
|
||||
},
|
||||
"es_VE": {
|
||||
"nativeName": "español (Venezuela)",
|
||||
"path": "es/es_VE"
|
||||
},
|
||||
"et_EE": {
|
||||
"nativeName": "eesti",
|
||||
"path": "et_EE/et_EE"
|
||||
},
|
||||
"fa-IR": {
|
||||
"nativeName": "فارسی",
|
||||
"path": "fa_IR/fa-IR"
|
||||
},
|
||||
"fr": {
|
||||
"nativeName": "français",
|
||||
"path": "fr_FR/fr"
|
||||
},
|
||||
"gd_GB": {
|
||||
"nativeName": "Gàidhlig",
|
||||
"path": "gd_GB/gd_GB"
|
||||
},
|
||||
"gl_ES": {
|
||||
"nativeName": "galego",
|
||||
"path": "gl/gl_ES"
|
||||
},
|
||||
"gu_IN": {
|
||||
"nativeName": "ગુજરાતી",
|
||||
"path": "gu_IN/gu_IN"
|
||||
},
|
||||
"he_IL": {
|
||||
"nativeName": "עברית",
|
||||
"path": "he_IL/he_IL"
|
||||
},
|
||||
"hi_IN": {
|
||||
"nativeName": "हिन्दी",
|
||||
"path": "hi_IN/hi_IN"
|
||||
},
|
||||
"hr_HR": {
|
||||
"nativeName": "hrvatski",
|
||||
"path": "hr_HR/hr_HR"
|
||||
},
|
||||
"hu_HU": {
|
||||
"nativeName": "magyar",
|
||||
"path": "hu_HU/hu_HU"
|
||||
},
|
||||
"id_ID": {
|
||||
"nativeName": "Indonesian",
|
||||
"path": "id/id_ID"
|
||||
},
|
||||
"is": {
|
||||
"nativeName": "íslenska",
|
||||
"path": "is/is"
|
||||
},
|
||||
"it_IT": {
|
||||
"nativeName": "italiano",
|
||||
"path": "it_IT/it_IT"
|
||||
},
|
||||
"kmr_Latn": {
|
||||
"nativeName": "Northern Kurdish",
|
||||
"path": "kmr_Latn/kmr_Latn"
|
||||
},
|
||||
"kn_IN": {
|
||||
"nativeName": "ಕನ್ನಡ",
|
||||
"path": "kn_IN/kn_IN"
|
||||
},
|
||||
"ko_KR": {
|
||||
"nativeName": "한국어",
|
||||
"path": "ko_KR/ko_KR"
|
||||
},
|
||||
"lo_LA": {
|
||||
"nativeName": "ລາວ",
|
||||
"path": "lo_LA/lo_LA"
|
||||
},
|
||||
"lt": {
|
||||
"nativeName": "lietuvių",
|
||||
"path": "lt_LT/lt"
|
||||
},
|
||||
"lv_LV": {
|
||||
"nativeName": "latviešu",
|
||||
"path": "lv_LV/lv_LV"
|
||||
},
|
||||
"mn_MN": {
|
||||
"nativeName": "монгол",
|
||||
"path": "mn_MN/mn_MN"
|
||||
},
|
||||
"mr_IN": {
|
||||
"nativeName": "मराठी",
|
||||
"path": "mr_IN/mr_IN"
|
||||
},
|
||||
"nb_NO": {
|
||||
"nativeName": "norsk bokmål",
|
||||
"path": "no/nb_NO"
|
||||
},
|
||||
"ne_NP": {
|
||||
"nativeName": "नेपाली",
|
||||
"path": "ne_NP/ne_NP"
|
||||
},
|
||||
"nl_NL": {
|
||||
"nativeName": "Nederlands",
|
||||
"path": "nl_NL/nl_NL"
|
||||
},
|
||||
"nn_NO": {
|
||||
"nativeName": "norsk nynorsk",
|
||||
"path": "no/nn_NO"
|
||||
},
|
||||
"oc_FR": {
|
||||
"nativeName": "occitan",
|
||||
"path": "oc_FR/oc_FR"
|
||||
},
|
||||
"or_IN": {
|
||||
"nativeName": "ଓଡ଼ିଆ",
|
||||
"path": "or_IN/or_IN"
|
||||
},
|
||||
"pa_IN": {
|
||||
"nativeName": "ਪੰਜਾਬੀ",
|
||||
"path": "pa_IN/pa_IN"
|
||||
},
|
||||
"pl_PL": {
|
||||
"nativeName": "polski",
|
||||
"path": "pl_PL/pl_PL"
|
||||
},
|
||||
"pt_BR": {
|
||||
"nativeName": "português (Brasil)",
|
||||
"path": "pt_BR/pt_BR"
|
||||
},
|
||||
"pt_PT": {
|
||||
"nativeName": "português europeu (Portugal)",
|
||||
"path": "pt_PT/pt_PT"
|
||||
},
|
||||
"ro_RO": {
|
||||
"nativeName": "română",
|
||||
"path": "ro/ro_RO"
|
||||
},
|
||||
"ru_RU": {
|
||||
"nativeName": "русский",
|
||||
"path": "ru_RU/ru_RU"
|
||||
},
|
||||
"sa_IN": {
|
||||
"nativeName": "संस्कृत भाषा",
|
||||
"path": "sa_IN/sa_IN"
|
||||
},
|
||||
"si_LK": {
|
||||
"nativeName": "සිංහල",
|
||||
"path": "si_LK/si_LK"
|
||||
},
|
||||
"sk_SK": {
|
||||
"nativeName": "slovenčina",
|
||||
"path": "sk_SK/sk_SK"
|
||||
},
|
||||
"sl_SI": {
|
||||
"nativeName": "slovenščina",
|
||||
"path": "sl_SI/sl_SI"
|
||||
},
|
||||
"sq_AL": {
|
||||
"nativeName": "shqip",
|
||||
"path": "sq_AL/sq_AL"
|
||||
},
|
||||
"sr": {
|
||||
"nativeName": "српски",
|
||||
"path": "sr/sr"
|
||||
},
|
||||
"sr-Latn": {
|
||||
"nativeName": "srpski",
|
||||
"path": "sr/sr-Latn"
|
||||
},
|
||||
"sv_FI": {
|
||||
"nativeName": "svenska (Finland)",
|
||||
"path": "sv_SE/sv_FI"
|
||||
},
|
||||
"sv_SE": {
|
||||
"nativeName": "svenska (Sverige)",
|
||||
"path": "sv_SE/sv_SE"
|
||||
},
|
||||
"sw_TZ": {
|
||||
"nativeName": "Kiswahili",
|
||||
"path": "sw_TZ/sw_TZ"
|
||||
},
|
||||
"ta_IN": {
|
||||
"nativeName": "தமிழ்",
|
||||
"path": "ta_IN/ta_IN"
|
||||
},
|
||||
"te_IN": {
|
||||
"nativeName": "తెలుగు",
|
||||
"path": "te_IN/te_IN"
|
||||
},
|
||||
"th_TH": {
|
||||
"nativeName": "ไทย",
|
||||
"path": "th_TH/th_TH"
|
||||
},
|
||||
"tr_TR": {
|
||||
"nativeName": "Türkçe",
|
||||
"path": "tr_TR/tr_TR"
|
||||
},
|
||||
"uk_UA": {
|
||||
"nativeName": "українська",
|
||||
"path": "uk_UA/uk_UA"
|
||||
},
|
||||
"vi_VN": {
|
||||
"nativeName": "Tiếng Việt",
|
||||
"path": "vi/vi_VN"
|
||||
}
|
||||
}
|
||||
@ -37,9 +37,12 @@ QtObject {
|
||||
readonly property bool isHidden: visibility === Window.Hidden ||
|
||||
visibility === Window.Minimized
|
||||
|
||||
// Used to store if a OngoingCallPage component is fullscreened.
|
||||
// Used to store if a CallStackView component is fullscreened.
|
||||
property bool isCallFullscreen: false
|
||||
|
||||
// Used to store if a WebEngineView component is fullscreened.
|
||||
property bool isWebFullscreen: false
|
||||
|
||||
// QWK: Provide spacing for widgets that may be occluded by the system buttons.
|
||||
property QtObject qwkSystemButtonSpacing: QtObject {
|
||||
id: qwkSystemButtonSpacing
|
||||
@ -150,9 +153,8 @@ QtObject {
|
||||
// Adds an item to the fullscreen item stack. Automatically puts
|
||||
// the main window in fullscreen mode if needed. Callbacks should be used
|
||||
// to perform component-specific tasks upon successful transitions.
|
||||
function pushFullScreenItem(item, prevParent, pushedCb, removedCb) {
|
||||
if (item === null || item === undefined
|
||||
|| priv.fullScreenItems.length >= 3) {
|
||||
function pushFullScreenItem(item, removedCb=undefined) {
|
||||
if (!item || priv.fullScreenItems.length >= 3) {
|
||||
return
|
||||
}
|
||||
|
||||
@ -162,15 +164,13 @@ QtObject {
|
||||
// Add the item to our list and reparent it to appContainer.
|
||||
priv.fullScreenItems.push({
|
||||
"item": item,
|
||||
"prevParent": prevParent,
|
||||
"prevParent": item.parent,
|
||||
"prevAnchorsFill": item.anchors.fill,
|
||||
"removedCb": removedCb
|
||||
})
|
||||
|
||||
item.parent = appContainer
|
||||
item.anchors.fill = item.parent
|
||||
if (pushedCb) {
|
||||
pushedCb()
|
||||
}
|
||||
item.anchors.fill = appContainer
|
||||
|
||||
// Reevaluate isCallFullscreen.
|
||||
priv.fullScreenItemsChanged()
|
||||
@ -178,34 +178,37 @@ QtObject {
|
||||
|
||||
// Remove an item if specified, or by default, the top item. Automatically
|
||||
// resets the main window to windowed mode if no items remain in the stack.
|
||||
function popFullScreenItem(obj=null) {
|
||||
function popFullScreenItem(obj = undefined) {
|
||||
// Remove the item and reparent it to its original parent.
|
||||
if (obj === null) {
|
||||
obj = priv.fullScreenItems.pop()
|
||||
if (obj === undefined) {
|
||||
obj = priv.fullScreenItems.pop();
|
||||
} else {
|
||||
const index = priv.fullScreenItems.indexOf(obj);
|
||||
if (index > -1) {
|
||||
priv.fullScreenItems.splice(index, 1);
|
||||
}
|
||||
}
|
||||
if (obj !== undefined) {
|
||||
if (obj && typeof obj === 'object') {
|
||||
if (obj.item !== appWindow) {
|
||||
obj.item.anchors.fill = obj.prevAnchorsFill
|
||||
obj.item.parent = obj.prevParent
|
||||
if (obj.removedCb) {
|
||||
obj.removedCb()
|
||||
// Clear anchors first, then set parent, then reset anchors.
|
||||
obj.item.anchors.fill = undefined;
|
||||
obj.item.parent = obj.prevParent;
|
||||
obj.item.anchors.fill = obj.prevAnchorsFill;
|
||||
|
||||
// Call removed callback if it's a function.
|
||||
if (typeof obj.removedCb === 'function') {
|
||||
obj.removedCb();
|
||||
}
|
||||
}
|
||||
|
||||
// Reevaluate isCallFullscreen.
|
||||
priv.fullScreenItemsChanged()
|
||||
priv.fullScreenItemsChanged();
|
||||
}
|
||||
|
||||
// Only leave fullscreen mode if our window isn't in fullscreen
|
||||
// mode already.
|
||||
// Only leave fullscreen mode if our window isn't in fullscreen mode already.
|
||||
if (priv.fullScreenItems.length === 0 && priv.windowedVisibility !== Window.Hidden) {
|
||||
// Simply recall the last visibility state.
|
||||
visibility = priv.windowedVisibility
|
||||
visibility = priv.windowedVisibility;
|
||||
}
|
||||
}
|
||||
|
||||
@ -247,8 +250,17 @@ QtObject {
|
||||
// When fullScreenItems is changed, we can recompute isCallFullscreen.
|
||||
onFullScreenItemsChanged: {
|
||||
isCallFullscreen = fullScreenItems
|
||||
.filter(o => o.item instanceof OngoingCallPage)
|
||||
.filter(o => o.item.objectName === "callViewLoader")
|
||||
.length
|
||||
isWebFullscreen = WITH_WEBENGINE ? fullScreenItems
|
||||
.filter(o => o.item && (
|
||||
o.item.objectName === JamiQmlUtils.webEngineNames.mediaPreview ||
|
||||
o.item.objectName === JamiQmlUtils.webEngineNames.videoPreview ||
|
||||
o.item.objectName === JamiQmlUtils.webEngineNames.map ||
|
||||
o.item.objectName === JamiQmlUtils.webEngineNames.general ||
|
||||
o.item.objectName === JamiQmlUtils.webEngineNames.emojiPicker
|
||||
))
|
||||
.length : 0
|
||||
}
|
||||
|
||||
// Listen for a hangup combined with a fullscreen call state and
|
||||
@ -258,7 +270,7 @@ QtObject {
|
||||
function onHasCallChanged() {
|
||||
if (!CallAdapter.hasCall && isCallFullscreen) {
|
||||
priv.fullScreenItems.forEach(o => {
|
||||
if (o.item instanceof OngoingCallPage) {
|
||||
if (o.item.objectName === "callViewLoader") {
|
||||
popFullScreenItem(o)
|
||||
return
|
||||
}
|
||||
|
||||
@ -37,18 +37,24 @@ ApplicationWindow {
|
||||
property bool isRTL: UtilsAdapter.isRTL
|
||||
LayoutMirroring.enabled: isRTL
|
||||
LayoutMirroring.childrenInherit: isRTL
|
||||
property var raiseWhenCalled: AppSettingsManager.getValue(Settings.RaiseWhenCalled)
|
||||
|
||||
onActiveFocusItemChanged: {
|
||||
focusOverlay.margin = -5;
|
||||
if (activeFocusItem && ((activeFocusItem.focusReason === Qt.TabFocusReason) || (activeFocusItem.focusReason === Qt.BacktabFocusReason))) {
|
||||
if (activeFocusItem.focusOnChild) {
|
||||
focusOverlay.parent = activeFocusItem.parent;
|
||||
} else if (activeFocusItem.dontShowFocusState) {
|
||||
focusOverlay.parent = null;
|
||||
if (activeFocusItem) {
|
||||
const goodReasonToChangeFocus = activeFocusItem instanceof ItemDelegate || ((activeFocusItem.focusReason === Qt.TabFocusReason) || (activeFocusItem.focusReason === Qt.BacktabFocusReason));
|
||||
if (goodReasonToChangeFocus) {
|
||||
if (activeFocusItem.focusOnChild) {
|
||||
focusOverlay.parent = activeFocusItem.parent;
|
||||
} else if (activeFocusItem.dontShowFocusState) {
|
||||
focusOverlay.parent = null;
|
||||
} else {
|
||||
if (activeFocusItem.showFocusMargin)
|
||||
focusOverlay.margin = 0;
|
||||
focusOverlay.parent = activeFocusItem;
|
||||
}
|
||||
} else {
|
||||
if (activeFocusItem.showFocusMargin)
|
||||
focusOverlay.margin = 0;
|
||||
focusOverlay.parent = activeFocusItem;
|
||||
focusOverlay.parent = null;
|
||||
}
|
||||
} else {
|
||||
focusOverlay.parent = null;
|
||||
@ -291,6 +297,26 @@ ApplicationWindow {
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: UtilsAdapter
|
||||
function onRaiseWhenCalledChanged() {
|
||||
raiseWhenCalled = AppSettingsManager.getValue(Settings.RaiseWhenCalled);
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: CallAdapter
|
||||
|
||||
function onCallStatusChanged(index, accountId, convUid) {
|
||||
//If we are starting a call with raiseWhenCalled activated
|
||||
if (raiseWhenCalled && index === Call.Status.INCOMING_RINGING) {
|
||||
appWindow.raise();
|
||||
appWindow.requestActivate();
|
||||
layoutManager.restoreApp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: MainApplication
|
||||
|
||||
|
||||
@ -99,9 +99,9 @@ QtObject {
|
||||
function presentDialog(parent, path, props = {}, singleInstance = false) {
|
||||
// Open the dialog once the object is created
|
||||
let createFunc = singleInstance ? viewManager.createView : viewManager.createUniqueView;
|
||||
return createFunc(path, parent, function (obj) {
|
||||
return createFunc(path, parent, function (obj, viewName) {
|
||||
const doneCb = function () {
|
||||
viewManager.destroyView(path);
|
||||
viewManager.destroyView(viewName);
|
||||
};
|
||||
if (obj.closed !== undefined) {
|
||||
obj.closed.connect(doneCb);
|
||||
|
||||
@ -59,7 +59,7 @@ QtObject {
|
||||
if (views.hasOwnProperty(viewName)) {
|
||||
// an instance of the view already exists
|
||||
if (cb !== null) {
|
||||
cb(views[viewName])
|
||||
cb(views[viewName], viewName)
|
||||
}
|
||||
return views[viewName]
|
||||
}
|
||||
@ -76,7 +76,7 @@ QtObject {
|
||||
viewName.replace(/^.*[\\\/]/, '').replace(/\.[^/.]+$/, "")
|
||||
viewPaths[friendlyName] = viewName
|
||||
if (cb !== null) {
|
||||
cb(obj)
|
||||
cb(obj , viewName)
|
||||
}
|
||||
return views[viewName]
|
||||
}
|
||||
@ -103,6 +103,7 @@ QtObject {
|
||||
function destroyView(path) {
|
||||
// The view may already have been destroyed.
|
||||
if (!views.hasOwnProperty(path)) {
|
||||
console.warn("View not found:", path, "Available views:", Object.keys(views))
|
||||
return false
|
||||
}
|
||||
views[path].destroy()
|
||||
|
||||
@ -22,8 +22,11 @@
|
||||
#include "systemtray.h"
|
||||
#include "lrcinstance.h"
|
||||
#include "accountlistmodel.h"
|
||||
#include "wizardviewstepmodel.h"
|
||||
#include "global.h"
|
||||
#include "api/account.h"
|
||||
|
||||
#include <QtConcurrent/QtConcurrent>
|
||||
#include <QThreadPool>
|
||||
|
||||
AccountAdapter::AccountAdapter(AppSettingsManager* settingsManager,
|
||||
SystemTray* systemTray,
|
||||
@ -111,7 +114,10 @@ AccountAdapter::createJamiAccount(const QVariantMap& settings)
|
||||
&lrcInstance_->accountModel(),
|
||||
&lrc::api::AccountModel::accountAdded,
|
||||
[this, registeredName, settings](const QString& accountId) {
|
||||
lrcInstance_->accountModel().setAvatar(accountId, settings["avatar"].toString(), true,1);
|
||||
lrcInstance_->accountModel().setAvatar(accountId,
|
||||
settings["avatar"].toString(),
|
||||
true,
|
||||
1);
|
||||
Utils::oneShotConnect(&lrcInstance_->accountModel(),
|
||||
&lrc::api::AccountModel::accountDetailsChanged,
|
||||
[this](const QString& accountId) {
|
||||
@ -159,12 +165,12 @@ AccountAdapter::createJamiAccount(const QVariantMap& settings)
|
||||
|
||||
connectFailure();
|
||||
|
||||
auto futureResult = QtConcurrent::run([this, settings] {
|
||||
QThreadPool::globalInstance()->start([this, settings] {
|
||||
lrcInstance_->accountModel().createNewAccount(lrc::api::profile::Type::JAMI,
|
||||
{},
|
||||
settings["alias"].toString(),
|
||||
settings["archivePath"].toString(),
|
||||
settings["password"].toString(),
|
||||
settings["archivePin"].toString(),
|
||||
"");
|
||||
});
|
||||
}
|
||||
@ -206,14 +212,13 @@ AccountAdapter::createSIPAccount(const QVariantMap& settings)
|
||||
|
||||
connectFailure();
|
||||
|
||||
auto futureResult = QtConcurrent::run([this, settings] {
|
||||
QThreadPool::globalInstance()->start([this, settings] {
|
||||
lrcInstance_->accountModel().createNewAccount(lrc::api::profile::Type::SIP,
|
||||
{},
|
||||
settings["alias"].toString(),
|
||||
settings["archivePath"].toString(),
|
||||
"",
|
||||
"",
|
||||
settings["username"].toString(),
|
||||
{});
|
||||
settings["username"].toString());
|
||||
});
|
||||
}
|
||||
|
||||
@ -250,7 +255,7 @@ AccountAdapter::createJAMSAccount(const QVariantMap& settings)
|
||||
|
||||
connectFailure();
|
||||
|
||||
auto futureResult = QtConcurrent::run([this, settings] {
|
||||
QThreadPool::globalInstance()->start([this, settings] {
|
||||
lrcInstance_->accountModel().connectToAccountManager(settings["username"].toString(),
|
||||
settings["password"].toString(),
|
||||
settings["manager"].toString());
|
||||
@ -293,7 +298,7 @@ AccountAdapter::setCurrAccDisplayName(const QString& text)
|
||||
void
|
||||
AccountAdapter::setCurrentAccountAvatarFile(const QString& source)
|
||||
{
|
||||
auto futureResult = QtConcurrent::run([this, source]() {
|
||||
QThreadPool::globalInstance()->start([this, source]() {
|
||||
QPixmap image;
|
||||
if (!image.load(source)) {
|
||||
qWarning() << "Not a valid image file";
|
||||
@ -308,7 +313,7 @@ AccountAdapter::setCurrentAccountAvatarFile(const QString& source)
|
||||
void
|
||||
AccountAdapter::setCurrentAccountAvatarBase64(const QString& data)
|
||||
{
|
||||
auto futureResult = QtConcurrent::run([this, data]() {
|
||||
QThreadPool::globalInstance()->start([this, data]() {
|
||||
auto accountId = lrcInstance_->get_currentAccountId();
|
||||
lrcInstance_->accountModel().setAvatar(accountId, data, true, 1);
|
||||
});
|
||||
@ -339,9 +344,73 @@ AccountAdapter::exportToFile(const QString& accountId,
|
||||
void
|
||||
AccountAdapter::setArchivePasswordAsync(const QString& accountID, const QString& password)
|
||||
{
|
||||
auto futureResult = QtConcurrent::run([this, accountID, password] {
|
||||
QThreadPool::globalInstance()->start([this, accountID, password] {
|
||||
auto config = lrcInstance_->accountModel().getAccountConfig(accountID);
|
||||
config.archivePassword = password;
|
||||
lrcInstance_->accountModel().setAccountConfig(accountID, config);
|
||||
});
|
||||
}
|
||||
|
||||
void
|
||||
AccountAdapter::startImportAccount()
|
||||
{
|
||||
auto wizardModel = qApp->property("WizardViewStepModel").value<WizardViewStepModel*>();
|
||||
wizardModel->set_deviceAuthState(lrc::api::account::DeviceAuthState::INIT);
|
||||
wizardModel->set_deviceLinkDetails({});
|
||||
|
||||
// This will create an account with the ARCHIVE_URL configured to start the import process.
|
||||
importAccountId_ = lrcInstance_->accountModel().createDeviceImportAccount();
|
||||
}
|
||||
|
||||
void
|
||||
AccountAdapter::provideAccountAuthentication(const QString& password)
|
||||
{
|
||||
if (importAccountId_.isEmpty()) {
|
||||
qWarning() << "No import account to provide password to";
|
||||
return;
|
||||
}
|
||||
|
||||
auto wizardModel = qApp->property("WizardViewStepModel").value<WizardViewStepModel*>();
|
||||
wizardModel->set_deviceAuthState(lrc::api::account::DeviceAuthState::IN_PROGRESS);
|
||||
|
||||
Utils::oneShotConnect(
|
||||
&lrcInstance_->accountModel(),
|
||||
&lrc::api::AccountModel::accountAdded,
|
||||
[this](const QString& accountId) {
|
||||
Q_EMIT lrcInstance_->accountListChanged();
|
||||
Q_EMIT accountAdded(accountId,
|
||||
lrcInstance_->accountModel().getAccountList().indexOf(accountId));
|
||||
},
|
||||
this,
|
||||
&AccountAdapter::accountCreationFailed);
|
||||
|
||||
connectFailure();
|
||||
|
||||
QThreadPool::globalInstance()->start([this, password] {
|
||||
lrcInstance_->accountModel().provideAccountAuthentication(importAccountId_, password);
|
||||
});
|
||||
}
|
||||
|
||||
QString
|
||||
AccountAdapter::getImportErrorMessage(QVariantMap details)
|
||||
{
|
||||
QString errorString = details.value("error").toString();
|
||||
if (!errorString.isEmpty() && errorString != "none") {
|
||||
auto error = lrc::api::account::mapLinkDeviceError(errorString.toStdString());
|
||||
return lrc::api::account::getLinkDeviceString(error);
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
void
|
||||
AccountAdapter::cancelImportAccount()
|
||||
{
|
||||
auto wizardModel = qApp->property("WizardViewStepModel").value<WizardViewStepModel*>();
|
||||
wizardModel->set_deviceAuthState(lrc::api::account::DeviceAuthState::INIT);
|
||||
wizardModel->set_deviceLinkDetails({});
|
||||
|
||||
// Remove the account if it was created
|
||||
lrcInstance_->accountModel().removeAccount(importAccountId_);
|
||||
importAccountId_.clear();
|
||||
}
|
||||
|
||||
@ -81,6 +81,13 @@ public:
|
||||
const bool& state);
|
||||
Q_INVOKABLE QStringList getDefaultModerators(const QString& accountId);
|
||||
|
||||
// New import account / link device functions
|
||||
// import: (note: Listen for: DeviceAuthStateChanged)
|
||||
Q_INVOKABLE void startImportAccount();
|
||||
Q_INVOKABLE void provideAccountAuthentication(const QString& password = {});
|
||||
Q_INVOKABLE QString getImportErrorMessage(QVariantMap details);
|
||||
Q_INVOKABLE void cancelImportAccount();
|
||||
|
||||
Q_SIGNALS:
|
||||
// Trigger other components to reconnect account related signals.
|
||||
void accountStatusChanged(QString accountId);
|
||||
@ -98,6 +105,9 @@ private:
|
||||
|
||||
QMetaObject::Connection registeredNameSavedConnection_;
|
||||
|
||||
// The account ID of the last used import account.
|
||||
QString importAccountId_;
|
||||
|
||||
AppSettingsManager* settingsManager_;
|
||||
SystemTray* systemTray_;
|
||||
};
|
||||
|
||||
@ -34,8 +34,12 @@ AppSettingsManager::AppSettingsManager(QObject* parent)
|
||||
{
|
||||
for (int i = 0; i < static_cast<int>(Settings::Key::COUNT__); ++i) {
|
||||
auto key = static_cast<Settings::Key>(i);
|
||||
if (!settings_->contains(Settings::toString(key)))
|
||||
setValue(key, Settings::defaultValue(key));
|
||||
auto strKey= Settings::toString(key);
|
||||
// If the setting is written in the settings file and is equal to the default value,
|
||||
// remove it from the settings file.
|
||||
// This allow us to change default values without risking to remove user settings
|
||||
if ((settings_->contains(strKey)) && (settings_->value(strKey) == Settings::defaultValue(key)))
|
||||
settings_->remove(strKey);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -63,6 +63,8 @@ extern const QString defaultDownloadPath;
|
||||
X(WindowState, QWindow::AutomaticVisibility) \
|
||||
X(EnableExperimentalSwarm, false) \
|
||||
X(LANG, "SYSTEM") \
|
||||
X(SpellLang, {}) \
|
||||
X(EnableSpellCheck, true) \
|
||||
X(PluginStoreEndpoint, "https://plugins.jami.net") \
|
||||
X(PositionShareDuration, 15) \
|
||||
X(PositionShareLimit, true) \
|
||||
@ -74,7 +76,8 @@ extern const QString defaultDownloadPath;
|
||||
X(PttKeys, 32) \
|
||||
X(UseFramelessWindow, USE_FRAMELESS_WINDOW_DEFAULT) \
|
||||
X(EnableCrashReporting, true) \
|
||||
X(EnableAutomaticCrashReporting, false)
|
||||
X(EnableAutomaticCrashReporting, false) \
|
||||
X(RaiseWhenCalled, false)
|
||||
#if APPSTORE
|
||||
#define KEYS COMMON_KEYS
|
||||
#else
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
#include "appversionmanager.h"
|
||||
|
||||
#include "lrcinstance.h"
|
||||
#include "version.h"
|
||||
#include "version_info.h"
|
||||
|
||||
#include <QProcess>
|
||||
#include <QTimer>
|
||||
@ -73,7 +73,7 @@ struct AppVersionManager::Impl : public QObject
|
||||
Q_EMIT parent_.updateCheckReplyReceived(false);
|
||||
return;
|
||||
}
|
||||
auto currentVersion = QString(VERSION_STRING).toULongLong();
|
||||
auto currentVersion = BUILD_VERSION_STRING.toULongLong();
|
||||
auto latestVersion = latestVersionString.toULongLong();
|
||||
const QString channelStr = isBeta ? "beta" : "stable";
|
||||
const auto newVersionFound = latestVersion > currentVersion;
|
||||
|
||||
@ -345,9 +345,11 @@ AvAdapter::shareScreenArea(unsigned x, unsigned y, unsigned width, unsigned heig
|
||||
}
|
||||
|
||||
void
|
||||
AvAdapter::shareWindow(const QString& windowProcessId, const QString& windowId)
|
||||
AvAdapter::shareWindow(const QString& windowProcessId, const QString& windowId, const int fps)
|
||||
{
|
||||
auto resource = lrcInstance_->getCurrentCallModel()->getDisplay(windowProcessId, windowId);
|
||||
auto resource = lrcInstance_->getCurrentCallModel()->getDisplay(windowProcessId,
|
||||
windowId,
|
||||
fps);
|
||||
auto callId = lrcInstance_->getCurrentCallId();
|
||||
|
||||
muteCamera_ = !isCapturing();
|
||||
@ -356,7 +358,10 @@ AvAdapter::shareWindow(const QString& windowProcessId, const QString& windowId)
|
||||
}
|
||||
|
||||
QString
|
||||
AvAdapter::getSharingResource(int screenId, const QString& windowProcessId, const QString& windowId)
|
||||
AvAdapter::getSharingResource(int screenId,
|
||||
const QString& windowProcessId,
|
||||
const QString& windowId,
|
||||
const int fps)
|
||||
{
|
||||
if (screenId == -1) {
|
||||
const auto arrangementRect = getAllScreensBoundingRect();
|
||||
@ -387,7 +392,7 @@ AvAdapter::getSharingResource(int screenId, const QString& windowProcessId, cons
|
||||
rect.height()
|
||||
* screen->devicePixelRatio());
|
||||
} else if (!windowId.isEmpty()) {
|
||||
return lrcInstance_->getCurrentCallModel()->getDisplay(windowProcessId, windowId);
|
||||
return lrcInstance_->getCurrentCallModel()->getDisplay(windowProcessId, windowId, fps);
|
||||
}
|
||||
|
||||
return "";
|
||||
|
||||
@ -96,7 +96,9 @@ protected:
|
||||
Q_INVOKABLE void shareScreenArea(unsigned x, unsigned y, unsigned width, unsigned height);
|
||||
|
||||
// Select window to display (all platforms except Wayland).
|
||||
Q_INVOKABLE void shareWindow(const QString& windowProcessId, const QString& windowId);
|
||||
Q_INVOKABLE void shareWindow(const QString& windowProcessId,
|
||||
const QString& windowId,
|
||||
const int fps = -1);
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
// Share a window on Wayland.
|
||||
@ -110,7 +112,8 @@ protected:
|
||||
// Returns the screensharing resource
|
||||
Q_INVOKABLE QString getSharingResource(int screenId = -2,
|
||||
const QString& windowProcessId = "",
|
||||
const QString& key = "");
|
||||
const QString& key = "",
|
||||
const int fps = -1);
|
||||
|
||||
Q_INVOKABLE void getListWindows();
|
||||
|
||||
|
||||
@ -22,6 +22,7 @@
|
||||
#include "lrcinstance.h"
|
||||
|
||||
#include <QImage>
|
||||
#include <QRegularExpression>
|
||||
|
||||
class AsyncAvatarImageResponseRunnable : public AsyncImageResponseRunnable
|
||||
{
|
||||
@ -69,6 +70,16 @@ public:
|
||||
image = Utils::accountPhoto(lrcInstance_, imageId, requestedSize_);
|
||||
} else if (type == "contact") {
|
||||
image = Utils::contactPhoto(lrcInstance_, imageId, requestedSize_);
|
||||
} else if (type == "temporaryAccount") {
|
||||
// Check if imageId is a SHA-1 hash (jamiId or registered name)
|
||||
static const QRegularExpression sha1Pattern("^[0-9a-fA-F]{40}$");
|
||||
if (sha1Pattern.match(imageId).hasMatch()) {
|
||||
// If we only have a jamiId use default avatar
|
||||
image = Utils::fallbackAvatar("jami:" + imageId, QString(), requestedSize_);
|
||||
} else {
|
||||
// For registered usernames, use fallbackAvatar avatar with the name
|
||||
image = Utils::fallbackAvatar(QString(), imageId, requestedSize_);
|
||||
}
|
||||
} else {
|
||||
qWarning() << Q_FUNC_INFO << "Missing valid prefix in the image url";
|
||||
return;
|
||||
|
||||
@ -249,7 +249,7 @@ CallAdapter::onCallEnded(const QString& callId)
|
||||
}
|
||||
|
||||
void
|
||||
CallAdapter::onCallStatusChanged(const QString& callId, int code)
|
||||
CallAdapter::onCallStatusChanged(const QString& accountId, const QString& callId, int code)
|
||||
{
|
||||
Q_UNUSED(code)
|
||||
|
||||
@ -468,11 +468,14 @@ CallAdapter::onShowIncomingCallView(const QString& accountId, const QString& con
|
||||
showNotification(accountId, convInfo.uid);
|
||||
return;
|
||||
}
|
||||
if (!accountProperties.denySecondCall) {
|
||||
lrcInstance_->selectConversation(convInfo.uid, accountId);
|
||||
}
|
||||
} else {
|
||||
// finally, in this case, the conversation isn't selected yet
|
||||
// and there are no other special conditions, so just select the conversation
|
||||
lrcInstance_->selectConversation(convInfo.uid, accountId);
|
||||
}
|
||||
|
||||
// finally, in this case, the conversation isn't selected yet
|
||||
// and there are no other special conditions, so just select the conversation
|
||||
lrcInstance_->selectConversation(convInfo.uid, accountId);
|
||||
}
|
||||
|
||||
void
|
||||
@ -563,7 +566,7 @@ CallAdapter::connectCallModel(const QString& accountId)
|
||||
connect(accInfo.callModel.get(),
|
||||
&CallModel::callStatusChanged,
|
||||
this,
|
||||
QOverload<const QString&, int>::of(&CallAdapter::onCallStatusChanged),
|
||||
QOverload<const QString&, const QString&, int>::of(&CallAdapter::onCallStatusChanged),
|
||||
Qt::UniqueConnection);
|
||||
|
||||
connect(accInfo.callModel.get(),
|
||||
|
||||
@ -118,7 +118,7 @@ public Q_SLOTS:
|
||||
void onShowCallView(const QString& accountId, const QString& convUid);
|
||||
void onAccountChanged();
|
||||
void onCallStatusChanged(const QString& accountId, const QString& callId);
|
||||
void onCallStatusChanged(const QString& callId, int code);
|
||||
void onCallStatusChanged(const QString& accountId, const QString& callId, int code);
|
||||
void onCallAddedToConference(const QString& callId, const QString& conversationId, const QString& confId);
|
||||
void onCallStarted(const QString& callId);
|
||||
void onCallEnded(const QString& callId);
|
||||
|
||||
@ -135,7 +135,7 @@ PendingConferenceesListModel::connectSignals()
|
||||
callsStatusChanged_ = connect(currentCallModel,
|
||||
&CallModel::callStatusChanged,
|
||||
this,
|
||||
[this](const QString&, int) {
|
||||
[this](const QString&, const QString&, int) {
|
||||
Q_EMIT dataChanged(index(0, 0),
|
||||
index(rowCount() - 1),
|
||||
{Role::CallStatus});
|
||||
@ -401,6 +401,16 @@ CallOverlayModel::eventFilter(QObject* object, QEvent* event)
|
||||
}
|
||||
}
|
||||
}
|
||||
// Tab or BackTab key events should trigger a signal that we can use to
|
||||
// prevent the overlay from fading and to allow the user to navigate
|
||||
// through the controls.
|
||||
if (event->type() == QEvent::KeyPress && (static_cast<QKeyEvent*>(event)->key() == Qt::Key_Tab)
|
||||
|| (static_cast<QKeyEvent*>(event)->key() == Qt::Key_Backtab)) {
|
||||
Q_EMIT focusKeyPressed();
|
||||
// Don't absorb the event so that the focus can be changed
|
||||
// to the next or previous control.
|
||||
return false;
|
||||
}
|
||||
#ifndef HAVE_GLOBAL_PTT
|
||||
else if (event->type() == QEvent::KeyPress && listener_->getPttState()) {
|
||||
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
|
||||
|
||||
@ -140,6 +140,7 @@ public:
|
||||
|
||||
Q_SIGNALS:
|
||||
void mouseMoved(QQuickItem* item);
|
||||
void focusKeyPressed();
|
||||
void pttKeyPressed();
|
||||
void pttKeyReleased();
|
||||
|
||||
|
||||
@ -28,7 +28,8 @@ Item {
|
||||
enum Mode {
|
||||
Account,
|
||||
Contact,
|
||||
Conversation
|
||||
Conversation,
|
||||
TemporaryAccount
|
||||
}
|
||||
property int mode: Avatar.Mode.Account
|
||||
property alias sourceSize: image.sourceSize
|
||||
@ -45,6 +46,8 @@ Item {
|
||||
return 'contact';
|
||||
case Avatar.Mode.Conversation:
|
||||
return 'conversation';
|
||||
case Avatar.Mode.TemporaryAccount:
|
||||
return 'temporaryAccount';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -56,11 +56,11 @@ Popup {
|
||||
id: container
|
||||
|
||||
property color color: JamiTheme.secondaryBackgroundColor
|
||||
leftPadding: popupMargins
|
||||
bottomPadding: action1.visible || action2.visible ? 10 :popupMargins
|
||||
bottomPadding: action1.visible || action2.visible ? 10 : popupMargins
|
||||
|
||||
background: Rectangle {
|
||||
id: bgRect
|
||||
|
||||
radius: 5
|
||||
color: container.color
|
||||
layer.enabled: true
|
||||
@ -78,8 +78,10 @@ Popup {
|
||||
contentItem: ColumnLayout {
|
||||
id: contentLayout
|
||||
|
||||
JamiPushButton {
|
||||
JamiPushButton { QWKSetParentHitTestVisible {}
|
||||
id: closeButton
|
||||
Accessible.role: Accessible.Button
|
||||
Accessible.name: JamiStrings.close
|
||||
|
||||
visible: closeButtonVisible
|
||||
|
||||
@ -99,6 +101,7 @@ Popup {
|
||||
Label {
|
||||
id: titleText
|
||||
|
||||
Layout.leftMargin: popupMargins
|
||||
Layout.rightMargin: popupMargins
|
||||
Layout.bottomMargin: 20
|
||||
Layout.topMargin: closeButtonVisible ? 0 : 30
|
||||
@ -115,9 +118,9 @@ Popup {
|
||||
id: flickable
|
||||
|
||||
Layout.fillHeight: true
|
||||
|
||||
Layout.preferredHeight: Math.min(contentHeight, root.height)
|
||||
Layout.preferredWidth: contentItem.childrenRect.width
|
||||
Layout.preferredWidth: contentItem.childrenRect.width + ScrollBar.vertical.width
|
||||
Layout.leftMargin: popupMargins
|
||||
Layout.rightMargin: popupMargins
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
@ -126,11 +129,13 @@ Popup {
|
||||
contentItem.children: Loader {
|
||||
id: containerSubContentLoader
|
||||
}
|
||||
|
||||
ScrollBar.horizontal.visible: false
|
||||
}
|
||||
|
||||
DialogButtonBox {
|
||||
id: buttonBox
|
||||
|
||||
Layout.alignment: Qt.AlignRight
|
||||
spacing: 1.5
|
||||
|
||||
@ -179,7 +184,7 @@ Popup {
|
||||
color: JamiTheme.transparentColor
|
||||
|
||||
// Color animation for overlay when pop up is shown.
|
||||
ColorAnimation on color {
|
||||
ColorAnimation on color {
|
||||
to: JamiTheme.popupOverlayColor
|
||||
duration: 500
|
||||
}
|
||||
|
||||