---
 Dh_Haskell.sh            | 182 +++++++++++++++++++++++++++++++----------------
 Dh_Haskell.sh.orig       | 137 +++++++++++++++++++++++++++++++++++
 dh_haskell_blurbs        |  18 +++--
 dh_haskell_depends       |  25 ++++---
 dh_haskell_extra_depends |   5 +-
 dh_haskell_provides      |  21 +++---
 dh_haskell_shlibdeps     |  10 +--
 hlibrary.mk              |  30 ++++----
 8 files changed, 322 insertions(+), 106 deletions(-)

diff --git a/Dh_Haskell.sh b/Dh_Haskell.sh
index 4e56b64..1e1fce6 100644
--- a/Dh_Haskell.sh
+++ b/Dh_Haskell.sh
@@ -68,6 +68,24 @@ hc_haddock(){
     esac
 }
 
+hc_docdir(){
+    hc=$1
+    pkgid=$2
+    echo "usr/lib/${hc}-doc/haddock/${pkgid}/"
+}
+
+hc_htmldir(){
+    hc=$1
+    CABAL_PACKAGE=$2
+    echo "usr/share/doc/lib${hc}-${CABAL_PACKAGE}-doc/html/"
+}
+
+hc_hoogle(){
+    local hc
+    hc=$1
+    echo "/usr/lib/${hc}-doc/hoogle/"
+}
+
 strip_hash(){
        echo "$1" | sed 's/-................................$//'
 }
