util-linux: use upstream patch to fix uClibc build issue
authorWaldemar Brodkorb <wbx@openadk.org>
Sun, 31 Jul 2016 16:08:52 +0000 (18:08 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Mon, 1 Aug 2016 21:31:36 +0000 (23:31 +0200)
Upstream has this patch a while and other projects are using
it already. So better switch to this.

Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/util-linux/0001-Fix-libmount-build-under-uClibc.patch [deleted file]
package/util-linux/0001-build-sys-fix-uClibc-ng-scanf-check.patch [new file with mode: 0644]
package/util-linux/util-linux.mk

diff --git a/package/util-linux/0001-Fix-libmount-build-under-uClibc.patch b/package/util-linux/0001-Fix-libmount-build-under-uClibc.patch
deleted file mode 100644 (file)
index 10cc3a5..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-From 44d733203637666926964957af7af23429ddcecf Mon Sep 17 00:00:00 2001
-From: Gustavo Zacarias <gustavo@zacarias.com.ar>
-Date: Mon, 18 Apr 2016 09:58:56 -0300
-Subject: [PATCH] Fix libmount build under uClibc
-
-See https://bugs.gentoo.org/show_bug.cgi?id=406303
-http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/sys-apps/util-linux/files/util-linux-2.21.1-no-printf-alloc.patch?revision=1.2
-
-[Gustavo: converted to git format for 2.28]
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
----
- configure.ac             |  1 -
- libmount/src/tab_parse.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 52 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 5a00403..3422f11 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -948,7 +948,6 @@ AC_ARG_ENABLE([libmount],
- )
- UL_BUILD_INIT([libmount])
- UL_REQUIRES_BUILD([libmount], [libblkid])
--UL_REQUIRES_HAVE([libmount], [scanf_alloc_modifier], [scanf string alloc modifier])
- AM_CONDITIONAL([BUILD_LIBMOUNT], [test "x$build_libmount" = xyes])
- AM_CONDITIONAL([BUILD_LIBMOUNT_TESTS], [test "x$build_libmount" = xyes -a "x$enable_static" = xyes])
- AS_IF([test "x$build_libmount" = xyes], [
-diff --git a/libmount/src/tab_parse.c b/libmount/src/tab_parse.c
-index 3f5e14a..2ff1795 100644
---- a/libmount/src/tab_parse.c
-+++ b/libmount/src/tab_parse.c
-@@ -39,6 +39,10 @@ static void parser_cleanup(struct libmnt_parser *pa)
-       memset(pa, 0, sizeof(*pa));
- }
-+#ifndef HAVE_SCANF_MS_MODIFIER
-+# define UL_SCNsA "%s"
-+#endif
-+
- static int next_number(char **s, int *num)
- {
-       char *end = NULL;
-@@ -69,16 +73,31 @@ static int mnt_parse_table_line(struct libmnt_fs *fs, char *s)
-       int rc, n = 0, xrc;
-       char *src = NULL, *fstype = NULL, *optstr = NULL;
-+#ifndef HAVE_SCANF_MS_MODIFIER
-+      size_t len = strlen(s) + 1;
-+      src = malloc(len);
-+      fstype = malloc(len);
-+      fs->target = malloc(len);
-+      optstr = malloc(len);
-+#endif
-+
-       rc = sscanf(s,  UL_SCNsA" "     /* (1) source */
-                       UL_SCNsA" "     /* (2) target */
-                       UL_SCNsA" "     /* (3) FS type */
-                       UL_SCNsA" "     /* (4) options */
-                       "%n",           /* byte count */
-+#ifdef HAVE_SCANF_MS_MODIFIER
-                       &src,
-                       &fs->target,
-                       &fstype,
-                       &optstr,
-+#else
-+                      src,
-+                      fs->target,
-+                      fstype,
-+                      optstr,
-+#endif
-                       &n);
-       xrc = rc;
-@@ -144,6 +163,16 @@ static int mnt_parse_mountinfo_line(struct libmnt_fs *fs, char *s)
-       unsigned int maj, min;
-       char *fstype = NULL, *src = NULL, *p;
-+#ifndef HAVE_SCANF_MS_MODIFIER
-+      size_t len = strlen(s) + 1;
-+      fs->root = malloc(len);
-+      fs->target = malloc(len);
-+      fs->vfs_optstr = malloc(len);
-+      fs->fs_optstr = malloc(len);
-+      fstype = malloc(len);
-+      src = malloc(len);
-+#endif
-+
-       rc = sscanf(s,  "%d "           /* (1) id */
-                       "%d "           /* (2) parent */
-                       "%u:%u "        /* (3) maj:min */
-@@ -155,9 +184,15 @@ static int mnt_parse_mountinfo_line(struct libmnt_fs *fs, char *s)
-                       &fs->id,
-                       &fs->parent,
-                       &maj, &min,
-+#ifdef HAVE_SCANF_MS_MODIFIER
-                       &fs->root,
-                       &fs->target,
-                       &fs->vfs_optstr,
-+#else
-+                      fs->root,
-+                      fs->target,
-+                      fs->vfs_optstr,
-+#endif
-                       &end);
-       if (rc >= 7 && end > 0)
-@@ -177,9 +212,15 @@ static int mnt_parse_mountinfo_line(struct libmnt_fs *fs, char *s)
-                       UL_SCNsA" "     /* (9) source */
-                       UL_SCNsA,       /* (10) fs options (fs specific) */
-+#ifdef HAVE_SCANF_MS_MODIFIER
-                       &fstype,
-                       &src,
-                       &fs->fs_optstr);
-+#else
-+                      fstype,
-+                      src,
-+                      fs->fs_optstr);
-+#endif
-       if (rc >= 10) {
-               size_t sz;
-@@ -298,14 +339,25 @@ static int mnt_parse_swaps_line(struct libmnt_fs *fs, char *s)
-       int rc;
-       char *src = NULL;
-+#ifndef HAVE_SCANF_MS_MODIFIER
-+      size_t len = strlen(s) + 1;
-+      src = malloc(len);
-+      fs->swaptype = malloc(len);
-+#endif
-+
-       rc = sscanf(s,  UL_SCNsA" "     /* (1) source */
-                       UL_SCNsA" "     /* (2) type */
-                       "%ju"           /* (3) size */
-                       "%ju"           /* (4) used */
-                       "%d",           /* priority */
-+#ifdef HAVE_SCANF_MS_MODIFIER
-                       &src,
-                       &fs->swaptype,
-+#else
-+                      src,
-+                      fs->swaptype,
-+#endif
-                       &fsz,
-                       &usz,
-                       &fs->priority);
--- 
-2.7.3
-
diff --git a/package/util-linux/0001-build-sys-fix-uClibc-ng-scanf-check.patch b/package/util-linux/0001-build-sys-fix-uClibc-ng-scanf-check.patch
new file mode 100644 (file)
index 0000000..801b72b
--- /dev/null
@@ -0,0 +1,34 @@
+From bac7fbdb2d141879526ca4342d56d2c749ba8af5 Mon Sep 17 00:00:00 2001
+From: Waldemar Brodkorb <wbx@uclibc-ng.org>
+Date: Fri, 3 Jun 2016 04:23:28 +0200
+Subject: [PATCH] build-sys: fix uClibc-ng scanf check
+
+uClibc-ng tries to be compatible with GNU libc and defines
+__GLIBC__ and pretend to be version 2.2.
+We once changed it to 2.10, but then some hard to fix problems
+in different software packages (gcc) occured.
+It would be better if we disable the special GNU libc checks
+for uClibc-ng here. uClibc-ng implements the required scanf
+functionality.
+
+Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 3ba723f..ec197ee 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -581,7 +581,7 @@ AC_CACHE_VAL([scanf_cv_alloc_modifier],
+      #include <stdio.h>
+      #include <unistd.h>
+-     #ifdef __GLIBC__
++     #if defined(__GLIBC__) && !defined(__UCLIBC__)
+      #if !(__GLIBC_PREREQ(2, 7))
+      #error %m is not available
+-- 
+2.1.4
+
index 93f45c20d814ce4a15063e3819fd69b963ee3dfc..9c7bd871261535aac67839c25557f9e6082c810a 100644 (file)
@@ -12,7 +12,7 @@ UTIL_LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/util-linux/v$(UTIL_LINUX_VERS
 # Some files are GPLv3+ but only in tests.
 UTIL_LINUX_LICENSE = GPLv2+, BSD-4c, libblkid and libmount LGPLv2.1+, libuuid BSD-3c
 UTIL_LINUX_LICENSE_FILES = README.licensing Documentation/licenses/COPYING.GPLv2 Documentation/licenses/COPYING.UCB Documentation/licenses/COPYING.LGPLv2.1 Documentation/licenses/COPYING.BSD-3
-# For 0001-Fix-libmount-build-under-uClibc.patch
+# For 0001-build-sys-fix-uClibc-ng-scanf-check.patch
 UTIL_LINUX_AUTORECONF = YES
 UTIL_LINUX_INSTALL_STAGING = YES
 UTIL_LINUX_DEPENDENCIES = host-pkgconf