diff --git a/gnu/local.mk b/gnu/local.mk index a448ccbd5f..49f53e6c06 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -730,6 +730,7 @@ dist_patch_DATA = \ %D%/packages/patches/nvi-db4.patch \ %D%/packages/patches/ocaml-CVE-2015-8869.patch \ %D%/packages/patches/ocaml-findlib-make-install.patch \ + %D%/packages/patches/ola-readdir-r.patch \ %D%/packages/patches/onionshare-fix-install-paths.patch \ %D%/packages/patches/openexr-missing-samples.patch \ %D%/packages/patches/openjpeg-CVE-2015-6581.patch \ diff --git a/gnu/packages/lighting.scm b/gnu/packages/lighting.scm index 5101fba208..e70b276fd7 100644 --- a/gnu/packages/lighting.scm +++ b/gnu/packages/lighting.scm @@ -21,6 +21,7 @@ #:use-module (guix download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (gnu packages) #:use-module (gnu packages bison) #:use-module (gnu packages check) #:use-module (gnu packages compression) @@ -41,6 +42,7 @@ (uri (string-append "https://github.com/OpenLightingProject/ola/releases/download/" version "/ola-" version ".tar.gz")) + (patches (search-patches "ola-readdir-r.patch")) (sha256 (base32 "09zx1c8nkj29shfdzkahrh9397m3mwnsy0gj7jrb63f89f3n2vlq")))) diff --git a/gnu/packages/patches/ola-readdir-r.patch b/gnu/packages/patches/ola-readdir-r.patch new file mode 100644 index 0000000000..b4bd98137e --- /dev/null +++ b/gnu/packages/patches/ola-readdir-r.patch @@ -0,0 +1,62 @@ +Fix build failure caused by use of the deprecated readdir_r(3) while +building with -Werror=deprecated-declarations + +Patch copied from upstream source repository: +https://github.com/daveol/ola/commit/9d8575ff38f76df698ea8889e07a3dee8f21bd68 + +From 9d8575ff38f76df698ea8889e07a3dee8f21bd68 Mon Sep 17 00:00:00 2001 +From: Dave Olsthoorn +Date: Wed, 2 Mar 2016 11:22:17 +0100 +Subject: [PATCH] Use readdir instead of readdir_r + +This replacec the use of readdir_r with readdir since readdir seems to +be both dangarous and deprecated in newer versions of glibc. + +This fixes #1055 +--- + common/file/Util.cpp | 17 ++++++++--------- + 1 file changed, 8 insertions(+), 9 deletions(-) + +diff --git a/common/file/Util.cpp b/common/file/Util.cpp +index e2261fd..0ffddd3 100644 +--- a/common/file/Util.cpp ++++ b/common/file/Util.cpp +@@ -128,30 +128,29 @@ bool FindMatchingFiles(const string &directory, + FindClose(h_find); + #else + DIR *dp; +- struct dirent dir_ent; +- struct dirent *dir_ent_p; ++ struct dirent *dir_ent; + if ((dp = opendir(directory.data())) == NULL) { + OLA_WARN << "Could not open " << directory << ":" << strerror(errno); + return false; + } + +- if (readdir_r(dp, &dir_ent, &dir_ent_p)) { +- OLA_WARN << "readdir_r(" << directory << "): " << strerror(errno); ++ if ((dir_ent = readdir(dp)) == NULL) { ++ OLA_WARN << "readdir(" << directory << "): " << strerror(errno); + closedir(dp); + return false; + } + +- while (dir_ent_p != NULL) { ++ while (dir_ent != NULL) { + vector::const_iterator iter; + for (iter = prefixes.begin(); iter != prefixes.end(); ++iter) { +- if (!strncmp(dir_ent_p->d_name, iter->data(), iter->size())) { ++ if (!strncmp(dir_ent->d_name, iter->data(), iter->size())) { + std::ostringstream str; +- str << directory << PATH_SEPARATOR << dir_ent_p->d_name; ++ str << directory << PATH_SEPARATOR << dir_ent->d_name; + files->push_back(str.str()); + } + } +- if (readdir_r(dp, &dir_ent, &dir_ent_p)) { +- OLA_WARN << "readdir_r(" << directory << "): " << strerror(errno); ++ if ((dir_ent = readdir(dp)) == NULL) { ++ OLA_WARN << "readdir(" << directory << "): " << strerror(errno); + closedir(dp); + return false; + }