summaryrefslogtreecommitdiff
path: root/mail-mta/proton-mail-bridge
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-12-05 01:18:11 +0000
committerV3n3RiX <venerix@koprulu.sector>2024-12-05 01:19:22 +0000
commit5324d006175d7a42c71018423d2ba965ef8caea0 (patch)
treeb4a439a477f34995066ef8e0135ac99d465fa3b2 /mail-mta/proton-mail-bridge
parentebbf4222e4acdec2257ec391af513cd36eb1192c (diff)
mail-mta/proton-mail-bridge :
* import from Gentoo && version bump * fix GUI start-up failure with qt6.8 * https://github.com/ProtonMail/proton-bridge/issues/500 * https://github.com/ProtonMail/proton-bridge/pull/502
Diffstat (limited to 'mail-mta/proton-mail-bridge')
-rw-r--r--mail-mta/proton-mail-bridge/Manifest1
-rw-r--r--mail-mta/proton-mail-bridge/files/proton-mail-bridge-3.14.0-gui.patch73
-rw-r--r--mail-mta/proton-mail-bridge/files/proton-mail-bridge-3.14.0-qt6.8.patch149
-rw-r--r--mail-mta/proton-mail-bridge/files/proton-mail-bridge.service-r117
-rw-r--r--mail-mta/proton-mail-bridge/proton-mail-bridge-3.14.0.ebuild119
5 files changed, 359 insertions, 0 deletions
diff --git a/mail-mta/proton-mail-bridge/Manifest b/mail-mta/proton-mail-bridge/Manifest
new file mode 100644
index 00000000..13d72084
--- /dev/null
+++ b/mail-mta/proton-mail-bridge/Manifest
@@ -0,0 +1 @@
+DIST proton-mail-bridge-3.14.0.tar.gz 5212514 BLAKE2B 03ecda56a4a802bb0d0fb0e32dc9412dc5cdc76a48345d6e0b74b99b1e458e3553deb33c5e25d1b8e471405ae1785c383f2ee173f47533a18ed951e8d1680872 SHA512 8d99e4178cf925135a2f60907434dc6ea8563ad286d71362ef6eebf4a6cd80a6e6783ee8946fdf1b4146411916e0265b2e8e864652a701b91b849073ef414cf2
diff --git a/mail-mta/proton-mail-bridge/files/proton-mail-bridge-3.14.0-gui.patch b/mail-mta/proton-mail-bridge/files/proton-mail-bridge-3.14.0-gui.patch
new file mode 100644
index 00000000..2e131a3e
--- /dev/null
+++ b/mail-mta/proton-mail-bridge/files/proton-mail-bridge-3.14.0-gui.patch
@@ -0,0 +1,73 @@
+diff '--color=auto' -Nur a/internal/frontend/bridge-gui/bridge-gui/CMakeLists.txt b/internal/frontend/bridge-gui/bridge-gui/CMakeLists.txt
+--- a/internal/frontend/bridge-gui/bridge-gui/CMakeLists.txt 2024-09-25 09:47:40.000000000 +0100
++++ b/internal/frontend/bridge-gui/bridge-gui/CMakeLists.txt 2024-12-05 00:59:21.824976820 +0000
+@@ -167,12 +167,9 @@
+ WIN32_EXECUTABLE TRUE
+ MACOSX_BUNDLE TRUE)
+
+-install(TARGETS bridge-gui
+- RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
+- BUNDLE DESTINATION "${CMAKE_INSTALL_PREFIX}"
+- LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}"
+- )
++install(TARGETS bridge-gui)
+
++if(0)
+ qt_generate_deploy_app_script(
+ TARGET bridge-gui
+ FILENAME_VARIABLE deploy_script
+@@ -187,3 +184,4 @@
+ endif()
+
+ include(Deploy${DEPLOY_OS}.cmake)
++endif()
+diff '--color=auto' -Nur a/internal/frontend/bridge-gui/bridge-gui/main.cpp b/internal/frontend/bridge-gui/bridge-gui/main.cpp
+--- a/internal/frontend/bridge-gui/bridge-gui/main.cpp 2024-09-25 09:47:40.000000000 +0100
++++ b/internal/frontend/bridge-gui/bridge-gui/main.cpp 2024-12-05 01:00:05.767976494 +0000
+@@ -51,7 +51,7 @@
+
+ QString const bridgeLock = "bridge-v3.lock"; ///< The file name used for the bridge-gui lock file.
+ QString const bridgeGUILock = "bridge-v3-gui.lock"; ///< The file name used for the bridge-gui lock file.
+-QString const exeName = "bridge" + exeSuffix; ///< The bridge executable file name.*
++QString const exeName = "proton-mail-bridge" + exeSuffix; ///< The bridge executable file name.*
+ qint64 constexpr grpcServiceConfigWaitDelayMs = 180000; ///< The wait delay for the gRPC config file in milliseconds.
+ QString const waitFlag = "--wait"; ///< The wait command-line flag.
+ QString const orphanInstanceException = "An orphan instance of bridge is already running. Please terminate it and relaunch the application.";
+diff '--color=auto' -Nur a/internal/frontend/bridge-gui/bridgepp/CMakeLists.txt b/internal/frontend/bridge-gui/bridgepp/CMakeLists.txt
+--- a/internal/frontend/bridge-gui/bridgepp/CMakeLists.txt 2024-09-25 09:47:40.000000000 +0100
++++ b/internal/frontend/bridge-gui/bridgepp/CMakeLists.txt 2024-12-05 01:01:46.241975749 +0000
+@@ -164,6 +164,10 @@
+
+ target_precompile_headers(bridgepp PRIVATE Pch.h)
+
++install(TARGETS bridgepp)
++
++if(0)
++
+ #*****************************************************************************************************************************************************
+ # GoogleTest
+ #*****************************************************************************************************************************************************
+@@ -205,3 +209,4 @@
+
+ include(GoogleTest)
+ gtest_discover_tests(bridgepp-test)
++endif()
+diff '--color=auto' -Nur a/internal/frontend/bridge-gui/BridgeSetup.cmake b/internal/frontend/bridge-gui/BridgeSetup.cmake
+--- a/internal/frontend/bridge-gui/BridgeSetup.cmake 2024-09-25 09:47:40.000000000 +0100
++++ b/internal/frontend/bridge-gui/BridgeSetup.cmake 2024-12-05 01:03:38.578974915 +0000
+@@ -45,6 +45,7 @@
+ endif()
+
+
++if(0)
+ #****************************************************************************************************************************************************
+ # vcpkg, toolchain, and architecture
+ #****************************************************************************************************************************************************
+@@ -87,4 +88,5 @@
+ set(VCPKG_TARGET_TRIPLET x64-windows)
+ endif()
+
+-set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "toolchain")
+\ No newline at end of file
++set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "toolchain")
++endif()
diff --git a/mail-mta/proton-mail-bridge/files/proton-mail-bridge-3.14.0-qt6.8.patch b/mail-mta/proton-mail-bridge/files/proton-mail-bridge-3.14.0-qt6.8.patch
new file mode 100644
index 00000000..f75c3ce6
--- /dev/null
+++ b/mail-mta/proton-mail-bridge/files/proton-mail-bridge-3.14.0-qt6.8.patch
@@ -0,0 +1,149 @@
+diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/Banner.qml b/internal/frontend/bridge-gui/bridge-gui/qml/Banner.qml
+index f3affdc9..88d3a48a 100644
+--- a/internal/frontend/bridge-gui/bridge-gui/qml/Banner.qml
++++ b/internal/frontend/bridge-gui/bridge-gui/qml/Banner.qml
+@@ -28,7 +28,7 @@ Popup {
+ implicitWidth: 600 // contentLayout.implicitWidth + contentLayout.anchors.leftMargin + contentLayout.anchors.rightMargin
+ leftMargin: (mainWindow.width - root.implicitWidth) / 2
+ modal: false
+- popupType: ApplicationWindow.PopupType.Banner
++ popupPrio: ApplicationWindow.PopupPriority.Banner
+ shouldShow: notification ? (notification.active && !notification.dismissed) : false
+ topMargin: 37
+
+diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/BugReport/QuestionItem.qml b/internal/frontend/bridge-gui/bridge-gui/qml/BugReport/QuestionItem.qml
+index 9cf37cc1..2e0ca39c 100644
+--- a/internal/frontend/bridge-gui/bridge-gui/qml/BugReport/QuestionItem.qml
++++ b/internal/frontend/bridge-gui/bridge-gui/qml/BugReport/QuestionItem.qml
+@@ -13,6 +13,7 @@
+ import QtQuick
+ import QtQuick.Layouts
+ import QtQuick.Controls
++import QtQuick.Controls.impl
+ import Proton
+
+ Item {
+diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/Proton/ApplicationWindow.qml b/internal/frontend/bridge-gui/bridge-gui/qml/Proton/ApplicationWindow.qml
+index ef23ede5..72207896 100644
+--- a/internal/frontend/bridge-gui/bridge-gui/qml/Proton/ApplicationWindow.qml
++++ b/internal/frontend/bridge-gui/bridge-gui/qml/Proton/ApplicationWindow.qml
+@@ -21,7 +21,7 @@ T.ApplicationWindow {
+ id: root
+
+ // popup priority based on types
+- enum PopupType {
++ enum PopupPriority {
+ Banner,
+ Dialog
+ }
+@@ -78,10 +78,10 @@ T.ApplicationWindow {
+ topmost = obj;
+ break;
+ }
+- if (topmost && (topmost.popupType > obj.popupType)) {
++ if (topmost && (topmost.popupPrio > obj.popupPrio)) {
+ continue;
+ }
+- if (topmost && (topmost.popupType === obj.popupType) && (topmost.occurred > obj.occurred)) {
++ if (topmost && (topmost.popupPrio === obj.popupPrio) && (topmost.occurred > obj.occurred)) {
+ continue;
+ }
+ topmost = obj;
+diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/Proton/Dialog.qml b/internal/frontend/bridge-gui/bridge-gui/qml/Proton/Dialog.qml
+index f1ab61a0..30e7a99d 100644
+--- a/internal/frontend/bridge-gui/bridge-gui/qml/Proton/Dialog.qml
++++ b/internal/frontend/bridge-gui/bridge-gui/qml/Proton/Dialog.qml
+@@ -21,7 +21,7 @@ T.Dialog {
+
+ property ColorScheme colorScheme
+ readonly property var occurred: shouldShow ? new Date() : undefined
+- readonly property int popupType: ApplicationWindow.PopupType.Dialog
++ readonly property int popupPrio: ApplicationWindow.PopupPriority.Dialog
+ property bool shouldShow: false
+
+ function close() {
+diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/Proton/InfoTooltip.qml b/internal/frontend/bridge-gui/bridge-gui/qml/Proton/InfoTooltip.qml
+index 281e93e8..0ec6bf26 100644
+--- a/internal/frontend/bridge-gui/bridge-gui/qml/Proton/InfoTooltip.qml
++++ b/internal/frontend/bridge-gui/bridge-gui/qml/Proton/InfoTooltip.qml
+@@ -16,6 +16,7 @@
+ // along with Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
+ import QtQuick
+ import QtQuick.Controls
++import QtQuick.Controls.impl
+ import QtQuick.Layouts
+
+ ColorImage {
+diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/Proton/LinkLabel.qml b/internal/frontend/bridge-gui/bridge-gui/qml/Proton/LinkLabel.qml
+index 30871f21..af9b40d2 100644
+--- a/internal/frontend/bridge-gui/bridge-gui/qml/Proton/LinkLabel.qml
++++ b/internal/frontend/bridge-gui/bridge-gui/qml/Proton/LinkLabel.qml
+@@ -12,6 +12,7 @@
+ // along with Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
+ import QtQuick
+ import QtQuick.Controls
++import QtQuick.Controls.impl
+ import QtQuick.Layouts
+
+ RowLayout {
+diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/Proton/Popup.qml b/internal/frontend/bridge-gui/bridge-gui/qml/Proton/Popup.qml
+index 68c3af7c..78fa29c1 100644
+--- a/internal/frontend/bridge-gui/bridge-gui/qml/Proton/Popup.qml
++++ b/internal/frontend/bridge-gui/bridge-gui/qml/Proton/Popup.qml
+@@ -21,7 +21,7 @@ T.Popup {
+
+ property ColorScheme colorScheme
+ readonly property var occurred: shouldShow ? new Date() : undefined
+- property int popupType: ApplicationWindow.PopupType.Banner
++ property int popupPrio: ApplicationWindow.PopupPriority.Banner
+ property bool shouldShow: false
+
+ function close() {
+diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigCertInstall.qml b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigCertInstall.qml
+index 1ac498b0..9790afe9 100644
+--- a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigCertInstall.qml
++++ b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigCertInstall.qml
+@@ -15,6 +15,7 @@ import QtQml
+ import QtQuick
+ import QtQuick.Layouts
+ import QtQuick.Controls
++import QtQuick.Controls.impl
+
+ Item {
+ id: root
+diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigParameters.qml b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigParameters.qml
+index 52e3fec2..2a4c7d39 100644
+--- a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigParameters.qml
++++ b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigParameters.qml
+@@ -14,6 +14,7 @@ import QtQml
+ import QtQuick
+ import QtQuick.Layouts
+ import QtQuick.Controls
++import QtQuick.Controls.impl
+ import ".."
+
+ Rectangle {
+diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientListItem.qml b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientListItem.qml
+index 3e781d16..30e9307e 100644
+--- a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientListItem.qml
++++ b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientListItem.qml
+@@ -14,6 +14,7 @@ import QtQml
+ import QtQuick
+ import QtQuick.Layouts
+ import QtQuick.Controls
++import QtQuick.Controls.impl
+
+ Rectangle {
+ id: root
+diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/Login.qml b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/Login.qml
+index 20eba753..2f1a86a9 100644
+--- a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/Login.qml
++++ b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/Login.qml
+@@ -14,6 +14,7 @@ import QtQml
+ import QtQuick
+ import QtQuick.Layouts
+ import QtQuick.Controls
++import QtQuick.Controls.impl
+
+ FocusScope {
+ id: root
diff --git a/mail-mta/proton-mail-bridge/files/proton-mail-bridge.service-r1 b/mail-mta/proton-mail-bridge/files/proton-mail-bridge.service-r1
new file mode 100644
index 00000000..8dd89802
--- /dev/null
+++ b/mail-mta/proton-mail-bridge/files/proton-mail-bridge.service-r1
@@ -0,0 +1,17 @@
+[Unit]
+Description=Proton Mail IMAP/SMTP bridge
+Documentation=https://proton.me/mail/bridge/
+
+[Service]
+ExecStart=/usr/bin/proton-mail-bridge --noninteractive
+Restart=on-failure
+
+# Hardening
+ProtectSystem=full
+PrivateTmp=true
+SystemCallArchitectures=native
+MemoryDenyWriteExecute=true
+NoNewPrivileges=true
+
+[Install]
+WantedBy=default.target
diff --git a/mail-mta/proton-mail-bridge/proton-mail-bridge-3.14.0.ebuild b/mail-mta/proton-mail-bridge/proton-mail-bridge-3.14.0.ebuild
new file mode 100644
index 00000000..ca736417
--- /dev/null
+++ b/mail-mta/proton-mail-bridge/proton-mail-bridge-3.14.0.ebuild
@@ -0,0 +1,119 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake desktop go-module systemd xdg-utils
+
+MY_PN="${PN/-mail/}"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="Serves Proton Mail to IMAP/SMTP clients"
+HOMEPAGE="https://proton.me/mail/bridge https://github.com/ProtonMail/proton-bridge/"
+SRC_URI="https://github.com/ProtonMail/${MY_PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0 BSD BSD-2 GPL-3+ ISC LGPL-3+ MIT MPL-2.0 Unlicense"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="gui"
+
+# Quite a few tests require Internet access
+PROPERTIES="test_network"
+RESTRICT="test"
+
+RDEPEND="app-crypt/libsecret
+ gui? (
+ >=dev-libs/protobuf-21.12:=
+ >=dev-libs/sentry-native-0.6.5-r1
+ dev-qt/qtbase:6=[gui,icu,widgets]
+ dev-qt/qtdeclarative:6=[widgets]
+ dev-qt/qtsvg:6=
+ media-libs/mesa
+ net-libs/grpc:=
+ )
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-gui.patch
+ "${FILESDIR}"/${P}-qt6.8.patch
+)
+
+S="${WORKDIR}"/${MY_P}
+
+src_prepare() {
+ xdg_environment_reset
+ default
+ if use gui; then
+ local PATCHES=()
+ BUILD_DIR="${WORKDIR}"/gui_build \
+ CMAKE_USE_DIR="${S}"/internal/frontend/bridge-gui/bridge-gui \
+ cmake_src_prepare
+ fi
+}
+
+src_configure() {
+ if use gui; then
+ local mycmakeargs=(
+ -DBRIDGE_APP_FULL_NAME="Proton Mail Bridge"
+ -DBRIDGE_APP_VERSION="${PV}+git"
+ -DBRIDGE_REPO_ROOT="${S}"
+ -DBRIDGE_TAG="NOTAG"
+ -DBRIDGE_VENDOR="Redcore Linux"
+ -DCMAKE_DISABLE_PRECOMPILE_HEADERS=OFF
+ )
+ BUILD_DIR="${WORKDIR}"/gui_build \
+ CMAKE_USE_DIR="${S}"/internal/frontend/bridge-gui/bridge-gui \
+ cmake_src_configure
+ fi
+}
+
+src_compile() {
+ emake build-nogui
+
+ if use gui; then
+ BUILD_DIR="${WORKDIR}"/gui_build \
+ CMAKE_USE_DIR="${S}"/internal/frontend/bridge-gui/bridge-gui \
+ cmake_src_compile
+ fi
+}
+
+src_test() {
+ emake test
+}
+
+src_install() {
+ exeinto /usr/bin
+ newexe bridge ${PN}
+
+ if use gui; then
+ BUILD_DIR="${WORKDIR}"/gui_build \
+ CMAKE_USE_DIR="${S}"/internal/frontend/bridge-gui/bridge-gui \
+ cmake_src_install
+ mv "${ED}"/usr/bin/bridge-gui "${ED}"/usr/bin/${PN}-gui || die
+ newicon "${S}"/dist/bridge.svg ${PN}.svg
+ make_desktop_entry ${PN}-gui "Proton Mail Bridge" ${PN}.svg "Email;Network"
+ fi
+
+ systemd_newuserunit "${FILESDIR}"/${PN}.service-r1 ${PN}.service
+
+ einstalldocs
+}
+
+pkg_postinst() {
+ if [[ -n "${REPLACING_VERSIONS}" ]]; then
+ local oldver
+ for oldver in ${REPLACING_VERSIONS}; do
+ if ver_test "${oldver}" -lt 3.2.0; then
+ ewarn "Please note that since version 3.2.0, ${PN} by default shares usage statistics with upstream."
+ ewarn "For details, please see"
+ ewarn
+ ewarn " https://proton.me/support/share-usage-statistics"
+ ewarn
+ ewarn "This behaviour can be disabled through ${PN}-gui, under Advanced Settings."
+ ewarn
+ break
+ fi
+ done
+ fi
+}