1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="7"
inherit autotools desktop flag-o-matic toolchain-funcs
DESCRIPTION="Multi-network P2P application written in Ocaml, with Gtk, web & telnet interface"
HOMEPAGE="http://mldonkey.sourceforge.net/ https://github.com/ygrek/mldonkey"
SRC_URI="https://github.com/ygrek/mldonkey/releases/download/release-${PV//./-}-2/${P}-2.tar.bz2"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~x86"
IUSE="bittorrent doc fasttrack gd gnutella gtk guionly magic +ocamlopt upnp"
REQUIRED_USE="guionly? ( gtk )"
COMMON_DEPEND="dev-lang/perl
dev-ml/camlp4:=
gd? ( media-libs/gd[truetype] )
gtk? (
gnome-base/librsvg
dev-ml/lablgtk:2=[svg]
)
guionly? (
gnome-base/librsvg
dev-ml/lablgtk:2=[svg]
)
magic? ( sys-apps/file )
upnp? (
net-libs/libnatpmp
net-libs/miniupnpc:=
)
!guionly? ( acct-user/p2p )
"
RDEPEND="${COMMON_DEPEND}
|| ( net-analyzer/netcat net-analyzer/openbsd-netcat )"
# Can't yet use newer OCaml
# -unsafe-string usage:
# https://github.com/ygrek/mldonkey/issues/46
DEPEND="${COMMON_DEPEND}
<dev-lang/ocaml-4.10:=[ocamlopt?]
bittorrent? (
|| (
<dev-lang/ocaml-4.06[ocamlopt?]
dev-ml/num
)
)"
RESTRICT="!ocamlopt? ( strip )"
S="${WORKDIR}/${P}-2"
pkg_setup() {
if use gtk; then
echo ""
einfo "If the compile with gui fails, and you have updated Ocaml"
einfo "recently, you may have forgotten that you need to run"
einfo "/usr/portage/dev-lang/ocaml/files/ocaml-rebuild.sh"
einfo "to learn which ebuilds you need to recompile"
einfo "each time you update Ocaml to a different version"
einfo "see the Ocaml ebuild for details"
echo ""
fi
# dev-lang/ocaml creates its own objects but calls gcc for linking, which will
# results in relocations if gcc wants to create a PIE executable
if gcc-specs-pie ; then
append-ldflags -nopie
ewarn "Ocaml generates its own native asm, you're using a PIE compiler"
ewarn "We have appended -nopie to ocaml build options"
ewarn "because linking an executable with pie while the objects are not pic will not work"
fi
}
src_prepare() {
cd config || die
eautoconf
cd .. || die
if ! use ocamlopt; then
sed -i -e "s/ocamlopt/idontwantocamlopt/g" "${S}/config/configure" || die "failed to disable ocamlopt"
fi
default
}
src_configure() {
local myconf=()
if use gtk; then
myconf+=( --enable-gui=newgui2 )
else
myconf+=( --disable-gui )
fi
if use guionly; then
myconf+=( --disable-multinet --disable-donkey )
fi
local my_extra_libs
if use gd; then
my_extra_libs="-lpng"
fi
econf LIBS="${my_extra_libs}"\
--sysconfdir=/etc/mldonkey \
--sharedstatedir=/var/mldonkey \
--localstatedir=/var/mldonkey \
--enable-checks \
--disable-batch \
$(use_enable bittorrent) \
$(use_enable fasttrack) \
$(use_enable gnutella) \
$(use_enable gnutella gnutella2) \
$(use_enable gd) \
$(use_enable magic) \
$(use_enable upnp upnp-natpmp) \
--disable-force-upnp-natpmp \
${myconf[@]}
}
src_compile() {
export OCAMLRUNPARAM="l=256M"
emake -j1 # Upstream bug #48
if ! use guionly; then
emake utils
fi
}
src_install() {
local myext i
use ocamlopt || myext=".byte"
if ! use guionly; then
for i in mlnet mld_hash get_range copysources subconv; do
newbin "${i}${myext}" "${i}"
done
use bittorrent && newbin "make_torrent${myext}" make_torrent
newconfd "${FILESDIR}/mldonkey.confd" mldonkey
fperms 600 /etc/conf.d/mldonkey
newinitd "${FILESDIR}/mldonkey.initd" mldonkey
fi
if use gtk; then
for i in mlgui mlguistarter; do
newbin "${i}${myext}" "${i}"
done
make_desktop_entry mlgui "MLDonkey GUI" mldonkey "Network;P2P"
newicon "${S}"/packages/rpm/mldonkey-icon-48.png "${PN}.png"
fi
if use doc ; then
docompress -x "/usr/share/doc/${PF}/scripts" "/usr/share/doc/${PF}/html"
dodoc distrib/ChangeLog distrib/*.txt docs/*.txt docs/*.tex docs/*.pdf docs/developers/*.{txt,tex}
docinto scripts
dodoc distrib/{kill_mldonkey,mldonkey_command,mldonkey_previewer,make_buginfo}
docinto html
dodoc docs/*.html
docinto html/images
dodoc docs/images/*
fi
}
pkg_postinst() {
if ! use guionly; then
echo
einfo "If you want to start MLDonkey as a system service, use"
einfo "the /etc/init.d/mldonkey script. To control bandwidth, use"
einfo "the 'slow' and 'fast' arguments. Be sure to have a look at"
einfo "/etc/conf.d/mldonkey also."
echo
else
echo
einfo "Simply run mlgui to start the chosen MLDonkey gui."
einfo "It puts its config files into ~/.mldonkey"
fi
}
|