[lxc-devel] [PATCH 7/8] Include config.h early for _GNU_SOURCE with musl libc
Serge Hallyn
serge.hallyn at ubuntu.com
Wed Jan 29 15:07:23 UTC 2014
Quoting Natanael Copa (ncopa at alpinelinux.org):
> This fixes various compile errors when building with musl libc. For
> example:
>
> In file included from start.c:66:0:
> monitor.h:38:12: error: 'NAME_MAX' undeclared here (not in a function)
> char name[NAME_MAX+1];
> ^
> start.c: In function 'setup_signal_fd':
> start.c:202:2: error: implicit declaration of function 'sigfillset' [-Werror=implicit-function-declaration]
> if (sigfillset(&mask) ||
> ^
>
> ...
>
> In file included from freezer.c:36:0:
> monitor.h:39:12: error: 'NAME_MAX' undeclared here (not in a function)
> char name[NAME_MAX+1];
> ^
> ...
>
> In file included from cgroup.c:45:0:
> conf.h:87:13: error: 'IFNAMSIZ' undeclared here (not in a function)
> char veth1[IFNAMSIZ]; /* needed for deconf */
> ^
> cgroup.c: In function 'find_cgroup_subsystems':
> cgroup.c:230:3: error: implicit declaration of function 'strdup' [-Werror=implicit-function-declaration]
> (*kernel_subsystems)[kernel_subsystems_count] = strdup(line);
> ^
> ...
>
> In file included from conf.c:65:0:
> conf.h:87:13: error: 'IFNAMSIZ' undeclared here (not in a function)
> char veth1[IFNAMSIZ]; /* needed for deconf */
> ^
> In file included from conf.c:66:0:
> conf.c: In function 'run_buffer':
> log.h:263:9: error: implicit declaration of function 'strsignal' [-Werror=implicit-function-declaration]
> struct lxc_log_locinfo locinfo = LXC_LOG_LOCINFO_INIT; \
> ^
> ...
>
> af_unix.c: In function 'lxc_abstract_unix_send_credential':
> af_unix.c:208:9: error: variable 'cred' has initializer but incomplete type
> struct ucred cred = {
> ^
> af_unix.c:209:3: error: unknown field 'pid' specified in initializer
> .pid = getpid(),
> ^
> af_unix.c:209:3: error: excess elements in struct initializer [-Werror]
> af_unix.c:209:3: error: (near initialization for 'cred') [-Werror]
> af_unix.c:210:3: error: unknown field 'uid' specified in initializer
> .uid = getuid(),
> ^
> af_unix.c:210:3: error: excess elements in struct initializer [-Werror]
> af_unix.c:210:3: error: (near initialization for 'cred') [-Werror]
> af_unix.c:211:3: error: unknown field 'gid' specified in initializer
> .gid = getgid(),
> ^
>
> and more...
>
> Signed-off-by: Natanael Copa <ncopa at alpinelinux.org>
Note I'm not convinced that dropping the __USE_GNU from
around the sys/socket.h include is not going to break
something, but if it does we'll see it at the next build.
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
> ---
> src/lxc/af_unix.c | 4 ++--
> src/lxc/cgmanager.c | 5 ++---
> src/lxc/cgroup.c | 5 ++---
> src/lxc/conf.c | 5 ++---
> src/lxc/freezer.c | 4 ++--
> src/lxc/lxc_start.c | 5 ++---
> src/lxc/lxc_unshare.c | 5 ++---
> src/lxc/start.c | 1 -
> 8 files changed, 14 insertions(+), 20 deletions(-)
>
> diff --git a/src/lxc/af_unix.c b/src/lxc/af_unix.c
> index 830b941..c1ed2ba 100644
> --- a/src/lxc/af_unix.c
> +++ b/src/lxc/af_unix.c
> @@ -20,14 +20,14 @@
> * License along with this library; if not, write to the Free Software
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> */
> +#include "config.h"
> +
> #include <stddef.h>
> #include <string.h>
> #include <unistd.h>
> #include <fcntl.h>
> #include <errno.h>
> -#define __USE_GNU
> #include <sys/socket.h>
> -#undef __USE_GNU
> #include <sys/un.h>
>
> #include "log.h"
> diff --git a/src/lxc/cgmanager.c b/src/lxc/cgmanager.c
> index 29c0e99..0fb57cf 100644
> --- a/src/lxc/cgmanager.c
> +++ b/src/lxc/cgmanager.c
> @@ -20,9 +20,9 @@
> * License along with this library; if not, write to the Free Software
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> */
> -#define _GNU_SOURCE
> +#include "config.h"
> +
> #include <stdio.h>
> -#undef _GNU_SOURCE
> #include <stdlib.h>
> #include <errno.h>
> #include <unistd.h>
> @@ -39,7 +39,6 @@
> #include <net/if.h>
>
> #include "error.h"
> -#include "config.h"
> #include "commands.h"
> #include "list.h"
> #include "conf.h"
> diff --git a/src/lxc/cgroup.c b/src/lxc/cgroup.c
> index fd60155..fb8b341 100644
> --- a/src/lxc/cgroup.c
> +++ b/src/lxc/cgroup.c
> @@ -20,9 +20,9 @@
> * License along with this library; if not, write to the Free Software
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> */
> -#define _GNU_SOURCE
> +#include "config.h"
> +
> #include <stdio.h>
> -#undef _GNU_SOURCE
> #include <stdlib.h>
> #include <errno.h>
> #include <unistd.h>
> @@ -39,7 +39,6 @@
> #include <net/if.h>
>
> #include "error.h"
> -#include "config.h"
> #include "commands.h"
> #include "list.h"
> #include "conf.h"
> diff --git a/src/lxc/conf.c b/src/lxc/conf.c
> index 71b3407..ccfbb8e 100644
> --- a/src/lxc/conf.c
> +++ b/src/lxc/conf.c
> @@ -20,9 +20,9 @@
> * License along with this library; if not, write to the Free Software
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> */
> -#define _GNU_SOURCE
> +#include "config.h"
> +
> #include <stdio.h>
> -#undef _GNU_SOURCE
> #include <stdlib.h>
> #include <stdarg.h>
> #include <errno.h>
> @@ -60,7 +60,6 @@
> #include "network.h"
> #include "error.h"
> #include "parse.h"
> -#include "config.h"
> #include "utils.h"
> #include "conf.h"
> #include "log.h"
> diff --git a/src/lxc/freezer.c b/src/lxc/freezer.c
> index c33a727..89c7fab 100644
> --- a/src/lxc/freezer.c
> +++ b/src/lxc/freezer.c
> @@ -20,9 +20,9 @@
> * License along with this library; if not, write to the Free Software
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> */
> -#define _GNU_SOURCE
> +#include "config.h"
> +
> #include <stdio.h>
> -#undef _GNU_SOURCE
> #include <stdlib.h>
> #include <errno.h>
> #include <unistd.h>
> diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c
> index 4b6b1f7..19ebea0 100644
> --- a/src/lxc/lxc_start.c
> +++ b/src/lxc/lxc_start.c
> @@ -20,9 +20,9 @@
> * License along with this library; if not, write to the Free Software
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> */
> -#define _GNU_SOURCE
> +#include "config.h"
> +
> #include <stdio.h>
> -#undef _GNU_SOURCE
> #include <libgen.h>
> #include <stdlib.h>
> #include <unistd.h>
> @@ -48,7 +48,6 @@
> #include "conf.h"
> #include "cgroup.h"
> #include "utils.h"
> -#include "config.h"
> #include "confile.h"
> #include "arguments.h"
>
> diff --git a/src/lxc/lxc_unshare.c b/src/lxc/lxc_unshare.c
> index 792bfd9..a591d0a 100644
> --- a/src/lxc/lxc_unshare.c
> +++ b/src/lxc/lxc_unshare.c
> @@ -20,9 +20,9 @@
> * License along with this library; if not, write to the Free Software
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> */
> -#define _GNU_SOURCE
> +#include "config.h"
> +
> #include <stdio.h>
> -#undef _GNU_SOURCE
> #include <errno.h>
> #include <getopt.h>
> #include <libgen.h>
> @@ -39,7 +39,6 @@
>
> #include "caps.h"
> #include "cgroup.h"
> -#include "config.h"
> #include "error.h"
> #include "log.h"
> #include "namespace.h"
> diff --git a/src/lxc/start.c b/src/lxc/start.c
> index 5808c89..423bdd5 100644
> --- a/src/lxc/start.c
> +++ b/src/lxc/start.c
> @@ -24,7 +24,6 @@
> #include "config.h"
>
> #include <stdio.h>
> -#undef _GNU_SOURCE
> #include <string.h>
> #include <stdlib.h>
> #include <dirent.h>
> --
> 1.8.5.3
>
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel
More information about the lxc-devel
mailing list