public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Mike Gilbert" <floppym@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: net-p2p/transmission/files/, net-p2p/transmission/
Date: Sat,  3 Oct 2015 18:57:20 +0000 (UTC)	[thread overview]
Message-ID: <1443898635.e9f79718d75e1e2a9b1f5e11073f50b03617fed2.floppym@gentoo> (raw)

commit:     e9f79718d75e1e2a9b1f5e11073f50b03617fed2
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Sat Oct  3 18:56:15 2015 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Sat Oct  3 18:57:15 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e9f79718

net-p2p/transmission: Fix issue with encryption with libevent-2.1.5

Backported upstream patches.

Bug: https://bugs.gentoo.org/536922

Package-Manager: portage-2.2.22_p5

 .../transmission/files/2.84-libevent-2.1.5.patch   | 112 ++++++++++++++
 net-p2p/transmission/transmission-2.84-r2.ebuild   | 164 +++++++++++++++++++++
 2 files changed, 276 insertions(+)

diff --git a/net-p2p/transmission/files/2.84-libevent-2.1.5.patch b/net-p2p/transmission/files/2.84-libevent-2.1.5.patch
new file mode 100644
index 0000000..48101eb
--- /dev/null
+++ b/net-p2p/transmission/files/2.84-libevent-2.1.5.patch
@@ -0,0 +1,112 @@
+Fix runtime issues with libevent-2.1.5
+
+Bug: https://bugs.gentoo.org/536922
+Index: libtransmission/peer-io.c
+===================================================================
+--- libtransmission/peer-io.c	(revision 14541)
++++ libtransmission/peer-io.c	(revision 14545)
+@@ -1041,6 +1041,33 @@
+ ***
+ **/
+ 
++static inline void
++processBuffer (tr_crypto        * crypto,
++               struct evbuffer  * buffer,
++               size_t             offset,
++               size_t             size,
++               void            (* callback) (tr_crypto *, size_t, const void *, void *))
++{
++    struct evbuffer_ptr pos;
++    struct evbuffer_iovec iovec;
++
++    evbuffer_ptr_set (buffer, &pos, offset, EVBUFFER_PTR_SET);
++
++    do
++    {
++        if (evbuffer_peek (buffer, size, &pos, &iovec, 1) <= 0)
++            break;
++
++        callback (crypto, iovec.iov_len, iovec.iov_base, iovec.iov_base);
++
++        assert (size >= iovec.iov_len);
++        size -= iovec.iov_len;
++    }
++    while (!evbuffer_ptr_set (buffer, &pos, iovec.iov_len, EVBUFFER_PTR_ADD));
++
++    assert (size == 0);
++}
++
+ static void
+ addDatatype (tr_peerIo * io, size_t byteCount, bool isPieceData)
+ {
+@@ -1051,19 +1078,14 @@
+     peer_io_push_datatype (io, d);
+ }
+ 
+-static void
+-maybeEncryptBuffer (tr_peerIo * io, struct evbuffer * buf)
++static inline void
++maybeEncryptBuffer (tr_peerIo       * io,
++                    struct evbuffer * buf,
++                    size_t            offset,
++                    size_t            size)
+ {
+     if (io->encryption_type == PEER_ENCRYPTION_RC4)
+-    {
+-        struct evbuffer_ptr pos;
+-        struct evbuffer_iovec iovec;
+-        evbuffer_ptr_set (buf, &pos, 0, EVBUFFER_PTR_SET);
+-        do {
+-            evbuffer_peek (buf, -1, &pos, &iovec, 1);
+-            tr_cryptoEncrypt (&io->crypto, iovec.iov_len, iovec.iov_base, iovec.iov_base);
+-        } while (!evbuffer_ptr_set (buf, &pos, iovec.iov_len, EVBUFFER_PTR_ADD));
+-    }
++        processBuffer (&io->crypto, buf, offset, size, &tr_cryptoEncrypt);
+ }
+ 
+ void
+@@ -1070,7 +1092,7 @@
+ tr_peerIoWriteBuf (tr_peerIo * io, struct evbuffer * buf, bool isPieceData)
+ {
+     const size_t byteCount = evbuffer_get_length (buf);
+-    maybeEncryptBuffer (io, buf);
++    maybeEncryptBuffer (io, buf, 0, byteCount);
+     evbuffer_add_buffer (io->outbuf, buf);
+     addDatatype (io, byteCount, isPieceData);
+ }
+@@ -1126,6 +1148,16 @@
+ ****
+ ***/
+ 
++static inline void
++maybeDecryptBuffer (tr_peerIo       * io,
++                    struct evbuffer * buf,
++                    size_t            offset,
++                    size_t            size)
++{
++    if (io->encryption_type == PEER_ENCRYPTION_RC4)
++        processBuffer (&io->crypto, buf, offset, size, &tr_cryptoDecrypt);
++}
++
+ void
+ tr_peerIoReadBytesToBuf (tr_peerIo * io, struct evbuffer * inbuf, struct evbuffer * outbuf, size_t byteCount)
+ {
+@@ -1141,17 +1173,7 @@
+     evbuffer_add_buffer (outbuf, tmp);
+     evbuffer_free (tmp);
+ 
+-    /* decrypt if needed */
+-    if (io->encryption_type == PEER_ENCRYPTION_RC4) {
+-        struct evbuffer_ptr pos;
+-        struct evbuffer_iovec iovec;
+-        evbuffer_ptr_set (outbuf, &pos, old_length, EVBUFFER_PTR_SET);
+-        do {
+-            evbuffer_peek (outbuf, byteCount, &pos, &iovec, 1);
+-            tr_cryptoDecrypt (&io->crypto, iovec.iov_len, iovec.iov_base, iovec.iov_base);
+-            byteCount -= iovec.iov_len;
+-        } while (!evbuffer_ptr_set (outbuf, &pos, iovec.iov_len, EVBUFFER_PTR_ADD));
+-    }
++    maybeDecryptBuffer (io, outbuf, old_length, byteCount);
+ }
+ 
+ void

