diff options
-rw-r--r-- | libre/aufs2-libre/PKGBUILD | 65 | ||||
-rw-r--r-- | libre/aufs2-libre/aufs2-libre.install | 12 | ||||
-rw-r--r-- | libre/aufs2-libre/aufs2-module-2.6.36.patch | 47 | ||||
-rwxr-xr-x | libre/aufs2-libre/create-tarball.sh | 14 |
4 files changed, 138 insertions, 0 deletions
diff --git a/libre/aufs2-libre/PKGBUILD b/libre/aufs2-libre/PKGBUILD new file mode 100644 index 000000000..44439e445 --- /dev/null +++ b/libre/aufs2-libre/PKGBUILD @@ -0,0 +1,65 @@ +# $Id: PKGBUILD 110689 2011-02-21 15:30:22Z tpowa $ +# Maintainer: Paul Mattal <pjmattal@elys.com> + +pkgname=aufs2-libre +pkgver=2.6.37_20110124 +pkgrel=2 +#_kernver=${pkgver%_*}-LIBRE +_kernver=2.6.37-LIBRE +pkgdesc="Another Unionfs Implementation for the Linux-Libre kernel" +arch=('i686' 'x86_64') +url="http://aufs.sourceforge.net/" +license=('GPL2') +depends=('kernel26-libre>=2.6.37.1' 'kernel26-libre<2.6.38') +makedepends=('kernel26-libre-headers>=2.6.37' 'kernel26-libre-headers<2.6.38') +replaces=('aufs' 'aufs2') +conflicts=('aufs2') +provides=("aufs2=$pkgver") +install=${pkgname}.install +source=("ftp://ftp.archlinux.org/other/aufs2/${pkgname%-libre}-${pkgver}.tar.gz") +options=('!makeflags') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + #patch -Np1 -i ../aufs2-module-2.6.36.patch + sed -i 's|CONFIG_AUFS_HNOTIFY =.*|CONFIG_AUFS_HNOTIFY = y|' \ + config.mk || return 1 + sed -i 's|CONFIG_AUFS_HFSNOTIFY =.*|CONFIG_AUFS_HFSNOTIFY = y|' \ + config.mk || return 1 + sed -i 's|CONFIG_AUFS_EXPORT =.*|CONFIG_AUFS_EXPORT = y|' \ + config.mk || return 1 + sed -i 's|CONFIG_AUFS_SHWH =.*|CONFIG_AUFS_SHWH = y|' \ + config.mk || return 1 + sed -i 's|CONFIG_AUFS_BDEV_LOOP =.*|CONFIG_AUFS_BDEV_LOOP = y|' \ + config.mk || return 1 + sed -i 's|CONFIG_AUFS_BR_RAMFS =.*|CONFIG_AUFS_BR_RAMFS = y|' \ + config.mk || return 1 + sed -i 's|CONFIG_AUFS_DEBUG =.*|CONFIG_AUFS_DEBUG =|' \ + config.mk || return 1 + if [ "${CARCH}" = "x86_64" ]; then + inot64=" y" + else + inot64="" + fi + sed -i "s|CONFIG_AUFS_INO_T_64 =.*|CONFIG_AUFS_INO_T_64 =${inot64}|" \ + config.mk + # build, sed fixes are from gentoo portage build + sed -i "s:aufs.ko usr/include/linux/aufs_type.h:aufs.ko:g" Makefile + sed -i "s:__user::g" include/linux/aufs_type.h + make KDIR=/usr/src/linux-${_kernver} +} + +package() { + cd ${srcdir}/${pkgname}-${pkgver} + install -D -m644 fs/aufs/aufs.ko \ + $pkgdir/lib/modules/${_kernver}/kernel/fs/aufs/aufs.ko + # tweak the install script for the right kernel version + sed -i -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \ + $startdir/$pkgname.install + # install include files + install -D -m 644 include/linux/aufs_type.h $pkgdir/usr/include/linux/aufs_type.h + # gzip -9 all modules to safe 100MB + find "$pkgdir" -name '*.ko' -exec gzip -9 {} \; +} + +md5sums=('fa64d7893490ef9c82310ebd5f730443') diff --git a/libre/aufs2-libre/aufs2-libre.install b/libre/aufs2-libre/aufs2-libre.install new file mode 100644 index 000000000..4c95ad76e --- /dev/null +++ b/libre/aufs2-libre/aufs2-libre.install @@ -0,0 +1,12 @@ +post_install() { + KERNEL_VERSION=2.6.37-ARCH + depmod $KERNEL_VERSION +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/libre/aufs2-libre/aufs2-module-2.6.36.patch b/libre/aufs2-libre/aufs2-module-2.6.36.patch new file mode 100644 index 000000000..3b43f7aed --- /dev/null +++ b/libre/aufs2-libre/aufs2-module-2.6.36.patch @@ -0,0 +1,47 @@ +diff --git a/ubuntu/aufs/branch.c b/ubuntu/aufs/branch.c +index cd4463c..ff6b158 100644 +--- a/fs/aufs/branch.c ++++ b/fs/aufs/branch.c +@@ -22,6 +22,8 @@ + + #include <linux/file.h> + #include <linux/statfs.h> ++#include <linux/lglock.h> ++#include <linux/percpu.h> + #include "aufs.h" + + /* +@@ -851,7 +853,8 @@ static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) + goto out; + + /* no need file_list_lock() since sbinfo is locked? defered? */ +- list_for_each_entry(file, &sb->s_files, f_u.fu_list) { ++ lg_global_lock(files_lglock); ++ do_file_list_for_each_entry(sb, file) { + if (special_file(file->f_dentry->d_inode->i_mode)) + continue; + +@@ -861,6 +864,7 @@ static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) + err = -EBUSY; + FiMustNoWaiters(file); + fi_read_unlock(file); ++ lg_global_unlock(files_lglock); + goto out_free; + } + +@@ -889,10 +893,13 @@ static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) + if (p) { + a = p; + a[n++] = hf; +- } else ++ } else { ++ lg_global_unlock(files_lglock); + goto out_free; ++ } + } +- } ++ } while_file_list_for_each_entry; ++ lg_global_unlock(files_lglock); + + err = 0; + if (n) diff --git a/libre/aufs2-libre/create-tarball.sh b/libre/aufs2-libre/create-tarball.sh new file mode 100755 index 000000000..a460a8b3b --- /dev/null +++ b/libre/aufs2-libre/create-tarball.sh @@ -0,0 +1,14 @@ +#!/bin/sh +AUFS2VERSION="-37" +KERNELVERSION=2.6.37 +GITSNAPSHOT=20110124 +# aufs2 (no -xx) for the latest -rc version. +git clone http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git aufs2-standalone.git +cd aufs2-standalone.git +git checkout origin/aufs2.1${AUFS2VERSION} +#git checkout origin/aufs2.1 +#*** apply "aufs2-base.patch" and "aufs2-standalone.patch" to your kernel source files. +cd .. +rm -rf aufs2-${KERNELVERSION}_${GITSNAPSHOT} +cp -a aufs2-standalone.git aufs2-${KERNELVERSION}_${GITSNAPSHOT} +tar -czf aufs2-${KERNELVERSION}_${GITSNAPSHOT}.tar.gz --exclude=.git aufs2-${KERNELVERSION}_${GITSNAPSHOT} |