commit:     ee53fa7bdd32ed0585fa739c7bc61947e32ac5ab
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Jan  8 21:31:48 2017 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sun Jan  8 21:32:40 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ee53fa7b

dev-libs/klibc: Bump to EAPI 6, 2.0.4-9 Deb-, linux-4.4 tars; GCC-5 fix

Gentoo-bug: 556142

Package-Manager: portage-2.3.0

 dev-libs/klibc/Manifest                       |   2 +
 dev-libs/klibc/files/klibc-2.0.2-mkfifo.patch |   4 +-
 dev-libs/klibc/klibc-2.0.4-r1.ebuild          | 317 ++++++++++++++++++++++++++
 3 files changed, 321 insertions(+), 2 deletions(-)

diff --git a/dev-libs/klibc/Manifest b/dev-libs/klibc/Manifest
index 4d5cec7..cec70f8 100644
--- a/dev-libs/klibc/Manifest
+++ b/dev-libs/klibc/Manifest
@@ -1,5 +1,7 @@
 DIST klibc-1.5.25.tar.bz2 510064 SHA256 
0b910ec0b2a97d4c775ed06e44ad7bca7be150efdf2a77a19253a573e16367d3 SHA512 
e550afb319cd995fb9c7fb086bc8ede550e5e4a48856ff5856e2296f691ba643c9fcc314c5e973f4d5b4f33b543ef4bc10d29b389f83e5418ec860a80e7cac45
 WHIRLPOOL 
d986dcdcc95e2c7846d2eda9338519d5d84f50e94f82f1eee0234a17504ae10abaa75b6c89e9cf4c228690c0cc489d4323d98e5e62cde10cf7a04581026309f3
 DIST klibc-2.0.4.tar.xz 469348 SHA256 
7f9a0850586def7cf4faeeb75e5d0f66e613674c524f6e77b0f4d93a26c801cb SHA512 
7a01d1744b49f3de64111fefc522b1d63f054199acf671254bc046d6f1d0b6ca68e050c99025bf8303751c2466a5e034677555649ae5909c40997858d393db8d
 WHIRLPOOL 
f5dc71b48f118155df512d8ac839b66d361b22ff4e040e49a562722d82f18ac83a8c682bf0b4c59a9b108473f74bebc673d38456cf0ab5b1051071ca3fa9b78e
 DIST klibc_2.0.2-1.debian.tar.gz 21305 SHA256 
93f4b9be5a3c725a38b7ac137850311e3cf8d8094874006c7dce793d2b71e469 SHA512 
9cbcc39396a49bc37ace79eaefad6e704ddc9f30aba1b39f40dd2888dad06eeeb7b9c1a387cee60a95cf5641f50bd7f225cf8209547c75a8bae8af4285152d91
 WHIRLPOOL 
a42e148550a27426e8f38b54cb4f3b1f355759d573ab27c0ecadb0c68d0afd54a5950471628ec4e2e27ac9c8b9d841940d6b0f2c0a873d4feab7af37e7989a52
+DIST klibc_2.0.4-9.debian.tar.xz 28628 SHA256 
069f3496d66bda23bca227acdbf2b5e5b57e57419db619c293b81ed4929aba12 SHA512 
0fe9a6642be962fa631919850d7eeed5a87c10682766ee10fe31dec2b19a6179e0067602acb26bdc2aa8ceecfd39b1dc95a76f3b0a9bc813b172c0ffe9f0ff53
 WHIRLPOOL 
96de652f4b0cea4e2c117f541d820b9e869c05763e408b7bd203d04ae2b70a89939713794e0dda27f253b2662ef03aea62bd669b06de4a2290f807890b1b01e8
 DIST linux-2.6.39.tar.bz2 76096559 SHA256 
584d17f2a3ee18a9501d7ff36907639e538cfdba4529978b8550c461d45c61f6 SHA512 
06cb5aba7c53c68d43afcebbbb9507d8b398b3e994d8a237c66a49374ca569237f074adaa3fccba7f908eab4f51f99bae40656793eab5c2f5ce03cd3a65fa02c
 WHIRLPOOL 
2f2c833ab1d8ddbe3e0b862b71a38d47fd3fc5688ea81cdd818369b09e72fa50481bf84533ddcea992af1130b2ceec10b6ff5eaff393a14ee70639293a555912
 DIST linux-3.12.tar.xz 76384600 SHA256 
