dev-vcs/darcs-2.4.4: make a -r1 that attempts to fix two issues
authorLennart Kolmodin <kolmodin@gentoo.org>
Mon, 28 Jun 2010 18:53:32 +0000 (18:53 +0000)
committerLennart Kolmodin <kolmodin@gentoo.org>
Mon, 28 Jun 2010 18:53:32 +0000 (18:53 +0000)
Package-Manager: portage-2.1.8.3/cvs/Linux x86_64

dev-vcs/darcs/ChangeLog
dev-vcs/darcs/Manifest
dev-vcs/darcs/darcs-2.4.4-r1.ebuild [new file with mode: 0644]
dev-vcs/darcs/files/darcs-2.4.4-issue1770-curl_multi_perform-no-running-handles.patch [new file with mode: 0644]

index af6b76b7d9ee30092c5d116ceab663d4ff5e9e4c..d01487395f17d3595f740efac9542cd12836b8e3 100644 (file)
@@ -1,6 +1,19 @@
 # ChangeLog for dev-vcs/darcs
 # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-vcs/darcs/ChangeLog,v 1.5 2010/06/17 06:33:35 kolmodin Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-vcs/darcs/ChangeLog,v 1.6 2010/06/28 18:53:32 kolmodin Exp $
+
+*darcs-2.4.4-r1 (28 Jun 2010)
+
+  28 Jun 2010; Lennart Kolmodin <kolmodin@gentoo.org>
+  +darcs-2.4.4-r1.ebuild,
+  +files/darcs-2.4.4-issue1770-curl_multi_perform-no-running-handles.patch:
+  Attempt to solve issue1770 ( http://bugs.darcs.net/issue1770 ) which stops
+  users from fetching the Gentoo Haskell overlay. The patch is taken from
+  darcs HEAD and is written by Dmitry Kurochkin
+  <dmitry.kurochkin@gmail.com>.
+
+  Also, remove test case that required hlint. If the user would have a
+  recent version of hlint installed it would break the tests. Fix by slyfox.
 
   16 Jun 2010; Lennart Kolmodin <kolmodin@gentoo.org>
   -darcs-1.1.0_pre1.ebuild, darcs-2.1.0-r1.ebuild, darcs-2.2.1.ebuild,
index 31edfedae8a3d512a7ce9218b529a71ecdfb6bb3..259537501b4081fede1d25aab67f86ae04300cfd 100644 (file)
@@ -5,6 +5,7 @@ AUX darcs-1.0.8-ghc66.patch 3057 RMD160 0eb34da97317b5ae24800ae6b026d3a8acc990b1
 AUX darcs-1.0.9-bashcomp.patch 510 RMD160 73888c758f4a2ac93b83229115d23599162c0b15 SHA1 1abf5c0477169eb0109a0dd7ecfb2c38dfee15ff SHA256 39a7e531f68ee4b71958d52557e6c6ace0c7717d546dcddccc4a5e7fb5daeff6
 AUX darcs-1.1.0pre1-ghc68.patch 1548 RMD160 bde8493cae0dd2fa9e21367ec5322252780209d5 SHA1 9f64935e8b4a44cab474352a0b8090192b3052e0 SHA256 252199c644163c24c09504c72a34cf750d065fab322a2c17bf4016d83b1b826e
 AUX darcs-2.0.2-add-dummy-base-dependency.diff 520 RMD160 b7206ef051d9be2df94d0c331dd029de6358106c SHA1 5c3dc86bcadfa51b452d0532d9cd45efec71a3a7 SHA256 a93ffcb918456fdb1514b02e7d1a3fc9498f8505f11d5f1d03cf9acd189a78b2
+AUX darcs-2.4.4-issue1770-curl_multi_perform-no-running-handles.patch 1617 RMD160 6cd0fdcae04518cb8d701f0db89ce7cad4a51c61 SHA1 10cd5b15ffcb9678e0fc8700b9059244a12bf06a SHA256 9716fad28813bae04e06c8a039c9e5cb094cbd0c4907855142e14c49334d387e
 DIST darcs-1.0.9.tar.gz 1059363 RMD160 3a971f778e4343d90e88f1ba8815ea3c880ac2a1 SHA1 b2d2238c01d530796c29db4b46fd4fd9c21be9b6 SHA256 f848a63363ad72d3217b1eb469c267c00ea6085a491172d385ab6eda210b30dc
 DIST darcs-2.0.2.tar.gz 1800653 RMD160 e401bd2ab64e2df4c654bdc03355ce215a053195 SHA1 75a186b906ac8bbc1144c5124c215e4c57c06222 SHA256 164c87bb7e41d1e81c4423432804b634862269291fa495f25e7f67f1b95bf49e
 DIST darcs-2.1.0.tar.gz 1851395 RMD160 4f0073b7a879f5e357601f92320b902098258140 SHA1 738a063e67b90f5f831b7164969f285692250cee SHA256 d5a63e62bceb45905163d508c6b25158dab6aca367015566d8c539ec37107ab4
@@ -14,13 +15,14 @@ EBUILD darcs-1.0.9.ebuild 3103 RMD160 abf5175636beace77fc07ef40caa13c45b4dd804 S
 EBUILD darcs-2.0.2.ebuild 3227 RMD160 665eb7b84866fce8a99fd0c93fb4ab3d56c2db78 SHA1 b850ecc4544c59092d81a9d95daebef51af2a17f SHA256 02777ab0a8e9ccf21b1b466b7090db02b66f5da3907ca8cabd8933ffa9ada1af
 EBUILD darcs-2.1.0-r1.ebuild 2781 RMD160 f99d3a9cbdb220c624cc584db85a18bc446ad1de SHA1 b1ad1aad24262319859e9d166470369bc77d1903 SHA256 5f83a97f4c43216c9c975009fb1e5c6d94ed2a2640135e6023a65108160fb811
 EBUILD darcs-2.2.1.ebuild 2363 RMD160 1c4f98f7a7d5c57c5dbd9970ef40187915e7fbd4 SHA1 3603fb40c1836f75b87272460ca90495da167ef7 SHA256 ba6ed3fda9fa3fd27a029c50c93d0dfddf3933e76d4d31c9177883e787c218c7
+EBUILD darcs-2.4.4-r1.ebuild 4234 RMD160 55fac24bf7d0c6816c8b9e44bde1781bbed82d79 SHA1 1cab9673ca7547e0e749be65784579ff95354db3 SHA256 f9eb90c31ba6d8052dc241a2108cec12edbccc66e15e217531e56bd3f640905b
 EBUILD darcs-2.4.4.ebuild 4054 RMD160 879d1474fb06c40ca4124816239f1a57b4aed61d SHA1 9e724b6de27a2d6928fe2c7ae94b71fb134343a2 SHA256 405b1c6af6fbc26df5099a218affcc268cc81edb452d62316e724ddcd143d17d
-MISC ChangeLog 17921 RMD160 d2faf5c020a46f0e0d52dcbd892f12901be511a4 SHA1 8a7980a8fb11d5af8d6d061d0a909d4b43dfab9e SHA256 83eb6bd6240cfc5618c7cc5d0f54f47604b7e87643a5a0f0ba43e645bca94cdd
+MISC ChangeLog 18489 RMD160 261764e614d0729f5f347f67178ac567031fc581 SHA1 ef1eba9c8c6ef9284f526f078fa6222a61e246d9 SHA256 bbec63e7da09978bd6236f64510ecc827288cfb0fbe723d7507bbccb6ab4114e
 MISC metadata.xml 223 RMD160 7783e6057effb8b8f0b79cffe8b557b32c633839 SHA1 7b962c77f2e38479a9d1621ec8d307ca9f761753 SHA256 1d00c8be162a6cb87b3de440b3e63e10b39c12d56e8fbfe592e75aed872b2508
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.15 (GNU/Linux)
 
-iEYEARECAAYFAkwZwc8ACgkQ1n/CYbXjntK1gACfWiNAJV6oLijXBlEj5OUNLmhu
-zGYAoKm1eKpZbaJswBzlxfVtur1J7+Vb
-=ZNbk
+iEYEARECAAYFAkwo76YACgkQ1n/CYbXjntLC4gCfV7CjUYaQwKG9p1eBDyBZk8Zs
+eFEAn32HqHDew9NocTgN/1HvO34yFIBT
+=jOwn
 -----END PGP SIGNATURE-----
diff --git a/dev-vcs/darcs/darcs-2.4.4-r1.ebuild b/dev-vcs/darcs/darcs-2.4.4-r1.ebuild
new file mode 100644 (file)
index 0000000..f0c36cf
--- /dev/null
@@ -0,0 +1,135 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-vcs/darcs/darcs-2.4.4-r1.ebuild,v 1.1 2010/06/28 18:53:32 kolmodin Exp $
+
+EAPI="2"
+CABAL_FEATURES="bin lib profile haddock"
+inherit haskell-cabal eutils bash-completion
+
+DESCRIPTION="a distributed, interactive, smart revision control system"
+HOMEPAGE="http://darcs.net/"
+SRC_URI="http://hackage.haskell.org/packages/archive/${PN}/${PV}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc64 ~x86"
+IUSE="doc test"
+
+# Dependency notes:
+# 1) Use a cunning trick for hashed-storage, haskeline, regex-compat
+#       where the min bound is the lowest version available.
+# 2) Do the opposite for zlib: highest not available.
+# 3) Prefer curl over HTTP since darcs uses an old version of HTTP.
+# 4) Use the same bounds for mmap as hashed-storage.
+
+COMMONDEPS=">=dev-lang/ghc-6.8
+               >=dev-haskell/hashed-storage-0.4.13
+               =dev-haskell/haskeline-0.6*
+               =dev-haskell/html-1.0*
+               =dev-haskell/mmap-0.4*
+               <dev-haskell/mtl-1.2
+               =dev-haskell/network-2.2*
+               dev-haskell/parsec:0
+               <dev-haskell/regex-compat-0.94
+               =dev-haskell/terminfo-0.3*
+               =dev-haskell/utf8-string-0.3*
+               <dev-haskell/zlib-0.6.0.0
+               net-misc/curl"
+
+DEPEND="${COMMONDEPS}
+               >=dev-haskell/cabal-1.6
+               doc?  ( virtual/latex-base
+                               dev-tex/latex2html )
+               test? ( dev-haskell/test-framework
+                               dev-haskell/test-framework-hunit
+                               dev-haskell/test-framework-quickcheck2 )
+               "
+
+# darcs also has a library version; we thus need $DEPEND
+RDEPEND="${COMMONDEPS}
+               virtual/mta"
+
+pkg_setup() {
+       if use doc && ! built_with_use -o dev-tex/latex2html png gif; then
+               eerror "Building darcs with USE=\"doc\" requires that"
+               eerror "dev-tex/latex2html is built with at least one of"
+               eerror "USE=\"png\" and USE=\"gif\"."
+               die "USE=doc requires dev-tex/latex2html with USE=\"png\" or USE=\"gif\""
+       fi
+}
+
+src_prepare() {
+       pushd "contrib"
+       epatch "${FILESDIR}/${PN}-1.0.9-bashcomp.patch"
+       popd
+
+       epatch "${FILESDIR}/${P}-issue1770-curl_multi_perform-no-running-handles.patch"
+
+       # Loosen dependency on hashed-storage
+       sed -i -e "s/hashed-storage == 0.4.13/hashed-storage == 0.4.*/" \
+               "${S}/${PN}.cabal" \
+               || die "Could not loosen deps on hashed-storage"
+
+       # hlint tests tend to break on every newly released hlint
+       rm "${S}/tests/haskell_policy.sh"
+}
+
+src_configure() {
+       # checking whether ghc supports -threaded flag
+       # Beware: http://www.haskell.org/ghc/docs/latest/html/users_guide/options-phases.html#options-linker
+       # contains: 'The ability to make a foreign call that does not block all other Haskell threads.'
+       # It might have interactivity impact.
+
+       threaded_flag=""
+       if $(ghc-getghc) --info | grep "Support SMP" | grep -q "YES"; then
+               threaded_flag="--flags=threaded"
+               einfo "$P will be built with threads support"
+       else
+               threaded_flag="--flags=-threaded"
+               einfo "$P will be built without threads support"
+       fi
+
+       # Use curl for net stuff to avoid strict version dep on HTTP and network
+       cabal_src_configure \
+               --flags=curl \
+               --flags=-http \
+               --flags=curl-pipelining \
+               --flags=color \
+               --flags=terminfo \
+               --flags=mmap \
+               $threaded_flag \
+               $(cabal_flag test)
+}
+
+src_test() {
+       # run cabal test from haskell-cabal
+       haskell-cabal_src_test || die "cabal test failed"
+
+       # run the unit tests (not part of cabal test for some reason...)
+       # breaks the cabal abstraction a bit...
+       "${S}/dist/build/unit/unit" || die "unit tests failed"
+}
+
+src_install() {
+       cabal_src_install
+       dobashcompletion "${S}/contrib/darcs_completion" "${PN}"
+
+       rm "${D}/usr/bin/unit" 2> /dev/null
+
+       # fixup perms in such an an awkward way
+       mv "${D}/usr/share/man/man1/darcs.1" "${S}/darcs.1" || die "darcs.1 not found"
+       doman "${S}/darcs.1" || die "failed to register darcs.1 as a manpage"
+
+       # if tests were enabled, make sure the unit test driver is deleted
+       rm -rf "${D}/usr/bin/unit"
+}
+
+pkg_postinst() {
+       ghc-package_pkg_postinst
+       bash-completion_pkg_postinst
+
+       ewarn "NOTE: in order for the darcs send command to work properly,"
+       ewarn "you must properly configure your mail transport agent to relay"
+       ewarn "outgoing mail.  For example, if you are using ssmtp, please edit"
+       ewarn "/etc/ssmtp/ssmtp.conf with appropriate values for your site."
+}
diff --git a/dev-vcs/darcs/files/darcs-2.4.4-issue1770-curl_multi_perform-no-running-handles.patch b/dev-vcs/darcs/files/darcs-2.4.4-issue1770-curl_multi_perform-no-running-handles.patch
new file mode 100644 (file)
index 0000000..dd61a02
--- /dev/null
@@ -0,0 +1,38 @@
+Fri Apr 16 00:47:39 CEST 2010  Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
+  * Fix hscurl.c when URL is downloaded during the first call to curl_multi_perform.
+  Turns out that the first call to curl_multi_perform() can fetch the URL or
+  result in error. I can easily reproduce this using HTTP server on localhost.
+  This means that situation when running_handles is zero is valid, so remove the
+  error and handle it correctly.
+diff -rN -u old-darcs.net/src/hscurl.c new-darcs.net/src/hscurl.c
+--- old-darcs.net/src/hscurl.c 2010-06-28 19:35:56.382397912 +0200
++++ new-darcs.net/src/hscurl.c 2010-06-28 19:35:57.544398155 +0200
+@@ -19,7 +19,6 @@
+     RESULT_MULTI_INIT_FAIL,
+     RESULT_EASY_INIT_FAIL,
+     RESULT_SLIST_APPEND_FAIL,
+-    RESULT_NO_RUNNING_HANDLES,
+     RESULT_MULTI_INFO_READ_FAIL,
+     RESULT_UNKNOWN_MESSAGE,
+     RESULT_FILE_OPEN_FAIL
+@@ -33,7 +32,6 @@
+     "curl_multi_init() failed",
+     "curl_easy_init() failed",
+     "curl_slist_append() failed",
+-    "curl_multi_perform() - no running handles",
+     "curl_multi_info_read() failed",
+     "curl_multi_info_read() returned unknown message",
+     "fopen() failed"
+@@ -67,11 +65,9 @@
+   error = curl_multi_perform(multi, &running_handles);
+   if (error != CURLM_OK && error != CURLM_CALL_MULTI_PERFORM)
+     return curl_multi_strerror(error);
+-  if (running_handles == 0)
+-    return error_strings[RESULT_NO_RUNNING_HANDLES];
+ 
+   running_handles_last = running_handles;
+-  while (1)
++  while (running_handles_last > 0)
+     {
+       while (error == CURLM_CALL_MULTI_PERFORM)
+         error = curl_multi_perform(multi, &running_handles);