commit:     b125d8b883eaae5be261fe67ba98f366043e30cd
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 12 15:37:09 2014 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Tue Aug 12 15:37:09 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-dev.git;a=commit;h=b125d8b8

sys-apps/util-linux: version bump to 2.25

Package-Manager: portage-2.2.8-r1
Manifest-Sign-Key: 0xF52D4BBA

---
 .../files/util-linux-2.25-lscpu-pic.patch          |  81 ++++++++++
 .../util-linux-2.25-missing__SWORD_TYPE.patch      |  28 ++++
 sys-apps/util-linux/util-linux-2.25-r99.ebuild     | 175 +++++++++++++++++++++
 3 files changed, 284 insertions(+)

diff --git a/sys-apps/util-linux/files/util-linux-2.25-lscpu-pic.patch 
b/sys-apps/util-linux/files/util-linux-2.25-lscpu-pic.patch
new file mode 100644
index 0000000..f66ffa7
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.25-lscpu-pic.patch
@@ -0,0 +1,81 @@
+From f86d649d5f2522c61b791366a96e9f00cd255668 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vap...@gentoo.org>
+Date: Tue, 5 Aug 2014 18:58:52 -0400
+Subject: [PATCH] lscpu: clean up vmware inline asm
+
+This code is not PIC clean which means it fails to build on hardened
+32bit x86 systems (i.e. building as PIE).
+
+While here, optimize the existing cpuid logic slightly.
+
+URL: https://bugs.gentoo.org/518936
+Signed-off-by: Mike Frysinger <vap...@gentoo.org>
+---
+ sys-utils/lscpu.c | 36 ++++++++++++++++++++++++++----------
+ 1 file changed, 26 insertions(+), 10 deletions(-)
+
+diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c
+index 062dff5..9965eeb 100644
+--- a/sys-utils/lscpu.c
++++ b/sys-utils/lscpu.c
+@@ -546,10 +546,9 @@ cpuid(unsigned int op, unsigned int *eax, unsigned int 
*ebx,
+       __asm__(
+ #if defined(__PIC__) && defined(__i386__)
+               /* x86 PIC cannot clobber ebx -- gcc bitches */
+-              "pushl %%ebx;"
++              "xchg %%ebx, %%esi;"
+               "cpuid;"
+-              "movl %%ebx, %%esi;"
+-              "popl %%ebx;"
++              "xchg %%esi, %%ebx;"
+               : "=S" (*ebx),
+ #else
+               "cpuid;"
+@@ -656,12 +655,29 @@ read_hypervisor_powerpc(struct lscpu_desc *desc)
+ #define VMWARE_BDOOR_PORT           0x5658
+ #define VMWARE_BDOOR_CMD_GETVERSION 10
+ 
+-#define VMWARE_BDOOR(eax, ebx, ecx, edx)                                  \
+-        __asm__("inl (%%dx), %%eax" :                                     \
+-               "=a"(eax), "=c"(ecx), "=d"(edx), "=b"(ebx) :               \
+-               "0"(VMWARE_BDOOR_MAGIC), "1"(VMWARE_BDOOR_CMD_GETVERSION), \
+-               "2"(VMWARE_BDOOR_PORT), "3"(0) :                           \
+-               "memory");
++static inline
++void vmware_bdoor(uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx)
++{
++      __asm__(
++#if defined(__PIC__) && defined(__i386__)
++              /* x86 PIC cannot clobber ebx -- gcc bitches */
++              "xchg %%ebx, %%esi;"
++              "inl (%%dx), %%eax;"
++              "xchg %%esi, %%ebx;"
++              : "=S" (*ebx),
++#else
++              "inl (%%dx), %%eax;"
++              : "=b" (*ebx),
++#endif
++                "=a" (*eax),
++                "=c" (*ecx),
++                "=d" (*edx)
++              : "0" (VMWARE_BDOOR_MAGIC),
++                "1" (VMWARE_BDOOR_CMD_GETVERSION),
++                "2" (VMWARE_BDOOR_PORT),
++                "3" (0)
++              : "memory");
++}
+ 
+ static jmp_buf segv_handler_env;
+ 
+@@ -697,7 +713,7 @@ is_vmware_platform(void)
+       if (sigaction(SIGSEGV, &act, &oact))
+               err(EXIT_FAILURE, _("error: can not set signal handler"));
+ 
+-      VMWARE_BDOOR(eax, ebx, ecx, edx);
++      vmware_bdoor(&eax, &ebx, &ecx, &edx);
+ 
+       if (sigaction(SIGSEGV, &oact, NULL))
+               err(EXIT_FAILURE, _("error: can not restore signal handler"));
+-- 
+2.0.0
+

diff --git 
a/sys-apps/util-linux/files/util-linux-2.25-missing__SWORD_TYPE.patch 
b/sys-apps/util-linux/files/util-linux-2.25-missing__SWORD_TYPE.patch
new file mode 100644
index 0000000..e471e0f
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.25-missing__SWORD_TYPE.patch
@@ -0,0 +1,28 @@
+diff -Naur util-linux-2.25.orig/sys-utils/switch_root.c 
util-linux-2.25/sys-utils/switch_root.c
+--- util-linux-2.25.orig/sys-utils/switch_root.c       2014-06-25 
09:35:44.333812673 +0000
++++ util-linux-2.25/sys-utils/switch_root.c    2014-08-12 14:54:40.752012106 
+0000
+@@ -25,6 +25,7 @@
+ #include <sys/stat.h>
+ #include <sys/statfs.h>
+ #include <sys/param.h>
++#include <sys/user.h>
+ #include <fcntl.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -47,6 +48,16 @@
+ #define MNT_DETACH       0x00000002   /* Just detach from the tree */
+ #endif
+ 
++#ifndef __SWORD_TYPE
++#if __WORDSIZE == 32
++# define __SWORD_TYPE           int
++#elif __WORDSIZE == 64
++# define __SWORD_TYPE           long int
++#else
++# error
++#endif
++#endif
++
+ /* remove all files/directories below dirName -- don't cross mountpoints */
+ static int recursiveRemove(int fd)
+ {

diff --git a/sys-apps/util-linux/util-linux-2.25-r99.ebuild 
b/sys-apps/util-linux/util-linux-2.25-r99.ebuild
new file mode 100644
index 0000000..eb17752
--- /dev/null
+++ b/sys-apps/util-linux/util-linux-2.25-r99.ebuild
@@ -0,0 +1,175 @@
+# Copyright 1999-2014 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.25.ebuild,v 1.5 
2014/08/05 23:04:39 vapier Exp $
+
+EAPI="4"
+
+PYTHON_COMPAT=( python2_7 python3_{2,3,4} )
+
+inherit eutils toolchain-funcs libtool flag-o-matic bash-completion-r1 \
+       python-single-r1 multilib-minimal
+
+MY_PV=${PV/_/-}
+MY_P=${PN}-${MY_PV}
+
+if [[ ${PV} == 9999 ]] ; then
+       inherit git-2 autotools
+       
EGIT_REPO_URI="git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
+else
+       KEYWORDS="~amd64 ~arm ~mips ~x86"
+       
SRC_URI="mirror://kernel/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.xz"
+fi
+
+DESCRIPTION="Various useful Linux utilities"
+HOMEPAGE="http://www.kernel.org/pub/linux/utils/util-linux/";
+
+LICENSE="GPL-2 LGPL-2.1 BSD-4 MIT public-domain"
+SLOT="0"
+IUSE="bash-completion caps +cramfs fdformat ncurses nls pam python selinux 
slang static-libs +suid test tty-helpers udev unicode"
+
+RDEPEND="!sys-process/schedutils
+       !sys-apps/setarch
+       !<sys-apps/sysvinit-2.88-r7
+       !sys-block/eject
+       !<sys-libs/e2fsprogs-libs-1.41.8
+       !<sys-fs/e2fsprogs-1.41.8
+       !<app-shells/bash-completion-1.3-r2
+       caps? ( sys-libs/libcap-ng )
+       cramfs? ( sys-libs/zlib )
+       ncurses? ( >=sys-libs/ncurses-5.2-r2 )
+       pam? ( sys-libs/pam )
+       python? ( ${PYTHON_DEPS} )
+       selinux? ( >=sys-libs/libselinux-2.2.2-r4[${MULTILIB_USEDEP}] )
+       slang? ( sys-libs/slang )
+       udev? ( virtual/udev )
+       abi_x86_32? (
+               !<=app-emulation/emul-linux-x86-baselibs-20140406-r2
+               !app-emulation/emul-linux-x86-baselibs[-abi_x86_32]
+       )"
+DEPEND="${RDEPEND}
+       virtual/pkgconfig
+       nls? ( sys-devel/gettext )
+       test? ( sys-devel/bc )
+       virtual/os-headers"
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+S=${WORKDIR}/${MY_P}
+
+pkg_setup() {
+       use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+       if [[ ${PV} == 9999 ]] ; then
+               po/update-potfiles
+               eautoreconf
+       fi
+       epatch "${FILESDIR}"/${P}-lscpu-pic.patch #518936
+       epatch "${FILESDIR}"/${PN}-2.25-missing__SWORD_TYPE.patch
+       elibtoolize
+}
+
+lfs_fallocate_test() {
+       # Make sure we can use fallocate with LFS #300307
+       cat <<-EOF > "${T}"/fallocate.${ABI}.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.${ABI}.c 
-o /dev/null >/dev/null 2>&1 \
+               || export ac_cv_func_fallocate=no
+       rm -f "${T}"/fallocate.${ABI}.c
+}
+
+multilib_src_configure() {
+       lfs_fallocate_test
+       export ac_cv_header_security_pam_misc_h=$(multilib_native_usex pam) 
#485486
+       # We manually set --libdir to the default since on prefix, econf will 
set it to
+       # a value which the configure script does not recognize.  This makes it 
set the
+       # usrlib_execdir to a bad value. bug #518898#c2, fixed upstream for 
>2.25
+       ECONF_SOURCE=${S} \
+       econf \
+               
--enable-fs-paths-extra="${EPREFIX}/usr/sbin:${EPREFIX}/bin:${EPREFIX}/usr/bin" 
\
+               --libdir='${prefix}/'"$(get_libdir)" \
+               $(multilib_native_use_enable nls) \
+               --enable-agetty \
+               --with-bashcompletiondir="$(get_bashcompdir)" \
+               $(multilib_native_use_enable bash-completion) \
+               $(multilib_native_use_enable caps setpriv) \
+               --disable-chfn-chsh \
+               $(multilib_native_use_enable cramfs) \
+               $(multilib_native_use_enable fdformat) \
+               --with-ncurses=$(multilib_native_usex ncurses $(usex unicode 
auto yes) no) \
+               --disable-kill \
+               --disable-login \
+               $(multilib_native_use_enable tty-helpers mesg) \
+               --disable-nologin \
+               --enable-partx \
+               $(multilib_native_use_with python) \
+               --enable-raw \
+               --enable-rename \
+               --disable-reset \
+               --enable-schedutils \
+               --disable-su \
+               $(multilib_native_use_enable tty-helpers wall) \
+               $(multilib_native_use_enable tty-helpers write) \
+               $(multilib_native_use_enable suid makeinstall-chown) \
+               $(multilib_native_use_enable suid makeinstall-setuid) \
+               $(use_with selinux) \
+               $(multilib_native_use_with slang) \
+               $(use_enable static-libs static) \
+               $(multilib_native_use_with udev) \
+               $(tc-has-tls || echo --disable-tls)
+}
+
+multilib_src_compile() {
+       if multilib_is_native_abi; then
+               default
+       else
+               # build libraries only
+               emake -f Makefile -f - mylibs \
+                       <<< 'mylibs: $(usrlib_exec_LTLIBRARIES) 
$(pkgconfig_DATA)'
+       fi
+}
+
+multilib_src_test() {
+       multilib_is_native_abi && emake check
+}
+
+multilib_src_install() {
+       if multilib_is_native_abi; then
+               default
+       else
+               emake DESTDIR="${D}" install-usrlib_execLTLIBRARIES \
+                       install-pkgconfigDATA install-uuidincHEADERS \
+                       install-nodist_blkidincHEADERS 
install-nodist_mountincHEADERS \
+                       install-nodist_smartcolsincHEADERS
+       fi
+
+       if multilib_is_native_abi; then
+               # need the libs in /
+               gen_usr_ldscript -a blkid mount smartcols uuid
+
+               use python && python_optimize
+       fi
+}
+
+multilib_src_install_all() {
+       dodoc AUTHORS NEWS README* Documentation/{TODO,*.txt,releases/*}
+
+       # e2fsprogs-libs didnt install .la files, and .pc work fine
+       prune_libtool_files
+}
+
+pkg_postinst() {
+       if ! use tty-helpers; then
+               elog "The mesg/wall/write tools have been disabled due to 
USE=-tty-helpers."
+       fi
+
+       if [[ -z ${REPLACING_VERSIONS} ]]; then
+               elog "The agetty util now clears the terminal by default. You"
+               elog "might want to add --noclear to your /etc/inittab lines."
+       fi
+}

Reply via email to