#!/bin/bash -e
#
# This script should be called by the maintainer; It prepares a new
# version of loop-aes-modules from the current loop-aes-source package
# and the chosen kernels.
#
# It builds debian/control from template debian/control.in and adds 
# binary packages for normal kernels (loop-aes-$KVERS) and udebs 
# (loop-aes-$KVERS-di) from the template control.modules.in. It also
# adds a meta package for each flavour.
#
# $Id: gencontrol 1654 2006-01-05 16:30:13Z max $
#

test -f debian/changelog || {
    echo error: debian/changelog not found
    exit 1
}

KERNELS="2.6.15-1"
KERNELS_DI="2.6.15-1"
ARCHS=$(grep -v '^#' debian/archs)

control_add_source () {
    sed -ne ' /^Source: loop-aes-modules$/,/^$/p' \
      < debian/control.in >> debian/control
}

CONTROL_TEMPLATE="modules/loop-aes/debian/control.modules.in"

control_add_package () {
    arch=$1
    kvers=$2
    flavour=$3

    sed -ne '
      /^Package: loop-aes-_KVERS_$/,/^$/ {
        # set architecture
        s/^\(Architecture\): any/\1: '$arch'/;
        
        # depend on linux-image package
        s/^\(Depends\): \(.*\)/\1: linux-image-'$kvers-$flavour', \2/;
  
        # drop recommends
        /^Recommends:/ bignore;

        # replace _KVERS_ with kernel version
        s/_KVERS_/'$kvers-$flavour'/g;
        p; 
        :ignore
      }' < $CONTROL_TEMPLATE >> debian/control

    echo >> debian/control
}

control_add_udeb () {
    arch=$1
    kvers=$2
    flavour=$3

    sed -ne '
      /^Package: loop-aes-_KVERS_$/a\
XC-Package-Type: udeb\
Section: debian-installer
  
      /^Package: loop-aes-_KVERS_$/,/^$/ {
        # set architecture
        s/^\(Architecture\): any/\1: '$arch'/g;
  
        # depend on kernel-image -di package
        s/^\(Depends\): \(.*\)/\1: kernel-image-'$kvers-$flavour'-di, \2/;
  
        # adjust package name for udeb
        s/loop-aes-utils/mount-aes-udeb/g;

        # ignore recommends
        /^Recommends:/ bignore;
 
        # replace _KVERS_ with kernel version
        s/_KVERS_/'$kvers-$flavour'-di/g;
        p;
        :ignore
      }' < $CONTROL_TEMPLATE >> debian/control

    echo >> debian/control
}

control_add_meta () {
    arch=$1
    kvers=$2
    flavour=$3
    major=${kvers%.*}
    cat >> debian/control <<END
Package: loop-aes-$major-$flavour
Depends: loop-aes-$kvers-$flavour
Architecture: $arch
Description: loop-AES modules for kernel $major-$flavour
 This package will always depend on the loop-AES module package
 built for the latest $major kernel image available for $flavour.

END
}

latest_version () {
    latest=
    for version in $*; do
        if [ -z $latest ] || dpkg --compare-versions $version gt $latest; then
            latest=$kvers
        fi
    done
    echo $latest
}

rm -rf modules
tar -xjf /usr/src/loop-aes.tar.bz2

> debian/control
control_add_source

# add normal packages
for kvers in $KERNELS; do
    for arch in $ARCHS; do
        > debian/kernels/2.6/$arch
        for flavour in $(grep -v '^#' debian/flavour/2.6/$arch); do
            echo Package: loop-aes-$kvers-$flavour [$arch]
            control_add_package $arch $kvers $flavour
            echo $kvers-$flavour >> debian/kernels/2.6/$arch
        done
    done
done

# add udebs
for kvers in $KERNELS_DI; do
    for arch in $ARCHS; do
        > debian/kernels/2.6-di/$arch
        [ -f debian/flavour/2.6-di/$arch ] || continue
        for flavour in $(grep -v '^#' debian/flavour/2.6-di/$arch); do
            echo Package: loop-aes-$kvers-$flavour-di [$arch]
            control_add_udeb $arch $kvers $flavour
            echo $kvers-$flavour-di >> debian/kernels/2.6-di/$arch
        done
    done
done

# add meta packages
kvers=$(latest_version $KERNELS)
for arch in $ARCHS; do
    > debian/kernels/2.6-meta/$arch
    for flavour in $(grep -v '^#' debian/flavour/2.6/$arch); do
        echo Package: loop-aes-${kvers%.*}-$flavour [$arch]
        control_add_meta $arch $kvers $flavour
        echo ${kvers%.*}-$flavour >> debian/kernels/2.6-meta/$arch
    done
done

rm -rf modules

# vim:set ts=4 sw=4 expandtab:
