#! /bin/bash
# macht aus einem Debian-Paket einen Slackware-Tarball
# Anregung aus "alt.os.linux.slackware"
# Nutzung gemss der GNU Public License

# $Id: debian2slack,v 1.1 2007-12-27 15:35:44+01 HHullen Exp $
# $Log: debian2slack,v $
# Revision 1.1  2007-12-27 15:35:44+01  HHullen
# Start
#

which tar-1.13 2>/dev/null && Tar=tar-1.13
test "$Tar" || {
    echo tar-1.13 nicht gefunden
    exit 1
    }

Hier=$(pwd)
for Datei in "$@"
  do
    cd $Hier    
    test -f $Datei || continue
    file $Datei | grep -w -q Debian || continue 

Tempdir=/tmp/d2t$$
rm -rf $Tempdir
mkdir -p $Tempdir/install

Datum=$(ar tv $1 | grep data.tar.gz | rev | cut -d" " -f2-5 | rev)
Slackroh=$(basename $Datei .deb)
Slack=${Slackroh}.tar
SlackCtrl=$(basename $Datei .deb)-ctrl.tgz
ar p $1 data.tar.gz | gzip -d > $Slack
ar p $1 control.tar.gz > $SlackCtrl

cd $Tempdir
tar -xf $Hier/$Slack

cd $Tempdir/install
tar -xzf $Hier/$SlackCtrl ./conffiles ./control ./postinst ./md5sums 2>/dev/null

cd $Tempdir
test -s install/conffiles && {
    while read Confdat
      do
	tar -xf $Hier/$Slack ./"$Confdat"
        mv .$Confdat .${Confdat}.new
	tar --delete .$Confdat -f $Hier/$Slack
      done < install/conffiles
    }

# Fkt. "config" von slackware bernommen
echo '#!/bin/sh
config() {
  NEW="$1"
  OLD=$(dirname "$NEW")/$(basename "$NEW" .new) 
  # If there is no config file by that name, mv it over:
  if [ ! -r $OLD ]; then
    mv $NEW $OLD
  elif [ "$(md5sum $OLD)" = "$(md5sum $NEW)" ]; then # toss the redundant copy
    rm $NEW
  fi
  # Otherwise, we leave the new copy for the admin to consider...
    }

test -s install/conffiles && {
    while read Datei
	do
	config ./${Datei}.new
	done < install/conffiles
	}
    test -s install/postinst && sh install/postinst configure

#
' > $Tempdir/install/doinst.sh

    cd $Tempdir/install
    grep ^Depends: control | cut -d" " -f2 > slack-required
    grep -A 10 ^Description: control| fold -s -w 70 | head -10  > debian-desc
    Package=$(grep ^Package: control | cut -d" " -f2)
    Version=$(grep ^Version: control | cut -d" " -f2)

    for ct in $(seq 1 11) ; do echo "$Package: "; done > debian-pack

echo "# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.  Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in.  You must
# make exactly 11 lines for the formatting to be correct.  It's also
# customary to leave one space after the ':'.

        |-----handy-ruler------------------------------------------------------|" > slack-desc

    paste debian-pack debian-desc >> slack-desc
    rm debian-desc debian-pack

    rm control 
    cd ..
    makepkg -l y -c n $Hier/${Slackroh}.tgz
    cd $Hier
    touch --reference=$Tempdir/install/md5sums ${Slackroh}.tgz
    rm -rf $Slack $Tempdir $SlackCtrl
    shift
  done

#
