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

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

  ViewVC Help
Powered by ViewVC 1.1.20