From 80727385ab2e213210aafef0b5f5381e4b7b9873 Mon Sep 17 00:00:00 2001 From: Grazvydas Ignotas Date: Tue, 30 Dec 2014 01:54:28 +0200 Subject: [PATCH] aufs-util: update to 3.2 branch --- ...ol-concept-to-Makefile-for-cross-com.patch | 29 +++ .../aufs-util-don-t-strip-executables.patch | 37 +++ .../aufs-util-use-dynamic-linking.patch | 15 ++ recipes/aufs/aufs2-util/aufs_type.h | 237 ++++++++++++++++++ recipes/aufs/aufs2-util_git.bb | 68 +++-- recipes/aufs/aufs_cvs.bb | 63 ----- recipes/aufs/files/rc.aufs2 | 40 --- 7 files changed, 368 insertions(+), 121 deletions(-) create mode 100644 recipes/aufs/aufs2-util/aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch create mode 100644 recipes/aufs/aufs2-util/aufs-util-don-t-strip-executables.patch create mode 100644 recipes/aufs/aufs2-util/aufs-util-use-dynamic-linking.patch create mode 100644 recipes/aufs/aufs2-util/aufs_type.h delete mode 100644 recipes/aufs/aufs_cvs.bb delete mode 100644 recipes/aufs/files/rc.aufs2 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 index 0000000000..5c35586899 --- /dev/null +++ b/recipes/aufs/aufs2-util/aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch @@ -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 +--- + 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 index 0000000000..48727e6e22 --- /dev/null +++ b/recipes/aufs/aufs2-util/aufs-util-don-t-strip-executables.patch @@ -0,0 +1,37 @@ +From 244863eca77fcaa1187884836c3e28d6b6d1504a Mon Sep 17 00:00:00 2001 +From: Bruce Ashfield +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 +--- + 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 index 0000000000..62031db64f --- /dev/null +++ b/recipes/aufs/aufs2-util/aufs-util-use-dynamic-linking.patch @@ -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 index 0000000000..f68bc80c36 --- /dev/null +++ b/recipes/aufs/aufs2-util/aufs_type.h @@ -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 +#undef pr_fmt +#define pr_fmt(fmt) AUFS_NAME " %s:%d:%s[%d]: " fmt, \ + __func__, __LINE__, current->comm, current->pid +#else +#include +#include +#endif /* __KERNEL__ */ + +#include + +#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__ */ diff --git a/recipes/aufs/aufs2-util_git.bb b/recipes/aufs/aufs2-util_git.bb index 276953571c..ce00c222a1 100644 --- a/recipes/aufs/aufs2-util_git.bb +++ b/recipes/aufs/aufs2-util_git.bb @@ -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 index 6a0e952379..0000000000 --- a/recipes/aufs/aufs_cvs.bb +++ /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 index 79bfa917bd..0000000000 --- a/recipes/aufs/files/rc.aufs2 +++ /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 -- 2.39.5