2e120ec7fde19fa51dc6b6cc11c81860a0775defcad5a5bf910ed9a50e845a02 SHA512 
4ba5797e0772726d05c9f2eee66dc6dc2a5033c749ef44764c805a83da739ed5d0c6443b76785e38fe1ef74cc7ade787e48144faed0cfcb6f124f05248c700ff
 WHIRLPOOL 
a40195f6b53ba3440cf90a44495f6a59670f750851d1518e2bdfe3b949f0e898d1df5d37e271c31c555087026ddb6cc2c9109b22b9639e3222735e6f650a1417
+DIST linux-4.4.tar.xz 87295988 SHA256 
401d7c8fef594999a460d10c72c5a94e9c2e1022f16795ec51746b0d165418b2 SHA512 
13c8459933a8b80608e226a1398e3d1848352ace84bcfb7e6a4a33cb230bbe1ab719d4b58e067283df91ce5311be6d2d595fc8c19e2ae6ecc652499415614b3e
 WHIRLPOOL 
02abc203d867404b9934aaa4c1e5b5dcbb0b0021e91a03f3a7e7fd224eed106821d8b4949f32a590536db150e5a88c16fcde88538777a26d0c17900f0257b1bc

diff --git a/dev-libs/klibc/files/klibc-2.0.2-mkfifo.patch 
b/dev-libs/klibc/files/klibc-2.0.2-mkfifo.patch
index cfbc5f6..3ddf834 100644
--- a/dev-libs/klibc/files/klibc-2.0.2-mkfifo.patch
+++ b/dev-libs/klibc/files/klibc-2.0.2-mkfifo.patch
@@ -1,6 +1,6 @@
 diff -Nuar --exclude '*.g' --exclude '*.cmd' 
klibc-2.0.2-r1/work/klibc-2.0.2/usr/utils/mkfifo.c 
klibc-2.0.2.orig/work/klibc-2.0.2/usr/utils/mkfifo.c
---- klibc-2.0.2-r1/work/klibc-2.0.2/usr/utils/mkfifo.c 2012-10-03 
09:41:43.000000000 -0700
-+++ klibc-2.0.2.orig/work/klibc-2.0.2/usr/utils/mkfifo.c       2013-12-26 
13:19:34.270949780 -0800
+--- a/usr/utils/mkfifo.c       2012-10-03 09:41:43.000000000 -0700
++++ b/usr/utils/mkfifo.c       2013-12-26 13:19:34.270949780 -0800
 @@ -13,6 +13,11 @@
  
  char *progname;

