Skip to content

Commit

Permalink
net-p2p/amule: wire up tests
Browse files Browse the repository at this point in the history
See: amule-project/amule#342
See: amule-project/amule#368
Bug: https://bugs.gentoo.org/841296
Signed-off-by: Matoro Mahri <matoro_gentoo@matoro.tk>
Closes: gentoo#34307
Signed-off-by: Sam James <sam@gentoo.org>
  • Loading branch information
matoro authored and flint2 committed Dec 19, 2023
1 parent a0ea178 commit 2b3907d
Show file tree
Hide file tree
Showing 3 changed files with 217 additions and 0 deletions.
159 changes: 159 additions & 0 deletions net-p2p/amule/amule-2.3.3-r2.ebuild
Original file line number Diff line number Diff line change
@@ -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
}
6 changes: 6 additions & 0 deletions net-p2p/amule/amule-9999.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand All @@ -70,6 +71,7 @@ src_prepare() {
}

src_configure() {
use debug || append-cppflags -DwxDEBUG_LEVEL=0
append-cxxflags -std=gnu++14

local myconf=(
Expand Down Expand Up @@ -105,6 +107,10 @@ src_configure() {
econf "${myconf[@]}"
}

src_test() {
emake check
}

src_install() {
default

Expand Down
52 changes: 52 additions & 0 deletions net-p2p/amule/files/amule-2.3.3-backport-pr368.patch
Original file line number Diff line number Diff line change
@@ -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));
}

0 comments on commit 2b3907d

Please sign in to comment.