summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-p2p/airdcpp-webclient')
-rw-r--r--net-p2p/airdcpp-webclient/airdcpp-webclient-1.4.1-r1.ebuild70
-rw-r--r--net-p2p/airdcpp-webclient/files/airdcpp-webclient-1.4.1-fix-zlib-errors.patch23
2 files changed, 93 insertions, 0 deletions
diff --git a/net-p2p/airdcpp-webclient/airdcpp-webclient-1.4.1-r1.ebuild b/net-p2p/airdcpp-webclient/airdcpp-webclient-1.4.1-r1.ebuild
new file mode 100644
index 000000000000..8d68bde7f669
--- /dev/null
+++ b/net-p2p/airdcpp-webclient/airdcpp-webclient-1.4.1-r1.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python{2_7,3_4,3_5} pypy{,3} )
+
+inherit cmake-utils user python-any-r1
+
+DESCRIPTION="Cross-platform Direct Connect client"
+HOMEPAGE="https://airdcpp-web.github.io/"
+SRC_URI="https://github.com/airdcpp-web/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+KEYWORDS="~amd64 ~x86"
+LICENSE="GPL-2+"
+SLOT="0"
+IUSE="nat-pmp +tbb +webui"
+
+RDEPEND="
+ app-arch/bzip2
+ dev-cpp/websocketpp
+ dev-libs/boost:=
+ dev-libs/geoip
+ dev-libs/leveldb
+ dev-libs/openssl:0=[-bindist]
+ net-libs/miniupnpc:=
+ sys-libs/zlib
+ virtual/libiconv
+ nat-pmp? ( net-libs/libnatpmp )
+ tbb? ( dev-cpp/tbb )
+"
+DEPEND="
+ virtual/pkgconfig
+ ${PYTHON_DEPS}
+ ${RDEPEND}
+"
+PDEPEND="webui? ( www-apps/airdcpp-webui )"
+
+# Fix errors with zlib >= 1.2.10
+# https://bugs.launchpad.net/dcplusplus/+bug/1656050
+# https://github.com/airdcpp/airdcpp-core/commit/5b48aa785a2d6248971423fd5b7e07af32a6c289
+# https://github.com/airdcpp/airdcpp-core/commit/e80e3d2f6492b5c4f56489338bc2825583526831
+PATCHES=( "${FILESDIR}/${P}-fix-zlib-errors.patch" )
+
+pkg_setup() {
+ python-any-r1_pkg_setup
+ enewgroup airdcppd
+ enewuser airdcppd -1 -1 /var/lib/airdcppd airdcppd
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DINSTALL_WEB_UI=OFF
+ )
+ cmake-utils_src_configure
+}
+
+src_install() {
+ newconfd "${FILESDIR}/airdcppd.confd" airdcppd
+ newinitd "${FILESDIR}/airdcppd.initd" airdcppd
+ keepdir /var/lib/airdcppd
+ fowners airdcppd:airdcppd /var/lib/airdcppd
+ cmake-utils_src_install
+}
+
+pkg_postinst() {
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ elog "Run 'airdcppd --configure' to set up ports and authentication"
+ fi
+}
diff --git a/net-p2p/airdcpp-webclient/files/airdcpp-webclient-1.4.1-fix-zlib-errors.patch b/net-p2p/airdcpp-webclient/files/airdcpp-webclient-1.4.1-fix-zlib-errors.patch
new file mode 100644
index 000000000000..ad5a379c201a
--- /dev/null
+++ b/net-p2p/airdcpp-webclient/files/airdcpp-webclient-1.4.1-fix-zlib-errors.patch
@@ -0,0 +1,23 @@
+diff --git a/airdcpp-core/airdcpp/ZUtils.cpp b/airdcpp-core/airdcpp/ZUtils.cpp
+index 73217f71..8dbbf293 100644
+--- a/airdcpp-core/airdcpp/ZUtils.cpp
++++ b/airdcpp-core/airdcpp/ZUtils.cpp
+@@ -33,7 +33,7 @@ const double ZFilter::MIN_COMPRESSION_LEVEL = 0.9;
+ ZFilter::ZFilter() : totalIn(0), totalOut(0), compressing(true) {
+ memset(&zs, 0, sizeof(zs));
+
+- if(deflateInit(&zs, 3) != Z_OK) {
++ if(deflateInit(&zs, SETTING(MAX_COMPRESSION)) != Z_OK) {
+ throw Exception(STRING(COMPRESSION_ERROR));
+ }
+ }
+@@ -54,7 +54,8 @@ bool ZFilter::operator()(const void* in, size_t& insize, void* out, size_t& outs
+ if(compressing && insize > 0 && outsize > 16 && (totalIn > (64*1024)) && ((static_cast<double>(totalOut) / totalIn) > 0.95)) {
+ zs.avail_in = 0;
+ zs.avail_out = outsize;
+- if(deflateParams(&zs, 0, Z_DEFAULT_STRATEGY) != Z_OK) {
++ auto err = ::deflateParams(&zs, 0, Z_DEFAULT_STRATEGY);
++ if (err == Z_STREAM_ERROR) {
+ throw Exception(STRING(COMPRESSION_ERROR));
+ }
+ zs.avail_in = insize;