# ChangeLog for net-p2p/mldonkey
-# Copyright 2002-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-p2p/mldonkey/ChangeLog,v 1.134 2006/12/21 06:35:42 compnerd Exp $
+# Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/net-p2p/mldonkey/ChangeLog,v 1.135 2007/01/12 11:03:14 armin76 Exp $
+
+*mldonkey-2.8.2-r1 (12 Jan 2007)
+
+ 12 Jan 2007; Raúl Porcel <armin76@gentoo.org>
+ +files/mldonkey-2.8.2-avoid_dupl_sending.patch, +mldonkey-2.8.2-r1.ebuild:
+ Add new patch, from bug 161169, thanks to spiralvoice <spiralvoice at
+ hotmail dot com>
21 Dec 2006; Saleem Abdulrasool <compnerd@gentoo.org>
-mldonkey-2.5.16-r9.ebuild:
MD5 69a5142bc9dc243dbb8ae121b5dc5505 files/mldonkey-2.7.6-magic.patch 6693
RMD160 96097de4fc7c2f17218da07df13a082f113e9ad1 files/mldonkey-2.7.6-magic.patch 6693
SHA256 f95040c125e41c65381e90c124993a7769a5be0daa0790895f8e503a1d97304a files/mldonkey-2.7.6-magic.patch 6693
+AUX mldonkey-2.8.2-avoid_dupl_sending.patch 6027 RMD160 1264bbc07351ee770a905ebdc2d3f317f3c25529 SHA1 5d02ee1105716158bd889ec3f413a1dd49c7301e SHA256 c40a3f7a50b86cbb141ab242b57bd257e5ed59e06158adefdc7aac9205632567
+MD5 f99565d33e2f1b174129123816070f2f files/mldonkey-2.8.2-avoid_dupl_sending.patch 6027
+RMD160 1264bbc07351ee770a905ebdc2d3f317f3c25529 files/mldonkey-2.8.2-avoid_dupl_sending.patch 6027
+SHA256 c40a3f7a50b86cbb141ab242b57bd257e5ed59e06158adefdc7aac9205632567 files/mldonkey-2.8.2-avoid_dupl_sending.patch 6027
AUX mldonkey-gui.desktop 263 RMD160 c8da2a5e90446cefe75e93969b975093b2d367b0 SHA1 6e350814866f741ef76389c98df34af22751e164 SHA256 8ba9aec085500abbc7fcf53cf34a61e23a5b68cdc8b4b856f4395a5729608eb9
MD5 93e16748ad44af182177978057266aa7 files/mldonkey-gui.desktop 263
RMD160 c8da2a5e90446cefe75e93969b975093b2d367b0 files/mldonkey-gui.desktop 263
MD5 267ffcdbe7693de4ad72ced261524758 mldonkey-2.7.7.ebuild 4467
RMD160 be7e3ed8eb927676b6e3c9f08be7bfe080346977 mldonkey-2.7.7.ebuild 4467
SHA256 53616cee7b3fdbd46b2f5c737fb76546143c4ffe04361b0f1949fc92fbc1efd6 mldonkey-2.7.7.ebuild 4467
+EBUILD mldonkey-2.8.2-r1.ebuild 4709 RMD160 137f92ea3dda2677ad8e93c0baa14c0b14df3279 SHA1 4396d616e76e1f7e1431862c8b7bfc568814ff5a SHA256 4bf5d680fd6d7e05836c0701aadabfc7e5887123bf57e58a753658185fa1f0d7
+MD5 454df0612c6af49a19929c7758c637f0 mldonkey-2.8.2-r1.ebuild 4709
+RMD160 137f92ea3dda2677ad8e93c0baa14c0b14df3279 mldonkey-2.8.2-r1.ebuild 4709
+SHA256 4bf5d680fd6d7e05836c0701aadabfc7e5887123bf57e58a753658185fa1f0d7 mldonkey-2.8.2-r1.ebuild 4709
EBUILD mldonkey-2.8.2.ebuild 4602 RMD160 8a6e64088e2c86fab474089d767985a5f91eeed3 SHA1 45f96cdd8c3d572b1fc72d95d4276a458b26303f SHA256 ba707eb5a085eb4ae7c3d61b58b7a0cec5d2d340d22450922f22f3a4ee79ef31
MD5 35057848aee18f2370eab075a510794f mldonkey-2.8.2.ebuild 4602
RMD160 8a6e64088e2c86fab474089d767985a5f91eeed3 mldonkey-2.8.2.ebuild 4602
SHA256 ba707eb5a085eb4ae7c3d61b58b7a0cec5d2d340d22450922f22f3a4ee79ef31 mldonkey-2.8.2.ebuild 4602
-MISC ChangeLog 21981 RMD160 0760fe0beaf216a19fd83fdffbe3177ebba0631b SHA1 e43b83c4148d62ee259f0815aa790692d735a7a7 SHA256 34d41d64b43d0d53082d5d0c8618f1bf5f5eb8df42fa41c784d17375c271ba41
-MD5 16c54be593c24d64c7ba906a39ed9355 ChangeLog 21981
-RMD160 0760fe0beaf216a19fd83fdffbe3177ebba0631b ChangeLog 21981
-SHA256 34d41d64b43d0d53082d5d0c8618f1bf5f5eb8df42fa41c784d17375c271ba41 ChangeLog 21981
+MISC ChangeLog 22232 RMD160 5d527d1bbb76c33ccaa1f21900aa3864b7af4fde SHA1 dd8e87138f031edd111b3c28894b7267e731c267 SHA256 41ec510abe3ce5b387b78e8b3c6855ad4a2eba2b3ef72b08d0b165bba8542a2b
+MD5 b095310c19f8073f64cd3be04277618c ChangeLog 22232
+RMD160 5d527d1bbb76c33ccaa1f21900aa3864b7af4fde ChangeLog 22232
+SHA256 41ec510abe3ce5b387b78e8b3c6855ad4a2eba2b3ef72b08d0b165bba8542a2b ChangeLog 22232
MISC metadata.xml 242 RMD160 d0edc89382298dee00d3571b62a5f457ef268751 SHA1 25511186cac54f1353a3347f72da7f5d05b9da57 SHA256 b354d71d5efbed0ff97e27564894438b42a8bd8b577007cadc6972dd37d6b5f8
MD5 ee159929f3e247f937fe88bb1919d8bd metadata.xml 242
RMD160 d0edc89382298dee00d3571b62a5f457ef268751 metadata.xml 242
MD5 7a49132cb0108ac570b978eb6000db45 files/digest-mldonkey-2.8.2 250
RMD160 4213be41a9c4db4d112e40396786dcd55f49436a files/digest-mldonkey-2.8.2 250
SHA256 cdb85c503837b524df40852095c65b6fe6211fdc48b803c4da5a92554e6286a1 files/digest-mldonkey-2.8.2 250
+MD5 7a49132cb0108ac570b978eb6000db45 files/digest-mldonkey-2.8.2-r1 250
+RMD160 4213be41a9c4db4d112e40396786dcd55f49436a files/digest-mldonkey-2.8.2-r1 250
+SHA256 cdb85c503837b524df40852095c65b6fe6211fdc48b803c4da5a92554e6286a1 files/digest-mldonkey-2.8.2-r1 250
--- /dev/null
+MD5 123aeb79a3ca91a4943b59f044e98d4a mldonkey-2.8.2.tar.bz2 2652074
+RMD160 ce95184805ac8f4c690e37c75d418b5f7e265f92 mldonkey-2.8.2.tar.bz2 2652074
+SHA256 51efc1c339b8cbafde93f4444f18e4243f41008b1c4107a41602542e9eeaa68e mldonkey-2.8.2.tar.bz2 2652074
--- /dev/null
+diff -a -x Root -x Repository -x Tag -x Entries -x Entries.Log -x .svn -x '*.rej' -x '*.orig' -x '*.cmi' -x '*.cma' -x '*.cmo' -x '*.cmx' -x '*.cmxa' -x '*.a' -x '*.o' -x .depend -x Makefile -x mlnet -x ocamlpp.byte -N -r -u ./src/networks/donkey/donkeyClient.ml ./src/networks/donkey/donkeyClient.ml
+--- ./src/networks/donkey/donkeyClient.ml 2007-01-06 19:15:17.000000000 +0100
++++ ./src/networks/donkey/donkeyClient.ml 2007-01-07 23:15:39.000000000 +0100
+@@ -449,15 +449,17 @@
+
+ let new_chunk up begin_pos end_pos =
+ if begin_pos <> end_pos then
+- let pair = (begin_pos, end_pos) in
+- (match up.up_chunks with
+- [] ->
++ let chunk = (begin_pos, end_pos) in
++ (* the zone requested is already "in the pipe" *)
++ if not (List.mem chunk up.up_flying_chunks) then
++ match up.up_chunks with
++ | [] ->
+ up.up_pos <- begin_pos;
+ up.up_end_chunk <- end_pos;
+- up.up_chunks <- [pair];
+- | chunks ->
+- if not (List.mem pair chunks) then
+- up.up_chunks <- chunks @ [pair])
++ up.up_chunks <- [chunk];
++ | up_chunks ->
++ if not (List.mem chunk up_chunks) then
++ up.up_chunks <- up_chunks @ [chunk]
+
+ let identify_client_brand c =
+ if c.client_brand = Brand_unknown then
+@@ -2055,13 +2057,21 @@
+ set_rtimeout sock !!upload_timeout;
+
+ let up, waiting = match c.client_upload with
+- Some ({ up_file = f } as up) when f == file -> up, up.up_waiting
++ | Some ({ up_file = f } as up) when f == file ->
++ (* zones are received in the order they're sent, so we
++ know that the oldest of the zones "in fly" must have
++ been received when this QueryBlockReq was sent *)
++ (match up.up_flying_chunks with
++ | [] -> ()
++ | _ :: q -> up.up_flying_chunks <- q);
++ up, up.up_waiting
+ | Some old_up ->
+ {
+ up_file = file;
+ up_pos = Int64.zero;
+ up_end_chunk = Int64.zero;
+ up_chunks = [];
++ up_flying_chunks = [];
+ up_waiting = old_up.up_waiting;
+ }, old_up.up_waiting
+ | _ ->
+@@ -2070,6 +2080,7 @@
+ up_pos = Int64.zero;
+ up_end_chunk = Int64.zero;
+ up_chunks = [];
++ up_flying_chunks = [];
+ up_waiting = false;
+ }, false
+ in
+@@ -2157,12 +2168,12 @@
+ let init_client sock c =
+ set_handler sock WRITE_DONE (fun s ->
+ match c.client_upload with
+- None -> ()
+- | Some up ->
++ | Some ({ up_chunks = _ :: _ } as up) ->
+ if not up.up_waiting && !CommonUploads.has_upload = 0 then begin
+ up.up_waiting <- true;
+ CommonUploads.ready_for_upload (as_client c)
+ end
++ | _ -> ()
+ );
+ (*
+ set_handler sock (BASIC_EVENT RTIMEOUT) (fun s ->
+diff -a -x Root -x Repository -x Tag -x Entries -x Entries.Log -x .svn -x '*.rej' -x '*.orig' -x '*.cmi' -x '*.cma' -x '*.cmo' -x '*.cmx' -x '*.cmxa' -x '*.a' -x '*.o' -x .depend -x Makefile -x mlnet -x ocamlpp.byte -N -r -u ./src/networks/donkey/donkeyFiles.ml ./src/networks/donkey/donkeyFiles.ml
+--- ./src/networks/donkey/donkeyFiles.ml 2007-01-06 19:15:17.000000000 +0100
++++ ./src/networks/donkey/donkeyFiles.ml 2007-01-07 23:16:18.000000000 +0100
+@@ -127,7 +127,7 @@
+ (* lprintf "send_client_block\n"; *)
+ if per_client > 0 && CommonUploads.can_write_len sock max_msg_size then
+ match c.client_upload with
+- | Some ({ up_chunks = _ :: chunks } as up) ->
++ | Some ({ up_chunks = current_chunk :: chunks } as up) ->
+ if up.up_file.file_shared = None then begin
+ (* Is there a message to warn that a file is not shared anymore ? *)
+ c.client_upload <- None;
+@@ -138,16 +138,17 @@
+ if max_len <= msg_block_size_int then
+ (* last block from chunk *)
+ begin
++ send_small_block c sock up.up_file up.up_pos max_len;
+ if !verbose_upload then
+ lprintf_nl "End of chunk (%d) %Ld %s" max_len up.up_end_chunk (file_best_name up.up_file);
+- send_small_block c sock up.up_file up.up_pos max_len;
++ up.up_flying_chunks <- up.up_flying_chunks @ [current_chunk];
+ up.up_chunks <- chunks;
+ let per_client = per_client - max_len in
+ match chunks with
+- [] ->
++ | [] ->
+ if !verbose_upload then
+- lprintf_nl "NO CHUNKS";
+- c.client_upload <- None;
++ lprintf_nl "NO MORE CHUNKS";
++ up.up_waiting <- false;
+ | (begin_pos, end_pos) :: _ ->
+ up.up_pos <- begin_pos;
+ up.up_end_chunk <- end_pos;
+@@ -172,10 +173,10 @@
+ let size = min max_msg_size size in
+ send_client_block c sock size;
+ (match c.client_upload with
+- None -> ()
+- | Some up ->
++ | Some ({ up_chunks = _ :: _ }) ->
+ if !CommonUploads.has_upload = 0 then
+ CommonUploads.ready_for_upload (as_client c)
++ | _ -> ()
+ )
+ )
+ let _ =
+diff -a -x Root -x Repository -x Tag -x Entries -x Entries.Log -x .svn -x '*.rej' -x '*.orig' -x '*.cmi' -x '*.cma' -x '*.cmo' -x '*.cmx' -x '*.cmxa' -x '*.a' -x '*.o' -x .depend -x Makefile -x mlnet -x ocamlpp.byte -N -r -u ./src/networks/donkey/donkeyTypes.ml ./src/networks/donkey/donkeyTypes.ml
+--- ./src/networks/donkey/donkeyTypes.ml 2007-01-06 19:15:17.000000000 +0100
++++ ./src/networks/donkey/donkeyTypes.ml 2007-01-07 23:15:39.000000000 +0100
+@@ -618,6 +618,8 @@
+ mutable up_pos : int64;
+ mutable up_end_chunk : int64;
+ mutable up_chunks : (int64 * int64) list;
++ (* zones sent but not yet received by other peer, oldest first *)
++ mutable up_flying_chunks : (int64 * int64) list;
+ mutable up_waiting : bool;
+ }
+
--- /dev/null
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-p2p/mldonkey/mldonkey-2.8.2-r1.ebuild,v 1.1 2007/01/12 11:03:14 armin76 Exp $
+
+inherit flag-o-matic
+
+IUSE="batch doc fasttrack gd gnutella gtk guionly magic"
+
+DESCRIPTION="MLDonkey is a multi-network P2P application written in Ocaml, coming with its own Gtk GUI, web and telnet interface."
+HOMEPAGE="http://www.nongnu.org/mldonkey/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~sparc ~x86"
+RESTRICT="nomirror"
+
+RDEPEND="dev-lang/perl
+ guionly? ( >=gnome-base/librsvg-2.4.0
+ >=dev-ml/lablgtk-2.6 )
+ gtk? ( >=gnome-base/librsvg-2.4.0
+ >=dev-ml/lablgtk-2.6 )
+ gd? ( >=media-libs/gd-2.0.28 )
+ magic? ( sys-apps/file )"
+
+DEPEND="${RDEPEND}
+ >=sys-devel/autoconf-2.58
+ !batch? ( >=dev-lang/ocaml-3.08.3 )
+ batch? ( net-misc/wget )"
+
+MLUSER="p2p"
+
+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
+
+ if use gtk && !(built_with_use dev-ml/lablgtk svg); then
+ eerror "dev-ml/lablgtk must be built with the 'svg' USE flag to use the gtk gui"
+ die "Recompile dev-ml/lablgtk with enabled svg USE flag"
+ fi
+
+ if use gd && !(built_with_use media-libs/gd truetype); then
+ eerror "media-libs/gd must be built with 'truetype' to compile"
+ eerror "MLDonkey with gd support"
+ die "Recompile media-libs/gd with enabled truetype USE flag"
+ fi
+}
+
+src_unpack() {
+ unpack ${A} && cd "${S}"
+
+ # Avoid upload unneeded data to eMule clients, bug #161169
+ epatch "${FILESDIR}/${P}-avoid_dupl_sending.patch"
+
+ export WANT_AUTOCONF=2.5
+ cd "${S}"/config
+ autoconf
+ cd "${S}"
+}
+
+src_compile() {
+ append-ldflags -Wl,-z,noexecstack
+
+ # the dirs are not (yet) used, but it doesn't hurt to specify them anyway
+
+ # batch Automatically download and build OCAML-3.08.3 for compiling itself
+ # onlygui Disable all nets support, build only chosen GUI
+
+ if use gtk || use guionly; then
+ myconf="--enable-gui=newgui2"
+ else
+ myconf="--disable-gui"
+ fi
+
+ if use guionly; then
+ myconf="${myconf} --disable-multinet --disable-donkey"
+ fi
+
+ cd ${S}
+ econf \
+ --sysconfdir=/etc/mldonkey \
+ --sharedstatedir=/var/mldonkey \
+ --localstatedir=/var/mldonkey \
+ --enable-checks \
+ $(use_enable fasttrack) \
+ $(use_enable gnutella) \
+ $(use_enable gnutella gnutella2) \
+ $(use_enable batch) \
+ $(use_enable gd) \
+ $(use_enable magic) \
+ ${myconf} || die "econf failed"
+
+ export OCAMLRUNPARAM="l=256M"
+ emake || die "emake failed"
+
+ if ! use guionly; then
+ emake utils || die "emake utils failed"
+ fi;
+}
+
+src_install() {
+ if ! use guionly; then
+ dobin mlnet mld_hash get_range copysources make_torrent subconv
+ dobin ${FILESDIR}/mldonkey
+
+ insinto /etc/conf.d; newins ${FILESDIR}/mldonkey.confd mldonkey
+ exeinto /etc/init.d; newexe "${FILESDIR}/mldonkey.initd-2.8" mldonkey
+ fi
+
+ if use gtk; then
+ dobin mlgui mlguistarter
+ domenu ${FILESDIR}/${PN}-gui.desktop
+ doicon ${FILESDIR}/${PN}.png
+ fi
+
+ if use doc ; then
+ cd ${S}/distrib
+ dodoc ChangeLog *.txt
+ dohtml *.html
+
+ insinto /usr/share/doc/${PF}/scripts
+ doins kill_mldonkey mldonkey_command mldonkey_previewer make_buginfo
+
+ cd ${S}/docs
+ dodoc *.txt *.tex *.pdf
+ dohtml *.html
+
+ cd ${S}/docs/developers
+ dodoc *.txt *.tex
+
+ cd ${S}/docs/images
+ insinto /usr/share/doc/${PF}/html/images
+ doins *
+ fi
+}
+
+pkg_preinst() {
+ if ! use guionly; then
+ enewuser ${MLUSER} -1 /bin/bash /home/p2p users
+ fi
+}
+
+pkg_postinst() {
+ if ! use guionly; then
+ echo
+ einfo "Running \`mldonkey' will start the server inside ~/.mldonkey/"
+ einfo "If you want to start MLDonkey in a particular working directory,"
+ einfo "use the \`mlnet' command."
+ 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
+ einfo "Attention: 2.6 has changed the inifiles structure, so downgrading"
+ einfo "will be problematic."
+ einfo "User settings (admin) are transferred to users.ini from "
+ einfo "downloads.ini"
+ einfo "Old ini files are automatically converted to the new format"
+ echo
+ else
+ echo
+ einfo "Simply run mlgui to start the chosen MLDonkey gui."
+ einfo "It puts its config files into ~/.mldonkey"
+ fi
+}