mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-28 17:11:34 +02:00
util-linux: import from upstream Gentoo
Grab the latest stable version from upstream. BUG=chromium-os:24839 TEST=`emerge util-linux` works TEST=`emerge-arm-generic util-linux` works TEST=build_packages+build_image for x86-alex boots up CQ-DEPEND=Ie30c3b74003fa8aa99109ebf60d77f61864a2c1c Change-Id: Id029e027711451a79baa57f11af8049e545a9551 Reviewed-on: https://gerrit.chromium.org/gerrit/12624 Reviewed-by: Ben Chan <benchan@chromium.org> Reviewed-by: David James <davidjames@chromium.org> Tested-by: Mike Frysinger <vapier@chromium.org> Commit-Ready: Mike Frysinger <vapier@chromium.org>
This commit is contained in:
parent
60b16d6bf0
commit
5f8a90b910
9
sdk_container/src/third_party/portage-stable/sys-apps/util-linux/files/crypto-loop.confd
vendored
Normal file
9
sdk_container/src/third_party/portage-stable/sys-apps/util-linux/files/crypto-loop.confd
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# /etc/conf.d/crypto-loop: Configuration file for /etc/init.d/crypto-loop
|
||||||
|
|
||||||
|
# More info can be found in the init.d script
|
||||||
|
|
||||||
|
# Specify loopback configurations here. The format of this file is
|
||||||
|
# shown in the following commented-out example. One line per loopback
|
||||||
|
# configuration. For possible hash values, see `man hashalot`.
|
||||||
|
|
||||||
|
# loop=/dev/loop0 hash='' cipher=serpent keysize=256 device=/dev/system/test other=''
|
70
sdk_container/src/third_party/portage-stable/sys-apps/util-linux/files/crypto-loop.initd
vendored
Executable file
70
sdk_container/src/third_party/portage-stable/sys-apps/util-linux/files/crypto-loop.initd
vendored
Executable file
@ -0,0 +1,70 @@
|
|||||||
|
#!/sbin/runscript
|
||||||
|
# Copyright 1999-2005 Gentoo Foundation
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
# $Header: /var/cvsroot/gentoo-x86/sys-apps/util-linux/files/crypto-loop.initd,v 1.4 2008/10/26 03:16:48 vapier Exp $
|
||||||
|
|
||||||
|
depend() {
|
||||||
|
if [ -x /etc/init.d/root ]; then
|
||||||
|
need root
|
||||||
|
else
|
||||||
|
need checkroot
|
||||||
|
fi
|
||||||
|
need modules
|
||||||
|
before localmount
|
||||||
|
}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
local status="0"
|
||||||
|
|
||||||
|
ebegin "Starting crypto loop devices"
|
||||||
|
|
||||||
|
if [ -e /etc/conf.d/crypto-loop ] ; then
|
||||||
|
egrep "^loop" /etc/conf.d/crypto-loop | \
|
||||||
|
while read loopline ; do
|
||||||
|
eval ${loopline}
|
||||||
|
|
||||||
|
local configured=$(awk -v MOUNT="${device}" \
|
||||||
|
'($2 == MOUNT) { print "yes" }' /proc/mounts)
|
||||||
|
|
||||||
|
if [ "${configured}" != "yes" ] ; then
|
||||||
|
einfo " Loop ${loop} on device ${device} (cipher ${cipher}, key size ${keysize}): "
|
||||||
|
|
||||||
|
if [ -n "${hash}" ] ; then
|
||||||
|
/usr/sbin/hashalot -n ${keysize} ${hash} </dev/tty|\
|
||||||
|
/sbin/losetup -p 0 -e ${cipher}-${keysize} ${loop} ${device} ${other}
|
||||||
|
else
|
||||||
|
/sbin/losetup -e ${cipher}-${keysize} ${loop} ${device} ${other}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $? -ne 0 ] ; then
|
||||||
|
ewarn "Failure configuring ${loop}. Skipping."
|
||||||
|
status=1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
ewarn " Loop ${loop} on device ${device} are already configured"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
ewend ${status} "Failed to start some loop devices."
|
||||||
|
|
||||||
|
# We do not fail if some loop devices did not start ...
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
local status="0"
|
||||||
|
for loop in $(ls /dev/loop[0-9] 2>/dev/null) ; do
|
||||||
|
losetup ${loop} > /dev/null 2>&1
|
||||||
|
if [ $? -eq 0 ] ; then
|
||||||
|
( umount ${loop} || swapoff "${loop}" ) >/dev/null 2>&1
|
||||||
|
if ! /sbin/losetup -d ${loop} > /dev/null 2>&1; then
|
||||||
|
ewarn "Failure deconfiguring ${loop}."
|
||||||
|
status=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
ewend ${status}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# vim:ts=4
|
@ -0,0 +1,86 @@
|
|||||||
|
https://bugs.gentoo.org/366213
|
||||||
|
|
||||||
|
From f53edda83ebcfd7015c3f35196d6cbd7bc2d8369 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Karel Zak <kzak@redhat.com>
|
||||||
|
Date: Wed, 11 May 2011 16:57:27 +0200
|
||||||
|
Subject: [PATCH] mount: -a segfaults when 4th field is omitted (mount
|
||||||
|
options)
|
||||||
|
|
||||||
|
# echo 'tmpd /tmp/x tmpfs' >> /etc/fstab
|
||||||
|
# mkdir /tmp/x
|
||||||
|
# mount -a
|
||||||
|
segfault
|
||||||
|
|
||||||
|
Reported-by: Mike Frysinger <vapier@gentoo.org>
|
||||||
|
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||||
|
---
|
||||||
|
mount/mount.c | 8 +++++---
|
||||||
|
mount/mount_mntent.c | 5 +++--
|
||||||
|
mount/sundries.c | 2 ++
|
||||||
|
3 files changed, 10 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/mount/mount.c b/mount/mount.c
|
||||||
|
index ba71149..29963c2 100644
|
||||||
|
--- a/mount/mount.c
|
||||||
|
+++ b/mount/mount.c
|
||||||
|
@@ -1163,7 +1163,9 @@ is_mounted_same_loopfile(const char *node0, const char *loopfile, unsigned long
|
||||||
|
res = loopfile_used_with((char *) mnt->m.mnt_fsname,
|
||||||
|
loopfile, offset);
|
||||||
|
|
||||||
|
- else if ((p = strstr(mnt->m.mnt_opts, "loop="))) {
|
||||||
|
+ else if (mnt->m.mnt_opts &&
|
||||||
|
+ (p = strstr(mnt->m.mnt_opts, "loop=")))
|
||||||
|
+ {
|
||||||
|
char *dev = xstrdup(p+5);
|
||||||
|
if ((p = strchr(dev, ',')))
|
||||||
|
*p = '\0';
|
||||||
|
@@ -2052,8 +2054,8 @@ is_fstab_entry_mounted(struct mntentchn *mc, int verbose)
|
||||||
|
goto yes;
|
||||||
|
|
||||||
|
/* extra care for loop devices */
|
||||||
|
- if ((strstr(mc->m.mnt_opts, "loop=") ||
|
||||||
|
- (stat(mc->m.mnt_fsname, &st) == 0 && S_ISREG(st.st_mode)))) {
|
||||||
|
+ if ((mc->m.mnt_opts && strstr(mc->m.mnt_opts, "loop=")) ||
|
||||||
|
+ (stat(mc->m.mnt_fsname, &st) == 0 && S_ISREG(st.st_mode))) {
|
||||||
|
|
||||||
|
char *p = get_option_value(mc->m.mnt_opts, "offset=");
|
||||||
|
uintmax_t offset = 0;
|
||||||
|
diff --git a/mount/mount_mntent.c b/mount/mount_mntent.c
|
||||||
|
index d90def3..f42c0ad 100644
|
||||||
|
--- a/mount/mount_mntent.c
|
||||||
|
+++ b/mount/mount_mntent.c
|
||||||
|
@@ -70,7 +70,7 @@ my_addmntent (mntFILE *mfp, struct my_mntent *mnt) {
|
||||||
|
m1 = mangle(mnt->mnt_fsname);
|
||||||
|
m2 = mangle(mnt->mnt_dir);
|
||||||
|
m3 = mangle(mnt->mnt_type);
|
||||||
|
- m4 = mangle(mnt->mnt_opts);
|
||||||
|
+ m4 = mnt->mnt_opts ? mangle(mnt->mnt_opts) : "rw";
|
||||||
|
|
||||||
|
res = fprintf (mfp->mntent_fp, "%s %s %s %s %d %d\n",
|
||||||
|
m1, m2, m3, m4, mnt->mnt_freq, mnt->mnt_passno);
|
||||||
|
@@ -78,7 +78,8 @@ my_addmntent (mntFILE *mfp, struct my_mntent *mnt) {
|
||||||
|
free(m1);
|
||||||
|
free(m2);
|
||||||
|
free(m3);
|
||||||
|
- free(m4);
|
||||||
|
+ if (mnt->mnt_opts)
|
||||||
|
+ free(m4);
|
||||||
|
return (res < 0) ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/mount/sundries.c b/mount/sundries.c
|
||||||
|
index ae4501a..2dec37f 100644
|
||||||
|
--- a/mount/sundries.c
|
||||||
|
+++ b/mount/sundries.c
|
||||||
|
@@ -217,6 +217,8 @@ matching_opts (const char *options, const char *test_opts) {
|
||||||
|
|
||||||
|
if (test_opts == NULL)
|
||||||
|
return 1;
|
||||||
|
+ if (options == NULL)
|
||||||
|
+ options = "";
|
||||||
|
|
||||||
|
len = strlen(test_opts);
|
||||||
|
q = alloca(len+1);
|
||||||
|
--
|
||||||
|
1.7.6
|
||||||
|
|
@ -0,0 +1,92 @@
|
|||||||
|
https://bugs.gentoo.org/370051
|
||||||
|
|
||||||
|
From b3b0c657818aa6191e6494f88d671601dd9d837d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Petr Uzel <petr.uzel@suse.cz>
|
||||||
|
Date: Wed, 29 Jun 2011 10:24:09 +0200
|
||||||
|
Subject: [PATCH] umount: do not hang with disconnected NFS mounts
|
||||||
|
|
||||||
|
Since util-linux commit f4612577c942a3683b97632ad0b49671897c2070,
|
||||||
|
umount stat(2)s its argument to check whether it can be associated
|
||||||
|
with some loop device. This could hang with broken NFS mounts.
|
||||||
|
|
||||||
|
Fix by first checking mtab if umount's argument is mounted and only if
|
||||||
|
we fail, check if there is a loop device associated.
|
||||||
|
|
||||||
|
http://marc.info/?l=util-linux-ng&m=130924963804836&w=2
|
||||||
|
|
||||||
|
Reported-by: Konstantin Khlebnikov <khlebnikov@openvz.org>
|
||||||
|
Signed-off-by: Petr Uzel <petr.uzel@suse.cz>
|
||||||
|
---
|
||||||
|
mount/umount.c | 42 ++++++++++++++++++++++--------------------
|
||||||
|
1 files changed, 22 insertions(+), 20 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/mount/umount.c b/mount/umount.c
|
||||||
|
index 0349cb3..96c940e 100644
|
||||||
|
--- a/mount/umount.c
|
||||||
|
+++ b/mount/umount.c
|
||||||
|
@@ -600,6 +600,7 @@ umount_file (char *arg) {
|
||||||
|
int fstab_has_user, fstab_has_users, fstab_has_owner, fstab_has_group;
|
||||||
|
int ok, status = 0;
|
||||||
|
struct stat statbuf;
|
||||||
|
+ char *loopdev = NULL;
|
||||||
|
|
||||||
|
if (!*arg) { /* "" would be expanded to `pwd` */
|
||||||
|
die(2, _("Cannot unmount \"\"\n"));
|
||||||
|
@@ -608,26 +609,7 @@ umount_file (char *arg) {
|
||||||
|
|
||||||
|
file = canonicalize(arg); /* mtab paths are canonicalized */
|
||||||
|
|
||||||
|
- /* if file is a regular file, check if it is associated
|
||||||
|
- * with some loop device
|
||||||
|
- */
|
||||||
|
- if (!stat(file, &statbuf) && S_ISREG(statbuf.st_mode)) {
|
||||||
|
- char *loopdev = NULL;
|
||||||
|
- switch (find_loopdev_by_backing_file(file, &loopdev)) {
|
||||||
|
- case 0:
|
||||||
|
- if (verbose)
|
||||||
|
- printf(_("%s is associated with %s, trying to unmount it\n"),
|
||||||
|
- arg, loopdev);
|
||||||
|
- file = loopdev;
|
||||||
|
- break;
|
||||||
|
- case 2:
|
||||||
|
- if (verbose)
|
||||||
|
- printf(_("%s is associated with more than one loop device: not unmounting\n"),
|
||||||
|
- arg);
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
+try_loopdev:
|
||||||
|
if (verbose > 1)
|
||||||
|
printf(_("Trying to unmount %s\n"), file);
|
||||||
|
|
||||||
|
@@ -659,6 +641,26 @@ umount_file (char *arg) {
|
||||||
|
if (!mc && verbose)
|
||||||
|
printf(_("Could not find %s in mtab\n"), file);
|
||||||
|
|
||||||
|
+ /* not found in mtab - check if it is associated with some loop device
|
||||||
|
+ * (only if it is a regular file)
|
||||||
|
+ */
|
||||||
|
+ if (!mc && !loopdev && !stat(file, &statbuf) && S_ISREG(statbuf.st_mode)) {
|
||||||
|
+ switch (find_loopdev_by_backing_file(file, &loopdev)) {
|
||||||
|
+ case 0:
|
||||||
|
+ if (verbose)
|
||||||
|
+ printf(_("%s is associated with %s\n"),
|
||||||
|
+ arg, loopdev);
|
||||||
|
+ file = loopdev;
|
||||||
|
+ goto try_loopdev;
|
||||||
|
+ break;
|
||||||
|
+ case 2:
|
||||||
|
+ if (verbose)
|
||||||
|
+ printf(_("%s is associated with more than one loop device: not unmounting\n"),
|
||||||
|
+ arg);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (restricted) {
|
||||||
|
char *mtab_user = NULL;
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.6
|
||||||
|
|
121
sdk_container/src/third_party/portage-stable/sys-apps/util-linux/util-linux-2.19.1-r1.ebuild
vendored
Normal file
121
sdk_container/src/third_party/portage-stable/sys-apps/util-linux/util-linux-2.19.1-r1.ebuild
vendored
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
# Copyright 1999-2011 Gentoo Foundation
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
# $Header: /var/cvsroot/gentoo-x86/sys-apps/util-linux/util-linux-2.19.1-r1.ebuild,v 1.10 2011/11/17 18:48:41 phajdan.jr Exp $
|
||||||
|
|
||||||
|
EAPI="3"
|
||||||
|
|
||||||
|
EGIT_REPO_URI="git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
|
||||||
|
inherit eutils toolchain-funcs libtool flag-o-matic
|
||||||
|
[[ ${PV} == "9999" ]] && inherit git autotools
|
||||||
|
|
||||||
|
MY_PV=${PV/_/-}
|
||||||
|
MY_P=${PN}-${MY_PV}
|
||||||
|
S=${WORKDIR}/${MY_P}
|
||||||
|
|
||||||
|
DESCRIPTION="Various useful Linux utilities"
|
||||||
|
HOMEPAGE="http://www.kernel.org/pub/linux/utils/util-linux/"
|
||||||
|
if [[ ${PV} == "9999" ]] ; then
|
||||||
|
SRC_URI=""
|
||||||
|
#KEYWORDS=""
|
||||||
|
else
|
||||||
|
SRC_URI="mirror://kernel/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.bz2
|
||||||
|
loop-aes? ( http://loop-aes.sourceforge.net/updates/util-linux-2.19.1-20110510.diff.bz2 )"
|
||||||
|
KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ~ppc64 s390 sh sparc x86 ~x86-linux"
|
||||||
|
fi
|
||||||
|
|
||||||
|
LICENSE="GPL-2"
|
||||||
|
SLOT="0"
|
||||||
|
IUSE="+cramfs crypt loop-aes ncurses nls old-linux perl selinux slang uclibc unicode"
|
||||||
|
|
||||||
|
RDEPEND="!sys-process/schedutils
|
||||||
|
!sys-apps/setarch
|
||||||
|
!<sys-libs/e2fsprogs-libs-1.41.8
|
||||||
|
!<sys-fs/e2fsprogs-1.41.8
|
||||||
|
cramfs? ( sys-libs/zlib )
|
||||||
|
ncurses? ( >=sys-libs/ncurses-5.2-r2 )
|
||||||
|
perl? ( dev-lang/perl )
|
||||||
|
selinux? ( sys-libs/libselinux )
|
||||||
|
slang? ( sys-libs/slang )"
|
||||||
|
DEPEND="${RDEPEND}
|
||||||
|
nls? ( sys-devel/gettext )
|
||||||
|
virtual/os-headers"
|
||||||
|
|
||||||
|
src_prepare() {
|
||||||
|
if [[ ${PV} == "9999" ]] ; then
|
||||||
|
autopoint --force
|
||||||
|
eautoreconf
|
||||||
|
else
|
||||||
|
use loop-aes && epatch "${WORKDIR}"/util-linux-*.diff
|
||||||
|
fi
|
||||||
|
epatch "${FILESDIR}"/${P}-mount-a-segv.patch #366213
|
||||||
|
if ! use loop-aes ; then
|
||||||
|
epatch "${FILESDIR}"/${P}-umount-l-nfs.patch #370051
|
||||||
|
else
|
||||||
|
ewarn "loop-aes is incompatible with current solution of #370051 bug!"
|
||||||
|
ewarn "Therefore you're vulnerable to that bug now!"
|
||||||
|
ewarn "Look at https://bugs.gentoo.org/show_bug.cgi?id=370051."
|
||||||
|
fi
|
||||||
|
use uclibc && sed -i -e s/versionsort/alphasort/g -e s/strverscmp.h/dirent.h/g mount/lomount.c
|
||||||
|
elibtoolize
|
||||||
|
}
|
||||||
|
|
||||||
|
lfs_fallocate_test() {
|
||||||
|
# Make sure we can use fallocate with LFS #300307
|
||||||
|
cat <<-EOF > "${T}"/fallocate.c
|
||||||
|
#define _GNU_SOURCE
|
||||||
|
#include <fcntl.h>
|
||||||
|
main() { return fallocate(0, 0, 0, 0); }
|
||||||
|
EOF
|
||||||
|
append-lfs-flags
|
||||||
|
$(tc-getCC) ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} "${T}"/fallocate.c -o /dev/null >/dev/null 2>&1 \
|
||||||
|
|| export ac_cv_func_fallocate=no
|
||||||
|
rm -f "${T}"/fallocate.c
|
||||||
|
}
|
||||||
|
|
||||||
|
usex() { use $1 && echo ${2:-yes} || echo ${3:-no} ; }
|
||||||
|
src_configure() {
|
||||||
|
lfs_fallocate_test
|
||||||
|
econf \
|
||||||
|
--enable-fs-paths-extra=/usr/sbin \
|
||||||
|
$(use_enable nls) \
|
||||||
|
--enable-agetty \
|
||||||
|
$(use_enable cramfs) \
|
||||||
|
$(use_enable old-linux elvtune) \
|
||||||
|
--with-ncurses=$(usex ncurses $(usex unicode auto yes) no) \
|
||||||
|
--disable-init \
|
||||||
|
--disable-kill \
|
||||||
|
--disable-last \
|
||||||
|
--disable-mesg \
|
||||||
|
--enable-partx \
|
||||||
|
--enable-raw \
|
||||||
|
--enable-rename \
|
||||||
|
--disable-reset \
|
||||||
|
--disable-login-utils \
|
||||||
|
--enable-schedutils \
|
||||||
|
--disable-wall \
|
||||||
|
--enable-write \
|
||||||
|
--without-pam \
|
||||||
|
$(use_with selinux) \
|
||||||
|
$(use_with slang) \
|
||||||
|
$(tc-has-tls || echo --disable-tls)
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
emake install DESTDIR="${D}" || die "install failed"
|
||||||
|
dodoc AUTHORS NEWS README* TODO docs/*
|
||||||
|
|
||||||
|
if ! use perl ; then #284093
|
||||||
|
rm "${ED}"/usr/bin/chkdupexe || die
|
||||||
|
rm "${ED}"/usr/share/man/man1/chkdupexe.1 || die
|
||||||
|
fi
|
||||||
|
|
||||||
|
# need the libs in /
|
||||||
|
gen_usr_ldscript -a blkid uuid
|
||||||
|
# e2fsprogs-libs didnt install .la files, and .pc work fine
|
||||||
|
rm -f "${ED}"/usr/$(get_libdir)/*.la
|
||||||
|
|
||||||
|
if use crypt ; then
|
||||||
|
newinitd "${FILESDIR}"/crypto-loop.initd crypto-loop || die
|
||||||
|
newconfd "${FILESDIR}"/crypto-loop.confd crypto-loop || die
|
||||||
|
fi
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user