In the latest glibc, major() and minor() functions are marked as
deprecated (glibc commit dbab6577):
CC util/libvirt_util_la-vircgroup.lo
util/vircgroup.c: In function 'virCgroupGetBlockDevString':
util/vircgroup.c:768:5: error: '__major_from_sys_types' is deprecated:
In the GNU C Library, `major' is defined by <sys/sysmacros.h>.
For historical compatibility, it is currently defined by
<sys/types.h> as well, but we plan to remove this soon.
To use `major', include <sys/sysmacros.h> directly.
If you did not intend to use a system-defined macro `major',
you should #undef it after including <sys/types.h>.
[-Werror=deprecated-declarations]
if (virAsprintf(&ret, "%d:%d ", major(sb.st_rdev), minor(sb.st_rdev))
< 0)
^~
In file included from /usr/include/features.h:397:0,
from /usr/include/bits/libc-header-start.h:33,
from /usr/include/stdio.h:28,
from ../gnulib/lib/stdio.h:43,
from util/vircgroup.c:26:
/usr/include/sys/sysmacros.h:87:1: note: declared here
__SYSMACROS_DEFINE_MAJOR (__SYSMACROS_FST_IMPL_TEMPL)
^
Moreover, in the glibc commit, there's suggestion to keep
ordering of including of header files as implemented here.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
This still won't solve the build issue completely as AC_HEADER_MAJOR still
reports that major() is defined by sys/types.h instead of sys/sysmacros.h.
But once they fix it, we are good too. Or we can use the following
workaround in configure.ac:
+old_CFLAGS=$CFLAGS
+CFLAGS+=" -Werror "
AC_HEADER_MAJOR
+CFLAGS=$old_CFLAGS
src/conf/domain_audit.c | 3 ++-
src/lxc/lxc_controller.c | 2 +-
src/lxc/lxc_driver.c | 2 +-
src/util/vircgroup.c | 2 +-
src/util/virutil.c | 2 +-
5 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c
index 53a58ac..52dea02 100644
--- a/src/conf/domain_audit.c
+++ b/src/conf/domain_audit.c
@@ -24,7 +24,6 @@
#include <config.h>
#include <sys/stat.h>
-#include <sys/types.h>
#ifdef MAJOR_IN_MKDEV
# include <sys/mkdev.h>
@@ -32,6 +31,8 @@
# include <sys/sysmacros.h>
#endif
+#include <sys/types.h>
+
#include "domain_audit.h"
#include "viraudit.h"
#include "viruuid.h"
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index 825b4d4..8c581df 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -27,7 +27,6 @@
#include <sys/epoll.h>
#include <sys/wait.h>
#include <sys/socket.h>
-#include <sys/types.h>
#ifdef MAJOR_IN_MKDEV
# include <sys/mkdev.h>
@@ -35,6 +34,7 @@
# include <sys/sysmacros.h>
#endif
+#include <sys/types.h>
#include <sys/un.h>
#include <sys/personality.h>
#include <unistd.h>
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index da98b38..24025d1 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -28,7 +28,6 @@
#include <sched.h>
#include <sys/utsname.h>
#include <string.h>
-#include <sys/types.h>
#ifdef MAJOR_IN_MKDEV
# include <sys/mkdev.h>
@@ -36,6 +35,7 @@
# include <sys/sysmacros.h>
#endif
+#include <sys/types.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/un.h>
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index f2477d5..8b52816 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -34,7 +34,6 @@
#include <errno.h>
#include <stdlib.h>
#include <sys/stat.h>
-#include <sys/types.h>
#ifdef MAJOR_IN_MKDEV
# include <sys/mkdev.h>
@@ -42,6 +41,7 @@
# include <sys/sysmacros.h>
#endif
+#include <sys/types.h>
#include <signal.h>
#include <dirent.h>
#include <unistd.h>
diff --git a/src/util/virutil.c b/src/util/virutil.c
index 170dd59..b57a195 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -35,7 +35,6 @@
#include <errno.h>
#include <poll.h>
#include <sys/stat.h>
-#include <sys/types.h>
#ifdef MAJOR_IN_MKDEV
# include <sys/mkdev.h>
@@ -43,6 +42,7 @@
# include <sys/sysmacros.h>
#endif
+#include <sys/types.h>
#include <sys/ioctl.h>
#include <string.h>
#include <termios.h>
--
2.8.4