aufs-util: update to 3.2 branch
authorGrazvydas Ignotas <notasas@gmail.com>
Mon, 29 Dec 2014 23:54:28 +0000 (01:54 +0200)
committerGrazvydas Ignotas <notasas@gmail.com>
Tue, 30 Dec 2014 00:11:54 +0000 (02:11 +0200)
recipes/aufs/aufs2-util/aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch [new file with mode: 0644]
recipes/aufs/aufs2-util/aufs-util-don-t-strip-executables.patch [new file with mode: 0644]
recipes/aufs/aufs2-util/aufs-util-use-dynamic-linking.patch [new file with mode: 0644]
recipes/aufs/aufs2-util/aufs_type.h [new file with mode: 0644]
recipes/aufs/aufs2-util_git.bb
recipes/aufs/aufs_cvs.bb [deleted file]
recipes/aufs/files/rc.aufs2 [deleted file]

diff --git a/recipes/aufs/aufs2-util/aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch b/recipes/aufs/aufs2-util/aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch
new file mode 100644 (file)
index 0000000..5c35586
--- /dev/null
@@ -0,0 +1,29 @@
+Subject: [PATCH] aufs-util: add tool concept to Makefile for cross compiling
+ purpose
+
+In a cross compilation environment, c2sh, c2tmac and ver need to be created first.
+Add a tools target to Makefile to allow for this.
+
+Upstream-Status: Pending
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ Makefile |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 2f905ad..49c3cd5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -85,7 +85,7 @@ aufs.5: aufs.in.5 c2tmac
+       chmod a-w $@
+ c2sh c2tmac ver: CC = ${HOSTCC}
+-.INTERMEDIATE: c2sh c2tmac ver
++tools: c2sh c2tmac ver
+ Install = install -o root -g root -p
+ install_sbin: File = auibusy auplink mount.aufs umount.aufs
+-- 
+1.7.9.5
+
diff --git a/recipes/aufs/aufs2-util/aufs-util-don-t-strip-executables.patch b/recipes/aufs/aufs2-util/aufs-util-don-t-strip-executables.patch
new file mode 100644 (file)
index 0000000..48727e6
--- /dev/null
@@ -0,0 +1,37 @@
+From 244863eca77fcaa1187884836c3e28d6b6d1504a Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@windriver.com>
+Date: Tue, 9 Apr 2013 18:50:34 -0700
+Subject: [PATCH] aufs-util: don't strip executables
+
+By default, aufs-util strips its binaries. This produces QA warnings
+as follows:
+
+   WARNING: File '/sbin/mount.aufs' from aufs-util was already stripped, this will prevent future debugging!
+   WARNING: File '/sbin/auplink' from aufs-util was already stripped, this will prevent future debugging!
+   WARNING: File '/sbin/umount.aufs' from aufs-util was already stripped, this will prevent future debugging!
+   WARNING: File '/sbin/auibusy' from aufs-util was already stripped, this will prevent future debugging!
+   WARNING: File '/usr/lib/libau.so.2.6' from aufs-util was already stripped, this will prevent future debugging!
+
+To prevent this, we remove -s from LDFLAGS.
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
+---
+ Makefile |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 2f905ad..e0c6dcd 100644
+--- a/Makefile
++++ b/Makefile
+@@ -56,7 +56,7 @@ all: ver_test ${Man} ${Bin} ${Etc}
+ ver_test: ver
+       ./ver
+-${Bin}: LDFLAGS += -static -s
++${Bin}: LDFLAGS += -static
+ ${Bin}: LDLIBS = -L. -lautil
+ ${BinObj}: %.o: %.c ${LibUtilHdr} ${LibUtil}
+-- 
+1.7.10.4
+
diff --git a/recipes/aufs/aufs2-util/aufs-util-use-dynamic-linking.patch b/recipes/aufs/aufs2-util/aufs-util-use-dynamic-linking.patch
new file mode 100644 (file)
index 0000000..62031db
--- /dev/null
@@ -0,0 +1,15 @@
+diff --git a/Makefile b/Makefile
+index 2f905ad..31a1558 100644
+--- a/Makefile
++++ b/Makefile
+@@ -56,8 +56,8 @@ all: ver_test ${Man} ${Bin} ${Etc}
+ ver_test: ver
+       ./ver
+-${Bin}: LDFLAGS += -static -s
+-${Bin}: LDLIBS = -L. -lautil
++# ${Bin}: LDFLAGS += -static -s
++${Bin}: LDLIBS = -L. -Wl,-Bstatic -lautil -Wl,-Bdynamic
+ ${BinObj}: %.o: %.c ${LibUtilHdr} ${LibUtil}
+ ${LibUtilObj}: %.o: %.c ${LibUtilHdr}
diff --git a/recipes/aufs/aufs2-util/aufs_type.h b/recipes/aufs/aufs2-util/aufs_type.h
new file mode 100644 (file)
index 0000000..f68bc80
--- /dev/null
@@ -0,0 +1,237 @@
+/*
+ * Copyright (C) 2005-2012 Junjiro R. Okajima
+ *
+ * This program, aufs is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __AUFS_TYPE_H__
+#define __AUFS_TYPE_H__
+
+#define AUFS_NAME      "aufs"
+
+#ifdef __KERNEL__
+/*
+ * define it before including all other headers.
+ * sched.h may use pr_* macros before defining "current", so define the
+ * no-current version first, and re-define later.
+ */
+#define pr_fmt(fmt)    AUFS_NAME " %s:%d: " fmt, __func__, __LINE__
+#include <linux/sched.h>
+#undef pr_fmt
+#define pr_fmt(fmt)    AUFS_NAME " %s:%d:%s[%d]: " fmt, \
+               __func__, __LINE__, current->comm, current->pid
+#else
+#include <stdint.h>
+#include <sys/types.h>
+#endif /* __KERNEL__ */
+
+#include <linux/limits.h>
+
+#ifndef __user
+#define __user
+#endif
+
+#define AUFS_VERSION   "3.2-20120109"
+
+/* todo? move this to linux-2.6.19/include/magic.h */
+#define AUFS_SUPER_MAGIC       ('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
+
+/* ---------------------------------------------------------------------- */
+
+#ifdef CONFIG_AUFS_BRANCH_MAX_127
+typedef int8_t aufs_bindex_t;
+#define AUFS_BRANCH_MAX 127
+#else
+typedef int16_t aufs_bindex_t;
+#ifdef CONFIG_AUFS_BRANCH_MAX_511
+#define AUFS_BRANCH_MAX 511
+#elif defined(CONFIG_AUFS_BRANCH_MAX_1023)
+#define AUFS_BRANCH_MAX 1023
+#elif defined(CONFIG_AUFS_BRANCH_MAX_32767)
+#define AUFS_BRANCH_MAX 32767
+#endif
+#endif
+
+#ifdef __KERNEL__
+#ifndef AUFS_BRANCH_MAX
+#error unknown CONFIG_AUFS_BRANCH_MAX value
+#endif
+#endif /* __KERNEL__ */
+
+/* ---------------------------------------------------------------------- */
+
+#define AUFS_FSTYPE            AUFS_NAME
+
+#define AUFS_ROOT_INO          2
+#define AUFS_FIRST_INO         11
+
+#define AUFS_WH_PFX            ".wh."
+#define AUFS_WH_PFX_LEN                ((int)sizeof(AUFS_WH_PFX) - 1)
+#define AUFS_WH_TMP_LEN                4
+/* a limit for rmdir/rename a dir */
+#define AUFS_MAX_NAMELEN       (NAME_MAX \
+                               - AUFS_WH_PFX_LEN * 2   /* doubly whiteouted */\
+                               - 1                     /* dot */\
+                               - AUFS_WH_TMP_LEN)      /* hex */
+#define AUFS_XINO_FNAME                "." AUFS_NAME ".xino"
+#define AUFS_XINO_DEFPATH      "/tmp/" AUFS_XINO_FNAME
+#define AUFS_XINO_TRUNC_INIT   64 /* blocks */
+#define AUFS_XINO_TRUNC_STEP   4  /* blocks */
+#define AUFS_DIRWH_DEF         3
+#define AUFS_RDCACHE_DEF       10 /* seconds */
+#define AUFS_RDCACHE_MAX       3600 /* seconds */
+#define AUFS_RDBLK_DEF         512 /* bytes */
+#define AUFS_RDHASH_DEF                32
+#define AUFS_WKQ_NAME          AUFS_NAME "d"
+#define AUFS_MFS_DEF_SEC       30 /* seconds */
+#define AUFS_MFS_MAX_SEC       3600 /* seconds */
+#define AUFS_PLINK_WARN                100 /* number of plinks */
+
+/* pseudo-link maintenace under /proc */
+#define AUFS_PLINK_MAINT_NAME  "plink_maint"
+#define AUFS_PLINK_MAINT_DIR   "fs/" AUFS_NAME
+#define AUFS_PLINK_MAINT_PATH  AUFS_PLINK_MAINT_DIR "/" AUFS_PLINK_MAINT_NAME
+
+#define AUFS_DIROPQ_NAME       AUFS_WH_PFX ".opq" /* whiteouted doubly */
+#define AUFS_WH_DIROPQ         AUFS_WH_PFX AUFS_DIROPQ_NAME
+
+#define AUFS_BASE_NAME         AUFS_WH_PFX AUFS_NAME
+#define AUFS_PLINKDIR_NAME     AUFS_WH_PFX "plnk"
+#define AUFS_ORPHDIR_NAME      AUFS_WH_PFX "orph"
+
+/* doubly whiteouted */
+#define AUFS_WH_BASE           AUFS_WH_PFX AUFS_BASE_NAME
+#define AUFS_WH_PLINKDIR       AUFS_WH_PFX AUFS_PLINKDIR_NAME
+#define AUFS_WH_ORPHDIR                AUFS_WH_PFX AUFS_ORPHDIR_NAME
+
+/* branch permissions and attributes */
+#define AUFS_BRPERM_RW         "rw"
+#define AUFS_BRPERM_RO         "ro"
+#define AUFS_BRPERM_RR         "rr"
+#define AUFS_BRRATTR_WH                "wh"
+#define AUFS_BRWATTR_NLWH      "nolwh"
+
+/* ---------------------------------------------------------------------- */
+
+/* ioctl */
+enum {
+       /* readdir in userspace */
+       AuCtl_RDU,
+       AuCtl_RDU_INO,
+
+       /* pathconf wrapper */
+       AuCtl_WBR_FD,
+
+       /* busy inode */
+       AuCtl_IBUSY
+};
+
+/* borrowed from linux/include/linux/kernel.h */
+#ifndef ALIGN
+#define ALIGN(x, a)            __ALIGN_MASK(x, (typeof(x))(a)-1)
+#define __ALIGN_MASK(x, mask)  (((x)+(mask))&~(mask))
+#endif
+
+/* borrowed from linux/include/linux/compiler-gcc3.h */
+#ifndef __aligned
+#define __aligned(x)                   __attribute__((aligned(x)))
+#endif
+
+#ifdef __KERNEL__
+#ifndef __packed
+#define __packed                       __attribute__((packed))
+#endif
+#endif
+
+struct au_rdu_cookie {
+       uint64_t        h_pos;
+       int16_t         bindex;
+       uint8_t         flags;
+       uint8_t         pad;
+       uint32_t        generation;
+} __aligned(8);
+
+struct au_rdu_ent {
+       uint64_t        ino;
+       int16_t         bindex;
+       uint8_t         type;
+       uint8_t         nlen;
+       uint8_t         wh;
+       char            name[0];
+} __aligned(8);
+
+static inline int au_rdu_len(int nlen)
+{
+       /* include the terminating NULL */
+       return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1,
+                    sizeof(uint64_t));
+}
+
+union au_rdu_ent_ul {
+       struct au_rdu_ent __user        *e;
+       uint64_t                        ul;
+};
+
+enum {
+       AufsCtlRduV_SZ,
+       AufsCtlRduV_End
+};
+
+struct aufs_rdu {
+       /* input */
+       union {
+               uint64_t        sz;     /* AuCtl_RDU */
+               uint64_t        nent;   /* AuCtl_RDU_INO */
+       };
+       union au_rdu_ent_ul     ent;
+       uint16_t                verify[AufsCtlRduV_End];
+
+       /* input/output */
+       uint32_t                blk;
+
+       /* output */
+       union au_rdu_ent_ul     tail;
+       /* number of entries which were added in a single call */
+       uint64_t                rent;
+       uint8_t                 full;
+       uint8_t                 shwh;
+
+       struct au_rdu_cookie    cookie;
+} __aligned(8);
+
+/* ---------------------------------------------------------------------- */
+
+struct aufs_wbr_fd {
+       uint32_t        oflags;
+       int16_t         brid;
+} __aligned(8);
+
+/* ---------------------------------------------------------------------- */
+
+struct aufs_ibusy {
+       uint64_t        ino, h_ino;
+       int16_t         bindex;
+} __aligned(8);
+
+/* ---------------------------------------------------------------------- */
+
+#define AuCtlType              'A'
+#define AUFS_CTL_RDU           _IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu)
+#define AUFS_CTL_RDU_INO       _IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu)
+#define AUFS_CTL_WBR_FD                _IOW(AuCtlType, AuCtl_WBR_FD, \
+                                    struct aufs_wbr_fd)
+#define AUFS_CTL_IBUSY         _IOWR(AuCtlType, AuCtl_IBUSY, struct aufs_ibusy)
+
+#endif /* __AUFS_TYPE_H__ */
index 2769535..ce00c22 100644 (file)
@@ -1,29 +1,61 @@
-DESCRIPTION = "userspace utils for aufs2"
-LICENSE = "GPL"
-DEPENDS = "virtual/kernel"
-PR = "r1"
+SUMMARY = "Tools for managing AUFS mounts"
+SECTION = "base"
+HOMEPAGE = "http://aufs.sourceforge.net/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
 
