From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/1] util-linux: fix build failure with older systems
Date: Mon, 9 Sep 2013 09:25:59 +0200 [thread overview]
Message-ID: <20130909092559.2e9bfb51@skate> (raw)
In-Reply-To: <1378414503-4841-1-git-send-email-rjbarnet@rockwellcollins.com>
Peter,
Can you commit the below patch? It should fix a number of failures with
util-linux caused by the bump to 2.23.2. Thanks!
Patch is also at http://patchwork.ozlabs.org/patch/272971/.
Thomas
On Thu, 5 Sep 2013 15:55:03 -0500, Ryan Barnett wrote:
> Adding patch util-linux-002-support-older-machines.patch to fix issues
> when building for older systems.
>
> Making all util-linux patches apply cleanly (fuzz fixes)
>
> Fixes http://autobuild.buildroot.org/results/349/349d6ff938b093623618669a1acb390aa2a5fafe
> Fixes http://autobuild.buildroot.org/results/57e/57e2c612c46b9e3b5f7bb213fcb3825b23fb7fc7
>
> Signed-off-by: Ryan Barnett <rjbarnet@rockwellcollins.com>
> ---
> .../util-linux-001-sscanf-no-ms-as.patch | 12 +-
> .../util-linux-002-support-older-machines.patch | 208 ++++++++++++++++++++
> ...l-linux-003-program-invocation-short-name.patch | 6 +-
> 3 files changed, 216 insertions(+), 10 deletions(-)
> create mode 100644 package/util-linux/util-linux-002-support-older-machines.patch
>
> diff --git a/package/util-linux/util-linux-001-sscanf-no-ms-as.patch b/package/util-linux/util-linux-001-sscanf-no-ms-as.patch
> index 5d08b9b..72a060e 100644
> --- a/package/util-linux/util-linux-001-sscanf-no-ms-as.patch
> +++ b/package/util-linux/util-linux-001-sscanf-no-ms-as.patch
> @@ -4,20 +4,18 @@ 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
> ported to util-linux-2.23.2
>
> -diff -Nura a/configure.ac b/configure.ac
> ---- a/configure.ac 2012-12-13 08:16:02.973822890 -0300
> -+++ b/configure.ac 2013-03-07 14:50:39.975512873 -0300
> -@@ -733,7 +733,6 @@
> +--- a/configure.ac 2013-07-30 03:39:26.188738061 -0500
> ++++ b/configure.ac 2013-09-05 15:31:11.460864363 -0500
> +@@ -755,7 +755,6 @@
> UL_BUILD_INIT([libmount])
> UL_REQUIRES_LINUX([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)
> -
> -diff -Nura a/libmount/src/tab_parse.c b/libmount/src/tab_parse.c
> +
> --- a/libmount/src/tab_parse.c 2013-07-30 03:39:26.218738358 -0500
> -+++ b/libmount/src/tab_parse.c 2013-09-04 11:22:26.332917445 -0500
> ++++ b/libmount/src/tab_parse.c 2013-09-05 15:31:11.460864363 -0500
> @@ -22,6 +22,10 @@
> #include "pathnames.h"
> #include "strutils.h"
> diff --git a/package/util-linux/util-linux-002-support-older-machines.patch b/package/util-linux/util-linux-002-support-older-machines.patch
> new file mode 100644
> index 0000000..5736a98
> --- /dev/null
> +++ b/package/util-linux/util-linux-002-support-older-machines.patch
> @@ -0,0 +1,208 @@
> +This patch was adopted from
> +http://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-core/util-linux/util-linux/util-linux-native.patch
> +
> +Support older hosts with latest util-linux-native
> +
> +mkostemp is not defined on older machines. So we detect this and
> +provide a define that uses mkstemp instead.
> +
> +O_CLOEXEC is not defined on older machines. It is however defined
> +in the 'c.h' header. Fix up the users to include 'c.h'.
> +
> +fdisks/fdisksunlabel.c was modified to use qsort_r, however
> +this is not defined on older hosts. Revert:
> + commit c69bbca9c1f6645097bd20fe3a21f5a99a2a0698
> + fdisk: (sun): use ask API, remove global variable
> +
> +Upstream-Status: Inappropriate [other]
> +Patches revert upstream changes in order to support older
> +machines.
> +
> +Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
> +
> +--- a/configure.ac 2013-09-05 15:31:11.460864363 -0500
> ++++ b/configure.ac 2013-09-05 15:31:21.590981268 -0500
> +@@ -323,6 +323,7 @@
> + llseek \
> + lseek64 \
> + mempcpy \
> ++ mkostemp \
> + nanosleep \
> + personality \
> + posix_fadvise \
> +--- a/include/c.h 2013-07-30 03:39:26.200738180 -0500
> ++++ b/include/c.h 2013-09-05 15:31:21.590981268 -0500
> +@@ -236,6 +236,13 @@
> + #endif
> +
> + /*
> ++ * mkostemp replacement
> ++ */
> ++#ifndef HAVE_MKOSTEMP
> ++#define mkostemp(template, flags) mkstemp(template)
> ++#endif
> ++
> ++/*
> + * MAXHOSTNAMELEN replacement
> + */
> + static inline size_t get_hostname_max(void)
> +--- a/lib/randutils.c 2013-06-13 02:46:10.408650519 -0500
> ++++ b/lib/randutils.c 2013-09-05 15:31:21.650099925 -0500
> +@@ -16,6 +16,7 @@
> + #include <sys/syscall.h>
> +
> + #include "randutils.h"
> ++#include "c.h"
> +
> + #ifdef HAVE_TLS
> + #define THREAD_LOCAL static __thread
> +--- a/lib/wholedisk.c 2013-06-13 02:46:10.411650545 -0500
> ++++ b/lib/wholedisk.c 2013-09-05 15:31:21.650099925 -0500
> +@@ -10,6 +10,7 @@
> +
> + #include "blkdev.h"
> + #include "wholedisk.h"
> ++#include "c.h"
> +
> + int is_whole_disk_fd(int fd, const char *name)
> + {
> +--- a/fdisks/fdisksunlabel.c 2013-07-30 03:39:26.197738150 -0500
> ++++ b/fdisks/fdisksunlabel.c 2013-09-05 15:31:21.650099925 -0500
> +@@ -383,10 +383,10 @@
> + }
> + }
> +
> +-static int verify_sun_cmp(int *a, int *b, void *data)
> +-{
> +- unsigned int *verify_sun_starts = (unsigned int *) data;
> ++static unsigned int *verify_sun_starts;
> +
> ++static int verify_sun_cmp(int *a, int *b)
> ++{
> + if (*a == -1)
> + return 1;
> + if (*b == -1)
> +@@ -401,7 +401,6 @@
> + uint32_t starts[SUN_MAXPARTITIONS], lens[SUN_MAXPARTITIONS], start, stop;
> + uint32_t i,j,k,starto,endo;
> + int array[SUN_MAXPARTITIONS];
> +- unsigned int *verify_sun_starts;
> +
> + assert(cxt);
> + assert(cxt->label);
> +@@ -442,16 +441,14 @@
> + }
> + }
> + }
> +-
> + for (i = 0; i < SUN_MAXPARTITIONS; i++) {
> + if (lens[i])
> + array[i] = i;
> + else
> + array[i] = -1;
> + }
> +- qsort_r(array,ARRAY_SIZE(array),sizeof(array[0]),
> +- (int (*)(const void *,const void *,void *)) verify_sun_cmp,
> +- verify_sun_starts);
> ++ qsort(array,ARRAY_SIZE(array),sizeof(array[0]),
> ++ (int (*)(const void *,const void *)) verify_sun_cmp);
> +
> + if (array[0] == -1) {
> + fdisk_info(cxt, _("No partitions defined"));
> +@@ -468,6 +465,7 @@
> + start = (starts[array[i]] + lens[array[i]]);
> + if (start < stop)
> + fdisk_warnx(cxt, _("Unused gap - sectors %d-%d"), start, stop);
> ++
> + return 0;
> + }
> +
> +@@ -746,18 +744,12 @@
> + }
> + }
> +
> +-
> + void fdisk_sun_set_alt_cyl(struct fdisk_context *cxt)
> + {
> + struct sun_disklabel *sunlabel = self_disklabel(cxt);
> +- uintmax_t res;
> +- int rc = fdisk_ask_number(cxt, 0, /* low */
> +- be16_to_cpu(sunlabel->acyl), /* default */
> +- 65535, /* high */
> +- _("Number of alternate cylinders"), /* query */
> +- &res); /* result */
> +- if (!rc)
> +- sunlabel->acyl = cpu_to_be16(res);
> ++ sunlabel->acyl =
> ++ cpu_to_be16(read_int(cxt, 0, be16_to_cpu(sunlabel->acyl), 65535, 0,
> ++ _("Number of alternate cylinders")));
> + }
> +
> + void fdisk_sun_set_ncyl(struct fdisk_context *cxt, int cyl)
> +@@ -769,54 +761,33 @@
> + void fdisk_sun_set_xcyl(struct fdisk_context *cxt)
> + {
> + struct sun_disklabel *sunlabel = self_disklabel(cxt);
> +- uintmax_t res;
> +- int rc = fdisk_ask_number(cxt, 0, /* low */
> +- be16_to_cpu(sunlabel->apc), /* default */
> +- cxt->geom.sectors, /* high */
> +- _("Extra sectors per cylinder"), /* query */
> +- &res); /* result */
> +- if (!rc)
> +- sunlabel->apc = cpu_to_be16(res);
> ++ sunlabel->apc =
> ++ cpu_to_be16(read_int(cxt, 0, be16_to_cpu(sunlabel->apc), cxt->geom.sectors, 0,
> ++ _("Extra sectors per cylinder")));
> + }
> +
> + void fdisk_sun_set_ilfact(struct fdisk_context *cxt)
> + {
> + struct sun_disklabel *sunlabel = self_disklabel(cxt);
> +- uintmax_t res;
> +- int rc = fdisk_ask_number(cxt, 1, /* low */
> +- be16_to_cpu(sunlabel->intrlv), /* default */
> +- 32, /* high */
> +- _("Interleave factor"), /* query */
> +- &res); /* result */
> +- if (!rc)
> +- sunlabel->intrlv = cpu_to_be16(res);
> ++ sunlabel->intrlv =
> ++ cpu_to_be16(read_int(cxt, 1, be16_to_cpu(sunlabel->intrlv), 32, 0,
> ++ _("Interleave factor")));
> + }
> +
> + void fdisk_sun_set_rspeed(struct fdisk_context *cxt)
> + {
> + struct sun_disklabel *sunlabel = self_disklabel(cxt);
> +- uintmax_t res;
> +- int rc = fdisk_ask_number(cxt, 1, /* low */
> +- be16_to_cpu(sunlabel->rpm), /* default */
> +- USHRT_MAX, /* high */
> +- _("Rotation speed (rpm)"), /* query */
> +- &res); /* result */
> +- if (!rc)
> +- sunlabel->rpm = cpu_to_be16(res);
> +-
> ++ sunlabel->rpm =
> ++ cpu_to_be16(read_int(cxt, 1, be16_to_cpu(sunlabel->rpm), 100000, 0,
> ++ _("Rotation speed (rpm)")));
> + }
> +
> + void fdisk_sun_set_pcylcount(struct fdisk_context *cxt)
> + {
> + struct sun_disklabel *sunlabel = self_disklabel(cxt);
> +- uintmax_t res;
> +- int rc = fdisk_ask_number(cxt, 0, /* low */
> +- be16_to_cpu(sunlabel->pcyl), /* default */
> +- USHRT_MAX, /* high */
> +- _("Number of physical cylinders"), /* query */
> +- &res); /* result */
> +- if (!rc)
> +- sunlabel->pcyl = cpu_to_be16(res);
> ++ sunlabel->pcyl =
> ++ cpu_to_be16(read_int(cxt, 0, be16_to_cpu(sunlabel->pcyl), 65535, 0,
> ++ _("Number of physical cylinders")));
> + }
> +
> + static int sun_write_disklabel(struct fdisk_context *cxt)
> diff --git a/package/util-linux/util-linux-003-program-invocation-short-name.patch b/package/util-linux/util-linux-003-program-invocation-short-name.patch
> index 5d04e35..95fea3f 100644
> --- a/package/util-linux/util-linux-003-program-invocation-short-name.patch
> +++ b/package/util-linux/util-linux-003-program-invocation-short-name.patch
> @@ -1,6 +1,6 @@
> ---- a/configure.ac 2013-07-30 03:39:26.188738061 -0500
> -+++ b/configure.ac 2013-08-27 16:20:09.882953093 -0500
> -@@ -386,7 +386,7 @@
> +--- a/configure.ac 2013-09-05 15:31:21.590981268 -0500
> ++++ b/configure.ac 2013-09-05 15:31:29.160981049 -0500
> +@@ -387,7 +387,7 @@
>
> AC_MSG_CHECKING([whether program_invocation_short_name is defined])
> AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
next prev parent reply other threads:[~2013-09-09 7:25 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-05 20:55 [Buildroot] [PATCH 1/1] util-linux: fix build failure with older systems Ryan Barnett
2013-09-09 7:25 ` Thomas Petazzoni [this message]
2013-09-09 9:43 ` Peter Korsgaard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130909092559.2e9bfb51@skate \
--to=thomas.petazzoni@free-electrons.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox