HowTo Compile In Gentoo
English version updated: 01.08.2009 - Newest Gentoo Version are now 2.2.5.
Contents
Introduction
Gentoo is known for choices. As such, aMule comes in a variety of versions. This article will cover the installation of the last PORTAGE version, and of aMule SVN through a personal overlay.
Methods of Installation
amule-2.2.5.ebuild
This ebuild matches the 2.2.5 stable aMule release, it is available 28.08.2009 in portage.
Dependencies: >=x11-libs/wxGTK-2.8*; >=dev-libs/crypto++-5.5.2; >=sys-libs/zlib-1.2.1
Conditional dependencies: >=dev-libs/geoip for geoip support; >=net-libs/libupnp for Intel UPnP stack support; >=media-libs/libpng-1.2.0 for remote support; >=media-libs/gd-2.0.26 for unicode support and or statistic reporting.
Installation instructions
amule-2.2.5.ebuild
1. Show what will be done:
emerge -pv amule
2. Adjust your USE flags for amule into /etc/portage/package.use
3. Emerge amule:
emerge -a amule
amule SVN
It is no ebuild for the current aMule SVN so we need to add one in portage. For that, we will make use of a personal portage overlay. If you don't already have one, just follow this HOWTO article: Overlay: Creating_a_local_overlay
We will also follow the naming scheme of portage. SVN ebuild from a SVN tarball are not named as package_name-SVN but as package_name-version_date_of_the_tarball. That is to distinguish them from real SVN ebuilds (the so called live ebuilds) named as package_name-9999 and using keywords="". As aMule is using the revision to name the tarball, we will use it for the version_date_of_the_tarball.
1. Define PORTDIR_OVERLAY. Open up /etc/make.conf with your favourite text editor and define the PORTDIR_OVERLAY variable. We will use:
PORTDIR_OVERLAY="/usr/local/portage"
2. Create overlay for amule-svn:
mkdir -p /usr/local/net-p2p/amule
3. Add to package.keywords:
echo "net-p2p/amule ~x86" >> /etc/portage/package.keywords
4. Copy the following ebuild into {PORTDIR_OVERLAY}/net-p2p/amule/amule-9732.ebuild
I use here the tarball from 31 July 2009 revision 9732 that was working fine for me, but you can change the revision like you want. Be careful to choose a version number available on the tarballs page, otherwise your ebuild will fail.
# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ EAPI="2" inherit eutils flag-o-matic kde4-base wxwidgets MY_P="aMule-SVN-r${PV}" S="${WORKDIR}"/${MY_P} DESCRIPTION="aMule, the all-platform eMule p2p client" HOMEPAGE="http://www.amule.org/" SRC_URI="http://amule.sourceforge.net/tarballs/${MY_P}.tar.bz2" LICENSE="GPL-2" SLOT="0" KEYWORDS="~alpha ~amd64 ~hppa ~ppc ~ppc64 ~sparc ~x86" IUSE="daemon debug ed2k fileview geoip gtk nls plasma remote static stats unicode upnp xchat" RESTRICT="nomirror" DEPEND="=x11-libs/wxGTK-2.8.12* >=dev-libs/crypto++-5.5.2 >=sys-libs/zlib-1.2.1 stats? ( >=media-libs/gd-2.0.26[jpeg] ) geoip? ( dev-libs/geoip ) plasma? ( kde-base/kdelibs ) upnp? ( >=net-libs/libupnp-1.6.6 ) remote? ( >=media-libs/libpng-1.2.0 unicode? ( >=media-libs/gd-2.0.26 ) )" RDEPEND="$DEPEND xchat? ( net-irc/xchat[perl] )" pkg_setup() { if ! use gtk && ! use remote && ! use daemon; then eerror "" eerror "You have to specify at least one of gtk, remote or daemon" eerror "USE flag to build amule." eerror "" die "Invalid USE flag set" fi if use stats && ! use gtk; then einfo "Note: You would need both the gtk and stats USE flags" einfo "to compile aMule Statistics GUI." einfo "I will now compile console versions only." fi } pkg_preinst() { if use daemon || use remote; then enewgroup p2p enewuser p2p -1 -1 /home/p2p p2p fi } src_configure() { local myconf WX_GTK_VER="2.8" if use gtk; then einfo "wxGTK with gtk support will be used" need-wxwidgets unicode else einfo "wxGTK without X support will be used" need-wxwidgets base fi if use gtk ; then use stats && myconf="${myconf} --enable-wxcas --enable-alc" use remote && myconf="${myconf} --enable-amule-gui" else myconf=" --disable-monolithic --disable-amule-gui --disable-wxcas --disable-alc" fi econf \ --with-wx-config=${WX_CONFIG} \ --enable-amulecmd \ $(use_enable debug) \ $(use_enable !debug optimize) \ $(use_enable daemon amule-daemon) \ $(use_enable ed2k) \ $(use_enable fileview) \ $(use_enable geoip) \ $(use_enable nls) \ $(use_enable plasma plasmamule ) \ $(use_enable remote webserver) \ $(use_enable static) \ $(use_enable stats cas) \ $(use_enable stats alcc) \ $(use_enable upnp) \ $(use_enable xchat xas) \ ${myconf} || die } src_install() { emake DESTDIR="${D}" install || die if use daemon; then newconfd "${FILESDIR}"/amuled.confd amuled newinitd "${FILESDIR}"/amuled.initd amuled fi if use remote; then newconfd "${FILESDIR}"/amuleweb.confd amuleweb newinitd "${FILESDIR}"/amuleweb.initd amuleweb fi }
5. Change directory:
cd /usr/local/portage/net-p2p/amule/
6. Copy the files directory from PORTAGE:
cp -r /usr/portage/net-p2p/amule/files files
7. Remove the unneeded files:
rm files/*.patch
8. Digest the ebuild:
ebuild amule-9732.ebuild digest
9. As you can see, this ebuild depend on x11-libs/wxGTK-2.8.12 which is not yet in portage. You can find it at Gentoo's Bugzilla – Bug 363319. What you have to do is to dpwnload the ebuild from bugzilla and put it into the x11-libs/wxGTK directory of your overlay. You must also copy the files directory from PORTAGE and digest the ebuild:
cd /usr/local/portage/x11-libs/wxGTK cp -r /usr/portage/x11-libs/wxGTK/files files ebuild wxGTK-2.8.12.ebuild digest
10. Review installation flags:
emerge amule -pv
11. Modify /etc/portage/package.use to suit your needs (please note that debug is enabled regardless of USE flag):
net-p2p/amule -amuled -debug geoip gtk nls -remote -stats unicode
This would install amule without deamon and remote support. To activate deamons and remote options, leave out the '-' like this:
net-p2p/amule amuled -debug geoip gtk nls remote -stats unicode
As aMule needs unicode support or it won't compile, you might also want to add a line to enable unicode in x11-libs/wxGTK
x11-libs/wxGTK unicode
12. Install aMule SVN:
emerge amule
PLEASE do emerge amule -pv before installing to determine how you want to compile aMule.
13. As other programs can depend on wxGTK, it can be a good opportunity to update your system as usual. emerge --sync, and so on as explained into the handbook.
Possible crash
On my ~amd64 system, I get a crash at amule startup with recent libcrypto++ versions. To avoid it, mask it into /etc/portage/package.mask:
echo =dev-libs/crypto++-5.6.0 >> /etc/portage/package.mask echo =dev-libs/crypto++-5.6.0-r1 >> /etc/portage/package.mask echo dev-libs/crypto++-5.6.1 >> /etc/portage/package.mask emerge -a crypto++ amule revdep-rebuild
Revdep-rebuild didn't find anything into my system, but it is safer to run it anyway.
Another solution is to use the ebuild and the patch in bug 322713 for merging the last version of libcrypto++.
Update: It look like to be fixed. If it should append again with the same crypto++ version, please ask to reopen this bug.