diff --git a/dev-libs/klibc/klibc-2.0.4-r1.ebuild 
b/dev-libs/klibc/klibc-2.0.4-r1.ebuild
new file mode 100644
index 00000000..702d35e
--- /dev/null
+++ b/dev-libs/klibc/klibc-2.0.4-r1.ebuild
@@ -0,0 +1,317 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+# Robin H. Johnson <robb...@gentoo.org>, 12 Nov 2007:
+# This still needs major work.
+# But it is significently better than the previous version.
+# In that it will now build on biarch systems, such as ppc64-32ul.
+
+# NOTES:
+# ======
+# We need to bring in the kernel sources seperately
+# Because they have to be configured in a way that differs from the copy in
+# /usr/src/. The sys-kernel/linux-headers are too stripped down to use
+# unfortunately.
+# This will be able to go away once the klibc author updates his code
+# to build again the headers provided by the kernel's 'headers_install' target.
+
+EAPI=6
+K_TARBALL_SUFFIX="xz"
+
+inherit eutils toolchain-funcs flag-o-matic
+
+DESCRIPTION="A minimal libc subset for use with initramfs"
+HOMEPAGE="http://www.zytor.com/mailman/listinfo/klibc/ 
https://www.kernel.org/pub/linux/libs/klibc/";
+KV_MAJOR="4" KV_MINOR="x" KV_SUB="4"
+PKV_EXTRA=""
+if [[ ${PKV_EXTRA} ]]; then
+       if [[ ${KV_MAJOR} == 2 ]]; then
+               PKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_SUB}+1))-${PKV_EXTRA}"
+       else
+               PKV="${KV_MAJOR}.$((${KV_SUB}+1))-${PKV_EXTRA}"
+       fi
+       
PATCH_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/patch-${PKV}.${K_TARBALL_SUFFIX}"
+fi
+if [[ ${KV_MAJOR} == 2 ]]; then
+       OKV="${KV_MAJOR}.${KV_MINOR}.${KV_SUB}"
+else
+       OKV="${KV_MAJOR}.${KV_SUB}"
+fi
+KERNEL_URI="
+       
mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.${K_TARBALL_SUFFIX}
+       
mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/testing/linux-${OKV}.tar.${K_TARBALL_SUFFIX}"
+DEBIAN_PV=2.0.4
+DEBIAN_PR=9
+DEBIAN_A="${PN}_${DEBIAN_PV}-${DEBIAN_PR}.debian.tar.xz"
+SRC_URI="
+       mirror://kernel/linux/libs/klibc/${PV:0:3}/${P}.tar.${K_TARBALL_SUFFIX}
+       mirror://debian/pool/main/k/klibc/${DEBIAN_A}
+       ${PATCH_URI}
+       ${KERNEL_URI}"
+
+LICENSE="|| ( GPL-2 LGPL-2 )"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 -mips ~ppc ~ppc64 ~sparc ~x86"
+SLOT="0"
+IUSE="debug test custom-cflags"
+
+DEPEND="dev-lang/perl"
+RDEPEND="${DEPEND}"
+
+KS="${WORKDIR}/linux-${OKV}"
+
+# Klibc has no PT_GNU_STACK support, so scanning for execstacks is moot
+QA_EXECSTACK="*"
+# Do not strip
+RESTRICT="strip"
+
+kernel_asm_arch() {
+       a="${1:${ARCH}}"
+       case ${a} in
+               # Merged arches
+               x86) echo i386 ;; # for build on x86 userspace & 64bit kernel
+               amd64) echo x86 ;;
+               ppc*) echo powerpc ;;
+               # Non-merged
+               alpha|arm|arm64|ia64|m68k|mips|sh|sparc*) echo ${1} ;;
+               *) die "TODO: Update the code for your asm-ARCH symlink" ;;
+       esac
+}
+
+# For a given Gentoo ARCH,
+# specify the kernel defconfig most relevant
+kernel_defconfig() {
+       a="${1:${ARCH}}"
+       # most, but not all arches have a sanely named defconfig
+       case ${a} in
+               ppc64) echo ppc64_defconfig ;;
+               ppc) echo pmac32_defconfig ;;
+               sh*) die "TODO: Your arch is not supported by the klibc ebuild. 
Please suggest a defconfig in a bug." ;;
+               *) echo defconfig ;;
+       esac
+}
+
+src_unpack() {
+       unpack linux-${OKV}.tar.${K_TARBALL_SUFFIX} 
${P}.tar.${K_TARBALL_SUFFIX} ${DEBIAN_A}
+}
+
+PATCHES=(
+       # Build interp.o with EXTRA_KLIBCAFLAGS (.S source)
+       "${FILESDIR}"/${PN}-1.4.11-interp-flags.patch
+       # Fix usage of -s, bug #201006
+       "${FILESDIR}"/klibc-1.5.7-strip-fix-dash-s.patch
+       # The inline definition from sys/stat.h does not seem to get used
+       # So just copy it to make this compile for now
+       "${FILESDIR}"/klibc-2.0.2-mkfifo.patch
+       # Newer kernels have some headers in the uapi dir
+       "${FILESDIR}"/klibc-2.0.3-kernel-uapi.patch
+)
+
+src_prepare() {
+       [[ ${PKV} ]] && EPATCH_OPTS="-d ${KS} -p1" eapply 
"${DISTDIR}"/patch-${PKV}.${K_TARBALL_SUFFIX}
+
+       # Symlink /usr/src/linux to ${S}/linux
+       ln -snf "${KS}" linux
+       #ln -snf "/usr" linux
+
+       # Borrow the debian fixes too
+       for p in $(<"${WORKDIR}"/debian/patches/series) ; do
+               PATCHES+=( "${WORKDIR}/debian/patches/${p}" )
+       done
+
+       default
+}
+
+# klibc has it's own ideas of arches
+# They reflect userspace strictly.
+# This functions maps from a Gentoo ARCH, to an arch that klibc expects
+# Look at klibc-${S}/usr/klibc/arch for a list of these arches
+klibc_arch() {
+       a="${1:${ARCH}}"
+       case ${a} in
+               amd64) echo x86_64;;
+               mips) die 'TODO: Use the $ABI' ;;
+               x86) echo i386;;
+               *) echo ${a} ;;
+       esac
+}
+
+src_compile() {
+       local myargs="all"
+       local myARCH="${ARCH}" myABI="${ABI}"
+       # TODO: For cross-compiling
+       # You should set ARCH and ABI here
+       CC="$(tc-getCC)"
+       LD="$(tc-getLD)"
+       HOSTCC="$(tc-getBUILD_CC)"
+       HOSTLD="$(tc-getBUILD_LD)"
+       KLIBCARCH="$(klibc_arch ${ARCH})"
+       KLIBCASMARCH="$(kernel_asm_arch ${ARCH})"
+       libdir="$(get_libdir)"
+       # This should be the defconfig corresponding to your userspace!
+       # NOT your kernel. PPC64-32ul would choose 'ppc' for example.
+       defconfig=$(kernel_defconfig ${ARCH})
+       unset ABI ARCH # Unset these, because they interfere
+       unset KBUILD_OUTPUT # we are using a private copy
+
+       cd "${KS}"
+       emake ${defconfig} CC="${CC}" HOSTCC="${HOSTCC}" ARCH="${KLIBCASMARCH}" 
|| die "No defconfig"
+       if [[ "${KLIBCARCH/arm}" != "${KLIBCARCH}" ]] && \
+          [[ "${CHOST/eabi}" != "${CHOST}" ]]; then
+               # The delete and insert are seperate statements
+               # so that they are reliably used.
+               sed -i \
+               -e '/CONFIG_AEABI/d' \
+               -e '1iCONFIG_AEABI=y' \
+               -e '/CONFIG_OABI_COMPAT/d' \
+               -e '1iCONFIG_OABI_COMPAT=y' \
+               -e '1iCONFIG_ARM_UNWIND=y' \
+               "${KS}"/.config \
+               "${S}"/defconfig
+       fi
+       emake prepare CC="${CC}" HOSTCC="${HOSTCC}" ARCH="${KLIBCASMARCH}" || 
die "Failed to prepare kernel sources for header usage"
+
+       cd "${S}"
+
+       use debug && myargs="${myargs} V=1"
+       use test && myargs="${myargs} test"
+       append-ldflags -z noexecstack
+       append-flags -nostdlib
+
+       emake \
+               EXTRA_KLIBCAFLAGS="-Wa,--noexecstack" \
+               EXTRA_KLIBCLDFLAGS="-z noexecstack" \
+               HOSTLDFLAGS="-z noexecstack" \
+               KLIBCOPTFLAGS='-nostdlib' \
+               HOSTCC="${HOSTCC}" CC="${CC}" \
+               HOSTLD="${HOSTLD}" LD="${LD}" \
+               INSTALLDIR="/usr/${libdir}/klibc" \
+               KLIBCARCH=${KLIBCARCH} \
+               KLIBCASMARCH=${KLIBCASMARCH} \
+               SHLIBDIR="/${libdir}" \
+               libdir="/usr/${libdir}" \
+               mandir="/usr/share/man" \
+               T="${T}" \
+               $(use custom-cflags || echo SKIP_)HOSTCFLAGS="${CFLAGS}" \
+               $(use custom-cflags || echo SKIP_)HOSTLDFLAGS="${LDFLAGS}" \
+               $(use custom-cflags || echo SKIP_)KLIBCOPTFLAGS="${CFLAGS}" \
+               ${myargs} || die "Compile failed!"
+
+               #SHLIBDIR="/${libdir}" \
+
+       ARCH="${myARCH}" ABI="${myABI}"
+}
+
+src_install() {
+       local myargs
+       local myARCH="${ARCH}" myABI="${ABI}"
+       # TODO: For cross-compiling
+       # You should set ARCH and ABI here
+       CC="$(tc-getCC)"
+       HOSTCC="$(tc-getBUILD_CC)"
+       KLIBCARCH="$(klibc_arch ${ARCH})"
+       KLIBCASMARCH="$(kernel_asm_arch ${ARCH})"
+       libdir="$(get_libdir)"
+       # This should be the defconfig corresponding to your userspace!
+       # NOT your kernel. PPC64-32ul would choose 'ppc' for example.
+       defconfig=$(kernel_defconfig ${ARCH})
+
+       use debug && myargs="${myargs} V=1"
+
+       local klibc_prefix
+       if tc-is-cross-compiler ; then
+               klibc_prefix=$("${S}/klcc/${KLIBCARCH}-klcc" 
-print-klibc-prefix)
+       else
+               klibc_prefix=$("${S}/klcc/klcc" -print-klibc-prefix)
+       fi
+
+       unset ABI ARCH # Unset these, because they interfere
+       unset KBUILD_OUTPUT # we are using a private copy
+
+       emake \
+               EXTRA_KLIBCAFLAGS="-Wa,--noexecstack" \
+               EXTRA_KLIBCLDFLAGS="-z noexecstack" \
+               HOSTLDFLAGS="-z noexecstack" \
+               KLIBCOPTFLAGS='-nostdlib' \
+               HOSTCC="${HOSTCC}" CC="${CC}" \
+               HOSTLD="${HOSTLD}" LD="${LD}" \
+               INSTALLDIR="/usr/${libdir}/klibc" \
+               INSTALLROOT="${D}" \
+               KLIBCARCH=${KLIBCARCH} \
+               KLIBCASMARCH=${KLIBCASMARCH} \
+               SHLIBDIR="/${libdir}" \
+               libdir="/usr/${libdir}" \
+               mandir="/usr/share/man" \
+               T="${T}" \
+               $(use custom-cflags || echo SKIP_)HOSTCFLAGS="${CFLAGS}" \
+               $(use custom-cflags || echo SKIP_)HOSTLDFLAGS="${LDFLAGS}" \
+               $(use custom-cflags || echo SKIP_)KLIBCOPTFLAGS="${CFLAGS}" \
+               ${myargs} \
+               install || die "Install failed!"
+
+               #SHLIBDIR="/${libdir}" \
+
+       # klibc doesn't support prelinking, so we need to mask it
+       cat > "${T}/70klibc" <<-EOF
+               PRELINK_PATH_MASK="/usr/${libdir}/klibc"
+       EOF
+
+       doenvd "${T}"/70klibc
+
+       # Fix the permissions (bug #178053) on /usr/${libdir}/klibc/include
+       # Actually I have no idea, why the includes have those weird-ass 
permissions
+       # on a particular system, might be due to inherited permissions from 
parent
+       # directory
+       find "${D}"/usr/${libdir}/klibc/include | xargs chmod o+rX
+       find "${D}"/usr/${libdir}/klibc/include -type f \
+               \( -name '.install' -o -name '..install.cmd' \) -delete || die
+
+       # Hardlinks becoming copies
+       for x in gunzip zcat ; do
+               rm -f "${D}/${klibc_prefix}/bin/${x}"
+               dosym gzip "${klibc_prefix}/bin/${x}"
+       done
+
+       # Restore now, so we can use the tc- functions
+       ARCH="${myARCH}" ABI="${myABI}"
+       if ! tc-is-cross-compiler ; then
+               cd "${S}"
+               insinto /usr/share/aclocal
+               doins contrib/klibc.m4
+
+               dodoc README usr/klibc/CAVEATS
+               docinto gzip; dodoc usr/gzip/README
+       fi
+
+       # Fix up the symlink
+       # Mainly for merged arches
+       linkname="${D}/usr/${libdir}/klibc/include/asm"
+       if [ -L "${linkname}" ] && [ ! -e "${linkname}" ] ; then
+               ln -snf asm-${KLIBCASMARCH} "${linkname}"
+       fi
+}
+
+src_test() {
+       if ! tc-is-cross-compiler ; then
+               cd "${S}"/usr/klibc/tests
+               ALL_TESTS="$(ls *.c |sed 's,\.c$,,g')"
+               BROKEN_TESTS="fcntl fnmatch testrand48"
+               failed=0
+               for t in $ALL_TESTS ; do
+                       if has $t $BROKEN_TESTS ; then
+                               echo "=== $t SKIP"
+                       else
+                               echo -n "=== $t "
+                               ./$t </dev/null >/dev/null
+                               rc=$?
+                               if [ $rc -eq 0 ]; then
+                                       echo PASS
+                               else
+                                       echo FAIL
+                                       failed=1
+                               fi
+                       fi
+               done
+               [ $failed -ne 0 ] && die "Some tests failed."
+       fi
+}

Reply via email to