blob: 86dae42e37e4ce31119e6c328aef2bce134bc3c8 (
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
# Distributed under the terms of the GNU General Public License v2
EAPI=3
inherit eutils mount-boot
SLOT=$PVR
CKV=3.12.3
KV_FULL=${PN}-${PVR}
EXTRAVERSION=-1~exp1
KERNEL_ARCHIVE="linux_${PV}.orig.tar.xz"
PATCH_ARCHIVE="linux_${PV}${EXTRAVERSION}.debian.tar.xz"
RESTRICT="binchecks strip mirror"
# based on : http://packages.ubuntu.com/maverick/linux-image-2.6.35-22-server
LICENSE="GPL-2"
KEYWORDS="*"
IUSE="binary rt"
DEPEND="binary? ( >=sys-kernel/genkernel-3.4.40.7 )"
RDEPEND="binary? ( || ( >=sys-fs/udev-160 >=virtual/udev-171 ) )"
DESCRIPTION="Debian Sources (and optional binary kernel)"
HOMEPAGE="http://www.debian.org"
SRC_URI="http://ftp.osuosl.org/pub/funtoo/distfiles/${KERNEL_ARCHIVE} http://ftp.osuosl.org/pub/funtoo/distfiles/${PATCH_ARCHIVE}"
S="$WORKDIR/linux-${CKV}"
get_patch_list() {
[[ -z "${1}" ]] && die "No patch series file specified"
local patch_series="${1}"
while read line ; do
if [[ "${line:0:1}" != "#" ]] ; then
echo "${line}"
fi
done < "${patch_series}"
}
pkg_setup() {
export REAL_ARCH="$ARCH"
unset ARCH; unset LDFLAGS #will interfere with Makefile if set
}
src_prepare() {
cd ${S}
for debpatch in $( get_patch_list "${WORKDIR}/debian/patches/series" ); do
epatch -p1 "${WORKDIR}/debian/patches/${debpatch}"
done
if use rt ; then
for rtpatch in $( get_patch_list "${WORKDIR}/debian/patches/series-rt" ) ; do
epatch -p1 "${WORKDIR}/debian/patches/${rtpatch}"
done
fi
# end of debian-specific stuff...
sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile || die
sed -i -e 's:#export\tINSTALL_PATH:export\tINSTALL_PATH:' Makefile || die
rm -f .config >/dev/null
cp -a "${WORKDIR}"/debian "${T}"
make -s mrproper || die "make mrproper failed"
#make -s include/linux/version.h || die "make include/linux/version.h failed"
cd ${S}
cp -aR "${WORKDIR}"/debian "${S}"/debian
## XFS LIBCRC kernel config fixes, FL-823
epatch ${FILESDIR}/debian-sources-3.12.3-xfs-libcrc32c-fix.patch
local opts
use rt && opts="rt" || opts="standard"
local myarch="amd64"
[ "$REAL_ARCH" = "x86" ] && myarch="i386" && opts="$opts 686-pae"
cp ${FILESDIR}/config-extract . || die
chmod +x config-extract || die
./config-extract ${myarch} ${opts} || die
cp .config ${T}/config || die
make -s mrproper || die "make mrproper failed"
#make -s include/linux/version.h || die "make include/linux/version.h failed"
}
src_compile() {
! use binary && return
install -d ${WORKDIR}/out/{lib,boot}
install -d ${T}/{cache,twork}
install -d $WORKDIR/build $WORKDIR/out/lib/firmware
genkernel \
--no-save-config \
--kernel-config="$T/config" \
--kernname="${PN}" \
--build-src="$S" \
--build-dst=${WORKDIR}/build \
--makeopts="${MAKEOPTS}" \
--firmware-dst=${WORKDIR}/out/lib/firmware \
--cachedir="${T}/cache" \
--tempdir="${T}/twork" \
--logfile="${WORKDIR}/genkernel.log" \
--bootdir="${WORKDIR}/out/boot" \
--lvm \
--luks \
--mdadm \
--iscsi \
--module-prefix="${WORKDIR}/out" \
all || die "genkernel failed"
}
src_install() {
# copy sources into place:
dodir /usr/src
cp -a ${S} ${D}/usr/src/linux-${P} || die
cd ${D}/usr/src/linux-${P}
# prepare for real-world use and 3rd-party module building:
make mrproper || die
cp ${T}/config .config || die
cp -a ${T}/debian debian || die
yes "" | make oldconfig || die
# if we didn't use genkernel, we're done. The kernel source tree is left in
# an unconfigured state - you can't compile 3rd-party modules against it yet.
use binary || return
make prepare || die
make scripts || die
# OK, now the source tree is configured to allow 3rd-party modules to be
# built against it, since we want that to work since we have a binary kernel
# built.
cp -a ${WORKDIR}/out/* ${D}/ || die "couldn't copy output files into place"
# module symlink fixup:
rm -f ${D}/lib/modules/*/source || die
rm -f ${D}/lib/modules/*/build || die
cd ${D}/lib/modules
# module strip:
find -iname *.ko -exec strip --strip-debug {} \;
# back to the symlink fixup:
local moddir="$(ls -d [23]*)"
ln -s /usr/src/linux-${P} ${D}/lib/modules/${moddir}/source || die
ln -s /usr/src/linux-${P} ${D}/lib/modules/${moddir}/build || die
# Fixes FL-14
cp "${WORKDIR}/build/System.map" "${D}/usr/src/linux-${P}/" || die
cp "${WORKDIR}/build/Module.symvers" "${D}/usr/src/linux-${P}/" || die
}
pkg_postinst() {
if [ ! -e ${ROOT}usr/src/linux ]
then
ln -s linux-${P} ${ROOT}usr/src/linux
fi
}
|