/[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.250
1# Copyright 1999-2009 Gentoo Foundation 1# Copyright 1999-2011 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.250 2011/04/21 12:34:39 mpagano 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=38
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() {
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/[-_]*}
156 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
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;;
287# Capture the sources type and set DEPENDs 319# Capture the sources type and set DEPENDs
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 # Bug #359865, force a call to detect_version if needed
336 kernel_is ge 2 6 27 && \
337 [[ -z "${K_DEBLOB_AVAILABLE}" ]] && \
338 kernel_is le 2 6 ${DEBLOB_MAX_VERSION} && \
339 K_DEBLOB_AVAILABLE=1
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.
306 unset KBUILD_OUTPUT 376 unset KBUILD_OUTPUT
307 377
308 if [[ ${CTARGET} = ${CHOST} ]]; then 378 if [[ ${CTARGET} = ${CHOST} ]]; then
309 DEPEND="!virtual/os-headers"
310 PROVIDE="virtual/os-headers"
311 SLOT="0" 379 SLOT="0"
312 else 380 else
313 SLOT="${CTARGET}" 381 SLOT="${CTARGET}"
314 fi 382 fi
315else 383else
375 || die "make include/linux/version.h failed" 443 || die "make include/linux/version.h failed"
376 rm -f .config >/dev/null 444 rm -f .config >/dev/null
377} 445}
378 446
379universal_unpack() { 447universal_unpack() {
380 cd ${WORKDIR} 448 cd "${WORKDIR}"
381 unpack linux-${OKV}.tar.bz2 449 unpack linux-${OKV}.tar.bz2
382 if [[ -d "linux" ]]; then 450 if [[ -d "linux" ]]; then
383 mv linux linux-${KV_FULL} \ 451 mv linux linux-${KV_FULL} \
384 || die "Unable to move source tree to ${KV_FULL}." 452 || die "Unable to move source tree to ${KV_FULL}."
385 elif [[ "${OKV}" != "${KV_FULL}" ]]; then 453 elif [[ "${OKV}" != "${KV_FULL}" ]]; then
489 557
490# install functions 558# install functions
491#============================================================== 559#==============================================================
492install_universal() { 560install_universal() {
493 #fix silly permissions in tarball 561 #fix silly permissions in tarball
494 cd ${WORKDIR} 562 cd "${WORKDIR}"
495 chown -R root:0 * >& /dev/null 563 chown -R root:0 * >& /dev/null
496 chmod -R a+r-w+X,u+w * 564 chmod -R a+r-w+X,u+w *
497 cd ${OLDPWD} 565 cd ${OLDPWD}
498} 566}
499 567
512 return 0 580 return 0
513 fi 581 fi
514 582
515 # Do not use "linux/*" as that can cause problems with very long 583 # Do not use "linux/*" as that can cause problems with very long
516 # $S values where the cmdline to cp is too long 584 # $S values where the cmdline to cp is too long
517 cd "${S}" 585 pushd "${S}" >/dev/null
518 dodir ${ddir}/linux 586 dodir ${ddir}/linux
519 cp -pPR "${S}"/include/linux "${D}"/${ddir}/ || die 587 cp -pPR "${S}"/include/linux "${D}"/${ddir}/ || die
520 rm -rf "${D}"/${ddir}/linux/modules 588 rm -rf "${D}"/${ddir}/linux/modules
521 589
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 590 dodir ${ddir}/asm
543 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm 591 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 592
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 593 if kernel_is 2 6 ; then
573 dodir ${ddir}/asm-generic 594 dodir ${ddir}/asm-generic
574 cp -pPR "${S}"/include/asm-generic/* ${D}/${ddir}/asm-generic 595 cp -pPR "${S}"/include/asm-generic/* "${D}"/${ddir}/asm-generic
575 fi 596 fi
576 597
577 # clean up 598 # clean up
578 find "${D}" -name '*.orig' -exec rm -f {} \; 599 find "${D}" -name '*.orig' -exec rm -f {} \;
579 600
580 cd ${OLDPWD} 601 popd >/dev/null
581} 602}
582 603
583install_sources() { 604install_sources() {
584 local file 605 local file
585 606
603 [[ -f ${FILESDIR}/../ChangeLog ]] && \ 624 [[ -f ${FILESDIR}/../ChangeLog ]] && \
604 echo "Please check the ebuild ChangeLog for more details." \ 625 echo "Please check the ebuild ChangeLog for more details." \
605 > "${S}"/patches.txt 626 > "${S}"/patches.txt
606 fi 627 fi
607 628
608 mv ${WORKDIR}/linux* ${D}/usr/src 629 mv ${WORKDIR}/linux* "${D}"/usr/src
609} 630}
610 631
611# pkg_preinst functions 632# pkg_preinst functions
612#============================================================== 633#==============================================================
613preinst_headers() { 634preinst_headers() {
622 local MAKELINK=0 643 local MAKELINK=0
623 644
624 # if we have USE=symlink, then force K_SYMLINK=1 645 # if we have USE=symlink, then force K_SYMLINK=1
625 use symlink && K_SYMLINK=1 646 use symlink && K_SYMLINK=1
626 647
648 # if we're using a deblobbed kernel, it's not supported
649 [[ $K_DEBLOB_AVAILABLE == 1 ]] && \
650 use deblob && \
651 K_SECURITY_UNSUPPORTED=deblob
652
627 # if we are to forcably symlink, delete it if it already exists first. 653 # if we are to forcably symlink, delete it if it already exists first.
628 if [[ ${K_SYMLINK} > 0 ]]; then 654 if [[ ${K_SYMLINK} > 0 ]]; then
629 [[ -h ${ROOT}usr/src/linux ]] && rm ${ROOT}usr/src/linux 655 [[ -h ${ROOT}usr/src/linux ]] && rm ${ROOT}usr/src/linux
630 MAKELINK=1 656 MAKELINK=1
631 fi 657 fi
632 658
633 # if the link doesnt exist, lets create it 659 # if the link doesnt exist, lets create it
634 [[ ! -h ${ROOT}usr/src/linux ]] && MAKELINK=1 660 [[ ! -h ${ROOT}usr/src/linux ]] && MAKELINK=1
635 661
636 if [[ ${MAKELINK} == 1 ]]; then 662 if [[ ${MAKELINK} == 1 ]]; then
637 cd ${ROOT}usr/src 663 cd "${ROOT}"usr/src
638 ln -sf linux-${KV_FULL} linux 664 ln -sf linux-${KV_FULL} linux
639 cd ${OLDPWD} 665 cd ${OLDPWD}
640 fi 666 fi
641 667
642 # Don't forget to make directory for sysfs 668 # Don't forget to make directory for sysfs
665 echo ${K_EXTRAEWARN} | fmt | 691 echo ${K_EXTRAEWARN} | fmt |
666 while read -s ELINE; do ewarn "${ELINE}"; done 692 while read -s ELINE; do ewarn "${ELINE}"; done
667 fi 693 fi
668 694
669 # optionally display security unsupported message 695 # optionally display security unsupported message
696 # Start with why
697 if [[ ${K_SECURITY_UNSUPPORTED} = deblob ]]; then
698 ewarn "Deblobbed kernels are UNSUPPORTED by Gentoo Security."
699 elif [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
700 ewarn "${PN} is UNSUPPORTED by Gentoo Security."
701 fi
702 # And now the general message.
670 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then 703 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." 704 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:" 705 ewarn "For specific information on why this kernel is unsupported, please read:"
675 ewarn "http://www.gentoo.org/proj/en/security/kernel.xml" 706 ewarn "http://www.gentoo.org/proj/en/security/kernel.xml"
676 fi 707 fi
677 708
692 elog "https://bugs.gentoo.org/show_bug.cgi?id=214765" 723 elog "https://bugs.gentoo.org/show_bug.cgi?id=214765"
693 echo 724 echo
694 fi 725 fi
695} 726}
696 727
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 728# pkg_setup functions
706#============================================================== 729#==============================================================
707setup_headers() { 730setup_headers() {
708 [[ -z ${H_SUPPORTEDARCH} ]] && H_SUPPORTEDARCH=${PN/-*/} 731 [[ -z ${H_SUPPORTEDARCH} ]] && H_SUPPORTEDARCH=${PN/-*/}
709 for i in ${H_SUPPORTEDARCH}; do 732 for i in ${H_SUPPORTEDARCH}; do
721 744
722# unipatch 745# unipatch
723#============================================================== 746#==============================================================
724unipatch() { 747unipatch() {
725 local i x y z extention PIPE_CMD UNIPATCH_DROP KPATCH_DIR PATCH_DEPTH ELINE 748 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 749 local STRICT_COUNT PATCH_LEVEL myLC_ALL myLANG
727 750
728 # set to a standard locale to ensure sorts are ordered properly. 751 # set to a standard locale to ensure sorts are ordered properly.
729 myLC_ALL="${LC_ALL}" 752 myLC_ALL="${LC_ALL}"
730 myLANG="${LANG}" 753 myLANG="${LANG}"
731 LC_ALL="C" 754 LC_ALL="C"
733 756
734 [ -z "${KPATCH_DIR}" ] && KPATCH_DIR="${WORKDIR}/patches/" 757 [ -z "${KPATCH_DIR}" ] && KPATCH_DIR="${WORKDIR}/patches/"
735 [ ! -d ${KPATCH_DIR} ] && mkdir -p ${KPATCH_DIR} 758 [ ! -d ${KPATCH_DIR} ] && mkdir -p ${KPATCH_DIR}
736 759
737 # We're gonna need it when doing patches with a predefined patchlevel 760 # We're gonna need it when doing patches with a predefined patchlevel
738 extglob_bak=$(shopt -p extglob)
739 shopt -s extglob 761 eshopts_push -s extglob
740 762
741 # This function will unpack all passed tarballs, add any passed patches, and remove any passed patchnumbers 763 # 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 764 # usage can be either via an env var or by params
743 # although due to the nature we pass this within this eclass 765 # although due to the nature we pass this within this eclass
744 # it shall be by param only. 766 # it shall be by param only.
770 else 792 else
771 extention=${i/*./} 793 extention=${i/*./}
772 extention=${extention/:*/} 794 extention=${extention/:*/}
773 PIPE_CMD="" 795 PIPE_CMD=""
774 case ${extention} in 796 case ${extention} in
797 xz) PIPE_CMD="xz -dc";;
798 lzma) PIPE_CMD="lzma -dc";;
775 bz2) PIPE_CMD="bzip2 -dc";; 799 bz2) PIPE_CMD="bzip2 -dc";;
776 patch) PIPE_CMD="cat";; 800 patch) PIPE_CMD="cat";;
777 diff) PIPE_CMD="cat";; 801 diff) PIPE_CMD="cat";;
778 gz|Z|z) PIPE_CMD="gzip -dc";; 802 gz|Z|z) PIPE_CMD="gzip -dc";;
779 ZIP|zip) PIPE_CMD="unzip -p";; 803 ZIP|zip) PIPE_CMD="unzip -p";;
802 do z="${z}0"; 826 do z="${z}0";
803 done 827 done
804 PATCH_ORDER="${z}${STRICT_COUNT}" 828 PATCH_ORDER="${z}${STRICT_COUNT}"
805 829
806 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/ 830 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/
807 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL}) 831 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
808 else 832 else
809 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) 833 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
810 fi 834 fi
811 fi 835 fi
812 fi 836 fi
813 done 837 done
814 838
866 break 890 break
867 else 891 else
868 eend 1 892 eend 1
869 eerror "Failed to apply patch ${i/*\//}" 893 eerror "Failed to apply patch ${i/*\//}"
870 eerror "Please attach ${STDERR_T} to any bug you may post." 894 eerror "Please attach ${STDERR_T} to any bug you may post."
895 eshopts_pop
871 die "Failed to apply ${i/*\//}" 896 die "Failed to apply ${i/*\//}"
872 fi 897 fi
873 else 898 else
874 PATCH_DEPTH=$((${PATCH_DEPTH} + 1)) 899 PATCH_DEPTH=$((${PATCH_DEPTH} + 1))
875 fi 900 fi
876 done 901 done
877 if [ ${PATCH_DEPTH} -eq 5 ]; then 902 if [ ${PATCH_DEPTH} -eq 5 ]; then
878 eend 1 903 eend 1
879 eerror "Please attach ${STDERR_T} to any bug you may post." 904 eerror "Please attach ${STDERR_T} to any bug you may post."
905 eshopts_pop
880 die "Unable to dry-run patch." 906 die "Unable to dry-run patch."
881 fi 907 fi
882 done 908 done
883 done 909 done
884 910
886 # sit in KPATCH_DIR's. This is handled properly in the unipatch rewrite, 912 # 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. 913 # which is why I'm not taking too much time over this.
888 local tmp 914 local tmp
889 for i in ${UNIPATCH_DOCS}; do 915 for i in ${UNIPATCH_DOCS}; do
890 tmp="${tmp} ${i//*\/}" 916 tmp="${tmp} ${i//*\/}"
891 cp -f ${i} ${T}/ 917 cp -f ${i} "${T}"/
892 done 918 done
893 UNIPATCH_DOCS="${tmp}" 919 UNIPATCH_DOCS="${tmp}"
894 920
895 # clean up KPATCH_DIR's - fixes bug #53610 921 # clean up KPATCH_DIR's - fixes bug #53610
896 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done 922 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done
897 923
898 LC_ALL="${myLC_ALL}" 924 LC_ALL="${myLC_ALL}"
899 LANG="${myLANG}" 925 LANG="${myLANG}"
900 eval ${extglob_bak} 926 eshopts_pop
901} 927}
902 928
903# getfilevar accepts 2 vars as follows: 929# getfilevar accepts 2 vars as follows:
904# getfilevar <VARIABLE> <CONFIGFILE> 930# getfilevar <VARIABLE> <CONFIGFILE>
905# pulled from linux-info 931# pulled from linux-info
1042 1068
1043 # allow ebuilds to massage the source tree after patching but before 1069 # allow ebuilds to massage the source tree after patching but before
1044 # we run misc `make` functions below 1070 # we run misc `make` functions below
1045 [[ $(type -t kernel-2_hook_premake) == "function" ]] && kernel-2_hook_premake 1071 [[ $(type -t kernel-2_hook_premake) == "function" ]] && kernel-2_hook_premake
1046 1072
1073 debug-print "Doing epatch_user"
1074 epatch_user
1075
1047 debug-print "Doing unpack_set_extraversion" 1076 debug-print "Doing unpack_set_extraversion"
1048 1077
1049 [[ -z ${K_NOSETEXTRAVERSION} ]] && unpack_set_extraversion 1078 [[ -z ${K_NOSETEXTRAVERSION} ]] && unpack_set_extraversion
1050 unpack_fix_install_path 1079 unpack_fix_install_path
1051 1080
1059 # unpack_2_6 should now be 2.6.17 safe anyways 1088 # unpack_2_6 should now be 2.6.17 safe anyways
1060 if [[ ${ETYPE} == headers ]]; then 1089 if [[ ${ETYPE} == headers ]]; then
1061 kernel_is 2 4 && unpack_2_4 1090 kernel_is 2 4 && unpack_2_4
1062 kernel_is 2 6 && unpack_2_6 1091 kernel_is 2 6 && unpack_2_6
1063 fi 1092 fi
1093
1094 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1095 cp "${DISTDIR}/${DEBLOB_A}" "${T}" || die "cp ${DEBLOB_A} failed"
1096 cp "${DISTDIR}/${DEBLOB_CHECK_A}" "${T}/deblob-check" || die "cp ${DEBLOB_CHECK_A} failed"
1097 chmod +x "${T}/${DEBLOB_A}" "${T}/deblob-check" || die "chmod deblob scripts failed"
1098 fi
1064} 1099}
1065 1100
1066kernel-2_src_compile() { 1101kernel-2_src_compile() {
1067 cd "${S}" 1102 cd "${S}"
1068 [[ ${ETYPE} == headers ]] && compile_headers 1103 [[ ${ETYPE} == headers ]] && compile_headers
1104
1105 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1106 echo ">>> Running deblob script ..."
1107 sh "${T}/${DEBLOB_A}" --force || \
1108 die "Deblob script failed to run!!!"
1109 fi
1069} 1110}
1111
1112# if you leave it to the default src_test, it will run make to
1113# find whether test/check targets are present; since "make test"
1114# actually produces a few support files, they are installed even
1115# though the package is binchecks-restricted.
1116#
1117# Avoid this altogether by making the function moot.
1118kernel-2_src_test() { :; }
1070 1119
1071kernel-2_pkg_preinst() { 1120kernel-2_pkg_preinst() {
1072 [[ ${ETYPE} == headers ]] && preinst_headers 1121 [[ ${ETYPE} == headers ]] && preinst_headers
1073} 1122}
1074 1123
1077 [[ ${ETYPE} == headers ]] && install_headers 1126 [[ ${ETYPE} == headers ]] && install_headers
1078 [[ ${ETYPE} == sources ]] && install_sources 1127 [[ ${ETYPE} == sources ]] && install_sources
1079} 1128}
1080 1129
1081kernel-2_pkg_postinst() { 1130kernel-2_pkg_postinst() {
1082 [[ ${ETYPE} == headers ]] && postinst_headers
1083 [[ ${ETYPE} == sources ]] && postinst_sources 1131 [[ ${ETYPE} == sources ]] && postinst_sources
1084} 1132}
1085 1133
1086kernel-2_pkg_setup() { 1134kernel-2_pkg_setup() {
1087 if kernel_is 2 4; then 1135 if kernel_is 2 4; then

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

  ViewVC Help
Powered by ViewVC 1.1.20