-PACKAGE_ARCH = "${MACHINE_ARCH}"
+# DEPENDS = "${PN}-native"
+# DEPENDS_virtclass-native = ""
 
-SRCREV = "f35ba2292fe40aa94aa83713e0b2719f35a25768"
-SRC_URI = "git://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-util.git;protocol=http"
+SRCREV = "d7f91849723b1f5203c11babe865594ac4b485c3"
+SRC_URI = "git://git.code.sf.net/p/aufs/aufs-util;protocol=git;branch=aufs3.2 \
+#           file://aufs-util-don-t-strip-executables.patch;patch=1 \
+           file://aufs-util-use-dynamic-linking.patch;patch=1 \
+           file://aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch;patch=1 \
+           file://aufs_type.h \
+"
+
+PV = "git+3.2+${SRCPV}"
 
 S = "${WORKDIR}/git"
 
-EXTRA_OEMAKE = "KDIR=${STAGING_KERNEL_DIR} DESTDIR=${D}"
+do_configure_append () {
+    install -d ${S}/include/linux/
+    cp ${WORKDIR}/aufs_type.h ${S}/include/linux/
+}
+
+do_configure_append_virtclass-target () {
+    for i in ver c2sh c2tmac; do
+        cp ${STAGING_BINDIR_NATIVE}/aufs-util-${PV}/$i ./
+    done
+}
 
 do_compile () {
-       # c2tmac and c2sh need to be BUILD-arch
-       ${BUILD_CC} -I${STAGING_KERNEL_DIR}/include c2tmac.c -o c2tmac
-       ${BUILD_CC} -I${STAGING_KERNEL_DIR}/include c2sh.c -o c2sh
-        oe_runmake
+    for i in ver c2sh c2tmac; do
+        ${BUILD_CC} -I${S}/include -I${S}/libau $i.c -o $i
+    done
+
+    oe_runmake CPPFLAGS="-I${S}/include -I${S}/libau"
+}
+
+do_compile_virtclass-native () {
+    oe_runmake tools CPPFLAGS="-I${S}/include -I${S}/libau"
 }
 
 do_install () {
-       install -d ${D}/${base_sbindir}
-       install -m 0755 mount.aufs umount.aufs auplink ${D}/${base_sbindir}
-       install -d ${D}/${base_bindir}
-       install -m 0755 auchk aubrsync ${D}/${base_bindir}
-       install -d ${D}/${sysconfdir}/default
-       install -m 0644 -T etc_default_aufs ${D}/${sysconfdir}/default/aufs
+    oe_runmake 'DESTDIR=${D}' Install='install -p' install_sbin install_ubin install_etc
 }
