diff options
Diffstat (limited to 'mail-mta/proton-mail-bridge')
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 +} |