Add new patch, from bug 161169, thanks to spiralvoice <spiralvoice at hotmail dot...
authorRaúl Porcel <armin76@gentoo.org>
Fri, 12 Jan 2007 11:03:14 +0000 (11:03 +0000)
committerRaúl Porcel <armin76@gentoo.org>
Fri, 12 Jan 2007 11:03:14 +0000 (11:03 +0000)
Package-Manager: portage-2.1.1-r2

net-p2p/mldonkey/ChangeLog
net-p2p/mldonkey/Manifest
net-p2p/mldonkey/files/digest-mldonkey-2.8.2-r1 [new file with mode: 0644]
net-p2p/mldonkey/files/mldonkey-2.8.2-avoid_dupl_sending.patch [new file with mode: 0644]
net-p2p/mldonkey/mldonkey-2.8.2-r1.ebuild [new file with mode: 0644]

index b587affc0d48a19128f9dc7cacbcc9ab6879a1f8..d9f5467b000d5fc2028d7d76442b311fba714caf 100644 (file)
@@ -1,6 +1,13 @@
 # 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:
index 59012e8cc11cc313022660f913cacb5e25a895c3..c87682e9cee04891f6fa206cd01c4e83b340f5e9 100644 (file)
@@ -14,6 +14,10 @@ AUX mldonkey-2.7.6-magic.patch 6693 RMD160 96097de4fc7c2f17218da07df13a082f113e9
 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
@@ -56,14 +60,18 @@ EBUILD mldonkey-2.7.7.ebuild 4467 RMD160 be7e3ed8eb927676b6e3c9f08be7bfe08034697
 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
@@ -83,3 +91,6 @@ SHA256 4259da6fad3ea758293a8795cbab96ebd293ac70b2bcca938385cb24f37343b7 files/di
 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
diff --git a/net-p2p/mldonkey/files/digest-mldonkey-2.8.2-r1 b/net-p2p/mldonkey/files/digest-mldonkey-2.8.2-r1
new file mode 100644 (file)
index 0000000..04ea99d
--- /dev/null
@@ -0,0 +1,3 @@
+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
diff --git a/net-p2p/mldonkey/files/mldonkey-2.8.2-avoid_dupl_sending.patch b/net-p2p/mldonkey/files/mldonkey-2.8.2-avoid_dupl_sending.patch
new file mode 100644 (file)
index 0000000..9b0968d
--- /dev/null
@@ -0,0 +1,133 @@
+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;
+   }
diff --git a/net-p2p/mldonkey/mldonkey-2.8.2-r1.ebuild b/net-p2p/mldonkey/mldonkey-2.8.2-r1.ebuild
new file mode 100644 (file)
index 0000000..007dda5
--- /dev/null
@@ -0,0 +1,173 @@
+# 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
+}