@@ -91,7 +109,10 @@ dependency(){
 }
 
 ghc_pkg_field(){
-    ghc-pkg --global field $@ | head -n1
+    hc=$1
+    pkg=$2
+    field=$3
+    ${hc}-pkg --global field ${pkg} ${field} | head -n1
 }
 
 providing_package_for_ghc(){
@@ -100,9 +121,11 @@ providing_package_for_ghc(){
     local dir
     local dirs
     local lib
-    dep=`strip_hash $1`
-    dirs=`ghc_pkg_field $dep library-dirs | grep -i ^library-dirs | cut -d':' 
-f 2`
-    lib=`ghc_pkg_field $dep hs-libraries | grep -i ^hs-libraries |  sed -e 
's|hs-libraries: *\([^ ]*\).*|\1|' `
+    local hc
+    hc=$1
+    dep=`strip_hash $2`
+    dirs=`ghc_pkg_field $hc $dep library-dirs | grep -i ^library-dirs | cut 
-d':' -f 2`
+    lib=`ghc_pkg_field $hc $dep hs-libraries | grep -i ^hs-libraries |  sed -e 
's|hs-libraries: *\([^ ]*\).*|\1|' `
     for dir in $dirs ; do
        if [ -e "${dir}/lib${lib}.a" ] ; then
            package=`dpkg-query -S ${dir}/lib${lib}.a | cut -d':' -f 1` || exit 
$?
@@ -118,9 +141,11 @@ providing_package_for_ghc_prof(){
     local dir
     local dirs
     local lib
-    dep=`strip_hash $1`
-    dirs=`ghc_pkg_field $dep library-dirs | grep -i ^library-dirs | cut -d':' 
-f 2`
-    lib=`ghc_pkg_field $dep hs-libraries | grep -i ^hs-libraries | sed -e 
's|hs-libraries: *\([^ ]*\).*|\1|' `
+    local hc
+    hc=$1
+    dep=`strip_hash $2`
+    dirs=`ghc_pkg_field $hc $dep library-dirs | grep -i ^library-dirs | cut 
-d':' -f 2`
+    lib=`ghc_pkg_field $hc $dep hs-libraries | grep -i ^hs-libraries | sed -e 
's|hs-libraries: *\([^ ]*\).*|\1|' `
     for dir in $dirs ; do
        if [ -e "${dir}/lib${lib}_p.a" ] ; then
            package=`dpkg-query -S ${dir}/lib${lib}_p.a | cut -d':' -f 1` || 
exit $?
@@ -166,12 +191,14 @@ cabal_depends(){
 }
 
 hashed_dependency(){
+    local hc
     local type
     local pkgid
     local virpkg
-    type=$1
-    pkgid=$2
-    virtual_pkg=`package_id_to_virtual_package $type $pkgid`
+    hc=$1
+    type=$2
+    pkgid=$3
+    virtual_pkg=`package_id_to_virtual_package "${hc}" "$type" $pkgid`
     # As a transition measure, check if dpkg knows about this virtual package
     if dpkg-query -W $virtual_pkg >/dev/null 2>/dev/null;
     then
@@ -183,11 +210,14 @@ depends_for_ghc(){
     local dep
     local packages
     local pkgid
+    local hc
+    hc=$1
+    shift
     for pkgid in `cabal_depends $@` ; do
-       dep=`hashed_dependency dev $pkgid`
+       dep=`hashed_dependency ${hc} dev $pkgid`
        if [ -z "$dep" ]
        then
-         pkg=`providing_package_for_ghc $pkgid`
+         pkg=`providing_package_for_ghc $hc $pkgid`
           if [ -n "$pkg" ]
           then
              dep=`dependency $pkg`
@@ -207,11 +237,14 @@ depends_for_ghc_prof(){
     local dep
     local packages
     local pkgid
+    local hc
+    hc=$1
+    shift
     for pkgid in `cabal_depends $@` ; do
-       dep=`hashed_dependency prof $pkgid`
+       dep=`hashed_dependency ${hc} prof $pkgid`
        if [ -z "$dep" ]
        then
-         pkg=`providing_package_for_ghc_prof $pkgid`
+         pkg=`providing_package_for_ghc_prof $hc $pkgid`
           if [ -n "$pkg" ]
           then
              dep=`dependency $pkg`
@@ -228,29 +261,39 @@ depends_for_ghc_prof(){
 }
 
 provides_for_ghc(){
+    local hc
     local dep
     local packages
+    hc=$1
+    shift
     for package_id in `cabal_package_ids $@` ; do
-       packages="$packages, `package_id_to_virtual_package dev $package_id`"
+       packages="$packages, `package_id_to_virtual_package "${hc}" dev 
$package_id`"
     done
     echo $packages | sed -e 's/^,[ ]*//'
 }
 
 provides_for_ghc_prof(){
+    local hc
     local dep
     local packages
+    hc=$1
+    shift
     for package_id in `cabal_package_ids $@` ; do
-       packages="$packages, `package_id_to_virtual_package prof $package_id`"
+       packages="$packages, `package_id_to_virtual_package "${hc}" prof 
$package_id`"
     done
     echo $packages | sed -e 's/^,[ ]*//'
 }
 
 package_id_to_virtual_package(){
+       local hc
        local type
-       type="$1"
-       echo $2 | tr A-Z a-z | \
+       local pkgid
+       hc="$1"
+       type="$2"
+       pkgid="$3"
+       echo ${pkgid} | tr A-Z a-z | \
             grep '[a-z0-9]\+-[0-9\.]\+-................................' | \
-               perl -pe 
's/([a-z0-9-]+)-([0-9\.]+)-(.....).........................../libghc-\1-'$type'-\2-\3/'
+               perl -pe 
's/([a-z0-9-]+)-([0-9\.]+)-(.....).........................../lib'${hc}'-\1-'$type'-\2-\3/'
 }
 
 depends_for_hugs(){
@@ -265,17 +308,18 @@ find_config_for_ghc(){
     local f
     local pkg
     pkg=$1
+    pkgdir=`package_pkgdir ${pkg}`
     case "$pkg" in
        ghc-prof)
            pkg=ghc
            ;;
-       libghc-*-prof)
+       *-prof)
            pkg=`echo $pkg | sed -e 's/-prof$/-dev/'`
            ;;
        *)
            ;;
     esac
-    for f in debian/$pkg/var/lib/ghc/package.conf.d/*.conf ; do
+    for f in debian/$pkg/${pkgdir}/*.conf ; do
        if [ -f "$f" ] ; then
            echo $f
            echo " "
@@ -292,7 +336,7 @@ clean_recipe(){
     rm -rf dist dist-ghc dist-hugs ${DEB_SETUP_BIN_NAME} Setup.hi Setup.ho 
Setup.o .*config*
     rm -f configure-ghc-stamp build-ghc-stamp build-hugs-stamp 
build-haddock-stamp
     rm -rf debian/tmp-inst-ghc
-    rm -f debian/extra-depends
+    rm -f debian/extra-depends-ghc
     rm -f debian/libghc-${CABAL_PACKAGE}-doc.links
     if [ -f ${DEB_LINTIAN_OVERRIDES_FILE} ] ; then                             
        \
       sed -i '/binary-or-shlib-defines-rpath/ d' ${DEB_LINTIAN_OVERRIDES_FILE} 
;       \
@@ -311,32 +355,37 @@ make_setup_recipe(){
 configure_recipe(){
     DEB_SETUP_BIN_NAME=$1
     CABAL_PACKAGE=$2
-    DEB_HADDOCK_DIR=$3
-    DEB_HADDOCK_HTML_DIR=$4
-    ENABLE_PROFILING=$5
-    NO_GHCI_FLAG=$6
-    DEB_SETUP_GHC6_CONFIGURE_ARGS=$7
-    DEB_SETUP_GHC_CONFIGURE_ARGS=$8
-    OPTIMIZATION=$9
-    TESTS=$10
-    COMPILERS=$11
+    CABAL_VERSION=$3
+    ENABLE_PROFILING=$4
+    NO_GHCI_FLAG=$5
+    DEB_SETUP_GHC6_CONFIGURE_ARGS=$6
+    DEB_SETUP_GHC_CONFIGURE_ARGS=$7
+    OPTIMIZATION=$8
+    TESTS=$9
+    DEB_DEFAULT_COMPILER=$10
+    DEB_PACKAGES=$11
+
+    hc=`packages_hc "${DEB_DEFAULT_COMPILER}" "${DEB_PACKAGES}"`
 
+    ENABLE_PROFILING=`{ for i in ${DEB_PACKAGES}; do package_ext $i | grep 
prof; done; } | sort -u | sed 's/prof/--enable-library-profiling/'`
     local GHC_OPTIONS
     for i in `dpkg-buildflags --get LDFLAGS`; do GHC_OPTIONS="$GHC_OPTIONS 
-optl$i"; done
 
-    ${DEB_SETUP_BIN_NAME} configure ${COMPILERS} -v2 
--package-db=/var/lib/ghc/package.conf.d \
-        --prefix=/usr --libdir=/usr/lib/haskell-packages/ghc/lib \
-       --builddir=dist-ghc \
+    ${DEB_SETUP_BIN_NAME} configure "--${hc}" -v2 --package-db=/`hc_pkgdir 
${hc}` \
+        --prefix=/`hc_prefix ${hc}` --libdir=/`hc_libdir ${hc}` \
+       --builddir=dist-${hc} \
        --ghc-options="${GHC_OPTIONS}" \
-       --haddockdir=${DEB_HADDOCK_DIR} --datasubdir=${CABAL_PACKAGE}\
-       --htmldir=${DEB_HADDOCK_HTML_DIR} ${ENABLE_PROFILING} ${NO_GHCI_FLAG} \
+       --haddockdir=/`hc_docdir ${hc} ${CABAL_PACKAGE}-${CABAL_VERSION}` 
--datasubdir=${CABAL_PACKAGE}\
+       --htmldir=/`hc_htmldir ${hc} ${CABAL_PACKAGE}` ${ENABLE_PROFILING} 
${NO_GHCI_FLAG} \
        ${DEB_SETUP_GHC6_CONFIGURE_ARGS} ${DEB_SETUP_GHC_CONFIGURE_ARGS} 
${OPTIMIZATION} ${TESTS}
 }
 
 build_recipe(){
     DEB_SETUP_BIN_NAME=$1
-    COMPILER=$2
-    ${DEB_SETUP_BIN_NAME} build --builddir=dist-${COMPILER}
+    DEB_DEFAULT_COMPILER=$2
+    DEB_PACKAGES=$3
+    hc=`packages_hc "${DEB_DEFAULT_COMPILER}" "${DEB_PACKAGES}"`
+    ${DEB_SETUP_BIN_NAME} build --builddir=dist-${hc}
 }
 
 check_recipe(){
@@ -350,15 +399,19 @@ check_recipe(){
 haddock_recipe(){
     DEB_SETUP_BIN_NAME=$1
     DEB_HADDOCK_OPTS=$2
-    COMPILER=$3
-    [ ! -x /usr/bin/haddock ] || ${DEB_SETUP_BIN_NAME} haddock 
--builddir=dist-${COMPILER} --with-haddock=/usr/bin/haddock 
--with-ghc=${COMPILER} ${DEB_HADDOCK_OPTS} || \
+    DEB_DEFAULT_COMPILER=$3
+    DEB_PACKAGES=$4
+    hc=`packages_hc "${DEB_DEFAULT_COMPILER}" "${DEB_PACKAGES}"`
+    haddock=`hc_haddock ${hc}`
+    [ ! -x /usr/bin/${haddock} ] || ${DEB_SETUP_BIN_NAME} haddock 
--builddir=dist-${hc} --with-haddock=/usr/bin/${haddock} --with-ghc=${hc} 
${DEB_HADDOCK_OPTS} || \
          echo "Haddock failed (no modules?), creating empty documentation 
package."
 }
 
 extra_depends_recipe(){
     DEB_SETUP_BIN_NAME=$1
-    pkg_config=`${DEB_SETUP_BIN_NAME} register --builddir=dist-ghc 
--gen-pkg-config | tr -d ' \n' | sed -r 's,^.*:,,'`
-    dh_haskell_extra_depends $pkg_config
+    hc=$2
+    pkg_config=`${DEB_SETUP_BIN_NAME} register --builddir=dist-${hc} 
--gen-pkg-config | tr -d ' \n' | sed -r 's,^.*:,,'`
+    dh_haskell_extra_depends ${hc} $pkg_config
     rm $pkg_config
 }
 
@@ -370,12 +423,17 @@ install_dev_recipe(){
     DEB_GHC_EXTRA_PACKAGES=$5
     DEB_LINTIAN_OVERRIDES_FILE=$6
     PKG=$7
-    ( cd debian/tmp-inst-ghc ; mkdir -p usr/lib/haskell-packages/ghc/lib ; 
find usr/lib/haskell-packages/ghc/lib/ \
+
+    hc=`package_hc ${PKG}`
+    libdir=`package_libdir ${PKG}`
+    pkgdir=`package_pkgdir ${PKG}`
+
+    ( cd debian/tmp-inst-${hc} ; mkdir -p ${libdir} ; find ${libdir}/ \
        \( ! -name "*_p.a" ! -name "*.p_hi" ! -type d \) \
        -exec install -Dm 644 '{}' ../${PKG}/'{}' ';' )
-    pkg_config=`${DEB_SETUP_BIN_NAME} register --builddir=dist-ghc 
--gen-pkg-config | tr -d ' \n' | sed -r 's,^.*:,,'`
+    pkg_config=`${DEB_SETUP_BIN_NAME} register --builddir=dist-${hc} 
--gen-pkg-config | tr -d ' \n' | sed -r 's,^.*:,,'`
     if [ "${HASKELL_HIDE_PACKAGES}" ]; then sed -i 's/^exposed: True$/exposed: 
False/' $pkg_config; fi
-    install -Dm 644 $pkg_config 
debian/${PKG}/var/lib/ghc/package.conf.d/$pkg_config
+    install -Dm 644 $pkg_config debian/${PKG}/${pkgdir}/$pkg_config
     rm -f $pkg_config
     if [ "z${DEB_GHC_EXTRA_PACKAGES}" != "z" ] ; then
        mkdir -p debian/$(notdir $@)/usr/lib/haskell-packages/extra-packages; \
@@ -391,7 +449,8 @@ install_dev_recipe(){
 
 install_prof_recipe(){
     PKG=$1
-    ( cd debian/tmp-inst-ghc ; mkdir -p usr/lib/haskell-packages/ghc/lib ; 
find usr/lib/haskell-packages/ghc/lib/ \
+    libdir=`package_libdir ${PKG}`
+    ( cd debian/tmp-inst-`package_hc ${PKG}` ; mkdir -p ${libdir} ; find 
${libdir}/ \
         ! \( ! -name "*_p.a" ! -name "*.p_hi" \) \
         -exec install -Dm 644 '{}' ../${PKG}/'{}' ';' )
     dh_haskell_provides -p${PKG}
@@ -400,23 +459,26 @@ install_prof_recipe(){
 
 install_doc_recipe(){
     CABAL_PACKAGE=$1
-    DEB_HADDOCK_DIR=$2
-    DEB_HADDOCK_HTML_DIR=$3
-    DEB_ENABLE_HOOGLE=$4
-    DEB_HOOGLE_TXT_DIR=$5
-    PKG=$6
-    mkdir -p debian/${PKG}/${DEB_HADDOCK_HTML_DIR}
-    ( cd debian/tmp-inst-ghc/ ; find ./${DEB_HADDOCK_HTML_DIR} \
+    CABAL_VERSION=$2
+    DEB_ENABLE_HOOGLE=$3
+    PKG=$4
+    hc=`package_hc ${PKG}`
+    pkgid=${CABAL_PACKAGE}-${CABAL_VERSION}
+    docdir=`hc_docdir ${hc} ${pkgid}`
+    htmldir=`hc_htmldir ${hc} ${CABAL_PACKAGE}`
+    hoogle=`hc_hoogle ${hc}`
+    mkdir -p debian/${PKG}/${htmldir}
+    ( cd debian/tmp-inst-${hc}/ ; find ./${htmldir} \
        ! -name "*.haddock" ! -type d -exec install -Dm 644 '{}' \
        ../${PKG}/'{}' ';' )
-    mkdir -p debian/${PKG}/${DEB_HADDOCK_DIR}
-    [ 0 = `ls debian/tmp-inst-ghc/${DEB_HADDOCK_DIR}/ 2>/dev/null | wc -l` ] ||
-       cp -r debian/tmp-inst-ghc/${DEB_HADDOCK_DIR}/*.haddock \
-           debian/${PKG}/${DEB_HADDOCK_DIR}
+    mkdir -p debian/${PKG}/${docdir}
+    [ 0 = `ls debian/tmp-inst-${hc}/${docdir}/ 2>/dev/null | wc -l` ] ||
+       cp -r debian/tmp-inst-${hc}/${docdir}/*.haddock \
+           debian/${PKG}/${docdir}
     if [ "${DEB_ENABLE_HOOGLE}" = "yes" ]; then
-        find debian/${PKG}/${DEB_HADDOCK_HTML_DIR} -name "*.txt" \
-            -printf "%p ${DEB_HOOGLE_TXT_DIR}/${PKG}.txt\n" >> 
debian/libghc-${CABAL_PACKAGE}-doc.links
-        sed -i s,^debian/libghc-${CABAL_PACKAGE}-doc,, 
debian/libghc-${CABAL_PACKAGE}-doc.links
+        find debian/${PKG}/${htmldir} -name "*.txt" \
+            -printf "%p ${hoogle}/${PKG}.txt\n" >> 
debian/lib${hc}-${CABAL_PACKAGE}-doc.links
+        sed -i s,^debian/lib${hc}-${CABAL_PACKAGE}-doc,, 
debian/lib${hc}-${CABAL_PACKAGE}-doc.links
     fi
     dh_haskell_depends -p${PKG}
 }
diff --git a/Dh_Haskell.sh.orig b/Dh_Haskell.sh.orig
index f0a2002..4e56b64 100644
--- a/Dh_Haskell.sh.orig
+++ b/Dh_Haskell.sh.orig
@@ -283,6 +283,143 @@ find_config_for_ghc(){
     done
 }
 
+clean_recipe(){
+    DEB_SETUP_BIN_NAME=$1
+    CABAL_PACKAGE=$2
+    MAKEFILE=$3
+    DEB_LINTIAN_OVERRIDES_FILE=$4
+    [ ! -x "${DEB_SETUP_BIN_NAME}" ] || ${DEB_SETUP_BIN_NAME} clean
+    rm -rf dist dist-ghc dist-hugs ${DEB_SETUP_BIN_NAME} Setup.hi Setup.ho 
Setup.o .*config*
+    rm -f configure-ghc-stamp build-ghc-stamp build-hugs-stamp 
build-haddock-stamp
+    rm -rf debian/tmp-inst-ghc
+    rm -f debian/extra-depends
+    rm -f debian/libghc-${CABAL_PACKAGE}-doc.links
+    if [ -f ${DEB_LINTIAN_OVERRIDES_FILE} ] ; then                             
        \
+      sed -i '/binary-or-shlib-defines-rpath/ d' ${DEB_LINTIAN_OVERRIDES_FILE} 
;       \
+      find ${DEB_LINTIAN_OVERRIDES_FILE} -empty -delete;                       
        \
+    fi
+
+    rm -f ${MAKEFILE}
+    rm -rf debian/dh_haskell_shlibdeps
+}
+
+make_setup_recipe(){
+    DEB_SETUP_BIN_NAME=$1
+    for setup in Setup.lhs Setup.hs; do if test -e $setup; then ghc --make 
$setup -o ${DEB_SETUP_BIN_NAME}; exit 0; fi; done
+}
+
+configure_recipe(){
+    DEB_SETUP_BIN_NAME=$1
+    CABAL_PACKAGE=$2
+    DEB_HADDOCK_DIR=$3
+    DEB_HADDOCK_HTML_DIR=$4
+    ENABLE_PROFILING=$5
+    NO_GHCI_FLAG=$6
+    DEB_SETUP_GHC6_CONFIGURE_ARGS=$7
+    DEB_SETUP_GHC_CONFIGURE_ARGS=$8
+    OPTIMIZATION=$9
+    TESTS=$10
+    COMPILERS=$11
+
+    local GHC_OPTIONS
+    for i in `dpkg-buildflags --get LDFLAGS`; do GHC_OPTIONS="$GHC_OPTIONS 
-optl$i"; done
+
+    ${DEB_SETUP_BIN_NAME} configure ${COMPILERS} -v2 
--package-db=/var/lib/ghc/package.conf.d \
+        --prefix=/usr --libdir=/usr/lib/haskell-packages/ghc/lib \
+       --builddir=dist-ghc \
+       --ghc-options="${GHC_OPTIONS}" \
+       --haddockdir=${DEB_HADDOCK_DIR} --datasubdir=${CABAL_PACKAGE}\
+       --htmldir=${DEB_HADDOCK_HTML_DIR} ${ENABLE_PROFILING} ${NO_GHCI_FLAG} \
+       ${DEB_SETUP_GHC6_CONFIGURE_ARGS} ${DEB_SETUP_GHC_CONFIGURE_ARGS} 
${OPTIMIZATION} ${TESTS}
+}
+
+build_recipe(){
+    DEB_SETUP_BIN_NAME=$1
+    COMPILER=$2
+    ${DEB_SETUP_BIN_NAME} build --builddir=dist-${COMPILER}
+}
+
+check_recipe(){
+    DEB_SETUP_BIN_NAME=$1
+    DEB_DEFAULT_COMPILER=$2
+    DEB_PACKAGES=$3
+    hc=`packages_hc "${DEB_DEFAULT_COMPILER}" "${DEB_PACKAGES}"`
+    ${DEB_SETUP_BIN_NAME} test --builddir=dist-${hc} --show-details=always
+}
+
+haddock_recipe(){
+    DEB_SETUP_BIN_NAME=$1
+    DEB_HADDOCK_OPTS=$2
+    COMPILER=$3
+    [ ! -x /usr/bin/haddock ] || ${DEB_SETUP_BIN_NAME} haddock 
--builddir=dist-${COMPILER} --with-haddock=/usr/bin/haddock 
--with-ghc=${COMPILER} ${DEB_HADDOCK_OPTS} || \
+         echo "Haddock failed (no modules?), creating empty documentation 
package."
+}
+
+extra_depends_recipe(){
+    DEB_SETUP_BIN_NAME=$1
+    pkg_config=`${DEB_SETUP_BIN_NAME} register --builddir=dist-ghc 
--gen-pkg-config | tr -d ' \n' | sed -r 's,^.*:,,'`
+    dh_haskell_extra_depends $pkg_config
+    rm $pkg_config
+}
+
+install_dev_recipe(){
+    DEB_SETUP_BIN_NAME=$1
+    CABAL_PACKAGE=$2
+    CABAL_VERSION=$3
+    HASKELL_HIDE_PACKAGES=$4
+    DEB_GHC_EXTRA_PACKAGES=$5
+    DEB_LINTIAN_OVERRIDES_FILE=$6
+    PKG=$7
+    ( cd debian/tmp-inst-ghc ; mkdir -p usr/lib/haskell-packages/ghc/lib ; 
find usr/lib/haskell-packages/ghc/lib/ \
+       \( ! -name "*_p.a" ! -name "*.p_hi" ! -type d \) \
+       -exec install -Dm 644 '{}' ../${PKG}/'{}' ';' )
+    pkg_config=`${DEB_SETUP_BIN_NAME} register --builddir=dist-ghc 
--gen-pkg-config | tr -d ' \n' | sed -r 's,^.*:,,'`
+    if [ "${HASKELL_HIDE_PACKAGES}" ]; then sed -i 's/^exposed: True$/exposed: 
False/' $pkg_config; fi
+    install -Dm 644 $pkg_config 
debian/${PKG}/var/lib/ghc/package.conf.d/$pkg_config
+    rm -f $pkg_config
+    if [ "z${DEB_GHC_EXTRA_PACKAGES}" != "z" ] ; then
+       mkdir -p debian/$(notdir $@)/usr/lib/haskell-packages/extra-packages; \
+       echo '${DEB_GHC_EXTRA_PACKAGES}' > 
debian/${PKG}/usr/lib/haskell-packages/extra-packages/${CABAL_PACKAGE}-${CABAL_VERSION}
+    fi
+
+    grep -s binary-or-shlib-defines-rpath ${DEB_LINTIAN_OVERRIDES_FILE} \
+       || echo binary-or-shlib-defines-rpath >> ${DEB_LINTIAN_OVERRIDES_FILE}
+    dh_haskell_provides -p${PKG}
+    dh_haskell_depends -p${PKG}
+    dh_haskell_shlibdeps -p${PKG}
+}
+
+install_prof_recipe(){
+    PKG=$1
+    ( cd debian/tmp-inst-ghc ; mkdir -p usr/lib/haskell-packages/ghc/lib ; 
find usr/lib/haskell-packages/ghc/lib/ \
+        ! \( ! -name "*_p.a" ! -name "*.p_hi" \) \
+        -exec install -Dm 644 '{}' ../${PKG}/'{}' ';' )
+    dh_haskell_provides -p${PKG}
+    dh_haskell_depends -p${PKG}
+}
+
+install_doc_recipe(){
+    CABAL_PACKAGE=$1
+    DEB_HADDOCK_DIR=$2
+    DEB_HADDOCK_HTML_DIR=$3
+    DEB_ENABLE_HOOGLE=$4
+    DEB_HOOGLE_TXT_DIR=$5
+    PKG=$6
+    mkdir -p debian/${PKG}/${DEB_HADDOCK_HTML_DIR}
+    ( cd debian/tmp-inst-ghc/ ; find ./${DEB_HADDOCK_HTML_DIR} \
+       ! -name "*.haddock" ! -type d -exec install -Dm 644 '{}' \
+       ../${PKG}/'{}' ';' )
+    mkdir -p debian/${PKG}/${DEB_HADDOCK_DIR}
+    [ 0 = `ls debian/tmp-inst-ghc/${DEB_HADDOCK_DIR}/ 2>/dev/null | wc -l` ] ||
+       cp -r debian/tmp-inst-ghc/${DEB_HADDOCK_DIR}/*.haddock \
+           debian/${PKG}/${DEB_HADDOCK_DIR}
+    if [ "${DEB_ENABLE_HOOGLE}" = "yes" ]; then
+        find debian/${PKG}/${DEB_HADDOCK_HTML_DIR} -name "*.txt" \
+            -printf "%p ${DEB_HOOGLE_TXT_DIR}/${PKG}.txt\n" >> 
debian/libghc-${CABAL_PACKAGE}-doc.links
+        sed -i s,^debian/libghc-${CABAL_PACKAGE}-doc,, 
debian/libghc-${CABAL_PACKAGE}-doc.links
+    fi
+    dh_haskell_depends -p${PKG}
+}
 
 if ! [ `which grep-dctrl` > /dev/null ] ; then
     echo "grep-dctrl is missing" >&2
diff --git a/dh_haskell_blurbs b/dh_haskell_blurbs
index 83b30af..6d6d3a2 100644
--- a/dh_haskell_blurbs
+++ b/dh_haskell_blurbs
@@ -6,6 +6,11 @@
 
 set -e 
 
+. /usr/share/haskell-devscripts/Dh_Haskell.sh
+
+packages=`dh_listpackages`
+hc=`packages_hc ${packages}`
+
 for pkg in `dh_listpackages $args`; do
     sfile=debian/$pkg.substvars
     touch $sfile
@@ -17,18 +22,19 @@ for pkg in `dh_listpackages $args`; do
        -e ^haskell:ShortDescription \
        $sfile > $sfile.tmp || true
 
-    case "$pkg" in
-       libghc-*-dev) cat >> $sfile.tmp <<'__END__' ;;
+    ext=`package_ext ${pkg}`
+    case "$ext" in
+       dev) cat >> $sfile.tmp <<'__END__' ;;
 haskell:ShortBlurb=
 haskell:Blurb=This package provides a library for the Haskell programming 
language.${Newline}See http://www.haskell.org/ for more information on Haskell.
 __END__
 
-       libghc-*-prof) cat >> $sfile.tmp <<'__END__' ;;
+       prof) cat >> $sfile.tmp <<'__END__' ;;
 haskell:ShortBlurb=; profiling libraries
 haskell:Blurb=This package provides a library for the Haskell programming 
language, compiled${Newline}for profiling.  See http://www.haskell.org/ for 
more information on Haskell.
 __END__
 
-       libghc-*-doc) cat >> $sfile.tmp <<'__END__' ;;
+       doc) cat >> $sfile.tmp <<'__END__' ;;
 haskell:ShortBlurb=; documentation
 haskell:Blurb=This package provides the documentation for a library for the 
Haskell${Newline}programming language.${Newline}See http://www.haskell.org/ for 
more information on Haskell.
 __END__
@@ -55,9 +61,9 @@ haskell:ShortDescription=$shortDescription
 haskell:LongDescription=$longDescription
 __END__
 
-    version=$(dpkg-query --showformat='${version}' --show ghc | egrep -o ".*-" 
\
+    version=$(dpkg-query --showformat='${version}' --show ${hc} | egrep -o 
".*-" \
        | egrep -o "[^-]*")
-    echo "haskell:ghc-version=ghc (>= ${version}), ghc (<< ${version}+)" >> 
$sfile.tmp
+    echo "haskell:${hc}-version=${hc} (>= ${version}), ${hc} (<< ${version}+)" 
>> $sfile.tmp
 
     mv $sfile.tmp $sfile
 done
diff --git a/dh_haskell_depends b/dh_haskell_depends
index f23271b..cd84c56 100644
--- a/dh_haskell_depends
+++ b/dh_haskell_depends
@@ -60,8 +60,11 @@ for pkg in `dh_listpackages $args`; do
     sfile=debian/$pkg.substvars
     touch $sfile
 
-    case "$pkg" in
-       libghc-*-dev|libghc-*-prof)
+    hc=`package_hc ${pkg}`
+    ext=`package_ext ${pkg}`
+
+    case "$hc,$ext" in
+       ghc,dev|ghc,prof|ghcjs,dev|ghcjs,prof)
            if [ -z "$files" ] ; then
                cfiles=`find_config_for_ghc $pkg`
            else
@@ -71,14 +74,14 @@ for pkg in `dh_listpackages $args`; do
              echo "dh_haskell_depends - no installed package description files 
found" >&2
              exit 1
            fi
-           case "$pkg" in
-               libghc-*-dev)
+           case "$ext" in
+               dev)
                    grep -v \
                         -e ^haskell:Depends \
                         -e ^haskell:Recommends \
                         -e ^haskell:Suggests \
                         $sfile > $sfile.tmp || true
-                   echo "haskell:Depends=`depends_for_ghc $cfiles`" >> 
$sfile.tmp
+                   echo "haskell:Depends=`depends_for_ghc ${hc} $cfiles`" >> 
$sfile.tmp
                     echo "haskell:Recommends=" >> $sfile.tmp
                     doc=`echo $pkg | sed -e 's/-dev$/-doc/'`
                     prof=`echo $pkg | sed -e 's/-dev$/-prof/'`
@@ -93,7 +96,7 @@ for pkg in `dh_listpackages $args`; do
                     fi
                     echo "haskell:Suggests=$suggests" >> $sfile.tmp
                    ;;
-               libghc-*-prof)
+               prof)
                    grep -v \
                         -e ^haskell:Depends \
                         -e ^haskell:Recommends \
@@ -101,14 +104,14 @@ for pkg in `dh_listpackages $args`; do
                         $sfile > $sfile.tmp || true
                     dev=`echo $pkg | sed -e 's/-prof$/-dev/'`
                     version='(=${binary:Version})'
-                    depends="$dev ${version}, `depends_for_ghc_prof $cfiles`"
+                    depends="$dev ${version}, `depends_for_ghc_prof ${hc} 
$cfiles`"
                    echo "haskell:Depends=$depends" >> $sfile.tmp
                     echo "haskell:Recommends=" >> $sfile.tmp
                     echo "haskell:Suggests=" >> $sfile.tmp
                    ;;
            esac
            ;;
-       libhugs-*)
+       hugs,*)
            grep -v \
                 -e ^haskell:Depends \
                 -e ^haskell:Recommends \
@@ -118,7 +121,7 @@ for pkg in `dh_listpackages $args`; do
             echo "haskell:Recommends=" >> $sfile.tmp
             echo "haskell:Suggests=" >> $sfile.tmp
            ;;
-        libghc-*-doc)
+        ghc,doc|ghcjs,doc)
            grep -v \
                 -e ^haskell:Depends \
                 -e ^haskell:Recommends \
@@ -136,7 +139,7 @@ for pkg in `dh_listpackages $args`; do
                 | cut -d: -f1 \
                 | sort -u \
                 | sed -e :a -e '$!N; s/\n/, /; ta'`
-            dev=`echo $pkg | sed -e 's/^[^-]\+-\(.\+\)-doc/libghc-\1-dev/'`
+            dev=`echo $pkg | sed -e 's/^[^-]\+-\(.\+\)-doc/lib${hc}-\1-dev/'`
             grep -v '^#' debian/control | grep $dev > /dev/null \
                 && recommends="$recommends, $dev" \
                 || recommends="$recommends"
@@ -148,7 +151,7 @@ for pkg in `dh_listpackages $args`; do
            ;;
     esac
 
-    echo "haskell:Extra-Depends=`cat debian/extra-depends`" >> $sfile.tmp
+    echo "haskell:Extra-Depends=`cat debian/extra-depends-${hc}`" >> $sfile.tmp
 
     mv $sfile.tmp $sfile
 done
diff --git a/dh_haskell_extra_depends b/dh_haskell_extra_depends
index 22087c1..513eb88 100644
--- a/dh_haskell_extra_depends
+++ b/dh_haskell_extra_depends
@@ -54,6 +54,9 @@
 
 set -e 
 
+hc=$1
+shift
+
 . /usr/share/haskell-devscripts/Dh_Haskell.sh
 
 extradeps=''
@@ -64,5 +67,5 @@ for dep in `cabal_depends $files` ; do
         extradeps="$extradeps, `cat $extra_packages_file`"
     fi
 done
-echo $extradeps | sed -e 's/^,[ ]*//' > debian/extra-depends
+echo $extradeps | sed -e 's/^,[ ]*//' > debian/extra-depends-${hc}
 
diff --git a/dh_haskell_provides b/dh_haskell_provides
index cf4923c..630777a 100644
--- a/dh_haskell_provides
+++ b/dh_haskell_provides
@@ -66,8 +66,11 @@ for pkg in `dh_listpackages $args`; do
     sfile=debian/$pkg.substvars
     touch $sfile
 
-    case "$pkg" in
-       libghc-*-dev|libghc-*-prof|ghc|ghc-prof)
+    hc=`package_hc ${pkg}`
+    ext=`package_ext ${pkg}`
+
+    case "$ext" in
+       dev|prof)
            if [ -z "$files" ] ; then
                cfiles=`find_config_for_ghc $pkg`
            else
@@ -77,24 +80,24 @@ for pkg in `dh_listpackages $args`; do
              echo "dh_haskell_provides - no installed package description 
files found" >&2
              exit 1
            fi
-           case "$pkg" in
-               libghc-*-dev|ghc)
+           case "$ext" in
+               dev)
                    grep -v \
                         -e ^haskell:Provides \
                         $sfile > $sfile.tmp || true
-                   echo "haskell:Provides=`provides_for_ghc $cfiles`" >> 
$sfile.tmp
+                   echo "haskell:Provides=`provides_for_ghc $hc $cfiles`" >> 
$sfile.tmp
                    mv $sfile.tmp $sfile
                    grep -v \
-                        -e ^haskell:ghc-package \
+                        -e ^haskell:${hc}-package \
                         $sfile > $sfile.tmp || true
-                   echo "haskell:ghc-package=`cabal_package_ids $cfiles`" >> 
$sfile.tmp
+                   echo "haskell:${hc}-package=`cabal_package_ids $cfiles`" >> 
$sfile.tmp
                    mv $sfile.tmp $sfile
                    ;;
-               libghc-*-prof|ghc-prof)
+               prof)
                    grep -v \
                         -e ^haskell:Provides \
                         $sfile > $sfile.tmp || true
-                   echo "haskell:Provides=`provides_for_ghc_prof $cfiles`" >> 
$sfile.tmp
+                   echo "haskell:Provides=`provides_for_ghc_prof $hc $cfiles`" 
>> $sfile.tmp
                    mv $sfile.tmp $sfile
                    ;;
            esac
diff --git a/dh_haskell_shlibdeps b/dh_haskell_shlibdeps
index 45a1a05..f18c701 100644
--- a/dh_haskell_shlibdeps
+++ b/dh_haskell_shlibdeps
@@ -31,8 +31,9 @@ pkgs=`dh_listpackages $args`
 
 for pkg in $pkgs
 do
-    case "$pkg" in
-        libghc-*-dev)
+    ext=`package_ext ${pkg}`
+    case "$ext" in
+        dev)
            if [ -z "$files" ] ; then
                files=`find_config_for_ghc $pkg`
            fi
