# $Id: PKGBUILD 5885 2008-07-21 19:28:11Z thomas $
# Contributor: Paul Mattal <paul@mattal.com>
# Maintainer: Paul Mattal <pjmattal@elys.com>
pkgname=aufs
pkgver=20080527
pkgrel=2
_kernver='2.6.26-ARCH'
pkgdesc="Another Unionfs Implementation that supports NFS branches"
arch=('i686' 'x86_64')
url="http://aufs.sourceforge.net/"
license=('GPL2')
depends=('kernel26>=2.6.26-1' 'kernel26<=2.6.27' 'glibc' 'aufs-utils')
install=$pkgname.install
source=(ftp://ftp.archlinux.org/other/aufs/$pkgname-$pkgver.tar.gz)
options=(!libtool !makeflags)
md5sums=('4378221aa5763d1f4408a0bbb0e80f0a')

build() {
  cd $startdir/src/$pkgname || return 1

  # use splice functions exported by unionfs kernel patch
  # - important for loopback fs mounts
  sed s'|#if.*KERNEL_VERSION(2, 6, 26).*|#if 0|' -i fs/aufs25/vfsub.h \
    || return 1
  sed -i 's|CONFIG_AUFS_SPLICE_PATCH =|CONFIG_AUFS_SPLICE_PATCH = y|' \
    local.mk || return 1

  # patch for spin_lock conflict with the new unionfs patch
  sed s'|#if.*KERNEL_VERSION(2, 6, 26).*|#if 0|' -i fs/aufs25/cpup.c \
    || return 1

  sed -i 's|.*CONFIG_AUFS_SHWH =.*|CONFIG_AUFS_SHWH = y|' \
    local.mk || return 1

  # configure for NFS by:
  # 1) configure local.mk to use FILP and LHASH
  sed -i 's|CONFIG_AUFS_PUT_FILP_PATCH =|CONFIG_AUFS_PUT_FILP_PATCH = y|' \
    local.mk || return 1
  sed -i 's|CONFIG_AUFS_LHASH_PATCH =|CONFIG_AUFS_LHASH_PATCH = y|' \
    local.mk || return 1
  # 2) configure local.mk NOT to use FAKE_DM
  sed -i 's|CONFIG_AUFS_FAKE_DM = y|CONFIG_AUFS_FAKE_DM =  |' \
    local.mk || return 1

  # build
  make KDIR=/usr/src/linux-$_kernver/ -f local.mk || return 1

  # install
  install -D -m644 fs/aufs25/aufs.ko \
    $startdir/pkg/lib/modules/$_kernver/fs/aufs25/aufs.ko || return 1

  # tweak the install script for the right kernel version
  sed -i -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \
    $startdir/$pkgname.install || return 1
}

# vim:set ts=2 sw=2 et: