Actions
Bug #333
openCompiling 4.11-rc5 fails: "sys/socket.h: No such file or directory"
Start date:
04/24/2017
Due date:
% Done:
0%
Estimated time:
Description
Trying to compile a recent batman-adv master branch with an 4.11-rc5 kernel on a Debian stable currently fails with the following error:
/tux/mesh-node/usr/src/linux-headers-4.11.0-rc5+ CONFIG_BATMAN_ADV_BATMAN_V=y CONFIG_BATMAN_ADV_DAT=y CONFIG_BATMAN_ADV_BLA=y CONFIG_BATMAN_ADV_MCAST=y CONFIG_BATMAN_ADV_AGGR=y CONFIG_BATMAN_ADV_NC=n EXTRA_CFLAGS="-Werror -DDEBUG -g -O1" /home/tux/dev/batman-adv-t_x/gen-compat-autoconf.sh /home/tux/dev/batman-adv-t_x/compat-autoconf.h mkdir -p /home/tux/dev/batman-adv-t_x/build/net/batman-adv/ compat-patches/replacements.sh touch /home/tux/dev/batman-adv-t_x/build/net/batman-adv/.compat-prepared /usr/bin/make -C /home/tux/mesh-node/usr/src/linux-headers-4.11.0-rc5+ M=/home/tux/dev/batman-adv-t_x/build PWD=/home/tux/dev/batman-adv-t_x/build REVISION=2017.0.1-25-ga62cc2a CONFIG_BATMAN_ADV=m CONFIG_BATMAN_ADV_DEBUG=y CONFIG_BATMAN_ADV_DEBUGFS=y CONFIG_BATMAN_ADV_BLA=y CONFIG_BATMAN_ADV_DAT=y CONFIG_BATMAN_ADV_NC=n CONFIG_BATMAN_ADV_MCAST=y CONFIG_BATMAN_ADV_BATMAN_V=y INSTALL_MOD_DIR=updates/ modules make[1]: Entering directory '/home/tux/mesh-node/usr/src/linux-headers-4.11.0-rc5+' No such file: c No such file: c CC [M] /home/tux/dev/batman-adv-t_x/build/net/batman-adv/../../../compat-sources/net/core/skbuff.o ./include/linux/if.h:27:11: error: unable to open 'sys/socket.h' In file included from ./include/linux/compat.h:16:0, from ./include/linux/ethtool.h:16, from /home/tux/dev/batman-adv-t_x/build/../compat-include/linux/ethtool.h:25, from ./include/linux/netdevice.h:42, from /home/tux/dev/batman-adv-t_x/build/../compat-include/linux/netdevice.h:25, from ./include/linux/icmpv6.h:12, from ./include/linux/ipv6.h:82, from /home/tux/dev/batman-adv-t_x/build/net/batman-adv/../../../compat-sources/net/core/skbuff.c:36: ./include/linux/if.h:27:54: fatal error: sys/socket.h: No such file or directory #include <sys/socket.h> /* for struct sockaddr. */ ^ compilation terminated. scripts/Makefile.build:294: recipe for target '/home/tux/dev/batman-adv-t_x/build/net/batman-adv/../../../compat-sources/net/core/skbuff.o' failed make[3]: *** [/home/tux/dev/batman-adv-t_x/build/net/batman-adv/../../../compat-sources/net/core/skbuff.o] Error 1 scripts/Makefile.build:553: recipe for target '/home/tux/dev/batman-adv-t_x/build/net/batman-adv' failed make[2]: *** [/home/tux/dev/batman-adv-t_x/build/net/batman-adv] Error 2 Makefile:1492: recipe for target '_module_/home/tux/dev/batman-adv-t_x/build' failed make[1]: *** [_module_/home/tux/dev/batman-adv-t_x/build] Error 2 make[1]: Leaving directory '/home/tux/mesh-node/usr/src/linux-headers-4.11.0-rc5+' Makefile:90: recipe for target 'all' failed make: *** [all] Error 2
The problem was probably introduced with this commit:
"uapi: fix linux/if.h userspace compilation errors" (2618be7dcc)
Which is part of Linux since 4.11-rc1.
However, it feels like this issue might actually have the root cause in Debian's UAPI header stuff again (#322). The batman-adv Make process seems to use "linux-headers-4.11.0-rc5+/include/linux/if.h" which just has the KERNEL guard stripped:
#ifndef _LINUX_IF_H
#define _LINUX_IF_H
#include <linux/libc-compat.h> /* for compatibility with glibc */
#include <linux/types.h> /* for "__kernel_caddr_t" et al */
#include <linux/socket.h> /* for "struct sockaddr" et al */
/* for "__user" et al */
#include <sys/socket.h> /* for struct sockaddr. */
[...]
Manually removing this include from the Debian make-kpkg compiled header directory or inserting the "#ifndef __KERNEL__
" again helps to compile things again.
Actions