#! /bin/sh
#
# Determine package dependencies from installed-pkg-config file
#
# Copyright (C) 2006-2007 Arjan Oosting <arjan@debian.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of either:
#
# 1) The terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License along
#    with this program; if not, write to the Free Software Foundation, Inc.,
#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# 2) BSD 3-clause license.
# 
#    All rights reserved.
#
#    Redistribution and use in source and binary forms, with or without
#    modification, are permitted provided that the following conditions are
#    met:
#
#      * Redistributions of source code must retain the above copyright
#        notice, this list of conditions and the following disclaimer.
#
#      * Redistributions in binary form must reproduce the above
#        copyright notice, this list of conditions and the following
#        disclaimer in the documentation and/or other materials provided
#        with the distribution.
#
#      * The names of contributors may not be used to endorse or promote
#        products derived from this software without specific prior
#        written permission. 
#
#    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

set -e 

. /usr/share/haskell-devscripts/Dh_Haskell.sh

for pkg in `dh_listpackages $args`; do
    sfile=debian/$pkg.substvars
    touch $sfile

    case "$pkg" in
	libghc-*-dev|libghc-*-prof)
	    if [ -z "$files" ] ; then
		cfiles=`find_config_for_ghc $pkg`
	    else
		cfiles="$files"
	    fi
	    if [ -z "$cfiles" ] ; then
	      echo "No installed package description files can not be found" >&2
	      exit 1
	    fi
	    case "$pkg" in
		libghc-*-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:Recommends=" >> $sfile.tmp
                    doc=`echo $pkg | sed -e 's/-dev$/-doc/'`
                    prof=`echo $pkg | sed -e 's/-dev$/-prof/'`
                    grep -v '^#' debian/control | grep $doc > /dev/null \
                        && suggests="$doc" \
                        || suggests=""
                    if grep -v '^#' debian/control | grep $prof > /dev/null
                    then
                        [ "$suggests" = "" ] \
                            && suggests="$prof" \
                            || suggests="$suggests, $prof"
                    fi
                    echo "haskell:Suggests=$suggests" >> $sfile.tmp
		    ;;
		libghc-*-prof)
	            grep -v \
                        -e ^haskell:Depends \
                        -e ^haskell:Recommends \
                        -e ^haskell:Suggests \
                        $sfile > $sfile.tmp || true
                    dev=`echo $pkg | sed -e 's/-prof$/-dev/'`
                    version='(=${binary:Version})'
                    depends="$dev ${version}, `depends_for_ghc_prof $cfiles`"
		    echo "haskell:Depends=$depends" >> $sfile.tmp
                    echo "haskell:Recommends=" >> $sfile.tmp
                    echo "haskell:Suggests=" >> $sfile.tmp
		    ;;
	    esac
	    ;;
	libhugs-*)
	    grep -v \
                -e ^haskell:Depends \
                -e ^haskell:Recommends \
                -e ^haskell:Suggests \
                $sfile > $sfile.tmp || true
	    echo "haskell:Depends=`depends_for_hugs`" >> $sfile.tmp
            echo "haskell:Recommends=" >> $sfile.tmp
            echo "haskell:Suggests=" >> $sfile.tmp
	    ;;
        libghc-*-doc|haskell-*-doc)
	    grep -v \
                -e ^haskell:Depends \
                -e ^haskell:Recommends \
                -e ^haskell:Suggests \
                $sfile > $sfile.tmp || true
	    depends=`haddock --interface-version`
            echo "haskell:Depends=$depends" >> $sfile.tmp
            recommends=` \
                find debian/$pkg -name \*.html -exec hxwls -r \{\} \; \
                | grep ^/ \
                | cut -d# -f1 \
                | sort -u \
                | xargs dpkg -S \
                | cut -d: -f1 \
                | sort -u \
                | sed -e :a -e '$!N; s/\n/, /; ta'`
            dev=`echo $pkg | sed -e 's/^[^-]\+-\(.\+\)-doc/libghc-\1-dev/'`
            grep -v '^#' debian/control | grep $dev > /dev/null \
                && recommends="$recommends, $dev" \
                || recommends="$recommends"
            echo "haskell:Recommends=$recommends" >> $sfile.tmp
            echo "haskell:Suggests=$suggests" >> $sfile.tmp
            ;;
	*)
            cp $sfile $sfile.tmp
	    ;;
    esac

    echo "haskell:Extra-Depends=`cat debian/extra-depends`" >> $sfile.tmp

    mv $sfile.tmp $sfile
done
