[OE-core] [PATCH] kmod-native_git.bb: fix builds for hosts with older libc
Richard Purdie
richard.purdie at linuxfoundation.org
Tue Aug 21 10:49:12 UTC 2012
On Mon, 2012-08-20 at 13:49 -0500, Matthew McClintock wrote:
> kmod will fail to build with the following error because O_CLOEXEC is
> not defined:
>
> | libkmod/libkmod-module.c: In function 'kmod_module_get_initstate':
> | libkmod/libkmod-module.c:1640: error: 'O_CLOEXEC' undeclared (first use in this function)
> | libkmod/libkmod-module.c:1640: error: (Each undeclared identifier is reported only once
> | libkmod/libkmod-module.c:1640: error: for each function it appears in.)
> | libkmod/libkmod-module.c: In function 'kmod_module_get_refcnt':
> | libkmod/libkmod-module.c:1754: error: 'O_CLOEXEC' undeclared (first use in this function)
> | libkmod/libkmod-module.c: In function 'kmod_module_get_sections':
> | libkmod/libkmod-module.c:1913: error: 'O_CLOEXEC' undeclared (first use in this function)
> | libkmod/libkmod-file.c: In function 'kmod_file_open':
> | libkmod/libkmod-file.c:282: error: 'O_CLOEXEC' undeclared (first use in this function)
> | libkmod/libkmod-file.c:282: error: (Each undeclared identifier is reported only once
> | libkmod/libkmod-file.c:282: error: for each function it appears in.)
>
> Since we are only using kmod-native for depmod, and it's a non-threaded
> user of this libary being built this should be safe to override O_CLOEXEC.
>
> Keep in mind this is ONLY effecting the native builds and not what is
> being shipped in the root file system.
>
> Signed-off-by: Matthew McClintock <msm at freescale.com>
> ---
> meta/recipes-kernel/kmod/kmod-native_git.bb | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/meta/recipes-kernel/kmod/kmod-native_git.bb b/meta/recipes-kernel/kmod/kmod-native_git.bb
> index 96de8b8..3c5e3c3 100644
> --- a/meta/recipes-kernel/kmod/kmod-native_git.bb
> +++ b/meta/recipes-kernel/kmod/kmod-native_git.bb
> @@ -4,7 +4,7 @@
> require kmod.inc
> inherit native
>
> -PR = "${INC_PR}.0"
> +PR = "${INC_PR}.1"
>
> do_install_append (){
> for tool in depmod insmod lsmod modinfo modprobe rmmod
> @@ -12,3 +12,9 @@ do_install_append (){
> ln -s kmod ${D}${bindir}/$tool
> done
> }
> +
> +do_compile_append (){
> + if ! grep O_CLOEXEC -r ${includedir_native}/bits/fcntl.h; then
> + export CFLAGS="$CFLAGS -D O_CLOEXEC=0"
> + fi
> +}
A compile append would execute after the compile. Isn't this after the
point you need the change?
Cheers,
Richard
More information about the Openembedded-core
mailing list