slyfox      15/01/01 21:23:03

  Modified:             ChangeLog ghc-package.eclass haskell-cabal.eclass
  Log:
  Add support for ghc-7.10 registration. User visible changes: ghc-package 
stopped exporting pkg_* phases and now they are reexported by haskell-cabal. 
pkg_* phases do not install any additional files anymore.

Revision  Changes    Path
1.1492               eclass/ChangeLog

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?rev=1.1492&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?rev=1.1492&content-type=text/plain
diff : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?r1=1.1491&r2=1.1492

Index: ChangeLog
===================================================================
RCS file: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v
retrieving revision 1.1491
retrieving revision 1.1492
diff -u -r1.1491 -r1.1492
--- ChangeLog   1 Jan 2015 21:09:28 -0000       1.1491
+++ ChangeLog   1 Jan 2015 21:23:03 -0000       1.1492
@@ -1,6 +1,12 @@
 # ChangeLog for eclass directory
 # Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.1491 2015/01/01 
21:09:28 slyfox Exp $
+# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.1492 2015/01/01 
21:23:03 slyfox Exp $
+
+  01 Jan 2015; Sergei Trofimovich <[email protected]> ghc-package.eclass,
+  haskell-cabal.eclass:
+  Add support for ghc-7.10 registration. User visible changes: ghc-package
+  stopped exporting pkg_* phases and now they are reexported by haskell-cabal.
+  pkg_* phases do not install any additional files anymore.
 
   01 Jan 2015; Sergei Trofimovich <[email protected]> darcs.eclass:
   Fix patch count on first clone (by vikraman).



1.40                 eclass/ghc-package.eclass

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ghc-package.eclass?rev=1.40&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ghc-package.eclass?rev=1.40&content-type=text/plain
diff : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ghc-package.eclass?r1=1.39&r2=1.40

Index: ghc-package.eclass
===================================================================
RCS file: /var/cvsroot/gentoo-x86/eclass/ghc-package.eclass,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- ghc-package.eclass  11 Feb 2014 19:00:06 -0000      1.39
+++ ghc-package.eclass  1 Jan 2015 21:23:03 -0000       1.40
@@ -1,6 +1,6 @@
-# Copyright 1999-2014 Gentoo Foundation
+# Copyright 1999-2015 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/ghc-package.eclass,v 1.39 2014/02/11 
19:00:06 slyfox Exp $
+# $Header: /var/cvsroot/gentoo-x86/eclass/ghc-package.eclass,v 1.40 2015/01/01 
21:23:03 slyfox Exp $
 
 # @ECLASS: ghc-package.eclass
 # @MAINTAINER:
@@ -36,16 +36,28 @@
 # because for some reason the global package file
 # must be specified
 ghc-getghcpkgbin() {
-       # the ghc-pkg executable changed name in ghc 6.10, as it no longer needs
-       # the wrapper script with the static flags
-       echo '[]' > "${T}/empty.conf"
-       if version_is_at_least "7.7.20121101" "$(ghc-version)"; then
+       if version_is_at_least "7.9.20141222" "$(ghc-version)"; then
+               # ghc-7.10 stopped supporting single-file database
+               local empty_db="${T}/empty.conf.d" 
ghc_pkg="$(ghc-libdir)/bin/ghc-pkg"
+               if [[ ! -d ${empty_db} ]]; then
+                       "${ghc_pkg}" init "${empty_db}" || die "Failed to 
initialize empty global db"
+               fi
+               echo "$(ghc-libdir)/bin/ghc-pkg" 
"--global-package-db=${empty_db}"
+
+       elif version_is_at_least "7.7.20121101" "$(ghc-version)"; then
+               # the ghc-pkg executable changed name in ghc 6.10, as it no 
longer needs
+               # the wrapper script with the static flags
                # was moved to bin/ subtree by:
                # 
http://www.haskell.org/pipermail/cvs-ghc/2012-September/076546.html
+               echo '[]' > "${T}/empty.conf"
                echo "$(ghc-libdir)/bin/ghc-pkg" 
"--global-package-db=${T}/empty.conf"
+
        elif version_is_at_least "7.5.20120516" "$(ghc-version)"; then
+               echo '[]' > "${T}/empty.conf"
                echo "$(ghc-libdir)/ghc-pkg" 
"--global-package-db=${T}/empty.conf"
+
        else
+               echo '[]' > "${T}/empty.conf"
                echo "$(ghc-libdir)/ghc-pkg" "--global-conf=${T}/empty.conf"
        fi
 }