+
+do_install_virtclass-native () {
+    install -d ${D}${bindir}/aufs-util-${PV}
+    for i in ver c2sh c2tmac; do
+        install -m 755 $i ${D}${bindir}/aufs-util-${PV}/$i
+    done
+}
+
+do_stage_virtclass-native () {
+}
+
+# RRECOMMENDS_${PN} += "kernel-module-aufs"
+
+# BBCLASSEXTEND = "native"
diff --git a/recipes/aufs/aufs_cvs.bb b/recipes/aufs/aufs_cvs.bb
deleted file mode 100644 (file)
index 6a0e952..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-DESCRIPTION = "Aufs is a stackable unification filesystem such as Unionfs, which unifies several directories and provides a merged single directory."
-HOMEPAGE = "http://aufs.sourceforge.net/"
-LICENSE = "GPL"
-PV = "cvs${SRCDATE}"
-
-RSUGGESTS_${PN} = "${PN}-tools"
-
-inherit module
-
-S = "${WORKDIR}/aufs"
-
-SRC_URI = "cvs://anonymous@aufs.cvs.sourceforge.net/cvsroot/aufs;module=aufs;date=${SRCDATE}"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-EXTRA_OEMAKE = "KDIR=${STAGING_KERNEL_DIR} -f local.mk"
-
-# We need to check the architecture and the kernel version to
-# configure properly lokal.mk. We ignore the export CONFIG_AUFS_STAT option.
-# If you want to have CONFIG_AUFS_STAT enabled you have to add some other ARCH checks.
-# Debian does not enable CONFIG_AUFS_STAT for arm.
-# We disable CONFIG_AUFS_SYSAUFS for arm because arm does not know about cmpxchg.
-# If you want this feature enabled you have to define it.
-# I suggest you to read http://osdir.com/ml/linux.kernel.tracing/2006-12/msg00020.html
-
-do_configure() {
-       K_VERSION=$(echo ${KERNEL_VERSION} | awk 'BEGIN{FS="."}{print $3}')
-       cd ${S}
-       if [ $K_VERSION -ge 24 ] ; then 
-               sed -i 's/CONFIG_AUFS_FAKE_DM\ =\ y/CONFIG_AUFS_FAKE_DM\ =/g'  local.mk
-       fi
-       if [ $K_VERSION -eq 25 ] || [ $ARCH = "arm" ] ; then
-               sed -i 's/CONFIG_AUFS_SYSAUFS\ =\ y/CONFIG_AUFS_SYSAUFS\ =/g'  local.mk 
-       fi
-}
-
-do_compile_prepend() {
-#compile binaries for host     
-       cd ${S}/util
-       BRANCH_MAX=$(fgrep CONFIG_AUFS_BRANCH_MAX ../local.mk | grep y | cut -d " " -f 2)
-       ${BUILD_CC} -D ${BRANCH_MAX} c2tmac.c ../include/linux/aufs_type.h -o c2tmac
-       ${BUILD_CC} -D ${BRANCH_MAX} c2sh.c ../include/linux/aufs_type.h -o c2sh
-       cd ${S}
-}
-
-do_compile(){
-       LDFLAGS=""
-       oe_runmake 
-}
-
-do_install() {
-       install -d ${D}/${sbindir}
-       install -m 0500 mount.aufs umount.aufs auplink aulchown ${D}/${sbindir}
-       install -d ${D}/etc/default     
-       echo FLUSH=ALL > ${D}/etc/default/auplink
-       install -d ${D}/${base_libdir}/modules/${KERNEL_VERSION}/drivers/extra/ 
-       install -m 0644 aufs.ko ${D}/${base_libdir}/modules/${KERNEL_VERSION}/drivers/extra/
-}
-
-FILES_${PN} = "/lib/modules"
-PACKAGES += "${PN}-tools"
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-FILES_${PN}-tools = "${sbindir} /etc/default/auplink"
diff --git a/recipes/aufs/files/rc.aufs2 b/recipes/aufs/files/rc.aufs2
deleted file mode 100644 (file)
index 79bfa91..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-DESC="AUFS2 union file system module."
-NAME="aufs2"
-
-d_stop() {
-       if `grep -q aufs /proc/modules` ; then
-               rmmod aufs
-       fi
-}
-
-d_start() {
-       insmod $(busybox find /lib/modules/$(uname -r) -name "aufs.ko")
-}
-
-case "$1" in
-  start)
-       echo -n "Starting $DESC: $NAME"
-       d_start
-       echo "."
-       ;;
-  stop)
-       echo -n "Stopping $DESC: $NAME"
-       d_stop
-       echo "."
-       ;;
-  restart|force-reload)
-       echo -n "Restarting $DESC: $NAME"
-       d_stop
-       sleep 1
-       d_start
-       echo "."
-       ;;
-  *)
-       echo "Usage: $0 {start|stop|restart|force-reload}" >&2
-       exit 1
-       ;;
-esac
-
-exit 0