/[gentoo-x86]/eclass/kernel-2.eclass
Gentoo

Diff of /eclass/kernel-2.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.221 Revision 1.247
1# Copyright 1999-2009 Gentoo Foundation 1# Copyright 1999-2009 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.221 2009/10/20 19:17:59 zmedico Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.247 2011/03/19 18:15:34 ssuominen Exp $
4 4
5# Description: kernel.eclass rewrite for a clean base regarding the 2.6 5# Description: kernel.eclass rewrite for a clean base regarding the 2.6
6# series of kernel with back-compatibility for 2.4 6# series of kernel with back-compatibility for 2.4
7# 7#
8# Original author: John Mylchreest <johnm@gentoo.org> 8# Original author: John Mylchreest <johnm@gentoo.org>
43# combination of "base" and "extras" 43# combination of "base" and "extras"
44# K_GENPATCHES_VER - The version of the genpatches tarball(s) to apply. 44# K_GENPATCHES_VER - The version of the genpatches tarball(s) to apply.
45# A value of "5" would apply genpatches-2.6.12-5 to 45# A value of "5" would apply genpatches-2.6.12-5 to
46# my-sources-2.6.12.ebuild 46# my-sources-2.6.12.ebuild
47# K_SECURITY_UNSUPPORTED- If set, this kernel is unsupported by Gentoo Security 47# K_SECURITY_UNSUPPORTED- If set, this kernel is unsupported by Gentoo Security
48 48# K_DEBLOB_AVAILABLE - A value of "0" will disable all of the optional deblob
49# code. If empty, will be set to "1" if deblobbing is
50# possible. Test ONLY for "1".
51# K_PREDEBLOBBED - This kernel was already deblobbed elsewhere.
52# If false, either optional deblobbing will be available
53# or the license will note the inclusion of freedist
54# code.
55# K_LONGTERM - If set, the eclass will search for the kernel source
56# in the long term directories on the upstream servers
57# as the location has been changed by upstream
49# H_SUPPORTEDARCH - this should be a space separated list of ARCH's which 58# H_SUPPORTEDARCH - this should be a space separated list of ARCH's which
50# can be supported by the headers ebuild 59# can be supported by the headers ebuild
51 60
52# UNIPATCH_LIST - space delimetered list of patches to be applied to the 61# UNIPATCH_LIST - space delimetered list of patches to be applied to the
53# kernel 62# kernel
59# the doc dir 68# the doc dir
60# UNIPATCH_STRICTORDER - if this is set places patches into directories of 69# UNIPATCH_STRICTORDER - if this is set places patches into directories of
61# order, so they are applied in the order passed 70# order, so they are applied in the order passed
62 71
63inherit eutils toolchain-funcs versionator multilib 72inherit eutils toolchain-funcs versionator multilib
64EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst pkg_postinst 73EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_test src_install pkg_preinst pkg_postinst
65 74
66# Added by Daniel Ostrow <dostrow@gentoo.org> 75# Added by Daniel Ostrow <dostrow@gentoo.org>
67# This is an ugly hack to get around an issue with a 32-bit userland on ppc64. 76# This is an ugly hack to get around an issue with a 32-bit userland on ppc64.
68# I will remove it when I come up with something more reasonable. 77# I will remove it when I come up with something more reasonable.
69[[ ${PROFILE_ARCH} == "ppc64" ]] && CHOST="powerpc64-${CHOST#*-}" 78[[ ${PROFILE_ARCH} == "ppc64" ]] && CHOST="powerpc64-${CHOST#*-}"
72if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then 81if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then
73 export CTARGET=${CATEGORY/cross-} 82 export CTARGET=${CATEGORY/cross-}
74fi 83fi
75 84
76HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}" 85HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}"
86[[ -z ${LICENSE} ]] && \
77LICENSE="GPL-2" 87 LICENSE="GPL-2"
88
89# This is the latest KV_PATCH of the deblob tool available from the
90# libre-sources upstream. If you bump this, you MUST regenerate the Manifests
91# for ALL kernel-2 consumer packages where deblob is available.
92[[ -z ${DEBLOB_MAX_VERSION} ]] && DEBLOB_MAX_VERSION=37
78 93
79# No need to run scanelf/strip on kernel sources/headers (bug #134453). 94# No need to run scanelf/strip on kernel sources/headers (bug #134453).
80RESTRICT="binchecks strip" 95RESTRICT="binchecks strip"
81 96
82# set LINUX_HOSTCFLAGS if not already set 97# set LINUX_HOSTCFLAGS if not already set
87#============================================================== 102#==============================================================
88# this function exists only to help debug kernel-2.eclass 103# this function exists only to help debug kernel-2.eclass
89# if you are adding new functionality in, put a call to it 104# if you are adding new functionality in, put a call to it
90# at the start of src_unpack, or during SRC_URI/dep generation. 105# at the start of src_unpack, or during SRC_URI/dep generation.
91debug-print-kernel2-variables() { 106debug-print-kernel2-variables() {
92 debug-print "PVR: ${PVR}" 107 for v in PVR CKV OKV KV KV_FULL KV_MAJOR KV_MINOR KV_PATCH RELEASETYPE \
93 debug-print "CKV: ${CKV}" 108 RELEASE UNIPATCH_LIST_DEFAULT UNIPATCH_LIST_GENPATCHES \
94 debug-print "OKV: ${OKV}" 109 UNIPATCH_LIST S KERNEL_URI ; do
95 debug-print "KV: ${KV}" 110 debug-print "${v}: ${!v}"
96 debug-print "KV_FULL: ${KV_FULL}" 111 done
97 debug-print "RELEASETYPE: ${RELEASETYPE}"
98 debug-print "RELEASE: ${RELEASE}"
99 debug-print "UNIPATCH_LIST_DEFAULT: ${UNIPATCH_LIST_DEFAULT} "
100 debug-print "UNIPATCH_LIST_GENPATCHES: ${UNIPATCH_LIST_GENPATCHES} "
101 debug-print "UNIPATCH_LIST: ${UNIPATCH_LIST}"
102 debug-print "S: ${S}"
103 debug-print "KERNEL_URI: ${KERNEL_URI}"
104} 112}
105 113
106#Eclass functions only from here onwards ... 114#Eclass functions only from here onwards ...
107#============================================================== 115#==============================================================
108handle_genpatches() { 116handle_genpatches() {
151 KV_EXTRA=${KV_EXTRA/[-_]*} 159 KV_EXTRA=${KV_EXTRA/[-_]*}
152 else 160 else
153 KV_PATCH=$(get_version_component_range 3- ${OKV}) 161 KV_PATCH=$(get_version_component_range 3- ${OKV})
154 fi 162 fi
155 KV_PATCH=${KV_PATCH/[-_]*} 163 KV_PATCH=${KV_PATCH/[-_]*}
164
165 local v n=0 missing
166 for v in CKV OKV KV_{MAJOR,MINOR,PATCH} ; do
167 [[ -z ${!v} ]] && n=1 && missing="${missing}${v} ";
168 done
169 [[ $n -eq 1 ]] && \
170 eerror "Missing variables: ${missing}" && \
171 die "Failed to extract kernel version (try explicit CKV in ebuild)!"
172 unset v n missing
156 173
157 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 174 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}"
175 [[ -n "${K_LONGTERM}" ]] &&
176 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
177
178 KERNEL_URI="${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
158 179
159 RELEASE=${CKV/${OKV}} 180 RELEASE=${CKV/${OKV}}
160 RELEASE=${RELEASE/_beta} 181 RELEASE=${RELEASE/_beta}
161 RELEASE=${RELEASE/_rc/-rc} 182 RELEASE=${RELEASE/_rc/-rc}
162 RELEASE=${RELEASE/_pre/-pre} 183 RELEASE=${RELEASE/_pre/-pre}
184 # We cannot trivally call kernel_is here, because it calls us to detect the
185 # version
163 kernel_is ge 2 6 && RELEASE=${RELEASE/-pre/-git} 186 #kernel_is ge 2 6 && RELEASE=${RELEASE/-pre/-git}
187 [ $(($KV_MAJOR * 1000 + $KV_MINOR)) -ge 2006 ] && RELEASE=${RELEASE/-pre/-git}
164 RELEASETYPE=${RELEASE//[0-9]} 188 RELEASETYPE=${RELEASE//[0-9]}
165 189
166 # Now we know that RELEASE is the -rc/-git 190 # Now we know that RELEASE is the -rc/-git
167 # and RELEASETYPE is the same but with its numerics stripped 191 # and RELEASETYPE is the same but with its numerics stripped
168 # we can work on better sorting EXTRAVERSION. 192 # we can work on better sorting EXTRAVERSION.
197 # The only messing around which should actually effect this is for KV_EXTRA 221 # The only messing around which should actually effect this is for KV_EXTRA
198 # since this has to limit OKV to MAJ.MIN.PAT and strip EXTRA off else 222 # since this has to limit OKV to MAJ.MIN.PAT and strip EXTRA off else
199 # KV_FULL evaluates to MAJ.MIN.PAT.EXT.EXT after EXTRAVERSION 223 # KV_FULL evaluates to MAJ.MIN.PAT.EXT.EXT after EXTRAVERSION
200 if [[ -n ${KV_EXTRA} ]]; then 224 if [[ -n ${KV_EXTRA} ]]; then
201 OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}" 225 OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
202 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/patch-${CKV}.bz2 226 KERNEL_URI="${KERNEL_BASE_URI}/patch-${CKV}.bz2
203 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}.tar.bz2" 227 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
204 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.bz2" 228 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.bz2"
205 fi 229 fi
206 230
207 # We need to set this using OKV, but we need to set it before we do any 231 # We need to set this using OKV, but we need to set it before we do any
208 # messing around with OKV based on RELEASETYPE 232 # messing around with OKV based on RELEASETYPE
218 # will pull: 242 # will pull:
219 # linux-2.6.10.tar.bz2 & patch-2.6.11-rc3.bz2 & patch-2.6.11-rc3-git2.bz2 243 # linux-2.6.10.tar.bz2 & patch-2.6.11-rc3.bz2 & patch-2.6.11-rc3-git2.bz2
220 244
221 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then 245 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
222 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))" 246 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
223 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/testing/patch-${CKV//_/-}.bz2 247 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.bz2
224 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 248 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
225 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2" 249 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2"
226 fi 250 fi
227 251
228 if [[ ${RELEASETYPE} == -git ]]; then 252 if [[ ${RELEASETYPE} == -git ]]; then
229 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/snapshots/patch-${OKV}${RELEASE}.bz2 253 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.bz2
230 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 254 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
231 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2" 255 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2"
232 fi 256 fi
233 257
234 if [[ ${RELEASETYPE} == -rc-git ]]; then 258 if [[ ${RELEASETYPE} == -rc-git ]]; then
235 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))" 259 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
236 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2 260 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2
237 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 261 ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2
238 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 262 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
263
239 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2" 264 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2"
240 fi 265 fi
241 266
242 debug-print-kernel2-variables 267 debug-print-kernel2-variables
243 268
244 handle_genpatches 269 handle_genpatches
245} 270}
246 271
247kernel_is() { 272kernel_is() {
273 # ALL of these should be set before we can safely continue this function.
274 # some of the sources have in the past had only one set.
275 local v n=0
276 for v in OKV KV_{MAJOR,MINOR,PATCH} ; do [[ -z ${!v} ]] && n=1 ; done
248 [[ -z ${OKV} ]] && detect_version 277 [[ $n -eq 1 ]] && detect_version
278 unset v n
279
280 # Now we can continue
249 local operator test value x=0 y=0 z=0 281 local operator test value x=0 y=0 z=0
250 282
251 case ${1} in 283 case ${1} in
252 lt) operator="-lt"; shift;; 284 lt) operator="-lt"; shift;;
253 gt) operator="-gt"; shift;; 285 gt) operator="-gt"; shift;;
288if [[ ${ETYPE} == sources ]]; then 320if [[ ${ETYPE} == sources ]]; then
289 DEPEND="!build? ( sys-apps/sed 321 DEPEND="!build? ( sys-apps/sed
290 >=sys-devel/binutils-2.11.90.0.31 )" 322 >=sys-devel/binutils-2.11.90.0.31 )"
291 RDEPEND="!build? ( >=sys-libs/ncurses-5.2 323 RDEPEND="!build? ( >=sys-libs/ncurses-5.2
292 sys-devel/make )" 324 sys-devel/make )"
293 PDEPEND="virtual/dev-manager" 325 PDEPEND="!build? ( virtual/dev-manager )"
294 326
295 PROVIDE="virtual/linux-sources" 327 PROVIDE="virtual/linux-sources"
296 kernel_is gt 2 4 && PROVIDE="${PROVIDE} virtual/alsa"
297 328
298 SLOT="${PVR}" 329 SLOT="${PVR}"
299 DESCRIPTION="Sources for the ${KV_MAJOR}.${KV_MINOR} linux kernel" 330 DESCRIPTION="Sources for the ${KV_MAJOR}.${KV_MINOR} linux kernel"
300 IUSE="symlink build" 331 IUSE="symlink build"
332
333 # Bug #266157, deblob for libre support
334 if [[ -z ${K_PREDEBLOBBED} ]] ; then
335 if [[ -z ${K_DEBLOB_AVAILABLE} ]] ; then
336 kernel_is ge 2 6 27 && \
337 kernel_is le 2 6 ${DEBLOB_MAX_VERSION} && \
338 K_DEBLOB_AVAILABLE=1
339 fi
340 if [[ ${K_DEBLOB_AVAILABLE} == "1" ]] ; then
341 IUSE="${IUSE} deblob"
342 # Reflect that kernels contain firmware blobs unless otherwise
343 # stripped
344 LICENSE="${LICENSE} !deblob? ( freedist )"
345
346 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
347 DEBLOB_A="deblob-${DEBLOB_PV}"
348 DEBLOB_CHECK_A="deblob-check-${DEBLOB_PV}"
349 DEBLOB_HOMEPAGE="http://www.fsfla.org/svnwiki/selibre/linux-libre/"
350 DEBLOB_URI_PATH="download/releases/LATEST-${DEBLOB_PV}.N"
351 if ! has "${EAPI:-0}" 0 1 ; then
352 DEBLOB_CHECK_URI="${DEBLOB_HOMEPAGE}/${DEBLOB_URI_PATH}/deblob-check -> ${DEBLOB_CHECK_A}"
353 else
354 DEBLOB_CHECK_URI="mirror://gentoo/${DEBLOB_CHECK_A}"
355 fi
356 DEBLOB_URI="${DEBLOB_HOMEPAGE}/${DEBLOB_URI_PATH}/${DEBLOB_A}"
357 HOMEPAGE="${HOMEPAGE} ${DEBLOB_HOMEPAGE}"
358
359 KERNEL_URI="${KERNEL_URI}
360 deblob? (
361 ${DEBLOB_URI}
362 ${DEBLOB_CHECK_URI}
363 )"
364 else
365 # We have no way to deblob older kernels, so just mark them as
366 # tainted with non-libre materials.
367 LICENSE="${LICENSE} freedist"
368 fi
369 fi
370
301elif [[ ${ETYPE} == headers ]]; then 371elif [[ ${ETYPE} == headers ]]; then
302 DESCRIPTION="Linux system headers" 372 DESCRIPTION="Linux system headers"
303 373
304 # Since we should NOT honour KBUILD_OUTPUT in headers 374 # Since we should NOT honour KBUILD_OUTPUT in headers
305 # lets unset it here. 375 # lets unset it here.
375 || die "make include/linux/version.h failed" 445 || die "make include/linux/version.h failed"
376 rm -f .config >/dev/null 446 rm -f .config >/dev/null
377} 447}
378 448
379universal_unpack() { 449universal_unpack() {
380 cd ${WORKDIR} 450 cd "${WORKDIR}"
381 unpack linux-${OKV}.tar.bz2 451 unpack linux-${OKV}.tar.bz2
382 if [[ -d "linux" ]]; then 452 if [[ -d "linux" ]]; then
383 mv linux linux-${KV_FULL} \ 453 mv linux linux-${KV_FULL} \
384 || die "Unable to move source tree to ${KV_FULL}." 454 || die "Unable to move source tree to ${KV_FULL}."
385 elif [[ "${OKV}" != "${KV_FULL}" ]]; then 455 elif [[ "${OKV}" != "${KV_FULL}" ]]; then
489 559
490# install functions 560# install functions
491#============================================================== 561#==============================================================
492install_universal() { 562install_universal() {
493 #fix silly permissions in tarball 563 #fix silly permissions in tarball
494 cd ${WORKDIR} 564 cd "${WORKDIR}"
495 chown -R root:0 * >& /dev/null 565 chown -R root:0 * >& /dev/null
496 chmod -R a+r-w+X,u+w * 566 chmod -R a+r-w+X,u+w *
497 cd ${OLDPWD} 567 cd ${OLDPWD}
498} 568}
499 569
512 return 0 582 return 0
513 fi 583 fi
514 584
515 # Do not use "linux/*" as that can cause problems with very long 585 # Do not use "linux/*" as that can cause problems with very long
516 # $S values where the cmdline to cp is too long 586 # $S values where the cmdline to cp is too long
517 cd "${S}" 587 pushd "${S}" >/dev/null
518 dodir ${ddir}/linux 588 dodir ${ddir}/linux
519 cp -pPR "${S}"/include/linux "${D}"/${ddir}/ || die 589 cp -pPR "${S}"/include/linux "${D}"/${ddir}/ || die
520 rm -rf "${D}"/${ddir}/linux/modules 590 rm -rf "${D}"/${ddir}/linux/modules
521 591
522 # Handle multilib headers and crap
523 local multi_dirs="" multi_defs=""
524 case $(tc-arch-kernel) in
525 sparc64)
526 multi_dirs="sparc sparc64"
527 multi_defs="!__arch64__ __arch64__"
528 ;;
529 x86_64)
530 multi_dirs="i386 x86_64"
531 multi_defs="__i386__ __x86_64__"
532 ;;
533 ppc64)
534 multi_dirs="ppc ppc64"
535 multi_defs="!__powerpc64__ __powerpc64__"
536 ;;
537 s390x)
538 multi_dirs="s390 s390x"
539 multi_defs="!__s390x__ __s390x__"
540 ;;
541 arm)
542 dodir ${ddir}/asm 592 dodir ${ddir}/asm
543 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm 593 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm
544 [[ ! -e ${D}/${ddir}/asm/arch ]] && ln -sf arch-ebsa285 "${D}"/${ddir}/asm/arch
545 [[ ! -e ${D}/${ddir}/asm/proc ]] && ln -sf proc-armv "${D}"/${ddir}/asm/proc
546 ;;
547 powerpc)
548 dodir ${ddir}/asm
549 cp -pPR "${S}"/include/asm/* ${D}/${ddir}/asm
550 if [[ -e "${S}"/include/asm-ppc ]] ; then
551 dodir ${ddir}/asm-ppc
552 cp -pPR "${S}"/include/asm-ppc/* ${D}/${ddir}/asm-ppc
553 fi
554 ;;
555 *)
556 dodir ${ddir}/asm
557 cp -pPR "${S}"/include/asm/* ${D}/${ddir}/asm
558 ;;
559 esac
560 if [[ -n ${multi_dirs} ]] ; then
561 local d ml_inc=""
562 for d in ${multi_dirs} ; do
563 dodir ${ddir}/asm-${d}
564 cp -pPR "${S}"/include/asm-${d}/* ${D}/${ddir}/asm-${d}/ || die "cp asm-${d} failed"
565 594
566 ml_inc="${ml_inc} ${multi_defs%% *}:${ddir}/asm-${d}"
567 multi_defs=${multi_defs#* }
568 done
569 create_ml_includes ${ddir}/asm ${ml_inc}
570 fi
571
572 if kernel_is 2 6; then 595 if kernel_is 2 6 ; then
573 dodir ${ddir}/asm-generic 596 dodir ${ddir}/asm-generic
574 cp -pPR "${S}"/include/asm-generic/* ${D}/${ddir}/asm-generic 597 cp -pPR "${S}"/include/asm-generic/* "${D}"/${ddir}/asm-generic
575 fi 598 fi
576 599
577 # clean up 600 # clean up
578 find "${D}" -name '*.orig' -exec rm -f {} \; 601 find "${D}" -name '*.orig' -exec rm -f {} \;
579 602
580 cd ${OLDPWD} 603 popd >/dev/null
581} 604}
582 605
583install_sources() { 606install_sources() {
584 local file 607 local file
585 608
603 [[ -f ${FILESDIR}/../ChangeLog ]] && \ 626 [[ -f ${FILESDIR}/../ChangeLog ]] && \
604 echo "Please check the ebuild ChangeLog for more details." \ 627 echo "Please check the ebuild ChangeLog for more details." \
605 > "${S}"/patches.txt 628 > "${S}"/patches.txt
606 fi 629 fi
607 630
608 mv ${WORKDIR}/linux* ${D}/usr/src 631 mv ${WORKDIR}/linux* "${D}"/usr/src
609} 632}
610 633
611# pkg_preinst functions 634# pkg_preinst functions
612#============================================================== 635#==============================================================
613preinst_headers() { 636preinst_headers() {
622 local MAKELINK=0 645 local MAKELINK=0
623 646
624 # if we have USE=symlink, then force K_SYMLINK=1 647 # if we have USE=symlink, then force K_SYMLINK=1
625 use symlink && K_SYMLINK=1 648 use symlink && K_SYMLINK=1
626 649
650 # if we're using a deblobbed kernel, it's not supported
651 [[ $K_DEBLOB_AVAILABLE == 1 ]] && \
652 use deblob && \
653 K_SECURITY_UNSUPPORTED=deblob
654
627 # if we are to forcably symlink, delete it if it already exists first. 655 # if we are to forcably symlink, delete it if it already exists first.
628 if [[ ${K_SYMLINK} > 0 ]]; then 656 if [[ ${K_SYMLINK} > 0 ]]; then
629 [[ -h ${ROOT}usr/src/linux ]] && rm ${ROOT}usr/src/linux 657 [[ -h ${ROOT}usr/src/linux ]] && rm ${ROOT}usr/src/linux
630 MAKELINK=1 658 MAKELINK=1
631 fi 659 fi
632 660
633 # if the link doesnt exist, lets create it 661 # if the link doesnt exist, lets create it
634 [[ ! -h ${ROOT}usr/src/linux ]] && MAKELINK=1 662 [[ ! -h ${ROOT}usr/src/linux ]] && MAKELINK=1
635 663
636 if [[ ${MAKELINK} == 1 ]]; then 664 if [[ ${MAKELINK} == 1 ]]; then
637 cd ${ROOT}usr/src 665 cd "${ROOT}"usr/src
638 ln -sf linux-${KV_FULL} linux 666 ln -sf linux-${KV_FULL} linux
639 cd ${OLDPWD} 667 cd ${OLDPWD}
640 fi 668 fi
641 669
642 # Don't forget to make directory for sysfs 670 # Don't forget to make directory for sysfs
665 echo ${K_EXTRAEWARN} | fmt | 693 echo ${K_EXTRAEWARN} | fmt |
666 while read -s ELINE; do ewarn "${ELINE}"; done 694 while read -s ELINE; do ewarn "${ELINE}"; done
667 fi 695 fi
668 696
669 # optionally display security unsupported message 697 # optionally display security unsupported message
698 # Start with why
699 if [[ ${K_SECURITY_UNSUPPORTED} = deblob ]]; then
700 ewarn "Deblobbed kernels are UNSUPPORTED by Gentoo Security."
701 elif [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
702 ewarn "${PN} is UNSUPPORTED by Gentoo Security."
703 fi
704 # And now the general message.
670 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then 705 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
671 echo
672 ewarn "${PN} is UNSUPPORTED by Gentoo Security."
673 ewarn "This means that it is likely to be vulnerable to recent security issues." 706 ewarn "This means that it is likely to be vulnerable to recent security issues."
674 ewarn "For specific information on why this kernel is unsupported, please read:" 707 ewarn "For specific information on why this kernel is unsupported, please read:"
675 ewarn "http://www.gentoo.org/proj/en/security/kernel.xml" 708 ewarn "http://www.gentoo.org/proj/en/security/kernel.xml"
676 fi 709 fi
677 710
692 elog "https://bugs.gentoo.org/show_bug.cgi?id=214765" 725 elog "https://bugs.gentoo.org/show_bug.cgi?id=214765"
693 echo 726 echo
694 fi 727 fi
695} 728}
696 729
697postinst_headers() {
698 elog "Kernel headers are usually only used when recompiling your system libc, as"
699 elog "such, following the installation of newer headers, it is advised that you"
700 elog "re-merge your system libc."
701 elog "Failure to do so will cause your system libc to not make use of newer"
702 elog "features present in the updated kernel headers."
703}
704
705# pkg_setup functions 730# pkg_setup functions
706#============================================================== 731#==============================================================
707setup_headers() { 732setup_headers() {
708 [[ -z ${H_SUPPORTEDARCH} ]] && H_SUPPORTEDARCH=${PN/-*/} 733 [[ -z ${H_SUPPORTEDARCH} ]] && H_SUPPORTEDARCH=${PN/-*/}
709 for i in ${H_SUPPORTEDARCH}; do 734 for i in ${H_SUPPORTEDARCH}; do
721 746
722# unipatch 747# unipatch
723#============================================================== 748#==============================================================
724unipatch() { 749unipatch() {
725 local i x y z extention PIPE_CMD UNIPATCH_DROP KPATCH_DIR PATCH_DEPTH ELINE 750 local i x y z extention PIPE_CMD UNIPATCH_DROP KPATCH_DIR PATCH_DEPTH ELINE
726 local STRICT_COUNT PATCH_LEVEL myLC_ALL myLANG extglob_bak 751 local STRICT_COUNT PATCH_LEVEL myLC_ALL myLANG
727 752
728 # set to a standard locale to ensure sorts are ordered properly. 753 # set to a standard locale to ensure sorts are ordered properly.
729 myLC_ALL="${LC_ALL}" 754 myLC_ALL="${LC_ALL}"
730 myLANG="${LANG}" 755 myLANG="${LANG}"
731 LC_ALL="C" 756 LC_ALL="C"
733 758
734 [ -z "${KPATCH_DIR}" ] && KPATCH_DIR="${WORKDIR}/patches/" 759 [ -z "${KPATCH_DIR}" ] && KPATCH_DIR="${WORKDIR}/patches/"
735 [ ! -d ${KPATCH_DIR} ] && mkdir -p ${KPATCH_DIR} 760 [ ! -d ${KPATCH_DIR} ] && mkdir -p ${KPATCH_DIR}
736 761
737 # We're gonna need it when doing patches with a predefined patchlevel 762 # We're gonna need it when doing patches with a predefined patchlevel
738 extglob_bak=$(shopt -p extglob)
739 shopt -s extglob 763 eshopts_push -s extglob
740 764
741 # This function will unpack all passed tarballs, add any passed patches, and remove any passed patchnumbers 765 # This function will unpack all passed tarballs, add any passed patches, and remove any passed patchnumbers
742 # usage can be either via an env var or by params 766 # usage can be either via an env var or by params
743 # although due to the nature we pass this within this eclass 767 # although due to the nature we pass this within this eclass
744 # it shall be by param only. 768 # it shall be by param only.
770 else 794 else
771 extention=${i/*./} 795 extention=${i/*./}
772 extention=${extention/:*/} 796 extention=${extention/:*/}
773 PIPE_CMD="" 797 PIPE_CMD=""
774 case ${extention} in 798 case ${extention} in
799 xz) PIPE_CMD="xz -dc";;
800 lzma) PIPE_CMD="lzma -dc";;
775 bz2) PIPE_CMD="bzip2 -dc";; 801 bz2) PIPE_CMD="bzip2 -dc";;
776 patch) PIPE_CMD="cat";; 802 patch) PIPE_CMD="cat";;
777 diff) PIPE_CMD="cat";; 803 diff) PIPE_CMD="cat";;
778 gz|Z|z) PIPE_CMD="gzip -dc";; 804 gz|Z|z) PIPE_CMD="gzip -dc";;
779 ZIP|zip) PIPE_CMD="unzip -p";; 805 ZIP|zip) PIPE_CMD="unzip -p";;
802 do z="${z}0"; 828 do z="${z}0";
803 done 829 done
804 PATCH_ORDER="${z}${STRICT_COUNT}" 830 PATCH_ORDER="${z}${STRICT_COUNT}"
805 831
806 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/ 832 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/
807 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL}) 833 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
808 else 834 else
809 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) 835 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
810 fi 836 fi
811 fi 837 fi
812 fi 838 fi
813 done 839 done
814 840
866 break 892 break
867 else 893 else
868 eend 1 894 eend 1
869 eerror "Failed to apply patch ${i/*\//}" 895 eerror "Failed to apply patch ${i/*\//}"
870 eerror "Please attach ${STDERR_T} to any bug you may post." 896 eerror "Please attach ${STDERR_T} to any bug you may post."
897 eshopts_pop
871 die "Failed to apply ${i/*\//}" 898 die "Failed to apply ${i/*\//}"
872 fi 899 fi
873 else 900 else
874 PATCH_DEPTH=$((${PATCH_DEPTH} + 1)) 901 PATCH_DEPTH=$((${PATCH_DEPTH} + 1))
875 fi 902 fi
876 done 903 done
877 if [ ${PATCH_DEPTH} -eq 5 ]; then 904 if [ ${PATCH_DEPTH} -eq 5 ]; then
878 eend 1 905 eend 1
879 eerror "Please attach ${STDERR_T} to any bug you may post." 906 eerror "Please attach ${STDERR_T} to any bug you may post."
907 eshopts_pop
880 die "Unable to dry-run patch." 908 die "Unable to dry-run patch."
881 fi 909 fi
882 done 910 done
883 done 911 done
884 912
886 # sit in KPATCH_DIR's. This is handled properly in the unipatch rewrite, 914 # sit in KPATCH_DIR's. This is handled properly in the unipatch rewrite,
887 # which is why I'm not taking too much time over this. 915 # which is why I'm not taking too much time over this.
888 local tmp 916 local tmp
889 for i in ${UNIPATCH_DOCS}; do 917 for i in ${UNIPATCH_DOCS}; do
890 tmp="${tmp} ${i//*\/}" 918 tmp="${tmp} ${i//*\/}"
891 cp -f ${i} ${T}/ 919 cp -f ${i} "${T}"/
892 done 920 done
893 UNIPATCH_DOCS="${tmp}" 921 UNIPATCH_DOCS="${tmp}"
894 922
895 # clean up KPATCH_DIR's - fixes bug #53610 923 # clean up KPATCH_DIR's - fixes bug #53610
896 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done 924 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done
897 925
898 LC_ALL="${myLC_ALL}" 926 LC_ALL="${myLC_ALL}"
899 LANG="${myLANG}" 927 LANG="${myLANG}"
900 eval ${extglob_bak} 928 eshopts_pop
901} 929}
902 930
903# getfilevar accepts 2 vars as follows: 931# getfilevar accepts 2 vars as follows:
904# getfilevar <VARIABLE> <CONFIGFILE> 932# getfilevar <VARIABLE> <CONFIGFILE>
905# pulled from linux-info 933# pulled from linux-info
1042 1070
1043 # allow ebuilds to massage the source tree after patching but before 1071 # allow ebuilds to massage the source tree after patching but before
1044 # we run misc `make` functions below 1072 # we run misc `make` functions below
1045 [[ $(type -t kernel-2_hook_premake) == "function" ]] && kernel-2_hook_premake 1073 [[ $(type -t kernel-2_hook_premake) == "function" ]] && kernel-2_hook_premake
1046 1074
1075 debug-print "Doing epatch_user"
1076 epatch_user
1077
1047 debug-print "Doing unpack_set_extraversion" 1078 debug-print "Doing unpack_set_extraversion"
1048 1079
1049 [[ -z ${K_NOSETEXTRAVERSION} ]] && unpack_set_extraversion 1080 [[ -z ${K_NOSETEXTRAVERSION} ]] && unpack_set_extraversion
1050 unpack_fix_install_path 1081 unpack_fix_install_path
1051 1082
1059 # unpack_2_6 should now be 2.6.17 safe anyways 1090 # unpack_2_6 should now be 2.6.17 safe anyways
1060 if [[ ${ETYPE} == headers ]]; then 1091 if [[ ${ETYPE} == headers ]]; then
1061 kernel_is 2 4 && unpack_2_4 1092 kernel_is 2 4 && unpack_2_4
1062 kernel_is 2 6 && unpack_2_6 1093 kernel_is 2 6 && unpack_2_6
1063 fi 1094 fi
1095
1096 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1097 cp "${DISTDIR}/${DEBLOB_A}" "${T}" || die "cp ${DEBLOB_A} failed"
1098 cp "${DISTDIR}/${DEBLOB_CHECK_A}" "${T}/deblob-check" || die "cp ${DEBLOB_CHECK_A} failed"
1099 chmod +x "${T}/${DEBLOB_A}" "${T}/deblob-check" || die "chmod deblob scripts failed"
1100 fi
1064} 1101}
1065 1102
1066kernel-2_src_compile() { 1103kernel-2_src_compile() {
1067 cd "${S}" 1104 cd "${S}"
1068 [[ ${ETYPE} == headers ]] && compile_headers 1105 [[ ${ETYPE} == headers ]] && compile_headers
1106
1107 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1108 echo ">>> Running deblob script ..."
1109 sh "${T}/${DEBLOB_A}" --force || \
1110 die "Deblob script failed to run!!!"
1111 fi
1069} 1112}
1113
1114# if you leave it to the default src_test, it will run make to
1115# find whether test/check targets are present; since "make test"
1116# actually produces a few support files, they are installed even
1117# though the package is binchecks-restricted.
1118#
1119# Avoid this altogether by making the function moot.
1120kernel-2_src_test() { :; }
1070 1121
1071kernel-2_pkg_preinst() { 1122kernel-2_pkg_preinst() {
1072 [[ ${ETYPE} == headers ]] && preinst_headers 1123 [[ ${ETYPE} == headers ]] && preinst_headers
1073} 1124}
1074 1125
1077 [[ ${ETYPE} == headers ]] && install_headers 1128 [[ ${ETYPE} == headers ]] && install_headers
1078 [[ ${ETYPE} == sources ]] && install_sources 1129 [[ ${ETYPE} == sources ]] && install_sources
1079} 1130}
1080 1131
1081kernel-2_pkg_postinst() { 1132kernel-2_pkg_postinst() {
1082 [[ ${ETYPE} == headers ]] && postinst_headers
1083 [[ ${ETYPE} == sources ]] && postinst_sources 1133 [[ ${ETYPE} == sources ]] && postinst_sources
1084} 1134}
1085 1135
1086kernel-2_pkg_setup() { 1136kernel-2_pkg_setup() {
1087 if kernel_is 2 4; then 1137 if kernel_is 2 4; then

Legend:
Removed from v.1.221  
changed lines
  Added in v.1.247

  ViewVC Help
Powered by ViewVC 1.1.20