@@ -61,14 +73,19 @@
        echo "${_GHC_VERSION_CACHE}"
 }
 
-# @FUNCTION: ghc-bestcabalversion
+# @FUNCTION: ghc-cabal-version
 # @DESCRIPTION:
-# return the best version of the Cabal library that is available
-ghc-bestcabalversion() {
-       # We ask portage, not ghc, so that we only pick up
-       # portage-installed cabal versions.
-       local cabalversion="$(ghc-extractportageversion dev-haskell/cabal)"
-       echo "Cabal-${cabalversion}"
+# return version of the Cabal library bundled with ghc
+ghc-cabal-version() {
+       if version_is_at_least "7.9.20141222" "$(ghc-version)"; then
+               # outputs in format: 'version: 1.18.1.5'
+               set -- `$(ghc-getghcpkg) 
--package-db=$(ghc-libdir)/package.conf.d.initial field Cabal version`
+               echo "$2"
+       else
+               local cabal_package=`echo "$(ghc-libdir)"/Cabal-*`
+               # /path/to/ghc/Cabal-${VER} -> ${VER}
+               echo "${cabal_package/*Cabal-/}"
+       fi
 }
 
 # @FUNCTION: ghc-sanecabal
@@ -158,26 +175,26 @@
 
 # @FUNCTION: ghc-confdir
 # @DESCRIPTION:
-# returns the (Gentoo) library configuration directory
+# returns the (Gentoo) library configuration directory, we
+# store here a hint for 'haskell-updater' about packages
+# installed for old ghc versions and current ones.
 ghc-confdir() {
        echo "$(ghc-libdir)/gentoo"
 }
 
-# @FUNCTION: ghc-localpkgconf
+# @FUNCTION: ghc-package-db
 # @DESCRIPTION:
-# returns the name of the local (package-specific)
-# package configuration file
-ghc-localpkgconf() {
-       echo "${PF}.conf"
+# returns the global package database directory
+ghc-package-db() {
+       echo "$(ghc-libdir)/package.conf.d"
 }
 
-# @FUNCTION: ghc-makeghcilib
+# @FUNCTION: ghc-localpkgconfd
 # @DESCRIPTION:
-# make a ghci foo.o file from a libfoo.a file
-ghc-makeghcilib() {
-       local outfile
-       outfile="$(dirname $1)/$(basename $1 | sed 's:^lib\?\(.*\)\.a$:\1.o:')"
-       ld --relocatable --discard-all --output="${outfile}" --whole-archive 
"$1"
+# returns the name of the local (package-specific)
+# package configuration file
+ghc-localpkgconfd() {
+       echo "${PF}.conf.d"
 }
 
 # @FUNCTION: ghc-package-exists
@@ -187,43 +204,61 @@
        $(ghc-getghcpkg) describe "$1" > /dev/null 2>&1
 }
 
-# @FUNCTION: ghc-setup-pkg
-# @DESCRIPTION:
-# creates a local (package-specific) package
-# configuration file; the arguments should be
-# uninstalled package description files, each
-# containing a single package description; if
-# no arguments are given, the resulting file is
-# empty
-ghc-setup-pkg() {
-       local localpkgconf="${S}/$(ghc-localpkgconf)"
-       echo '[]' > "${localpkgconf}"
-
-       for pkg in $*; do
-               $(ghc-getghcpkgbin) -f "${localpkgconf}" update - --force \
-                       < "${pkg}" || die "failed to register ${pkg}"
+# @FUNCTION: check-for-collisions
+# @DESCRIPTION: makes sure no packages
+# have the same version as initial package setup
+check-for-collisions() {
+       local localpkgconf=$1
+       local checked_pkg
+       local initial_pkg_db="$(ghc-libdir)/package.conf.d.initial"
+
+       for checked_pkg in `$(ghc-getghcpkgbin) -f "${localpkgconf}" list 
--simple-output`
+       do
+               # should return empty output
+               local collided=`$(ghc-getghcpkgbin) -f ${initial_pkg_db} list 
--simple-output "${checked_pkg}"`
+
+               if [[ -n ${collided} ]]; then
+                       eerror "Package ${checked_pkg} is shipped with 
$(ghc-version)."
+                       eerror "Ebuild author forgot CABAL_CORE_LIB_GHC_PV 
entry."
+                       eerror "Found in ${initial_pkg_db}."
+                       die
+               fi
        done
 }
 
-# @FUNCTION: ghc-fixlibpath
-# @DESCRIPTION:
-# fixes the library and import directories path
-# of the package configuration file
-ghc-fixlibpath() {
-       sed -i "s|$1|$(ghc-libdir)|g" "${S}/$(ghc-localpkgconf)"
-       if [[ -n "$2" ]]; then
-               sed -i "s|$2|$(ghc-libdir)/imports|g" "${S}/$(ghc-localpkgconf)"
-       fi
-}
-
 # @FUNCTION: ghc-install-pkg
 # @DESCRIPTION:
 # moves the local (package-specific) package configuration
 # file to its final destination
 ghc-install-pkg() {
-       mkdir -p "${D}/$(ghc-confdir)"
-       cat "${S}/$(ghc-localpkgconf)" | sed "s|${D}||g" \
-               > "${D}/$(ghc-confdir)/$(ghc-localpkgconf)"
+       local pkg_config_file=$1
+       local localpkgconf="${T}/$(ghc-localpkgconfd)"
+       local pkg_path pkg pkg_db="${D}/$(ghc-package-db)" 
hint_db="${D}/$(ghc-confdir)"
+
+       $(ghc-getghcpkgbin) init "${localpkgconf}" || die "Failed to initialize 
empty local db"
+       $(ghc-getghcpkgbin) -f "${localpkgconf}" update - --force \
+               < "${pkg_config_file}" || die "failed to register ${pkg}"
+
+       check-for-collisions "${localpkgconf}"
+
+       mkdir -p "${pkg_db}" || die
+       for pkg_path in "${localpkgconf}"/*.conf; do
+               pkg=$(basename "${pkg_path}")
+               cp "${pkg_path}" "${pkg_db}/${pkg}" || die
+       done
+
+       mkdir -p "${hint_db}" || die
+       cp "${pkg_config_file}" "${hint_db}/${PF}.conf" || die
+       chmod 0644 "${hint_db}/${PF}.conf" || die
+}
+
+# @FUNCTION: ghc-recache-db
+# @DESCRIPTION:
+# updates 'package.cache' binary cacne for registered '*.conf'
+# packages
+ghc-recache-db() {
+       einfo "Recaching GHC package DB"
+       $(ghc-getghcpkg) recache
 }
 
 # @FUNCTION: ghc-register-pkg
@@ -231,16 +266,7 @@
 # registers all packages in the local (package-specific)
 # package configuration file
 ghc-register-pkg() {
-       local localpkgconf="$(ghc-confdir)/$1"
-
-       if [[ -f "${localpkgconf}" ]]; then
-               for pkg in $(ghc-listpkg "${localpkgconf}"); do
-                       ebegin "Registering ${pkg} "
-                       $(ghc-getghcpkgbin) -f "${localpkgconf}" describe 
"${pkg}" \
-                               | $(ghc-getghcpkg) update - --force > /dev/null
-                       eend $?
-               done
-       fi
+       ghc-recache-db
 }
 
 # @FUNCTION: ghc-reregister
@@ -248,99 +274,46 @@
 # re-adds all available .conf files to the global
 # package conf file, to be used on a ghc reinstallation
 ghc-reregister() {
-       has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=
-       einfo "Re-adding packages (may cause several harmless warnings) ..."
-       PATH="${EPREFIX}/usr/bin:${PATH}" CONFDIR="$(ghc-confdir)"
-       if [ -d "${CONFDIR}" ]; then
-               pushd "${CONFDIR}" > /dev/null
-               for conf in *.conf; do
-                       PATH="${EPREFIX}/usr/bin:${PATH}" ghc-register-pkg 
"${conf}"
-               done
-               popd > /dev/null
-       fi
+       ghc-recache-db
 }
 
 # @FUNCTION: ghc-unregister-pkg
 # @DESCRIPTION:
 # unregisters a package configuration file
-# protected are all packages that are still contained in
-# another package configuration file
 ghc-unregister-pkg() {
-       local localpkgconf="$(ghc-confdir)/$1"
-       local i
-       local pkg
-
-       if [[ -f "${localpkgconf}" ]]; then
-               for pkg in $(ghc-reverse "$(ghc-listpkg ${localpkgconf})"); do
-                 if ! ghc-package-exists "${pkg}"; then
-                       einfo "Package ${pkg} is not installed for 
ghc-$(ghc-version)."
-                 else
-                       ebegin "Unregistering ${pkg} "
-                       $(ghc-getghcpkg) unregister "${pkg}" --force > /dev/null
-                       eend $?
-                 fi
-               done
-       fi
-}
-
-# @FUNCTION: ghc-reverse
-# @DESCRIPTION:
-# help-function: reverse a list
-ghc-reverse() {
-       local result
-       local i
-       for i in $1; do
-               result="${i} ${result}"
-       done
-       echo "${result}"
+       ghc-recache-db
 }
 
-# @FUNCTION: ghc-elem
+# @FUNCTION: ghc-pkgdeps
 # @DESCRIPTION:
-# help-function: element-check
-ghc-elem() {
-       local i
-       for i in $2; do
-               [[ "$1" == "${i}" ]] && return 0
-       done
-       return 1
-}
-
-# @FUNCTION: ghc-listpkg
-# @DESCRIPTION:
-# show the packages in a package configuration file
-ghc-listpkg() {
-       local ghcpkgcall
-       local i
-       local extra_flags
-       if version_is_at_least '6.12.3' "$(ghc-version)"; then
-               extra_flags="${extra_flags} -v0"
-       fi
-       for i in $*; do
-               echo $($(ghc-getghcpkg) list ${extra_flags} -f "${i}") \
-                       | sed \
-                               -e "s|^.*${i}:\([^:]*\).*$|\1|" \
-                               -e "s|/.*$||" \
-                               -e "s|,| |g" -e "s|[(){}]||g"
-       done
+# exported function: loads a package dependency in a form
+# cabal_package version
+ghc-pkgdeps() {
+       echo $($(ghc-getghcpkg) describe "${1}") \
+       | sed \
+                       -e '/depends/,/^.*:/ !d' \
+                       -e 's/\(.*\)-\(.*\)-\(.*\)/\1 \2/' \
+                       -e 's/^.*://g'
 }
 
 # @FUNCTION: ghc-package_pkg_postinst
 # @DESCRIPTION:
-# exported function: registers the package-specific package
-# configuration file
+# updates package.cache after package install
 ghc-package_pkg_postinst() {
-       ghc-register-pkg "$(ghc-localpkgconf)"
+       ghc-recache-db
 }
 
 # @FUNCTION: ghc-package_pkg_prerm
 # @DESCRIPTION:
-# exported function: unregisters the package-specific package
-# configuration file; a package contained therein is unregistered
-# only if it the same package is not also contained in another
-# package configuration file ...
+# updates package.cache after package deinstall
 ghc-package_pkg_prerm() {
-       ghc-unregister-pkg "$(ghc-localpkgconf)"
+       ewarn "ghc-package.eclass: 'ghc-package_pkg_prerm()' is a noop"
+       ewarn "ghc-package.eclass: consider 'haskell-cabal_pkg_postrm()' 
instead"
 }
 
-EXPORT_FUNCTIONS pkg_postinst pkg_prerm
+# @FUNCTION: ghc-package_pkg_postrm
+# @DESCRIPTION:
+# updates package.cache after package deinstall
+ghc-package_pkg_postrm() {
+       ghc-recache-db
+}



1.47                 eclass/haskell-cabal.eclass

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/haskell-cabal.eclass?rev=1.47&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/haskell-cabal.eclass?rev=1.47&content-type=text/plain
diff : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/haskell-cabal.eclass?r1=1.46&r2=1.47

Index: haskell-cabal.eclass
===================================================================
RCS file: /var/cvsroot/gentoo-x86/eclass/haskell-cabal.eclass,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- haskell-cabal.eclass        27 Jun 2014 07:26:18 -0000      1.46
+++ haskell-cabal.eclass        1 Jan 2015 21:23:03 -0000       1.47
@@ -1,6 +1,6 @@
-# Copyright 1999-2014 Gentoo Foundation
+# Copyright 1999-2015 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/haskell-cabal.eclass,v 1.46 
2014/06/27 07:26:18 slyfox Exp $
+# $Header: /var/cvsroot/gentoo-x86/eclass/haskell-cabal.eclass,v 1.47 
2015/01/01 21:23:03 slyfox Exp $
 
 # @ECLASS: haskell-cabal.eclass
 # @MAINTAINER:
@@ -31,6 +31,9 @@
 #   nocabaldep --  don't add dependency on cabal.
 #                  only used for packages that _must_ not pull the dependency
 #                  on cabal, but still use this eclass (e.g. haskell-updater).
+#   ghcdeps    --  constraint dependency on package to ghc onces
+#                  only used for packages that use libghc internally and _must_
+#                  not pull upper versions
 #   test-suite --  add support for cabal test-suites (introduced in Cabal-1.8)
 
 inherit eutils ghc-package multilib multiprocessing
@@ -61,7 +64,7 @@
 # Needs working 'diff'.
 : ${CABAL_DEBUG_LOOSENING:=}
 
-HASKELL_CABAL_EXPF="pkg_setup src_compile src_test src_install"
+HASKELL_CABAL_EXPF="pkg_setup src_compile src_test src_install pkg_postinst 
pkg_postrm"
 
 # 'dev-haskell/cabal' passes those options with ./configure-based
 # configuration, but most packages don't need/don't accept it:
@@ -89,6 +92,7 @@
                bin)        CABAL_HAS_BINARIES=yes;;
                lib)        CABAL_HAS_LIBRARIES=yes;;
                nocabaldep) CABAL_FROM_GHC=yes;;
+               ghcdeps)    CABAL_GHC_CONSTRAINT=yes;;
                test-suite) CABAL_TEST_SUITE=yes;;
                *) CABAL_UNKNOWN="${CABAL_UNKNOWN} ${feature}";;
        esac
@@ -106,6 +110,11 @@
        DEPEND="${DEPEND} hscolour? ( dev-haskell/hscolour )"
 fi
 
+if [[ -n "${CABAL_USE_HOOGLE}" ]]; then
+       # enabled only in ::gentoo-haskell
+       :
+fi
+
 if [[ -n "${CABAL_USE_ALEX}" ]]; then
        DEPEND="${DEPEND} dev-haskell/alex"
 fi
@@ -148,9 +157,7 @@
                        # of this package itself.
                        _CABAL_VERSION_CACHE="${PV}"
                elif [[ "${CABAL_FROM_GHC}" ]]; then
-                       local cabal_package=$(echo "$(ghc-libdir)"/Cabal-*)
-                       # /path/to/ghc/Cabal-${VER} -> ${VER}
-                       _CABAL_VERSION_CACHE="${cabal_package/*Cabal-/}"
+                       _CABAL_VERSION_CACHE="$(ghc-cabal-version)"
                else
                        # We ask portage, not ghc, so that we only pick up
                        # portage-installed cabal versions.
@@ -237,6 +244,10 @@
        ./setup "$@" || die "setup haddock failed"
 }
 
+cabal-hoogle() {
+       ewarn "hoogle USE flag requires doc USE flag, building without hoogle"
+}
+
 cabal-hscolour-haddock() {
        # --hyperlink-source implies calling 'setup hscolour'
        set -- haddock --hyperlink-source
@@ -244,6 +255,22 @@
        ./setup "$@" --hyperlink-source || die "setup haddock 
--hyperlink-source failed"
 }
 
+cabal-hoogle-haddock() {
+       set -- haddock --hoogle
+       echo ./setup "$@"
+       ./setup "$@" || die "setup haddock --hoogle failed"
+}
+
+cabal-hoogle-hscolour-haddock() {
+       cabal-hscolour-haddock
+       cabal-hoogle-haddock
+}
+
+cabal-hoogle-hscolour() {
+       ewarn "hoogle USE flag requires doc USE flag, building without hoogle"
+       cabal-hscolour
+}
+
 cabal-die-if-nonempty() {
        local breakage_type=$1
        shift
@@ -305,6 +332,10 @@
                cabalconf+=($(use_enable test tests))
        fi
 
+       if [[ -n "${CABAL_GHC_CONSTRAINT}" ]]; then
+               cabalconf+=($(cabal-constraint "ghc"))
+       fi
+
        local option
        for option in ${HCFLAGS}
        do
@@ -413,8 +444,7 @@
        if [[ -n ${CABAL_HAS_LIBRARIES} ]]; then
                # Newer cabal can generate a package conf for us:
                ./setup register --gen-pkg-config="${T}/${P}.conf"
-               ghc-setup-pkg "${T}/${P}.conf"
-               ghc-install-pkg
+               ghc-install-pkg "${T}/${P}.conf"
        fi
 }
 
@@ -487,16 +517,36 @@
 
        if [[ -n "${CABAL_USE_HADDOCK}" ]] && use doc; then
                if [[ -n "${CABAL_USE_HSCOLOUR}" ]] && use hscolour; then
-                       # hscolour and haddock
-                       cabal-hscolour-haddock
+                       if [[ -n "${CABAL_USE_HOOGLE}" ]] && use hoogle; then
+                               # hoogle, hscolour and haddock
+                               cabal-hoogle-hscolour-haddock
+                       else
+                               # haddock and hscolour
+                               cabal-hscolour-haddock
+                       fi
                else
-                       # just haddock
-                       cabal-haddock
+                       if [[ -n "${CABAL_USE_HOOGLE}" ]] && use hoogle; then
+                               # hoogle and haddock
+                               cabal-hoogle-haddock
+                       else
+                               # just haddock
+                               cabal-haddock
+                       fi
                fi
        else
                if [[ -n "${CABAL_USE_HSCOLOUR}" ]] && use hscolour; then
-                       # just hscolour
-                       cabal-hscolour
+                       if [[ -n "${CABAL_USE_HOOGLE}" ]] && use hoogle; then
+                               # hoogle and hscolour
+                               cabal-hoogle-hscolour
+                       else
+                               # just hscolour
+                               cabal-hscolour
+                       fi
+               else
+                       if [[ -n "${CABAL_USE_HOOGLE}" ]] && use hoogle; then
+                               # just hoogle
+                               cabal-hoogle
+                       fi
                fi
        fi
 }
@@ -538,27 +588,10 @@
        local ghc_confdir_with_prefix="$(ghc-confdir)"
        # remove EPREFIX
        dodir ${ghc_confdir_with_prefix#${EPREFIX}}
-       local conf_file="${D}/$(ghc-confdir)/$(ghc-localpkgconf)"
-       [[ -e $conf_file ]] || echo '[]' > "$conf_file" || die
-
-       # make sure installed packages do not destroy ghc's
-       # bundled packages
-       local initial_pkg_db=${ROOT}/$(ghc-libdir)/package.conf.d.initial
-       if [[ -e ${initial_pkg_db} ]]; then
-               local checked_pkg
-               for checked_pkg in $(ghc-listpkg "${conf_file}")
-               do
-                       local initial_pkg
-                       for initial_pkg in $(ghc-listpkg "${initial_pkg_db}"); 
do
-                               if [[ ${checked_pkg} = ${initial_pkg} ]]; then
-                                       eerror "Package ${checked_pkg} is 
shipped with $(ghc-version)."
-                                       eerror "Ebuild author forgot 
CABAL_CORE_LIB_GHC_PV entry."
-                                       eerror "Found in ${initial_pkg_db}."
-                                       die
-                               fi
-                       done
-               done
-       fi
+       local hint_db="${D}/$(ghc-confdir)"
+       local hint_file="${hint_db}/${PF}.conf"
+       mkdir -p "${hint_db}" || die
+       touch "${hint_file}" || die
 }
 
 haskell-cabal_src_install() {
@@ -569,6 +602,14 @@
        popd > /dev/null
 }
 
+haskell-cabal_pkg_postinst() {
+       ghc-package_pkg_postinst
+}
+
+haskell-cabal_pkg_postrm() {
+       ghc-package_pkg_postrm
+}
+
 # @FUNCTION: cabal_flag
 # @DESCRIPTION:
 # ebuild.sh:use_enable() taken as base
@@ -666,6 +707,16 @@
                die "failed to update"
 }
 
+# @FUNCTION: cabal-constraint
+# @DESCRIPTION:
+# Allowes to set contraint to the libraries that are
+# used by specified package
+cabal-constraint() {
+       while read p v ; do
+               echo "--constraint \"$p == $v\""
+       done < $(ghc-pkgdeps ${1})
+}
+
 # @FUNCTION: replace-hcflags
 # @USAGE: <old> <new>
 # @DESCRIPTION:




Reply via email to