util-linux: Add support for older hosts
Older hosts don't support some of the features required by the latet util-linux. Add workarounds or revert changes to older versions to make it work. (From OE-Core rev: da5b23e45c7e4dea2f3802ff5af5c81b08aba201) Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
a0219d879a
commit
cd906fa2a8
|
@ -0,0 +1,210 @@
|
|||
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>
|
||||
|
||||
diff -ur util-linux-2.23/configure.ac /home/lmhatle/util-linux-2.23-fixed/configure.ac
|
||||
--- util-linux-2.23/configure.ac 2013-05-29 14:44:35.147853585 -0500
|
||||
+++ /home/lmhatle/util-linux-2.23-fixed/configure.ac 2013-05-30 14:56:15.050799650 -0500
|
||||
@@ -323,6 +323,7 @@
|
||||
llseek \
|
||||
lseek64 \
|
||||
mempcpy \
|
||||
+ mkostemp \
|
||||
nanosleep \
|
||||
personality \
|
||||
posix_fadvise \
|
||||
diff -ur util-linux-2.23/include/c.h /home/lmhatle/util-linux-2.23-fixed/include/c.h
|
||||
--- util-linux-2.23/include/c.h 2013-04-12 04:25:46.852156874 -0500
|
||||
+++ /home/lmhatle/util-linux-2.23-fixed/include/c.h 2013-05-30 14:56:11.310799488 -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)
|
||||
diff -ur util-linux-2.23/lib/randutils.c /home/lmhatle/util-linux-2.23-fixed/lib/randutils.c
|
||||
--- util-linux-2.23/lib/randutils.c 2013-04-12 04:25:46.855156901 -0500
|
||||
+++ /home/lmhatle/util-linux-2.23-fixed/lib/randutils.c 2013-05-30 14:55:26.622799644 -0500
|
||||
@@ -16,6 +16,7 @@
|
||||
#include <sys/syscall.h>
|
||||
|
||||
#include "randutils.h"
|
||||
+#include "c.h"
|
||||
|
||||
#ifdef HAVE_TLS
|
||||
#define THREAD_LOCAL static __thread
|
||||
diff -ur util-linux-2.23/lib/wholedisk.c /home/lmhatle/util-linux-2.23-fixed/lib/wholedisk.c
|
||||
--- util-linux-2.23/lib/wholedisk.c 2013-04-12 04:25:46.855156901 -0500
|
||||
+++ /home/lmhatle/util-linux-2.23-fixed/lib/wholedisk.c 2013-05-30 14:55:31.182799350 -0500
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "blkdev.h"
|
||||
#include "wholedisk.h"
|
||||
+#include "c.h"
|
||||
|
||||
int is_whole_disk_fd(int fd, const char *name)
|
||||
{
|
||||
diff -ur util-linux-2.23/fdisks/fdisksunlabel.c /home/lmhatle/util-linux-2.23-fixed/fdisks/fdisksunlabel.c
|
||||
--- util-linux-2.23/fdisks/fdisksunlabel.c 2013-04-23 09:14:19.229015244 -0500
|
||||
+++ /home/lmhatle/util-linux-2.23-fixed/fdisks/fdisksunlabel.c 2013-05-30 14:54:55.978799735 -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)
|
|
@ -2,6 +2,11 @@ MAJOR_VERSION = "2.23"
|
|||
PR = "r0"
|
||||
require util-linux.inc
|
||||
|
||||
# To support older hosts, we need to patch and/or revert
|
||||
# some upstream changes. Only do this for native packages.
|
||||
OLDHOST = ""
|
||||
OLDHOST_class-native = "file://util-linux-native.patch"
|
||||
|
||||
SRC_URI += "file://util-linux-ng-replace-siginterrupt.patch \
|
||||
file://util-linux-ng-2.16-mount_lock_path.patch \
|
||||
file://uclibc-__progname-conflict.patch \
|
||||
|
@ -9,6 +14,7 @@ SRC_URI += "file://util-linux-ng-replace-siginterrupt.patch \
|
|||
file://fix-configure.patch \
|
||||
file://0001-lib-loopdev-fix-loopcxt_check_size-to-work-with-blkd.patch \
|
||||
file://0001-losetup-use-warn_size-for-regular-files-only.patch \
|
||||
${OLDHOST} \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "7bd10387f1aa00efaa4b07dfa13215bc"
|
||||
|
|
Loading…
Reference in New Issue