[oe] [meta-filesystems][PATCH 1/1] aufs-util: add new recipe
Martin Jansa
martin.jansa at gmail.com
Sat Jan 18 12:05:39 UTC 2014
On Fri, Jan 17, 2014 at 05:36:04PM +0000, Paul Eggleton wrote:
> Introducing the aufs-util target recipe. This would be used in
> conjuction with the aufs kernel feature to provide union mounts suitable
> for live boot applications.
>
> Only the target binaries are currently packages, with man pages,
> libraries and other artifacts skipped in this initial integration.
>
> (Integration work done by Bruce Ashfield <bruce.ashfield at windriver.com>
> and Chen Qi <Qi.Chen at windriver.com> .)
>
> Signed-off-by: Bruce Ashfield <bruce.ashfield at windriver.com>
> Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
> Signed-off-by: Paul Eggleton <paul.eggleton at linux.intel.com>
> ---
> ...dd-tool-concept-to-Makefile-for-cross-com.patch | 27 +++
> .../aufs-util-don-t-strip-executables.patch | 37 ++++
> .../aufs-util/aufs-util/include/linux/aufs_type.h | 210 +++++++++++++++++++++
> .../recipes-utils/aufs-util/aufs-util_git.bb | 48 +++++
> 4 files changed, 322 insertions(+)
> create mode 100644 meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch
> create mode 100644 meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-don-t-strip-executables.patch
> create mode 100644 meta-filesystems/recipes-utils/aufs-util/aufs-util/include/linux/aufs_type.h
> create mode 100644 meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb
>
> diff --git a/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch b/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch
> new file mode 100644
> index 0000000..8c5b143
> --- /dev/null
> +++ b/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch
> @@ -0,0 +1,27 @@
> +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.
> +
> +Signed-off-by: Chen Qi <Qi.Chen at 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/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-don-t-strip-executables.patch b/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-don-t-strip-executables.patch
> new file mode 100644
> index 0000000..48727e6
> --- /dev/null
> +++ b/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-don-t-strip-executables.patch
> @@ -0,0 +1,37 @@
> +From 244863eca77fcaa1187884836c3e28d6b6d1504a Mon Sep 17 00:00:00 2001
> +From: Bruce Ashfield <bruce.ashfield at 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 at 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/meta-filesystems/recipes-utils/aufs-util/aufs-util/include/linux/aufs_type.h b/meta-filesystems/recipes-utils/aufs-util/aufs-util/include/linux/aufs_type.h
> new file mode 100644
> index 0000000..cb439ba
> --- /dev/null
> +++ b/meta-filesystems/recipes-utils/aufs-util/aufs-util/include/linux/aufs_type.h
> @@ -0,0 +1,210 @@
> +/*
> + * Copyright (C) 2005-2013 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"
> +
> +#include <stdint.h>
> +#include <sys/types.h>
> +
> +#include <linux/limits.h>
> +
> +#define AUFS_VERSION "3.8-20130325"
> +
> +/* 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
> +
> +
> +/* ---------------------------------------------------------------------- */
> +
> +#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
> +
> +
> +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 *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/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb b/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb
> new file mode 100644
> index 0000000..cea3636
> --- /dev/null
> +++ b/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb
> @@ -0,0 +1,48 @@
> +SUMMARY = "Tools for managing AUFS mounts"
> +SECTION = "base"
> +HOMEPAGE = "http://http://aufs.sourceforge.net/"
> +LICENSE = "GPLv2"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
> +
> +DEPENDS = "aufs-util-native"
> +DEPENDS_class-native = ""
> +
> +SRCREV = "f29056fe396d56fc2a06a96312feabaebbe14c59"
> +SRC_URI = "git://git.code.sf.net/p/aufs/aufs-util;protocol=git;branch=aufs3.x-rcN \
> + file://aufs-util-don-t-strip-executables.patch \
> + file://include/linux/aufs_type.h \
Can please drop include/linux/ prefix and put it in right place just in
do_compile_class-native?
> + file://aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch \
> +"
> +
> +PV = "3.x-rcN+git${SRCPV}"
I have similar recipe (for 3.2 version) in one of our layers with following changes, can
you please check if they are still valid for 3.x and latest linux-yocto?
It looks like aufs_type.h in SRC_URI should solve this.
# Needs AUFS support in kernel headers (e.g. aufs_type.h isn't included
# in default linux-yocto kernel)
DEPENDS = "virtual/kernel"
# because it depends on kernel
PACKAGE_ARCH = "${MACHINE_ARCH}"
> +S = "${WORKDIR}/git/"
> +
> +do_configure_append () {
> + if [ "${PN}" != "aufs-util-native" ]; then
> + for i in ver c2sh c2tmac; do
> + cp ${STAGING_BINDIR_NATIVE}/aufs-util-${PV}/$i ./
> + done
> + fi
> +}
> +
> +do_compile () {
> + oe_runmake CPPFLAGS="-I${WORKDIR}/include -I${S}/libau"
> +}
> +
> +do_compile_class-native () {
> + oe_runmake tools CPPFLAGS="-I${WORKDIR}/include -I${S}/libau"
> +}
> +
> +do_install () {
> + oe_runmake 'DESTDIR=${D}' install_sbin install_ubin install_etc
> +}
> +
> +do_install_class-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
> +}
Use 4 spaces instead of tabs.
> +BBCLASSEXTEND = "native"
> --
> 1.8.4.2
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
--
Martin 'JaMa' Jansa jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20140118/251adced/attachment-0002.sig>
More information about the Openembedded-devel
mailing list