2016-04-14 04:02:42

by Mike Frysinger

[permalink] [raw]
Subject: [PATCH nfs-utils] fix building w/newer C libraries

Linux C libraries are moving away from implicitly including the header
sys/sysmacros.h via sys/types.h. We would like to do this for glibc
now, but others (musl/etc...) have been doing it already. This means
any code using major/minor/makedevs functions will fail to build when
they don't include that header.

Leverage the AC_HEADER_MAJOR macro that configure is already using to
pull in the right header.

Signed-off-by: Mike Frysinger <[email protected]>
---
support/include/xcommon.h | 6 ++++++
support/nfs/nfsexport.c | 1 +
utils/blkmapd/device-discovery.c | 1 +
utils/mountd/cache.c | 1 +
4 files changed, 9 insertions(+)

diff --git a/support/include/xcommon.h b/support/include/xcommon.h
index d1a4b18..23c9a13 100644
--- a/support/include/xcommon.h
+++ b/support/include/xcommon.h
@@ -17,6 +17,12 @@
#include <stdlib.h>
#include <string.h>

+#ifdef MAJOR_IN_MKDEV
+#include <sys/mkdev.h>
+#elif defined(MAJOR_IN_SYSMACROS)
+#include <sys/sysmacros.h>
+#endif
+
#define streq(s, t) (strcmp ((s), (t)) == 0)

/* Functions in sundries.c that are used in mount.c and umount.c */
diff --git a/support/nfs/nfsexport.c b/support/nfs/nfsexport.c
index afd7c90..4b13265 100644
--- a/support/nfs/nfsexport.c
+++ b/support/nfs/nfsexport.c
@@ -19,6 +19,7 @@

#include "nfslib.h"
#include "misc.h"
+#include "xcommon.h"

/* if /proc/net/rpc/... exists, then
* write to it, as that interface is more stable.
diff --git a/utils/blkmapd/device-discovery.c b/utils/blkmapd/device-discovery.c
index b010628..052d582 100644
--- a/utils/blkmapd/device-discovery.c
+++ b/utils/blkmapd/device-discovery.c
@@ -51,6 +51,7 @@
#include <libdevmapper.h>

#include "device-discovery.h"
+#include "xcommon.h"

#define EVENT_SIZE (sizeof(struct inotify_event))
#define EVENT_BUFSIZE (1024 * EVENT_SIZE)
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index 7847446..ec86a22 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -31,6 +31,7 @@
#include "mountd.h"
#include "fsloc.h"
#include "pseudoflavors.h"
+#include "xcommon.h"

#ifdef USE_BLKID
#include "blkid/blkid.h"
--
2.7.4



2016-04-27 17:33:20

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH nfs-utils] fix building w/newer C libraries



On 04/14/2016 12:02 AM, Mike Frysinger wrote:
> Linux C libraries are moving away from implicitly including the header
> sys/sysmacros.h via sys/types.h. We would like to do this for glibc
> now, but others (musl/etc...) have been doing it already. This means
> any code using major/minor/makedevs functions will fail to build when
> they don't include that header.
>
> Leverage the AC_HEADER_MAJOR macro that configure is already using to
> pull in the right header.
>
> Signed-off-by: Mike Frysinger <[email protected]>
Committed...

steved.
> ---
> support/include/xcommon.h | 6 ++++++
> support/nfs/nfsexport.c | 1 +
> utils/blkmapd/device-discovery.c | 1 +
> utils/mountd/cache.c | 1 +
> 4 files changed, 9 insertions(+)
>
> diff --git a/support/include/xcommon.h b/support/include/xcommon.h
> index d1a4b18..23c9a13 100644
> --- a/support/include/xcommon.h
> +++ b/support/include/xcommon.h
> @@ -17,6 +17,12 @@
> #include <stdlib.h>
> #include <string.h>
>
> +#ifdef MAJOR_IN_MKDEV
> +#include <sys/mkdev.h>
> +#elif defined(MAJOR_IN_SYSMACROS)
> +#include <sys/sysmacros.h>
> +#endif
> +
> #define streq(s, t) (strcmp ((s), (t)) == 0)
>
> /* Functions in sundries.c that are used in mount.c and umount.c */
> diff --git a/support/nfs/nfsexport.c b/support/nfs/nfsexport.c
> index afd7c90..4b13265 100644
> --- a/support/nfs/nfsexport.c
> +++ b/support/nfs/nfsexport.c
> @@ -19,6 +19,7 @@
>
> #include "nfslib.h"
> #include "misc.h"
> +#include "xcommon.h"
>
> /* if /proc/net/rpc/... exists, then
> * write to it, as that interface is more stable.
> diff --git a/utils/blkmapd/device-discovery.c b/utils/blkmapd/device-discovery.c
> index b010628..052d582 100644
> --- a/utils/blkmapd/device-discovery.c
> +++ b/utils/blkmapd/device-discovery.c
> @@ -51,6 +51,7 @@
> #include <libdevmapper.h>
>
> #include "device-discovery.h"
> +#include "xcommon.h"
>
> #define EVENT_SIZE (sizeof(struct inotify_event))
> #define EVENT_BUFSIZE (1024 * EVENT_SIZE)
> diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
> index 7847446..ec86a22 100644
> --- a/utils/mountd/cache.c
> +++ b/utils/mountd/cache.c
> @@ -31,6 +31,7 @@
> #include "mountd.h"
> #include "fsloc.h"
> #include "pseudoflavors.h"
> +#include "xcommon.h"
>
> #ifdef USE_BLKID
> #include "blkid/blkid.h"
>