[Buildroot] [PATCH 2/2] aufs: initial release (selects aufs-utils)

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Sun Nov 23 20:54:15 UTC 2014


Hello Steffen,

Sorry for the very late feedback about your patches. Are you still
interested in getting aufs merged in Buildroot?

On Mon, 28 Jul 2014 21:34:25 +0200, steffenhoenig wrote:

> diff --git a/package/aufs/Config.in b/package/aufs/Config.in
> new file mode 100644
> index 0000000..e7842bd
> --- /dev/null
> +++ b/package/aufs/Config.in
> @@ -0,0 +1,36 @@
> +config BR2_PACKAGE_AUFS
> +        bool "aufs"
> +        select BR2_PACKAGE_AUFS_UTILS

Why do you select BR2_PACKAGE_AUFS_UTILS here? My understanding is that
the dependency is the other way around: you cannot build aufs-utils
until the aufs package has installed the aufs_type.h header file.

> +        help
> +          Aufs3 -- advanced multi layered unification filesystem version 3.x
> +
> +comment "aufs needs a Linux kernel to be built"
> +    depends on !BR2_LINUX_KERNEL

So there should be a "depends on BR2_LINUX_KERNEL" under the main aufs
config option, above.

> +
> +if BR2_PACKAGE_AUFS
> +
> +choice 
> +    prompt "version"
> +
> +config BR2_PACKAGE_AUFS_LATEST_VERSION
> +    bool "aufs3.15"
> +
> +config BR2_PACKAGE_AUFS_CUSTOM_VERSION
> +    bool "custom version"
> +    help
> +      This option allows to use a specific aufs kernel patch set
> +
> +      Note: you need to insert the version string like aufs3.12, aufs3.9, ...
> +
> +endchoice
> +
> +config BR2_PACKAGE_AUFS_CUSTOM_VERSION_VALUE
> +    string ""
> +    depends on BR2_PACKAGE_AUFS_CUSTOM_VERSION
> +
> +config BR2_PACKAGE_AUFS_VERSION
> +    string
> +    default "aufs3.15" if BR2_PACKAGE_AUFS_LATEST_VERSION
> +    default BR2_PACKAGE_AUFS_CUSTOM_VERSION_VALUE \
> +        if BR2_PACKAGE_AUFS_CUSTOM_VERSION
> +endif

I don't think this complexity is necessary. Having a "latest" version
for aufs doesn't make a lot of sense, because nobody wants the "latest"
version: everybody wants a version that matches the kernel version
being used.

So I believe, you can replace that by a single "string" config option:

config BR2_PACKAGE_AUFS_VERSION
	string "version"
	help
	  Specify aufs3.9, aufs3.13, aufs3.17 or any other existing
	  aufs version.

> +AUFS_VERSION = $(call qstrip,$(BR2_PACKAGE_AUFS_VERSION))
> +AUFS_LICENCSE = GPLv2

LICENSE.

> +AUFS_LICENSE_FILES = COPYING
> +
> +AUFS_SITE = http://git.code.sf.net/p/aufs/aufs3-standalone
> +AUFS_SITE_METHOD = git
> +
> +AUFS_DEPENDENCIES = linux
> +AUFS_INSTALL_STAGING = YES
> +
> +AUFS_PATCHES = kbuild base mmap standalone
> +
> +define AUFS_BUILD_CMDS
> +    $(foreach p,$(AUFS_PATCHES),./support/scripts/apply-patches.sh $(LINUX_DIR) $(@D) *$(p).patch;)

This cannot work, because AUFS_BUILD_CMDS will be executed *after* the
Linux kernel has been built. So it's too late to patch the kernel.

Since aufs needs to patch the kernel, you'll have to handle it as a
"Linux kernel extension", taking example on what we've done for RTAI in
linux/linux-ext-rtai.mk. I can help with this, but before doing too
much work, I'd like to make sure you are still interested in aufs.

> +	$(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) KDIR=$(LINUX_DIR) aufs.ko
> +endef
> +
> +define AUFS_INSTALL_STAGING_CMDS
> +	$(MAKE) -C $(LINUX_DIR) $(LINUX_MAKE_FLAGS) -f scripts/Makefile.host \
> +		scripts/unifdef

Why?

> +	$(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) KDIR=$(LINUX_DIR) usr/include/linux/aufs_type.h

This should be part of AUFS_BUILD_CMDS.

> +	$(INSTALL) -p -m 0644 $(@D)/usr/include/linux/aufs_type.h \
> +		$(STAGING_DIR)/usr/include/linux
> +endef
> +
> +define AUFS_INSTALL_TARGET_CMDS
> +	$(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) KDIR=$(LINUX_DIR) install
> +endef
> +
> +$(eval $(generic-package))

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com


More information about the buildroot mailing list