blob: 7c515090def609787be36e57324a834df1b1da46 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
inherit eutils linux-info multilib toolchain-funcs linux-mod
DESCRIPTION="A minimal libc subset for use with initramfs."
HOMEPAGE="http://www.zytor.com/mailman/listinfo/klibc"
SRC_URI="ftp://ftp.kernel.org/pub/linux/libs/klibc/${P}.tar.bz2
ftp://ftp.kernel.org/pub/linux/libs/klibc/Testing/${P}.tar.bz2"
LICENSE="|| ( GPL-2 LGPL-2 )"
KEYWORDS="~amd64 -mips ~ppc ~x86 ~sparc"
SLOT="0"
IUSE="debug n32"
DEPEND="dev-lang/perl
virtual/linux-sources"
RDEPEND="dev-lang/perl"
# Klibc has no PT_GNU_STACK support, so scanning for execstacks is moot
QA_EXECSTACK="*"
src_unpack() {
unpack ${A}
cd "${S}"
# Symlink /usr/src/linux to ${S}/linux
ln -snf "${KV_DIR}" linux
# Build interp.o with EXTRA_KLIBCAFLAGS (.S source)
epatch "${FILESDIR}"/${PN}-1.4.11-interp-flags.patch
# Fixes for sparc and ppc
epatch "${FILESDIR}"/${P}-sigaction.patch
# Prevent klibc from prestripping stuff
# epatch "${FILESDIR}"/${P}-nostrip.patch
}
src_compile() {
local myargs
[[ ${KV_DIR} != "${KV_OUT_DIR}" ]] && \
myargs="KLIBCKERNELOBJ='${KV_OUT_DIR}/' KBUILD_SRC='1'"
use debug && myargs="${myargs} V=1"
emake \
EXTRA_KLIBCAFLAGS="-Wa,--noexecstack" \
EXTRA_KLIBCLDFLAGS="-z,noexecstack" \
HOSTCC="$(tc-getBUILD_CC)" CC="$(get-KERNEL_CC)" \
INSTALLDIR="/usr/$(get_libdir)/klibc" \
KLIBCARCH=$(tc-arch-kernel) \
SHLIBDIR="/$(get_libdir)" \
libdir="/usr/$(get_libdir)" \
mandir="/usr/share/man" \
${myargs} || die "Compile failed!"
}
src_install() {
local myargs klibc_prefix
[[ ${KV_DIR} != "${KV_OUT_DIR}" ]] && \
myargs="KLIBCKERNELOBJ='${KV_OUT_DIR}/' KBUILD_SRC='1'"
use debug && myargs="${myargs} V=1"
if tc-is-cross-compiler ; then
klibc_prefix=$("${S}/klcc/$(tc-arch-kernel)-klcc" -print-klibc-prefix)
else
klibc_prefix=$("${S}/klcc/klcc" -print-klibc-prefix)
fi
emake \
HOSTCC="$(tc-getBUILD_CC)" CC="$(get-KERNEL_CC)" \
EXTRA_KLIBCAFLAGS="-Wa,--noexecstack" \
EXTRA_KLIBCLDFLAGS="-z,noexecstack" \
INSTALLDIR="/usr/$(get_libdir)/klibc" \
INSTALLROOT="${D}" \
KLIBCARCH=$(tc-arch-kernel) \
SHLIBDIR="/$(get_libdir)" \
libdir="/usr/$(get_libdir)" \
mandir="/usr/share/man" \
${myargs} \
install || die "Install failed!"
# klibc doesn't support prelinking, so we need to mask it
cat > "${T}/70klibc" <<-EOF
PRELINK_PATH_MASK="/usr/$(get_libdir)/klibc"
EOF
doenvd "${T}"/70klibc
# Fix the permissions (bug #178053) on /usr/$(get_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/$(get_libdir)/klibc/include | xargs chmod o+rX
# Hardlinks becoming copies
for x in gunzip zcat ; do
rm -f "${D}/${klibc_prefix}/bin/${x}"
dosym gzip "${klibc_prefix}/bin/${x}"
done
if ! tc-is-cross-compiler ; then
cd "${S}"
insinto /usr/share/aclocal
doins contrib/klibc.m4
dodoc README usr/klibc/CAVEATS usr/klibc/README
newdoc usr/klibc/arch/README README.klibc.arch
docinto dash; newdoc usr/dash/README.klibc README
docinto gzip; dodoc usr/gzip/README
fi
}
|