@@ -67,8 +68,9 @@ gcc $args $T_DIR/probe.c -o $T_DIR/probe
 
 for pkg in $pkgs
 do
-    case "$pkg" in
-        libghc-*-dev)
+    ext=`package_ext ${pkg}`
+    case "$ext" in
+        dev)
             dpkg-shlibdeps --warnings=1 -Tdebian/$pkg.substvars $T_DIR/probe
             ;;
     esac
diff --git a/hlibrary.mk b/hlibrary.mk
index c7a4bf2..2c8bd76 100644
--- a/hlibrary.mk
+++ b/hlibrary.mk
@@ -23,6 +23,10 @@ export GREP_OPTIONS :=
 # cabal expects it to be available.
 export HOME = /homedoesnotexistatbuildtime
 
+# If we can't figure out which compiler to use from the library
+# package names, and DEB_DEFAULT_COMPILER isn't set in debian/rules,
+# we can safely assume the desired compiler is ghc.
+DEB_DEFAULT_COMPILER ?= ghc
 
 DEB_CABAL_PACKAGE ?= $(shell cat *.cabal |\
  perl -ne \
@@ -60,20 +64,16 @@ DEB_DH_MAKESHLIBS_ARGS_ALL += -XlibHS
 # - get this included in the cdbs package once this gets mature enough (maybe?)
 
 DEB_SETUP_BIN_NAME ?= debian/hlibrary.setup
-DEB_HADDOCK_HTML_DIR ?= /usr/share/doc/libghc-$(CABAL_PACKAGE)-doc/html/
 
 # most likely you don't need to touch this one
 GHC6_VERSION = $(shell ghc --numeric-version)
 GHC_VERSION = $(shell ghc --numeric-version)
-DEB_HADDOCK_DIR ?= /usr/lib/ghc-doc/haddock/$(CABAL_PACKAGE)-$(CABAL_VERSION)/
 
 DEB_HADDOCK_OPTS += --html --hoogle
 ifndef DEB_NO_IMPLICIT_HADDOCK_HYPERLINK
 DEB_HADDOCK_OPTS += --hyperlink-source
 endif
 
-DEB_HOOGLE_TXT_DIR = /usr/lib/ghc-doc/hoogle/
-
 MAKEFILE := debian/hlibrary.Makefile
 
 #ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
@@ -102,13 +102,13 @@ $(DEB_SETUP_BIN_NAME):
 
 configure-ghc-stamp: $(DEB_SETUP_BIN_NAME)
        . /usr/share/haskell-devscripts/Dh_Haskell.sh && \
-         configure_recipe "$(DEB_SETUP_BIN_NAME)" "$(CABAL_PACKAGE)" 
"$(DEB_HADDOCK_DIR)" "$(DEB_HADDOCK_HTML_DIR)" \
+         configure_recipe "$(DEB_SETUP_BIN_NAME)" "$(CABAL_PACKAGE)" 
"$(CABAL_VERSION)" \
            "$(ENABLE_PROFILING)" "$(NO_GHCI_FLAG)" 
"$(DEB_SETUP_GHC6_CONFIGURE_ARGS)" \
-           "$(DEB_SETUP_GHC_CONFIGURE_ARGS)" "$(OPTIMIZATION)" "$(TESTS)" 
"--ghc"
+           "$(DEB_SETUP_GHC_CONFIGURE_ARGS)" "$(OPTIMIZATION)" "$(TESTS)" 
"$(DEB_DEFAULT_COMPILER)" "$(DEB_PACKAGES)"
        touch $@
 
 build-ghc-stamp: configure-ghc-stamp
-       . /usr/share/haskell-devscripts/Dh_Haskell.sh && build_recipe 
"$(DEB_SETUP_BIN_NAME)" ghc
+       . /usr/share/haskell-devscripts/Dh_Haskell.sh && build_recipe 
"$(DEB_SETUP_BIN_NAME)" "$(DEB_DEFAULT_COMPILER)" "$(DEB_PACKAGES)"
        touch $@
 
 ifeq ($(DEB_ENABLE_TESTS),yes)
@@ -130,7 +130,7 @@ endif
 build/libghc-$(CABAL_PACKAGE)-prof build/libghc-$(CABAL_PACKAGE)-dev:: 
build-ghc-stamp check-ghc-stamp
 
 build-haddock-stamp:
-       . /usr/share/haskell-devscripts/Dh_Haskell.sh && haddock_recipe 
"$(DEB_SETUP_BIN_NAME)" "$(DEB_HADDOCK_OPTS)" ghc
+       . /usr/share/haskell-devscripts/Dh_Haskell.sh && haddock_recipe 
"$(DEB_SETUP_BIN_NAME)" "$(DEB_HADDOCK_OPTS)" "$(DEB_DEFAULT_COMPILER)" 
"$(DEB_PACKAGES)"
        touch build-haddock-stamp
 
 build/libghc-$(CABAL_PACKAGE)-doc:: configure-ghc-stamp build-haddock-stamp
@@ -144,23 +144,23 @@ build/libhugs-$(CABAL_PACKAGE):: dist-hugs
 debian/tmp-inst-ghc: $(DEB_SETUP_BIN_NAME) build-ghc-stamp
        $(DEB_SETUP_BIN_NAME) copy --builddir=dist-ghc 
--destdir=debian/tmp-inst-ghc
 
-debian/extra-depends: debian/tmp-inst-ghc
-       . /usr/share/haskell-devscripts/Dh_Haskell.sh && extra_depends_recipe 
"$(DEB_SETUP_BIN_NAME)"
+debian/extra-depends-ghc: debian/tmp-inst-ghc
+       . /usr/share/haskell-devscripts/Dh_Haskell.sh && extra_depends_recipe 
"$(DEB_SETUP_BIN_NAME)" ghc
 
 DEB_LINTIAN_OVERRIDES_FILE = 
debian/libghc-$(CABAL_PACKAGE)-dev.lintian-overrides
 
-install/libghc-$(CABAL_PACKAGE)-dev:: debian/tmp-inst-ghc debian/extra-depends
+install/libghc-$(CABAL_PACKAGE)-dev:: debian/tmp-inst-ghc 
debian/extra-depends-ghc
        . /usr/share/haskell-devscripts/Dh_Haskell.sh && \
          install_dev_recipe "$(DEB_SETUP_BIN_NAME)" "$(CABAL_PACKAGE)" 
"$(CABAL_VERSION)" "$(HASKELL_HIDE_PACKAGES)" "$(DEB_GHC_EXTRA_PACKAGES)" 
$(DEB_LINTIAN_OVERRIDES_FILE) "$(notdir $@)"
 
-install/libghc-$(CABAL_PACKAGE)-prof:: debian/tmp-inst-ghc 
install/libghc-$(CABAL_PACKAGE)-dev debian/extra-depends
+install/libghc-$(CABAL_PACKAGE)-prof:: debian/tmp-inst-ghc 
install/libghc-$(CABAL_PACKAGE)-dev debian/extra-depends-ghc
        . /usr/share/haskell-devscripts/Dh_Haskell.sh && install_prof_recipe 
"$(notdir $@)"
 
-install/libghc-$(CABAL_PACKAGE)-doc:: debian/tmp-inst-ghc build-haddock-stamp 
debian/extra-depends
+install/libghc-$(CABAL_PACKAGE)-doc:: debian/tmp-inst-ghc build-haddock-stamp 
debian/extra-depends-ghc
        . /usr/share/haskell-devscripts/Dh_Haskell.sh && \
-         install_doc_recipe "$(CABAL_PACKAGE)" "$(DEB_HADDOCK_DIR)" 
"$(DEB_HADDOCK_HTML_DIR)" "$(DEB_ENABLE_HOOGLE)" "$(DEB_HOOGLE_TXT_DIR)" 
"$(notdir $@)"
+         install_doc_recipe "$(CABAL_PACKAGE)" "$(CABAL_VERSION)" 
"$(DEB_ENABLE_HOOGLE)" "$(notdir $@)"
 
-install/libhugs-$(CABAL_PACKAGE):: $(DEB_SETUP_BIN_NAME) dist-hugs 
debian/extra-depends
+install/libhugs-$(CABAL_PACKAGE):: $(DEB_SETUP_BIN_NAME) dist-hugs 
debian/extra-depends-hugs
        $(DEB_SETUP_BIN_NAME) copy --destdir=debian/libhugs-$(CABAL_PACKAGE) 
--builddir=dist-hugs
        rm -rf debian/libhugs-$(CABAL_PACKAGE)/usr/share/doc/*
        dh_haskell_depends -p$(notdir $@)
-- 
1.9.1


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]
Archive: 
https://lists.debian.org/[email protected]

Reply via email to