mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 04:36:43 +00:00
feat(BRIDGE-316): Changes required for Qt 6.8.2 bump; bumped go to 1.24.0; changes to OS bundler configs; golangci-lint bump;
This commit is contained in:
@ -3,14 +3,14 @@
|
|||||||
## Prerequisites
|
## Prerequisites
|
||||||
* 64-bit OS:
|
* 64-bit OS:
|
||||||
- the go-rfc5322 module cannot currently be compiled for 32-bit OSes
|
- the go-rfc5322 module cannot currently be compiled for 32-bit OSes
|
||||||
* Go 1.23.4
|
* Go 1.24.0
|
||||||
* Bash with basic build utils: make, gcc, sed, find, grep, ...
|
* Bash with basic build utils: make, gcc, sed, find, grep, ...
|
||||||
- For Windows, it is recommended to use MinGW 64bit shell from [MSYS2](https://www.msys2.org/)
|
- For Windows, it is recommended to use MinGW 64bit shell from [MSYS2](https://www.msys2.org/)
|
||||||
* GCC (Linux), msvc (Windows) or Xcode (macOS)
|
* GCC (Linux), msvc (Windows) or Xcode (macOS)
|
||||||
* Windres (Windows)
|
* Windres (Windows)
|
||||||
* libglvnd and libsecret development files (Linux)
|
* libglvnd and libsecret development files (Linux)
|
||||||
* pkg-config (Linux)
|
* pkg-config (Linux)
|
||||||
* cmake, ninja-build and Qt 6.4.3 are required to build the graphical user interface. On Linux,
|
* cmake, ninja-build and Qt 6.8.2 are required to build the graphical user interface. On Linux,
|
||||||
the Mesa OpenGL development files are also needed.
|
the Mesa OpenGL development files are also needed.
|
||||||
|
|
||||||
To enable the sending of crash reports using Sentry please set the
|
To enable the sending of crash reports using Sentry please set the
|
||||||
@ -19,7 +19,7 @@ Otherwise, the sending of crash reports will be disabled.
|
|||||||
|
|
||||||
## Build
|
## Build
|
||||||
In order to build Bridge app with Qt interface we are using
|
In order to build Bridge app with Qt interface we are using
|
||||||
[Qt 6.4.3](https://doc.qt.io/qt-6/gettingstarted.html).
|
[Qt 6.8.2](https://doc.qt.io/qt-6/gettingstarted.html).
|
||||||
|
|
||||||
Please note that qmake path must be in your `PATH` to ensure Qt to be found.
|
Please note that qmake path must be in your `PATH` to ensure Qt to be found.
|
||||||
Also, before you start build **on Windows**, please unset the `MSYSTEM` variable
|
Also, before you start build **on Windows**, please unset the `MSYSTEM` variable
|
||||||
|
|||||||
2
Makefile
2
Makefile
@ -189,7 +189,7 @@ ${RESOURCE_FILE}: ./dist/info.rc ./dist/${SRC_ICO} .FORCE
|
|||||||
|
|
||||||
## Dev dependencies
|
## Dev dependencies
|
||||||
.PHONY: install-devel-tools install-linter install-go-mod-outdated install-git-hooks
|
.PHONY: install-devel-tools install-linter install-go-mod-outdated install-git-hooks
|
||||||
LINTVER:="v1.61.0"
|
LINTVER:="v1.64.6"
|
||||||
LINTSRC:="https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh"
|
LINTSRC:="https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh"
|
||||||
|
|
||||||
install-dev-dependencies: install-devel-tools install-linter install-go-mod-outdated
|
install-dev-dependencies: install-devel-tools install-linter install-go-mod-outdated
|
||||||
|
|||||||
4
go.mod
4
go.mod
@ -1,8 +1,8 @@
|
|||||||
module github.com/ProtonMail/proton-bridge/v3
|
module github.com/ProtonMail/proton-bridge/v3
|
||||||
|
|
||||||
go 1.23
|
go 1.24
|
||||||
|
|
||||||
toolchain go1.23.4
|
toolchain go1.24.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/0xAX/notificator v0.0.0-20220220101646-ee9b8921e557
|
github.com/0xAX/notificator v0.0.0-20220220101646-ee9b8921e557
|
||||||
|
|||||||
@ -720,13 +720,13 @@ func (bridge *Bridge) verifyUsernameChange() {
|
|||||||
func GetUpdatedCachePath(gluonDBPath, gluonCachePath string) string {
|
func GetUpdatedCachePath(gluonDBPath, gluonCachePath string) string {
|
||||||
// If gluon cache is moved to an external drive; regex find will fail; as is expected
|
// If gluon cache is moved to an external drive; regex find will fail; as is expected
|
||||||
cachePathMatches := usernameChangeRegex.FindStringSubmatch(gluonCachePath)
|
cachePathMatches := usernameChangeRegex.FindStringSubmatch(gluonCachePath)
|
||||||
if cachePathMatches == nil || len(cachePathMatches) < 2 {
|
if len(cachePathMatches) < 2 {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
cacheUsername := cachePathMatches[1]
|
cacheUsername := cachePathMatches[1]
|
||||||
dbPathMatches := usernameChangeRegex.FindStringSubmatch(gluonDBPath)
|
dbPathMatches := usernameChangeRegex.FindStringSubmatch(gluonDBPath)
|
||||||
if dbPathMatches == nil || len(dbPathMatches) < 2 {
|
if len(dbPathMatches) < 2 {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -24,15 +24,33 @@ cmake_minimum_required(VERSION 3.22)
|
|||||||
install(SCRIPT ${deploy_script})
|
install(SCRIPT ${deploy_script})
|
||||||
|
|
||||||
# QML
|
# QML
|
||||||
install(DIRECTORY "${QT_DIR}/qml/Qt"
|
install(DIRECTORY "${QT_DIR}/qml/Qt/labs/platform"
|
||||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/MacOS")
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/MacOS/Qt/labs")
|
||||||
install(DIRECTORY "${QT_DIR}/qml/QtQml"
|
install(DIRECTORY "${QT_DIR}/qml/QtQml"
|
||||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/MacOS")
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/MacOS")
|
||||||
install(DIRECTORY "${QT_DIR}/qml/QtQuick"
|
install(DIRECTORY "${QT_DIR}/qml/QtQuick"
|
||||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/MacOS")
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/MacOS"
|
||||||
|
PATTERN "VirtualKeyboard" EXCLUDE
|
||||||
|
PATTERN "Effects" EXCLUDE
|
||||||
|
PATTERN "LocalStorage" EXCLUDE
|
||||||
|
PATTERN "NativeStyle" EXCLUDE
|
||||||
|
PATTERN "Particles" EXCLUDE
|
||||||
|
PATTERN "Scene2D" EXCLUDE
|
||||||
|
PATTERN "Scene3D" EXCLUDE
|
||||||
|
PATTERN "Shapes" EXCLUDE
|
||||||
|
PATTERN "Timeline" EXCLUDE
|
||||||
|
PATTERN "VectorImage" EXCLUDE
|
||||||
|
|
||||||
|
PATTERN "Controls/FluentWinUI3" EXCLUDE
|
||||||
|
PATTERN "Controls/designer" EXCLUDE
|
||||||
|
PATTERN "Controls/Fusion" EXCLUDE
|
||||||
|
PATTERN "Controls/Imagine" EXCLUDE
|
||||||
|
PATTERN "Controls/Material" EXCLUDE
|
||||||
|
PATTERN "Controls/Universal" EXCLUDE
|
||||||
|
PATTERN "Controls/iOS" EXCLUDE
|
||||||
|
PATTERN "Controls/macOS" EXCLUDE)
|
||||||
|
|
||||||
# FRAMEWORKS
|
# FRAMEWORKS
|
||||||
install(DIRECTORY "${QT_DIR}/lib/QtQmlWorkerScript.framework"
|
|
||||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks")
|
|
||||||
install(DIRECTORY "${QT_DIR}/lib/QtQuickControls2Impl.framework"
|
install(DIRECTORY "${QT_DIR}/lib/QtQuickControls2Impl.framework"
|
||||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks")
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks")
|
||||||
install(DIRECTORY "${QT_DIR}/lib/QtQuickLayouts.framework"
|
install(DIRECTORY "${QT_DIR}/lib/QtQuickLayouts.framework"
|
||||||
@ -43,6 +61,14 @@ install(DIRECTORY "${QT_DIR}/lib/QtQuickDialogs2QuickImpl.framework"
|
|||||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks")
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks")
|
||||||
install(DIRECTORY "${QT_DIR}/lib/QtQuickDialogs2Utils.framework"
|
install(DIRECTORY "${QT_DIR}/lib/QtQuickDialogs2Utils.framework"
|
||||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks")
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks")
|
||||||
|
# ADDITIONAL FRAMEWORKS FOR Qt 6.8
|
||||||
|
install(DIRECTORY "${QT_DIR}/lib/QtQuickControls2Basic.framework"
|
||||||
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks")
|
||||||
|
install(DIRECTORY "${QT_DIR}/lib/QtLabsPlatform.framework"
|
||||||
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks")
|
||||||
|
install(DIRECTORY "${QT_DIR}/lib/QtQuickControls2BasicStyleImpl.framework"
|
||||||
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/Frameworks")
|
||||||
|
|
||||||
# PLUGINS
|
# PLUGINS
|
||||||
install(FILES "${QT_DIR}/plugins/imageformats/libqsvg.dylib"
|
install(FILES "${QT_DIR}/plugins/imageformats/libqsvg.dylib"
|
||||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/PlugIns/imageformats")
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/bridge-gui.app/Contents/PlugIns/imageformats")
|
||||||
|
|||||||
@ -54,9 +54,9 @@ AppendQt6Lib("libQt6Gui.so.6")
|
|||||||
AppendQt6Lib("libQt6Core.so.6")
|
AppendQt6Lib("libQt6Core.so.6")
|
||||||
AppendQt6Lib("libQt6QuickTemplates2.so.6")
|
AppendQt6Lib("libQt6QuickTemplates2.so.6")
|
||||||
AppendQt6Lib("libQt6DBus.so.6")
|
AppendQt6Lib("libQt6DBus.so.6")
|
||||||
AppendQt6Lib("libicui18n.so.56")
|
AppendQt6Lib("libicui18n.so.73")
|
||||||
AppendQt6Lib("libicuuc.so.56")
|
AppendQt6Lib("libicuuc.so.73")
|
||||||
AppendQt6Lib("libicudata.so.56")
|
AppendQt6Lib("libicudata.so.73")
|
||||||
AppendQt6Lib("libQt6XcbQpa.so.6")
|
AppendQt6Lib("libQt6XcbQpa.so.6")
|
||||||
AppendQt6Lib("libQt6WaylandClient.so.6")
|
AppendQt6Lib("libQt6WaylandClient.so.6")
|
||||||
AppendQt6Lib("libQt6WlShellIntegration.so.6")
|
AppendQt6Lib("libQt6WlShellIntegration.so.6")
|
||||||
@ -68,6 +68,10 @@ AppendQt6Lib("libQt6PrintSupport.so.6")
|
|||||||
AppendQt6Lib("libQt6Xml.so.6")
|
AppendQt6Lib("libQt6Xml.so.6")
|
||||||
AppendQt6Lib("libQt6OpenGLWidgets.so.6")
|
AppendQt6Lib("libQt6OpenGLWidgets.so.6")
|
||||||
AppendQt6Lib("libQt6QuickWidgets.so.6")
|
AppendQt6Lib("libQt6QuickWidgets.so.6")
|
||||||
|
AppendQt6Lib("libQt6QmlMeta.so.6")
|
||||||
|
AppendQt6Lib("libQt6LabsPlatform.so.6")
|
||||||
|
AppendQt6Lib("libQt6QuickControls2Basic.so.6")
|
||||||
|
AppendQt6Lib("libQt6QuickControls2BasicStyleImpl.so.6")
|
||||||
|
|
||||||
# QML dependencies
|
# QML dependencies
|
||||||
AppendQt6Lib("libQt6QmlWorkerScript.so.6")
|
AppendQt6Lib("libQt6QmlWorkerScript.so.6")
|
||||||
|
|||||||
@ -57,20 +57,36 @@ AppendVCPKGLib("re2.dll")
|
|||||||
AppendVCPKGLib("sentry.dll")
|
AppendVCPKGLib("sentry.dll")
|
||||||
AppendVCPKGLib("zlib1.dll")
|
AppendVCPKGLib("zlib1.dll")
|
||||||
# QML DLLs
|
# QML DLLs
|
||||||
AppendQt6Lib("Qt6QmlWorkerScript.dll")
|
|
||||||
AppendQt6Lib("Qt6Widgets.dll")
|
AppendQt6Lib("Qt6Widgets.dll")
|
||||||
AppendQt6Lib("Qt6QuickControls2Impl.dll")
|
AppendQt6Lib("Qt6QuickControls2Impl.dll")
|
||||||
AppendQt6Lib("Qt6QuickLayouts.dll")
|
AppendQt6Lib("Qt6QuickLayouts.dll")
|
||||||
AppendQt6Lib("Qt6QuickDialogs2.dll")
|
AppendQt6Lib("Qt6QuickDialogs2.dll")
|
||||||
AppendQt6Lib("Qt6QuickDialogs2QuickImpl.dll")
|
AppendQt6Lib("Qt6QuickDialogs2QuickImpl.dll")
|
||||||
AppendQt6Lib("Qt6QuickDialogs2Utils.dll")
|
AppendQt6Lib("Qt6QuickDialogs2Utils.dll")
|
||||||
|
AppendQt6Lib("Qt6LabsPlatform.dll")
|
||||||
|
AppendQt6Lib("Qt6QuickControls2.dll")
|
||||||
|
AppendQt6Lib("Qt6QuickControls2Basic.dll")
|
||||||
|
|
||||||
install(FILES ${DEPLOY_LIBS} DESTINATION "${CMAKE_INSTALL_PREFIX}")
|
install(FILES ${DEPLOY_LIBS} DESTINATION "${CMAKE_INSTALL_PREFIX}")
|
||||||
|
|
||||||
# QML PlugIns
|
# QML PlugIns
|
||||||
install(DIRECTORY ${QT_DIR}/qml/Qt/labs/platform DESTINATION "${CMAKE_INSTALL_PREFIX}/Qt/labs/")
|
install(DIRECTORY ${QT_DIR}/qml/Qt/labs/platform DESTINATION "${CMAKE_INSTALL_PREFIX}/Qt/labs/")
|
||||||
install(DIRECTORY ${QT_DIR}/qml/QtQml DESTINATION "${CMAKE_INSTALL_PREFIX}")
|
install(DIRECTORY ${QT_DIR}/qml/QtQml DESTINATION "${CMAKE_INSTALL_PREFIX}")
|
||||||
install(DIRECTORY ${QT_DIR}/qml/QtQuick DESTINATION "${CMAKE_INSTALL_PREFIX}")
|
install(DIRECTORY ${QT_DIR}/qml/QtQuick DESTINATION "${CMAKE_INSTALL_PREFIX}"
|
||||||
|
PATTERN "Effects" EXCLUDE
|
||||||
|
PATTERN "LocalStorage" EXCLUDE
|
||||||
|
PATTERN "NativeStyle" EXCLUDE
|
||||||
|
PATTERN "Particles" EXCLUDE
|
||||||
|
PATTERN "Shapes" EXCLUDE
|
||||||
|
PATTERN "VectorImage" EXCLUDE
|
||||||
|
|
||||||
|
PATTERN "Controls/designer" EXCLUDE
|
||||||
|
PATTERN "Controls/FluentWinUI3" EXCLUDE
|
||||||
|
PATTERN "Controls/Fusion" EXCLUDE
|
||||||
|
PATTERN "Controls/Imagine" EXCLUDE
|
||||||
|
PATTERN "Controls/Material" EXCLUDE
|
||||||
|
PATTERN "Controls/Universal" EXCLUDE
|
||||||
|
PATTERN "Controls/Windows" EXCLUDE)
|
||||||
|
|
||||||
# crash handler utils
|
# crash handler utils
|
||||||
install(PROGRAMS "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/tools/sentry-native/crashpad_handler.exe" DESTINATION "${CMAKE_INSTALL_PREFIX}")
|
install(PROGRAMS "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/tools/sentry-native/crashpad_handler.exe" DESTINATION "${CMAKE_INSTALL_PREFIX}")
|
||||||
|
|||||||
@ -58,9 +58,9 @@ Item {
|
|||||||
}
|
}
|
||||||
ColorImage {
|
ColorImage {
|
||||||
color: root.colorScheme.text_norm
|
color: root.colorScheme.text_norm
|
||||||
height: root.colorScheme.body_font_size
|
height: ProtonStyle.body_font_size
|
||||||
source: "/qml/icons/ic-copy.svg"
|
source: "/qml/icons/ic-copy.svg"
|
||||||
sourceSize.height: root.colorScheme.body_font_size
|
sourceSize.height: ProtonStyle.body_font_size
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|||||||
@ -86,9 +86,9 @@ SettingsView {
|
|||||||
ColorImage {
|
ColorImage {
|
||||||
Layout.alignment: Qt.AlignCenter
|
Layout.alignment: Qt.AlignCenter
|
||||||
color: root.colorScheme.interaction_norm
|
color: root.colorScheme.interaction_norm
|
||||||
height: root.colorScheme.body_font_size
|
height: ProtonStyle.body_font_size
|
||||||
source: root._isAdvancedShown ? "/qml/icons/ic-chevron-down.svg" : "/qml/icons/ic-chevron-right.svg"
|
source: root._isAdvancedShown ? "/qml/icons/ic-chevron-down.svg" : "/qml/icons/ic-chevron-right.svg"
|
||||||
sourceSize.height: root.colorScheme.body_font_size
|
sourceSize.height: ProtonStyle.body_font_size
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|||||||
@ -72,9 +72,9 @@ Item {
|
|||||||
ColorImage {
|
ColorImage {
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
color: root.colorScheme.background_norm
|
color: root.colorScheme.background_norm
|
||||||
height: root.colorScheme.body_font_size
|
height: ProtonStyle.body_font_size
|
||||||
source: "/qml/icons/ic-check.svg"
|
source: "/qml/icons/ic-check.svg"
|
||||||
sourceSize.height: root.colorScheme.body_font_size
|
sourceSize.height: ProtonStyle.body_font_size
|
||||||
visible: root.checked
|
visible: root.checked
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -82,9 +82,9 @@ Item {
|
|||||||
id: loader
|
id: loader
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
color: root.colorScheme.text_norm
|
color: root.colorScheme.text_norm
|
||||||
height: root.colorScheme.body_font_size
|
height: ProtonStyle.body_font_size
|
||||||
source: "/qml/icons/Loader_16.svg"
|
source: "/qml/icons/Loader_16.svg"
|
||||||
sourceSize.height: root.colorScheme.body_font_size
|
sourceSize.height: ProtonStyle.body_font_size
|
||||||
visible: root.loading
|
visible: root.loading
|
||||||
|
|
||||||
RotationAnimation {
|
RotationAnimation {
|
||||||
|
|||||||
@ -212,7 +212,7 @@ func buildSessionInfoList(dir string) (map[SessionID]*sessionInfo, error) {
|
|||||||
}
|
}
|
||||||
rx := regexp.MustCompile(`^(\d{8}_\d{9})_.*\.log$`)
|
rx := regexp.MustCompile(`^(\d{8}_\d{9})_.*\.log$`)
|
||||||
match := rx.FindStringSubmatch(entry.Name())
|
match := rx.FindStringSubmatch(entry.Name())
|
||||||
if match == nil || len(match) < 2 {
|
if len(match) < 2 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -30,7 +30,7 @@ egrep $'^\t[^=>]*$' $LOCKFILE | sed -r 's/\t([^ ]*) v.*/\1/g' > $TEMPFILE1
|
|||||||
egrep $'^\t.*=>.*v.*$' $LOCKFILE | sed -r 's/^.*=> ([^ ]*)( v.*)?/\1/g' >> $TEMPFILE1
|
egrep $'^\t.*=>.*v.*$' $LOCKFILE | sed -r 's/^.*=> ([^ ]*)( v.*)?/\1/g' >> $TEMPFILE1
|
||||||
cat $TEMPFILE1 | egrep -v 'therecipe/qt/internal|therecipe/env_.*_512|protontech' | sort | uniq > $TEMPFILE2
|
cat $TEMPFILE1 | egrep -v 'therecipe/qt/internal|therecipe/env_.*_512|protontech' | sort | uniq > $TEMPFILE2
|
||||||
# Add non vendor credits
|
# Add non vendor credits
|
||||||
echo -e "\nQt 6.4.3 by Qt group\n" >> $TEMPFILE2
|
echo -e "\nQt 6.8.2 by Qt group\n" >> $TEMPFILE2
|
||||||
# join lines
|
# join lines
|
||||||
sed -i -e ':a' -e 'N' -e '$!ba' -e 's|\n|;|g' $TEMPFILE2
|
sed -i -e ':a' -e 'N' -e '$!ba' -e 's|\n|;|g' $TEMPFILE2
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user