From 4756aea459ce1ab895fd29a607557ec4fb77fa63 Mon Sep 17 00:00:00 2001 From: "mingli.yu@windriver.com" Date: Fri, 22 Jul 2016 16:19:43 +0800 Subject: collectd: replace deprecated readdir_r() with readdir() * Replace the usage of readdir_r() with readdir() to address a compilation error under glibc 2.24 due to the deprecation of readdir_r | ../../collectd-5.5.0/src/vserver.c: In function 'vserver_read': | ../../collectd-5.5.0/src/vserver.c:167:3: error: 'readdir_r' is deprecated [-Werror=deprecated-declarations] | status = readdir_r (proc, (struct dirent *) dirent_buffer, &dent); | ^~~~~~ | In file included from /buildarea4/myu2/build/prj_test_20160722/bitbake_build/tmp/sysroots/qemux86/usr/include/features.h:368:0, | from /buildarea4/myu2/build/prj_test_20160722/bitbake_build/tmp/sysroots/qemux86/usr/include/stdio.h:27, | from ../../collectd-5.5.0/src/daemon/collectd.h:34, | from ../../collectd-5.5.0/src/vserver.c:29: | /buildarea4/myu2/build/prj_test_20160722/bitbake_build/tmp/sysroots/qemux86/usr/include/dirent.h:189:12: note: declared here | extern int __REDIRECT (readdir_r, | ^ [1]https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=7584a3f96de88d5eefe5d6c634515278cbfbf052;hp=8d9c92017d85f23ba6a2b3614b2f2bcf1820d6f0 Signed-off-by: Mingli Yu Signed-off-by: Martin Jansa (cherry picked from commit 9bf3e362e769e5d600fbb621ac0c1edd89529acf) Signed-off-by: Armin Kuster --- ...replace-deprecated-readdir_r-with-readdir.patch | 66 ++++++++++++++++++++++ .../recipes-extended/collectd/collectd_5.5.0.bb | 1 + 2 files changed, 67 insertions(+) create mode 100644 meta-oe/recipes-extended/collectd/collectd/0001-collectd-replace-deprecated-readdir_r-with-readdir.patch diff --git a/meta-oe/recipes-extended/collectd/collectd/0001-collectd-replace-deprecated-readdir_r-with-readdir.patch b/meta-oe/recipes-extended/collectd/collectd/0001-collectd-replace-deprecated-readdir_r-with-readdir.patch new file mode 100644 index 0000000000..f3d53f26ed --- /dev/null +++ b/meta-oe/recipes-extended/collectd/collectd/0001-collectd-replace-deprecated-readdir_r-with-readdir.patch @@ -0,0 +1,66 @@ +Subject: [PATCH] collectd: replace deprecated readdir_r() with readdir() + +* Replace the usage of readdir_r() with readdir() + to address a compilation error under glibc 2.24 + due to the deprecation of readdir_r + +| ../../collectd-5.5.0/src/vserver.c: In function 'vserver_read': +| ../../collectd-5.5.0/src/vserver.c:167:3: error: 'readdir_r' is deprecated [-Werror=deprecated-declarations] +| status = readdir_r (proc, (struct dirent *) dirent_buffer, &dent); +| ^~~~~~ +| In file included from /buildarea4/myu2/build/prj_test_20160722/bitbake_build/tmp/sysroots/qemux86/usr/include/features.h:368:0, +| from /buildarea4/myu2/build/prj_test_20160722/bitbake_build/tmp/sysroots/qemux86/usr/include/stdio.h:27, +| from ../../collectd-5.5.0/src/daemon/collectd.h:34, +| from ../../collectd-5.5.0/src/vserver.c:29: +| /buildarea4/myu2/build/prj_test_20160722/bitbake_build/tmp/sysroots/qemux86/usr/include/dirent.h:189:12: note: declared here +| extern int __REDIRECT (readdir_r, +| ^ + + [1]https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=7584a3f96de88d5eefe5d6c634515278cbfbf052;hp=8d9c92017d85f23ba6a2b3614b2f2bcf1820d6f0 + +Upstream-Status: Pending + +Signed-off-by: Mingli Yu +--- + src/vserver.c | 15 ++++----------- + 1 file changed, 4 insertions(+), 11 deletions(-) + +diff --git a/src/vserver.c b/src/vserver.c +index bd2e867..2e4e715 100644 +--- a/src/vserver.c ++++ b/src/vserver.c +@@ -131,15 +131,8 @@ static derive_t vserver_get_sock_bytes(const char *s) + + static int vserver_read (void) + { +-#if NAME_MAX < 1024 +-# define DIRENT_BUFFER_SIZE (sizeof (struct dirent) + 1024 + 1) +-#else +-# define DIRENT_BUFFER_SIZE (sizeof (struct dirent) + NAME_MAX + 1) +-#endif +- + DIR *proc; +- struct dirent *dent; /* 42 */ +- char dirent_buffer[DIRENT_BUFFER_SIZE]; ++ struct dirent *dent = NULL; /* 42 */ + + errno = 0; + proc = opendir (PROCDIR); +@@ -164,11 +157,11 @@ static int vserver_read (void) + + int status; + +- status = readdir_r (proc, (struct dirent *) dirent_buffer, &dent); +- if (status != 0) ++ dent = readdir (proc); ++ if (dent == NULL && errno != 0) + { + char errbuf[4096]; +- ERROR ("vserver plugin: readdir_r failed: %s", ++ ERROR ("vserver plugin: readdir failed: %s", + sstrerror (errno, errbuf, sizeof (errbuf))); + closedir (proc); + return (-1); +-- +2.8.2 + diff --git a/meta-oe/recipes-extended/collectd/collectd_5.5.0.bb b/meta-oe/recipes-extended/collectd/collectd_5.5.0.bb index 6a3476f540..9ec76c8a04 100644 --- a/meta-oe/recipes-extended/collectd/collectd_5.5.0.bb +++ b/meta-oe/recipes-extended/collectd/collectd_5.5.0.bb @@ -12,6 +12,7 @@ SRC_URI = "http://collectd.org/files/collectd-${PV}.tar.bz2 \ file://collectd.init \ file://collectd.service \ file://0001-conditionally-check-libvirt.patch \ + file://0001-collectd-replace-deprecated-readdir_r-with-readdir.patch \ " SRC_URI[md5sum] = "c39305ef5514b44238b0d31f77e29e6a" SRC_URI[sha256sum] = "847684cf5c10de1dc34145078af3fcf6e0d168ba98c14f1343b1062a4b569e88" -- cgit 1.2.3-korg