summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net-p2p/amule/amule-2.3.3-r2.ebuild159
-rw-r--r--net-p2p/amule/amule-9999.ebuild6
-rw-r--r--net-p2p/amule/files/amule-2.3.3-backport-pr368.patch52
3 files changed, 217 insertions, 0 deletions
diff --git a/net-p2p/amule/amule-2.3.3-r2.ebuild b/net-p2p/amule/amule-2.3.3-r2.ebuild
new file mode 100644
index 000000000000..f4b6d406428c
--- /dev/null
+++ b/net-p2p/amule/amule-2.3.3-r2.ebuild
@@ -0,0 +1,159 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+WX_GTK_VER="3.0-gtk3"
+
+inherit autotools flag-o-matic wxwidgets xdg-utils
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/amule-project/amule"
+ inherit git-r3
+else
+ MY_P="${PN/m/M}-${PV}"
+ SRC_URI="https://download.sourceforge.net/${PN}/${MY_P}.tar.xz"
+ S="${WORKDIR}/${MY_P}"
+ KEYWORDS="~alpha ~amd64 ~arm ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+DESCRIPTION="aMule, the all-platform eMule p2p client"
+HOMEPAGE="http://www.amule.org/"
+
+LICENSE="GPL-2+"
+SLOT="0"
+IUSE="daemon debug geoip nls remote stats upnp +X"
+
+RDEPEND="
+ dev-libs/boost:=
+ dev-libs/crypto++:=
+ sys-libs/binutils-libs:0=
+ sys-libs/readline:0=
+ sys-libs/zlib
+ >=x11-libs/wxGTK-3.0.4:${WX_GTK_VER}[X?]
+ daemon? ( acct-user/amule )
+ geoip? ( dev-libs/geoip )
+ nls? ( virtual/libintl )
+ remote? (
+ acct-user/amule
+ media-libs/libpng:0=
+ )
+ stats? ( media-libs/gd:=[jpeg,png] )
+ upnp? ( net-libs/libupnp:0 )
+"
+DEPEND="${RDEPEND}
+ X? ( dev-util/desktop-file-utils )
+"
+BDEPEND="
+ virtual/pkgconfig
+ >=sys-devel/boost-m4-0.4_p20221019
+ nls? ( sys-devel/gettext )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2.3.2-disable-version-check.patch"
+ "${FILESDIR}/${PN}-2.3.3-fix-exception.patch"
+ "${FILESDIR}/${P}-autoconf-2.70.patch"
+ "${FILESDIR}/${PN}-2.3.3-backport-pr368.patch"
+)
+
+pkg_setup() {
+ setup-wxwidgets
+}
+
+src_prepare() {
+ default
+ rm m4/boost.m4 || die
+
+ if [[ ${PV} == 9999 ]]; then
+ ./autogen.sh || die
+ else
+ eautoreconf
+ fi
+}
+
+src_configure() {
+ use debug || append-cppflags -DwxDEBUG_LEVEL=0
+ append-cxxflags -std=gnu++14
+
+ local myconf=(
+ --with-denoise-level=0
+ --with-wx-config="${WX_CONFIG}"
+ --enable-amulecmd
+ --with-boost
+ $(use_enable debug)
+ $(use_enable daemon amule-daemon)
+ $(use_enable geoip)
+ $(use_enable nls)
+ $(use_enable remote webserver)
+ $(use_enable stats cas)
+ $(use_enable stats alcc)
+ $(use_enable upnp)
+ )
+
+ if use X; then
+ myconf+=(
+ $(use_enable remote amule-gui)
+ $(use_enable stats alc)
+ $(use_enable stats wxcas)
+ )
+ else
+ myconf+=(
+ --disable-monolithic
+ --disable-amule-gui
+ --disable-alc
+ --disable-wxcas
+ )
+ fi
+
+ econf "${myconf[@]}"
+}
+
+src_test() {
+ emake check
+}
+
+src_install() {
+ default
+
+ if use daemon; then
+ newconfd "${FILESDIR}"/amuled.confd-r1 amuled
+ newinitd "${FILESDIR}"/amuled.initd amuled
+ fi
+ if use remote; then
+ newconfd "${FILESDIR}"/amuleweb.confd-r1 amuleweb
+ newinitd "${FILESDIR}"/amuleweb.initd amuleweb
+ fi
+
+ if use daemon || use remote; then
+ keepdir /var/lib/${PN}
+ fowners amule:amule /var/lib/${PN}
+ fperms 0750 /var/lib/${PN}
+ fi
+}
+
+pkg_postinst() {
+ local ver
+
+ if use daemon || use remote; then
+ for ver in ${REPLACING_VERSIONS}; do
+ if ver_test ${ver} -lt "2.3.2-r4"; then
+ elog "Default user under which amuled and amuleweb daemons are started"
+ elog "have been changed from p2p to amule. Default home directory have been"
+ elog "changed as well."
+ echo
+ elog "If you want to preserve old download/share location, you can create"
+ elog "symlink /var/lib/amule/.aMule pointing to the old location and adjust"
+ elog "files ownership *or* restore AMULEUSER and AMULEHOME variables in"
+ elog "/etc/conf.d/{amuled,amuleweb} to the old values."
+
+ break
+ fi
+ done
+ fi
+
+ use X && xdg_desktop_database_update
+}
+
+pkg_postrm() {
+ use X && xdg_desktop_database_update
+}
diff --git a/net-p2p/amule/amule-9999.ebuild b/net-p2p/amule/amule-9999.ebuild
index 1dc6203a5561..c1743eff2384 100644
--- a/net-p2p/amule/amule-9999.ebuild
+++ b/net-p2p/amule/amule-9999.ebuild
@@ -52,6 +52,7 @@ BDEPEND="
PATCHES=(
"${FILESDIR}/${PN}-2.3.2-disable-version-check.patch"
"${FILESDIR}/${PN}-2.3.3-fix-exception.patch"
+ "${FILESDIR}/${PN}-2.3.3-backport-pr368.patch"
)
pkg_setup() {
@@ -70,6 +71,7 @@ src_prepare() {
}
src_configure() {
+ use debug || append-cppflags -DwxDEBUG_LEVEL=0
append-cxxflags -std=gnu++14
local myconf=(
@@ -105,6 +107,10 @@ src_configure() {
econf "${myconf[@]}"
}
+src_test() {
+ emake check
+}
+
src_install() {
default
diff --git a/net-p2p/amule/files/amule-2.3.3-backport-pr368.patch b/net-p2p/amule/files/amule-2.3.3-backport-pr368.patch
new file mode 100644
index 000000000000..9235276943b8
--- /dev/null
+++ b/net-p2p/amule/files/amule-2.3.3-backport-pr368.patch
@@ -0,0 +1,52 @@
+https://bugs.gentoo.org/841296
+https://github.com/amule-project/amule/issues/342
+https://github.com/amule-project/amule/pull/368
+
+commit 1c57ce9c688d26d95fe8f9d7b7590f4670956749
+Author: matoro <matoro@users.noreply.github.com>
+Date: Thu Dec 14 00:28:50 2023 -0500
+
+ SafeFile: do endian-swap on float tag values
+
+ There are comments noting that writing raw float values may not be
+ endian-correct and indeed it is not. WX does not provide functions for
+ endian-swapping floats, but since amule explicitly uses exclusively
+ single-precision (32-bit) floats, just cast it into a uint32_t for the
+ swapping.
+
+ This is a no-op on little-endian.
+
+diff --git a/src/SafeFile.cpp b/src/SafeFile.cpp
+index 30f9a7f23..0d9c4f8e7 100644
+--- a/src/SafeFile.cpp
++++ b/src/SafeFile.cpp
+@@ -31,6 +31,7 @@
+ #include <common/Format.h> // Needed for CFormat
+ #include "CompilerSpecific.h" // Needed for __FUNCTION__
+
++#include <cstring> // For std::memcpy
+
+ #define CHECK_BOM(size, x) ((size >= 3) && (x[0] == (char)0xEF) && (x[1] == (char)0xBB) && (x[2] == (char)0xBF))
+
+@@ -189,6 +190,10 @@ float CFileDataIO::ReadFloat() const
+ {
+ float retVal;
+ Read(&retVal, sizeof(float));
++ uint32_t toswap{};
++ std::memcpy(&toswap, &retVal, sizeof(toswap));
++ toswap = ENDIAN_SWAP_32(toswap);
++ std::memcpy(&retVal, &toswap, sizeof(retVal));
+ return retVal;
+ }
+
+@@ -306,6 +311,10 @@ void CFileDataIO::WriteHash(const CMD4Hash& value)
+
+ void CFileDataIO::WriteFloat(float value)
+ {
++ uint32_t toswap{};
++ std::memcpy(&toswap, &value, sizeof(toswap));
++ toswap = ENDIAN_SWAP_32(toswap);
++ std::memcpy(&value, &toswap, sizeof(value));
+ Write(&value, sizeof(float));
+ }
+