commit:     49f3a2685d492f468e92e9d7fe1a72071163c726
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Sun May 15 15:08:34 2022 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Sun May 15 15:08:34 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=49f3a268

net-p2p/transmission: load openssl "legacy" provider

Required for RC4.

Closes: https://bugs.gentoo.org/844748
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 .../files/transmission-3.00-openssl-3.patch        |  37 ++++++
 net-p2p/transmission/transmission-3.00-r2.ebuild   | 146 +++++++++++++++++++++
 2 files changed, 183 insertions(+)

diff --git a/net-p2p/transmission/files/transmission-3.00-openssl-3.patch 
b/net-p2p/transmission/files/transmission-3.00-openssl-3.patch
new file mode 100644
index 000000000000..dbedcd217c94
--- /dev/null
+++ b/net-p2p/transmission/files/transmission-3.00-openssl-3.patch
@@ -0,0 +1,37 @@
+From 6ee128b95bacaff20746538dc97c2b8e2b9fcc29 Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <flop...@gentoo.org>
+Date: Sun, 15 May 2022 10:54:38 -0400
+Subject: [PATCH] openssl: load "legacy" provider for RC4
+
+---
+ libtransmission/crypto-utils-openssl.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/libtransmission/crypto-utils-openssl.c 
b/libtransmission/crypto-utils-openssl.c
+index 45fd71913..14d680654 100644
+--- a/libtransmission/crypto-utils-openssl.c
++++ b/libtransmission/crypto-utils-openssl.c
+@@ -20,6 +20,9 @@
+ #include <openssl/rand.h>
+ #include <openssl/ssl.h>
+ #include <openssl/x509.h>
++#if OPENSSL_VERSION_MAJOR >= 3
++#include <openssl/provider.h>
++#endif
+ 
+ #include "transmission.h"
+ #include "crypto-utils.h"
+@@ -184,6 +187,10 @@ static void 
openssl_evp_cipher_context_free(EVP_CIPHER_CTX* handle)
+ 
+ tr_rc4_ctx_t tr_rc4_new(void)
+ {
++#if OPENSSL_VERSION_MAJOR >= 3
++    OSSL_PROVIDER_load(NULL, "legacy");
++    OSSL_PROVIDER_load(NULL, "default");
++#endif
+     EVP_CIPHER_CTX* handle = EVP_CIPHER_CTX_new();
+ 
+     if (check_result(EVP_CipherInit_ex(handle, EVP_rc4(), NULL, NULL, NULL, 
-1)))
+-- 
+2.35.1
+

diff --git a/net-p2p/transmission/transmission-3.00-r2.ebuild 
b/net-p2p/transmission/transmission-3.00-r2.ebuild
new file mode 100644
index 000000000000..6fdc118910b6
--- /dev/null
+++ b/net-p2p/transmission/transmission-3.00-r2.ebuild
@@ -0,0 +1,146 @@
+# Copyright 2006-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake systemd xdg-utils
+
+if [[ ${PV} == 9999 ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="https://github.com/transmission/transmission";
+else
+       SRC_URI="https://dev.gentoo.org/~floppym/dist/${P}.tar.xz";
+       KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux"
+fi
+
+DESCRIPTION="A fast, easy, and free BitTorrent client"
+HOMEPAGE="https://transmissionbt.com/";
+
+# web/LICENSE is always GPL-2 whereas COPYING allows either GPL-2 or GPL-3 for 
the rest
+# transmission in licenses/ is for mentioning OpenSSL linking exception
+# MIT is in several libtransmission/ headers
+LICENSE="|| ( GPL-2 GPL-3 Transmission-OpenSSL-exception ) GPL-2 MIT"
+SLOT="0"
+IUSE="appindicator cli gtk lightweight nls mbedtls qt5 systemd test"
+RESTRICT="!test? ( test )"
+
+ACCT_DEPEND="
+       acct-group/transmission
+       acct-user/transmission
+"
+BDEPEND="${ACCT_DEPEND}
+       virtual/pkgconfig
+       nls? (
+               gtk? (
+                       sys-devel/gettext
+               )
+               qt5? (
+                       dev-qt/linguist-tools:5
+               )
+       )
+"
+COMMON_DEPEND="
+       >=dev-libs/libevent-2.0.10:=
+       !mbedtls? ( dev-libs/openssl:0= )
+       mbedtls? ( net-libs/mbedtls:0= )
+       net-libs/libnatpmp
+       >=net-libs/miniupnpc-1.7:=
+       >=net-misc/curl-7.16.3[ssl]
+       sys-libs/zlib:=
+       nls? ( virtual/libintl )
+       gtk? (
+               >=dev-libs/dbus-glib-0.100
+               >=dev-libs/glib-2.32:2
+               >=x11-libs/gtk+-3.4:3
+               appindicator? ( >=dev-libs/libappindicator-0.4.30:3 )
+       )
+       qt5? (
+               dev-qt/qtcore:5
+               dev-qt/qtgui:5
+               dev-qt/qtwidgets:5
+               dev-qt/qtnetwork:5
+               dev-qt/qtdbus:5
+       )
+       systemd? ( >=sys-apps/systemd-209:= )
+"
+DEPEND="${COMMON_DEPEND}
+       nls? (
+               virtual/libintl
+               gtk? (
+                       sys-devel/gettext
+               )
+               qt5? (
+                       dev-qt/linguist-tools:5
+               )
+       )
+"
+RDEPEND="${COMMON_DEPEND}
+       ${ACCT_DEPEND}
+"
+
+PATCHES=(
+       "${FILESDIR}"/cmake-unused-command-line.patch
+       "${FILESDIR}"/transmission-3.00-openssl-3.patch
+)
+
+src_configure() {
+       local mycmakeargs=(
+               -DCMAKE_INSTALL_DOCDIR=share/doc/${PF}
+
+               -DENABLE_CLI=$(usex cli ON OFF)
+               -DENABLE_GTK=$(usex gtk ON OFF)
+               -DENABLE_LIGHTWEIGHT=$(usex lightweight ON OFF)
+               -DENABLE_NLS=$(usex nls ON OFF)
+               -DENABLE_QT=$(usex qt5 ON OFF)
+               -DENABLE_TESTS=$(usex test ON OFF)
+
+               -DUSE_SYSTEM_EVENT2=ON
+               -DUSE_SYSTEM_DHT=OFF
+               -DUSE_SYSTEM_MINIUPNPC=ON
+               -DUSE_SYSTEM_NATPMP=ON
+               -DUSE_SYSTEM_UTP=OFF
+               -DUSE_SYSTEM_B64=OFF
+
+               -DWITH_CRYPTO=$(usex mbedtls polarssl openssl)
+               -DWITH_INOTIFY=ON
+               -DWITH_LIBAPPINDICATOR=$(usex appindicator ON OFF)
+               -DWITH_SYSTEMD=$(usex systemd ON OFF)
+       )
+
+       cmake_src_configure
+}
+
+src_install() {
+       cmake_src_install
+
+       newinitd "${FILESDIR}"/transmission-daemon.initd.10 transmission-daemon
+       newconfd "${FILESDIR}"/transmission-daemon.confd.4 transmission-daemon
+
+       if use systemd; then
+               # Service sets Type=notify
+               systemd_dounit daemon/transmission-daemon.service
+               systemd_install_serviced 
"${FILESDIR}"/transmission-daemon.service.conf
+       fi
+
+       insinto /usr/lib/sysctl.d
+       doins "${FILESDIR}"/60-transmission.conf
+
+       if [[ ${EUID} == 0 ]]; then
+               diropts -o transmission -g transmission
+       fi
+       keepdir /var/lib/transmission
+}
+
+pkg_postrm() {
+       if use gtk || use qt5; then
+               xdg_desktop_database_update
+               xdg_icon_cache_update
+       fi
+}
+
+pkg_postinst() {
+       if use gtk || use qt5; then
+               xdg_desktop_database_update
+               xdg_icon_cache_update
+       fi
+}

Reply via email to