# Maintainer: Luke Shumaker <lukeshu@sbcglobal.net>
# Maintainer (AUR): Jochen Schalanda <jochen+aur@schalanda.name>
# Contributor (AUR): Pierre Carrier <pierre@spotify.com>
# Contributor (AUR): Thomas Dziedzic <gostrc@gmail>
# Contributor (AUR): Chris Giles <Chris.G.27@gmail.com>
# Contributor (AUR): seblu <seblu+arch@seblu.net>
# Contributor (AUR): squiddo <squiddo@intheocean.net>

pkgbase=dpkg
#pkgname=(dpkg dpkg-devtools dselect libdpkg perl-dpkg)
pkgname=(dpkg-devtools perl-dpkg)
pkgdesc="Debian Package manager and utilities"
license=('GPL2')

pkgver=1.16.9
url="http://packages.debian.org/source/sid/dpkg"
_debrepo=http://ftp.debian.org/debian/pool/main # Debian Sid

pkgrel=1.2
debfile() { echo "${_debrepo}/${1:0:1}/${1}/${1}_${2}"; }
arch=('i686' 'x86_64' 'mips64el')
depends=('bzip2' 'xz' 'zlib' 'ncurses')
checkdepends=('perl-test-pod')
makedepends=('perl-io-string' 'perl-timedate')
source=("$(debfile ${pkgbase} ${pkgver}).tar.xz"
        dpkg-gzip-rsyncable.patch dpkg-gpg2.patch)

######################################################################

# This is really gross.
# It uses the debian control files to help us split the package.
# Shame on the dpkg developers for not putting that logic into the build system.
_destdir="$srcdir/$pkgbase-$pkgver/debian/pkg-makepkg"
_debhelper_install() {
  local debname=$1
  cd "$_destdir"

  # main files
  sed -e '/^\s*$/d' -e 's|usr/share/perl5/|&vendor_perl/|g' ../$debname.install \
    | while read pattern dest; do
    if [[ -z $dest ]]; then
      for file in $pattern; do
        install -d "$pkgdir/${file%/*}"
        cp -a "$file" "$pkgdir/$file" || true
      done
    else
      install -d "$pkgdir/$dest/"
      cp -a "$pattern" "$pkgdir/$dest/" || true
    fi
  done

  # manpages
  sed -e 's|^debian/tmp/||' -e '/^\s*$/d' ../$debname.manpages 2>/dev/null \
    | while read pattern; do
    for file in $pattern; do
      install -d "$pkgdir/${file%/*}"
      cp -a "$file" "$pkgdir/$file" || true
    done
  done

  # other documentation
  install -d "$pkgdir/usr/share/doc/$pkgname/"
  sed '/^\s*$/d' ../$debname.docs  2>/dev/null \
    | while read file; do
    gzip \
      < "$srcdir/$pkgbase-$pkgver/$file" \
      > "$pkgdir/usr/share/doc/$pkgname/${file##*/}.gz"
  done

  # symlinks
  sed '/^\s*$/d' ../$debname.links  2>/dev/null \
    | while read file link; do
    ln -s "/$file" "$pkgdir/$link"
  done
}

######################################################################

build() {
  cd "${srcdir}/${pkgbase}-${pkgver}"

  patch -Np0 -i "${srcdir}/dpkg-gzip-rsyncable.patch"
  patch -Np1 -i "${srcdir}/dpkg-gpg2.patch"

  ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-zlib --with-bz2 --with-liblzma
  make
  make DESTDIR="$_destdir" install
}

check() {
  cd "${srcdir}/${pkgbase}-${pkgver}"
  make check
}

package_dpkg() {
  pkgdesc="Debian Package manager"
  provides+=(start-stop-daemon)
  conflicts+=(start-stop-daemon)
  _debhelper_install dpkg
}

package_dpkg-devtools() {
  pkgdesc="Debian Package development tools"
  arch=(any)
  depends+=(perl-dpkg)
  _debhelper_install dpkg-dev
}

package_dselect() {
  pkgdesc="Debian Package manager high-level interface"
  _debhelper_install dselect
}

package_libdpkg() {
  pkgdesc="Debian Package manager library (static)"
  _debhelper_install libdpkg-dev
}

package_perl-dpkg() {
  pkgdesc="Debian Package perl modules"
  arch=(any)
  _debhelper_install libdpkg-perl
}

md5sums=('4df9319b2d17e19cdb6fe94dacee44da'
         '5ab63758999e9bb10f84bce79a0307b2'
         '74b7ce3045690a8fc290104f10cf8d42')