# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI=5

# ebuild generated by hackport 0.4.4.9999
#hackport: flags: +library,+executable,-hpc,-warn-as-error

CABAL_FEATURES="bin lib profile haddock hoogle hscolour"
inherit base haskell-cabal

DESCRIPTION="a distributed, interactive, smart revision control system"
HOMEPAGE="http://darcs.net/"
SRC_URI="mirror://hackage/packages/archive/${PN}/${PV}/${P}.tar.gz"

LICENSE="GPL-2"
SLOT="0/${PV}"
KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~x86-solaris"
IUSE="+color +curl +http +mmap +network-uri +optimize static +terminfo test +threaded"

RDEPEND=">=dev-haskell/extensible-exceptions-0.1:=[profile?] <dev-haskell/extensible-exceptions-0.2:=[profile?]
	>=dev-haskell/hashed-storage-0.5.6:=[profile?] <dev-haskell/hashed-storage-0.6:=[profile?]
	>=dev-haskell/haskeline-0.6.3:=[profile?] <dev-haskell/haskeline-0.8:=[profile?]
	>=dev-haskell/html-1.0:=[profile?] <dev-haskell/html-1.1:=[profile?]
	>=dev-haskell/mtl-1.0:=[profile?] <dev-haskell/mtl-2.3:=[profile?]
	>=dev-haskell/parsec-2.0:=[profile?] <dev-haskell/parsec-3.2:=[profile?]
	>=dev-haskell/random-1.0:=[profile?] <dev-haskell/random-1.2:=[profile?]
	>=dev-haskell/regex-compat-0.95.1:=[profile?]
	>=dev-haskell/tar-0.3:=[profile?] <dev-haskell/tar-0.5:=[profile?]
	>=dev-haskell/text-0.11.0.6:=[profile?] <dev-haskell/text-1.3:=[profile?]
	>=dev-haskell/utf8-string-0.3.6:=[profile?] <dev-haskell/utf8-string-1.1:=[profile?]
	>=dev-haskell/vector-0.7:=[profile?]
	>=dev-haskell/zlib-0.5.1.0:=[profile?] <dev-haskell/zlib-0.6.0.0:=[profile?]
	>=dev-lang/ghc-7.4.1:=
	virtual/libiconv
	curl? ( net-misc/curl )
	http? ( >=dev-haskell/http-4000.0.8:=[profile?] <dev-haskell/http-4000.3:=[profile?]
		network-uri? ( >=dev-haskell/network-2.6:=[profile?]
				>=dev-haskell/network-uri-2.6:=[profile?] )
		!network-uri? ( >=dev-haskell/network-2.2:=[profile?] <dev-haskell/network-2.6:=[profile?] ) )
	mmap? ( >=dev-haskell/mmap-0.5:=[profile?] <dev-haskell/mmap-0.6:=[profile?] )
	terminfo? ( >=dev-haskell/terminfo-0.3:=[profile?] <dev-haskell/terminfo-0.5:=[profile?] )
"
DEPEND="${RDEPEND}
	>=dev-haskell/cabal-1.8
	dev-lang/ghc
	test? ( >=dev-haskell/cmdlib-0.2.1:=[profile?] <dev-haskell/cmdlib-0.4:=[profile?]
		>=dev-haskell/findbin-0.0:=[profile?] <dev-haskell/findbin-0.1:=[profile?]
		>=dev-haskell/hunit-1.0:=[profile?]
		>=dev-haskell/quickcheck-2.3:2=[profile?]
		>=dev-haskell/shellish-0.1.3:=[profile?] <dev-haskell/shellish-0.2:=[profile?]
		>=dev-haskell/test-framework-0.4.0:=[profile?]
		>=dev-haskell/test-framework-hunit-0.2.2:=[profile?]
		>=dev-haskell/test-framework-quickcheck2-0.2.8:=[profile?] )
"

PATCHES=("${FILESDIR}/${P}-ghc-7.10.patch")

src_prepare() {
	base_src_prepare
	cabal_chdeps \
		'terminfo == 0.3.*' 'terminfo >= 0.3 && < 0.5' \
		'text       >= 0.11.0.6 && < 1.2' 'text       >= 0.11.0.6 && < 1.3' \
		'random     == 1.0.*' 'random     >= 1.0 && < 1.2' \
		'base >= 4.5 && < 4.8' 'base >= 4.5 && < 4.9' \
		'ghc >= 6.10 && < 7.10' 'ghc >= 6.10 && < 7.12' \
		'utf8-string >= 0.3.6 && < 0.4' 'utf8-string >= 0.3.6 && < 1.1'

}

src_configure() {
	haskell-cabal_src_configure \
		$(cabal_flag color color) \
		$(cabal_flag curl curl) \
		--flag=executable \
		--flag=-hpc \
		$(cabal_flag http http) \
		--flag=library \
		$(cabal_flag mmap mmap) \
		$(cabal_flag network-uri network-uri) \
		$(cabal_flag optimize optimize) \
		$(cabal_flag static static) \
		$(cabal_flag terminfo terminfo) \
		$(cabal_flag test test) \
		$(cabal_flag threaded threaded) \
		--flag=-warn-as-error
}

src_install() {
	haskell-cabal_src_install

	# fixup perms in such an an awkward way
	mv "${ED}/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"
}