diff --git a/net-p2p/transmission/transmission-2.84-r2.ebuild b/net-p2p/transmission/transmission-2.84-r2.ebuild
new file mode 100644
index 0000000..49e1f80
--- /dev/null
+++ b/net-p2p/transmission/transmission-2.84-r2.ebuild
@@ -0,0 +1,164 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit autotools eutils fdo-mime gnome2-utils qmake-utils systemd user
+
+DESCRIPTION="A Fast, Easy and Free BitTorrent client"
+HOMEPAGE="http://www.transmissionbt.com/"
+SRC_URI="http://download.transmissionbt.com/${PN}/files/${P}.tar.xz"
+
+# 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="ayatana gtk lightweight systemd qt4 qt5 xfs"
+KEYWORDS="~amd64 ~arm ~mips ~ppc ~ppc64 ~x86 ~x86-fbsd ~amd64-linux"
+
+RDEPEND=">=dev-libs/libevent-2.0.10:=
+	dev-libs/openssl:0=
+	net-libs/libnatpmp:=
+	>=net-libs/miniupnpc-1.7:=
+	>=net-misc/curl-7.16.3:=[ssl]
+	sys-libs/zlib:=
+	gtk? (
+		>=dev-libs/dbus-glib-0.100:=
+		>=dev-libs/glib-2.32:2=
+		>=x11-libs/gtk+-3.4:3=
+		ayatana? ( >=dev-libs/libappindicator-0.4.90:3= )
+		)
+	systemd? ( sys-apps/systemd:= )
+	qt4? (
+		dev-qt/qtcore:4=
+		dev-qt/qtgui:4=
+		dev-qt/qtdbus:4=
+		)
+	qt5? (
+		dev-qt/qtcore:5=
+		dev-qt/qtdbus:5=
+		dev-qt/qtgui:5=
+		dev-qt/qtnetwork:5=
+		dev-qt/qtwidgets:5=
+		)"
+DEPEND="${RDEPEND}
+	>=dev-libs/glib-2.32
+	dev-util/intltool
+	sys-devel/gettext
+	virtual/os-headers
+	virtual/pkgconfig
+	xfs? ( sys-fs/xfsprogs )"
+
+REQUIRED_USE="ayatana? ( gtk ) ?? ( qt4 qt5 )"
+
+DOCS="AUTHORS NEWS qt/README.txt"
+
+pkg_setup() {
+	enewgroup ${PN}
+	enewuser ${PN} -1 -1 -1 ${PN}
+}
+
+src_prepare() {
+	sed -i -e '/CFLAGS/s:-ggdb3::' configure.ac || die
+	# Trick to avoid automagic dependency
+	use ayatana || { sed -i -e '/^LIBAPPINDICATOR_MINIMUM/s:=.*:=9999:' configure.ac || die; }
+	# Pass our configuration dir to systemd unit file
+	sed -i '/ExecStart/ s|$| -g /var/lib/transmission/config|' daemon/${PN}-daemon.service || die
+	# http://trac.transmissionbt.com/ticket/4324
+	sed -i -e 's|noinst\(_PROGRAMS = $(TESTS)\)|check\1|' lib${PN}/Makefile.am || die
+	# Fix for broken translations path
+	epatch "${FILESDIR}"/${PN}-2.80-translations-path-fix.patch
+	# http://trac.transmissionbt.com/ticket/5700
+	sed -i -e '1iQMAKE_CXXFLAGS += -std=c++11' qt/qtr.pro || die
+
+	epatch "${FILESDIR}/2.84-miniupnp14.patch"
+	epatch "${FILESDIR}/2.84-libevent-2.1.5.patch"
+
+	epatch_user
+	eautoreconf
+}
+
+src_configure() {
+	export ac_cv_header_xfs_xfs_h=$(usex xfs)
+
+	econf \
+		--enable-external-natpmp \
+		$(use_enable lightweight) \
+		$(use_with systemd systemd-daemon) \
+		$(use_with gtk)
+
+	if use qt4 || use qt5; then
+		pushd qt >/dev/null || die
+		use qt4 && eqmake4 qtr.pro
+		use qt5 && eqmake5 qtr.pro
+		popd >/dev/null || die
+	fi
+}
+
+src_compile() {
+	emake
+
+	if use qt4 || use qt5; then
+		use qt4 && local -x QT_SELECT=4
+		use qt5 && local -x QT_SELECT=5
+		emake -C qt
+		lrelease qt/translations/*.ts || die
+	fi
+}
+
+src_install() {
+	default
+
+	rm -f "${ED}"/usr/share/${PN}/web/LICENSE
+
+	newinitd "${FILESDIR}"/${PN}-daemon.initd.9 ${PN}-daemon
+	newconfd "${FILESDIR}"/${PN}-daemon.confd.4 ${PN}-daemon
+	systemd_dounit daemon/${PN}-daemon.service
+
+	keepdir /var/{lib/${PN}/{config,downloads},log/${PN}}
+	fowners -R ${PN}:${PN} /var/{lib/${PN}/{,config,downloads},log/${PN}}
+
+	if use qt4 || use qt5; then
+		pushd qt >/dev/null || die
+		emake INSTALL_ROOT="${ED}"/usr install
+
+		domenu ${PN}-qt.desktop
+
+		local res
+		for res in 16 22 24 32 48 64 72 96 128 192 256; do
+			doicon -s ${res} icons/hicolor/${res}x${res}/${PN}-qt.png
+		done
+		doicon -s scalable icons/hicolor/scalable/${PN}-qt.svg
+
+		use qt4 && insinto /usr/share/qt4/translations
+		use qt5 && insinto /usr/share/qt5/translations
+		doins translations/*.qm
+		popd >/dev/null || die
+	fi
+}
+
+pkg_preinst() {
+	gnome2_icon_savelist
+}
+
+pkg_postinst() {
+	fdo-mime_desktop_database_update
+	gnome2_icon_cache_update
+
+	elog "If you use ${PN}-daemon, please, set 'rpc-username' and"
+	elog "'rpc-password' (in plain text, ${PN}-daemon will hash it on"
+	elog "start) in settings.json file located at /var/lib/${PN}/config or"
+	elog "any other appropriate config directory."
+	elog
+	elog "Since µTP is enabled by default, ${PN} needs large kernel buffers for"
+	elog "the UDP socket. You can append following lines into /etc/sysctl.conf:"
+	elog " net.core.rmem_max = 4194304"
+	elog " net.core.wmem_max = 1048576"
+	elog "and run sysctl -p"
+}
+
+pkg_postrm() {
+	fdo-mime_desktop_database_update
+	gnome2_icon_cache_update
+}


             reply	other threads:[~2015-10-03 18:57 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-03 18:57 Mike Gilbert [this message]
  -- strict thread matches above, loose matches on Subject: below --
2016-03-04  2:41 [gentoo-commits] repo/gentoo:master commit in: net-p2p/transmission/files/, net-p2p/transmission/ Mike Gilbert
2016-03-16 17:06 Mike Gilbert
2016-04-24  3:27 Mike Gilbert
2018-03-10 18:21 Mike Gilbert
2018-06-20  2:24 Mike Gilbert
2020-07-18 13:19 Mike Gilbert
2022-10-24 15:26 Mike Gilbert
2024-06-10 20:15 Mike Gilbert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1443898635.e9f79718d75e1e2a9b1f5e11073f50b03617fed2.floppym@gentoo \
    --to=floppym@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox