This patch fixes the build with musl using the included regex library. It follows a similar patch applied to grep (uclibc-fix.patch)
Signed-off-by: Nicola Lunghi <nick83...@gmail.com> --- .../0002-uclibc-use-mempcpy-instead-of.patch | 53 +++++++++++++++++++ recipes-extended/diffutils/diffutils.inc | 8 --- recipes-extended/diffutils/diffutils_2.8.1.bb | 4 ++ 3 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 recipes-extended/diffutils/diffutils-2.8.1/0002-uclibc-use-mempcpy-instead-of.patch diff --git a/recipes-extended/diffutils/diffutils-2.8.1/0002-uclibc-use-mempcpy-instead-of.patch b/recipes-extended/diffutils/diffutils-2.8.1/0002-uclibc-use-mempcpy-instead-of.patch new file mode 100644 index 0000000..a07fec7 --- /dev/null +++ b/recipes-extended/diffutils/diffutils-2.8.1/0002-uclibc-use-mempcpy-instead-of.patch @@ -0,0 +1,53 @@ +From 61db4da387676690c0f731ef2eccc014d85c23a6 Mon Sep 17 00:00:00 2001 +From: Nicola Lunghi <nicola.lun...@jci.com> +Date: Wed, 20 Nov 2019 18:30:10 +0000 +Subject: [PATCH] uclibc: use mempcpy instead of __mempcpy + +Fix to use mempcpy instead of __mempcpy. This is needed for uclibc which +doesn't define __mempcpy, only mempcpy. Since both uclibc and glibc have +mempcpy, we'll just use that instead. +Patch source: OpenEmbedded (grep) +Upstream-Status: Inappropriate [licensing] +--- + lib/getopt.c | 4 ++-- + lib/regex.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/lib/getopt.c b/lib/getopt.c +index ed32692..6626f5e 100644 +--- a/lib/getopt.c ++++ b/lib/getopt.c +@@ -334,7 +334,7 @@ exchange (argv) + nonoption_flags_len = nonoption_flags_max_len = 0; + else + { +- memset (__mempcpy (new_str, __getopt_nonoption_flags, ++ memset (mempcpy (new_str, __getopt_nonoption_flags, + nonoption_flags_max_len), + '\0', top + 1 - nonoption_flags_max_len); + nonoption_flags_max_len = top + 1; +@@ -445,7 +445,7 @@ _getopt_initialize (argc, argv, optstring) + if (__getopt_nonoption_flags == NULL) + nonoption_flags_max_len = -1; + else +- memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), ++ memset (mempcpy (__getopt_nonoption_flags, orig_str, len), + '\0', nonoption_flags_max_len - len); + } + } +diff --git a/lib/regex.c b/lib/regex.c +index 6daec76..797b20a 100644 +--- a/lib/regex.c ++++ b/lib/regex.c +@@ -8314,7 +8314,7 @@ regerror (errcode, preg, errbuf, errbuf_size) + if (msg_size > errbuf_size) + { + #if defined HAVE_MEMPCPY || defined _LIBC +- *((char *) __mempcpy (errbuf, msg, errbuf_size - 1)) = '\0'; ++ *((char *) mempcpy (errbuf, msg, errbuf_size - 1)) = '\0'; + #else + memcpy (errbuf, msg, errbuf_size - 1); + errbuf[errbuf_size - 1] = 0; +-- +2.20.1 + diff --git a/recipes-extended/diffutils/diffutils.inc b/recipes-extended/diffutils/diffutils.inc index 243341a..5e82b81 100644 --- a/recipes-extended/diffutils/diffutils.inc +++ b/recipes-extended/diffutils/diffutils.inc @@ -6,13 +6,5 @@ SECTION = "base" inherit autotools texinfo update-alternatives gettext -# diffutils assumes non-glibc compilation with uclibc and -# this causes it to generate its own implementations of -# standard functionality. regex.c actually breaks compilation -# because it uses __mempcpy, there are other things (TBD: -# see diffutils.mk in buildroot) -EXTRA_OECONF_libc-uclibc = "--without-included-regex" - ALTERNATIVE_${PN} = "diff cmp" ALTERNATIVE_PRIORITY = "100" - diff --git a/recipes-extended/diffutils/diffutils_2.8.1.bb b/recipes-extended/diffutils/diffutils_2.8.1.bb index 466bf28..931c973 100644 --- a/recipes-extended/diffutils/diffutils_2.8.1.bb +++ b/recipes-extended/diffutils/diffutils_2.8.1.bb @@ -9,11 +9,15 @@ SRC_URI = "${GNU_MIRROR}/diffutils/diffutils-${PV}.tar.gz \ file://diffutils_fix_for_automake-1.12.patch \ file://fix_gcc6.patch \ file://0001-Make-it-build-with-compile-time-hardening-enabled.patch \ + file://0002-uclibc-use-mempcpy-instead-of.patch \ " SRC_URI[md5sum] = "71f9c5ae19b60608f6c7f162da86a428" SRC_URI[sha256sum] = "c5001748b069224dd98bf1bb9ee877321c7de8b332c8aad5af3e2a7372d23f5a" +EXTRA_OECONF = "--without-included-regex" +EXTRA_OECONF_libc-musl = "--with-included-regex" + do_configure_prepend () { chmod u+w ${S}/po/Makefile.in.in } -- 2.20.1 -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto