/[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.231
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.231 2010/04/26 08:05:10 robbat2 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# 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.
48 55
49# H_SUPPORTEDARCH - this should be a space separated list of ARCH's which 56# H_SUPPORTEDARCH - this should be a space separated list of ARCH's which
50# can be supported by the headers ebuild 57# can be supported by the headers ebuild
51 58
52# UNIPATCH_LIST - space delimetered list of patches to be applied to the 59# UNIPATCH_LIST - space delimetered list of patches to be applied to the
72if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then 79if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then
73 export CTARGET=${CATEGORY/cross-} 80 export CTARGET=${CATEGORY/cross-}
74fi 81fi
75 82
76HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}" 83HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}"
84[[ -z ${LICENSE} ]] && \
77LICENSE="GPL-2" 85 LICENSE="GPL-2"
86
87# This is the latest KV_PATCH of the deblob tool available from the
88# libre-sources upstream.
89[[ -z ${DEBLOB_MAX_VERSION} ]] && DEBLOB_MAX_VERSION=33
78 90
79# No need to run scanelf/strip on kernel sources/headers (bug #134453). 91# No need to run scanelf/strip on kernel sources/headers (bug #134453).
80RESTRICT="binchecks strip" 92RESTRICT="binchecks strip"
81 93
82# set LINUX_HOSTCFLAGS if not already set 94# set LINUX_HOSTCFLAGS if not already set
87#============================================================== 99#==============================================================
88# this function exists only to help debug kernel-2.eclass 100# this function exists only to help debug kernel-2.eclass
89# if you are adding new functionality in, put a call to it 101# 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. 102# at the start of src_unpack, or during SRC_URI/dep generation.
91debug-print-kernel2-variables() { 103debug-print-kernel2-variables() {
92 debug-print "PVR: ${PVR}" 104 for v in PVR CKV OKV KV KV_FULL KV_MAJOR KV_MINOR KV_PATCH RELEASETYPE \
93 debug-print "CKV: ${CKV}" 105 RELEASE UNIPATCH_LIST_DEFAULT UNIPATCH_LIST_GENPATCHES \
94 debug-print "OKV: ${OKV}" 106 UNIPATCH_LIST S KERNEL_URI ; do
95 debug-print "KV: ${KV}" 107 debug-print "${v}: ${!v}"
96 debug-print "KV_FULL: ${KV_FULL}" 108 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} 109}
105 110
106#Eclass functions only from here onwards ... 111#Eclass functions only from here onwards ...
107#============================================================== 112#==============================================================
108handle_genpatches() { 113handle_genpatches() {
243 248
244 handle_genpatches 249 handle_genpatches
245} 250}
246 251
247kernel_is() { 252kernel_is() {
253 # ALL of these should be set before we can safely continue this function.
254 # some of the sources have in the past had only one set.
255 local v n=0
256 for v in OKV KV_{MAJOR,MINOR,PATCH} ; do [[ -z ${!v} ]] && n=1 ; done
248 [[ -z ${OKV} ]] && detect_version 257 [[ $n -eq 1 ]] && detect_version
258 unset v n
259
260 # Now we can continue
249 local operator test value x=0 y=0 z=0 261 local operator test value x=0 y=0 z=0
250 262
251 case ${1} in 263 case ${1} in
252 lt) operator="-lt"; shift;; 264 lt) operator="-lt"; shift;;
253 gt) operator="-gt"; shift;; 265 gt) operator="-gt"; shift;;
288if [[ ${ETYPE} == sources ]]; then 300if [[ ${ETYPE} == sources ]]; then
289 DEPEND="!build? ( sys-apps/sed 301 DEPEND="!build? ( sys-apps/sed
290 >=sys-devel/binutils-2.11.90.0.31 )" 302 >=sys-devel/binutils-2.11.90.0.31 )"
291 RDEPEND="!build? ( >=sys-libs/ncurses-5.2 303 RDEPEND="!build? ( >=sys-libs/ncurses-5.2
292 sys-devel/make )" 304 sys-devel/make )"
293 PDEPEND="virtual/dev-manager" 305 PDEPEND="!build? ( virtual/dev-manager )"
294 306
295 PROVIDE="virtual/linux-sources" 307 PROVIDE="virtual/linux-sources"
296 kernel_is gt 2 4 && PROVIDE="${PROVIDE} virtual/alsa" 308 kernel_is gt 2 4 && PROVIDE="${PROVIDE} virtual/alsa"
297 309
298 SLOT="${PVR}" 310 SLOT="${PVR}"
299 DESCRIPTION="Sources for the ${KV_MAJOR}.${KV_MINOR} linux kernel" 311 DESCRIPTION="Sources for the ${KV_MAJOR}.${KV_MINOR} linux kernel"
300 IUSE="symlink build" 312 IUSE="symlink build"
313
314 # Bug #266157, deblob for libre support
315 if [[ -z ${K_PREDEBLOBBED} ]] ; then
316 if [[ -z ${K_DEBLOB_AVAILABLE} ]] ; then
317 kernel_is ge 2 6 27 && \
318 kernel_is le 2 6 ${DEBLOB_MAX_VERSION} && \
319 K_DEBLOB_AVAILABLE=1
320 fi
321 if [[ ${K_DEBLOB_AVAILABLE} == "1" ]] ; then
322 IUSE="${IUSE} deblob"
323 # Reflect that kernels contain firmware blobs unless otherwise
324 # stripped
325 LICENSE="${LICENSE} !deblob? ( freedist )"
326
327 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
328 DEBLOB_A="deblob-${DEBLOB_PV}"
329 DEBLOB_HOMEPAGE="http://www.fsfla.org/svnwiki/selibre/linux-libre/"
330 HOMEPAGE="${HOMEPAGE} ${DEBLOB_HOMEPAGE}"
331
332 KERNEL_URI="${KERNEL_URI}
333 deblob? (
334 ${DEBLOB_HOMEPAGE}/download/releases/LATEST-${DEBLOB_PV}.N/${DEBLOB_A}
335 )"
336 else
337 # We have no way to deblob older kernels, so just mark them as
338 # tainted with non-libre materials.
339 LICENSE="${LICENSE} freedist"
340 fi
341 fi
342
301elif [[ ${ETYPE} == headers ]]; then 343elif [[ ${ETYPE} == headers ]]; then
302 DESCRIPTION="Linux system headers" 344 DESCRIPTION="Linux system headers"
303 345
304 # Since we should NOT honour KBUILD_OUTPUT in headers 346 # Since we should NOT honour KBUILD_OUTPUT in headers
305 # lets unset it here. 347 # lets unset it here.
375 || die "make include/linux/version.h failed" 417 || die "make include/linux/version.h failed"
376 rm -f .config >/dev/null 418 rm -f .config >/dev/null
377} 419}
378 420
379universal_unpack() { 421universal_unpack() {
380 cd ${WORKDIR} 422 cd "${WORKDIR}"
381 unpack linux-${OKV}.tar.bz2 423 unpack linux-${OKV}.tar.bz2
382 if [[ -d "linux" ]]; then 424 if [[ -d "linux" ]]; then
383 mv linux linux-${KV_FULL} \ 425 mv linux linux-${KV_FULL} \
384 || die "Unable to move source tree to ${KV_FULL}." 426 || die "Unable to move source tree to ${KV_FULL}."
385 elif [[ "${OKV}" != "${KV_FULL}" ]]; then 427 elif [[ "${OKV}" != "${KV_FULL}" ]]; then
489 531
490# install functions 532# install functions
491#============================================================== 533#==============================================================
492install_universal() { 534install_universal() {
493 #fix silly permissions in tarball 535 #fix silly permissions in tarball
494 cd ${WORKDIR} 536 cd "${WORKDIR}"
495 chown -R root:0 * >& /dev/null 537 chown -R root:0 * >& /dev/null
496 chmod -R a+r-w+X,u+w * 538 chmod -R a+r-w+X,u+w *
497 cd ${OLDPWD} 539 cd ${OLDPWD}
498} 540}
499 541
544 [[ ! -e ${D}/${ddir}/asm/arch ]] && ln -sf arch-ebsa285 "${D}"/${ddir}/asm/arch 586 [[ ! -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 587 [[ ! -e ${D}/${ddir}/asm/proc ]] && ln -sf proc-armv "${D}"/${ddir}/asm/proc
546 ;; 588 ;;
547 powerpc) 589 powerpc)
548 dodir ${ddir}/asm 590 dodir ${ddir}/asm
549 cp -pPR "${S}"/include/asm/* ${D}/${ddir}/asm 591 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm
550 if [[ -e "${S}"/include/asm-ppc ]] ; then 592 if [[ -e "${S}"/include/asm-ppc ]] ; then
551 dodir ${ddir}/asm-ppc 593 dodir ${ddir}/asm-ppc
552 cp -pPR "${S}"/include/asm-ppc/* ${D}/${ddir}/asm-ppc 594 cp -pPR "${S}"/include/asm-ppc/* "${D}"/${ddir}/asm-ppc
553 fi 595 fi
554 ;; 596 ;;
555 *) 597 *)
556 dodir ${ddir}/asm 598 dodir ${ddir}/asm
557 cp -pPR "${S}"/include/asm/* ${D}/${ddir}/asm 599 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm
558 ;; 600 ;;
559 esac 601 esac
560 if [[ -n ${multi_dirs} ]] ; then 602 if [[ -n ${multi_dirs} ]] ; then
561 local d ml_inc="" 603 local d ml_inc=""
562 for d in ${multi_dirs} ; do 604 for d in ${multi_dirs} ; do
563 dodir ${ddir}/asm-${d} 605 dodir ${ddir}/asm-${d}
564 cp -pPR "${S}"/include/asm-${d}/* ${D}/${ddir}/asm-${d}/ || die "cp asm-${d} failed" 606 cp -pPR "${S}"/include/asm-${d}/* "${D}"/${ddir}/asm-${d}/ || die "cp asm-${d} failed"
565 607
566 ml_inc="${ml_inc} ${multi_defs%% *}:${ddir}/asm-${d}" 608 ml_inc="${ml_inc} ${multi_defs%% *}:${ddir}/asm-${d}"
567 multi_defs=${multi_defs#* } 609 multi_defs=${multi_defs#* }
568 done 610 done
569 create_ml_includes ${ddir}/asm ${ml_inc} 611 create_ml_includes ${ddir}/asm ${ml_inc}
570 fi 612 fi
571 613
572 if kernel_is 2 6; then 614 if kernel_is 2 6; then
573 dodir ${ddir}/asm-generic 615 dodir ${ddir}/asm-generic
574 cp -pPR "${S}"/include/asm-generic/* ${D}/${ddir}/asm-generic 616 cp -pPR "${S}"/include/asm-generic/* "${D}"/${ddir}/asm-generic
575 fi 617 fi
576 618
577 # clean up 619 # clean up
578 find "${D}" -name '*.orig' -exec rm -f {} \; 620 find "${D}" -name '*.orig' -exec rm -f {} \;
579 621
603 [[ -f ${FILESDIR}/../ChangeLog ]] && \ 645 [[ -f ${FILESDIR}/../ChangeLog ]] && \
604 echo "Please check the ebuild ChangeLog for more details." \ 646 echo "Please check the ebuild ChangeLog for more details." \
605 > "${S}"/patches.txt 647 > "${S}"/patches.txt
606 fi 648 fi
607 649
608 mv ${WORKDIR}/linux* ${D}/usr/src 650 mv ${WORKDIR}/linux* "${D}"/usr/src
609} 651}
610 652
611# pkg_preinst functions 653# pkg_preinst functions
612#============================================================== 654#==============================================================
613preinst_headers() { 655preinst_headers() {
622 local MAKELINK=0 664 local MAKELINK=0
623 665
624 # if we have USE=symlink, then force K_SYMLINK=1 666 # if we have USE=symlink, then force K_SYMLINK=1
625 use symlink && K_SYMLINK=1 667 use symlink && K_SYMLINK=1
626 668
669 # if we're using a deblobbed kernel, it's not supported
670 [[ $K_DEBLOB_AVAILABLE == 1 ]] && \
671 use deblob && \
672 K_SECURITY_UNSUPPORTED=1
673
627 # if we are to forcably symlink, delete it if it already exists first. 674 # if we are to forcably symlink, delete it if it already exists first.
628 if [[ ${K_SYMLINK} > 0 ]]; then 675 if [[ ${K_SYMLINK} > 0 ]]; then
629 [[ -h ${ROOT}usr/src/linux ]] && rm ${ROOT}usr/src/linux 676 [[ -h ${ROOT}usr/src/linux ]] && rm ${ROOT}usr/src/linux
630 MAKELINK=1 677 MAKELINK=1
631 fi 678 fi
632 679
633 # if the link doesnt exist, lets create it 680 # if the link doesnt exist, lets create it
634 [[ ! -h ${ROOT}usr/src/linux ]] && MAKELINK=1 681 [[ ! -h ${ROOT}usr/src/linux ]] && MAKELINK=1
635 682
636 if [[ ${MAKELINK} == 1 ]]; then 683 if [[ ${MAKELINK} == 1 ]]; then
637 cd ${ROOT}usr/src 684 cd "${ROOT}"usr/src
638 ln -sf linux-${KV_FULL} linux 685 ln -sf linux-${KV_FULL} linux
639 cd ${OLDPWD} 686 cd ${OLDPWD}
640 fi 687 fi
641 688
642 # Don't forget to make directory for sysfs 689 # Don't forget to make directory for sysfs
886 # sit in KPATCH_DIR's. This is handled properly in the unipatch rewrite, 933 # 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. 934 # which is why I'm not taking too much time over this.
888 local tmp 935 local tmp
889 for i in ${UNIPATCH_DOCS}; do 936 for i in ${UNIPATCH_DOCS}; do
890 tmp="${tmp} ${i//*\/}" 937 tmp="${tmp} ${i//*\/}"
891 cp -f ${i} ${T}/ 938 cp -f ${i} "${T}"/
892 done 939 done
893 UNIPATCH_DOCS="${tmp}" 940 UNIPATCH_DOCS="${tmp}"
894 941
895 # clean up KPATCH_DIR's - fixes bug #53610 942 # clean up KPATCH_DIR's - fixes bug #53610
896 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done 943 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done
1042 1089
1043 # allow ebuilds to massage the source tree after patching but before 1090 # allow ebuilds to massage the source tree after patching but before
1044 # we run misc `make` functions below 1091 # we run misc `make` functions below
1045 [[ $(type -t kernel-2_hook_premake) == "function" ]] && kernel-2_hook_premake 1092 [[ $(type -t kernel-2_hook_premake) == "function" ]] && kernel-2_hook_premake
1046 1093
1094 debug-print "Doing epatch_user"
1095 epatch_user
1096
1047 debug-print "Doing unpack_set_extraversion" 1097 debug-print "Doing unpack_set_extraversion"
1048 1098
1049 [[ -z ${K_NOSETEXTRAVERSION} ]] && unpack_set_extraversion 1099 [[ -z ${K_NOSETEXTRAVERSION} ]] && unpack_set_extraversion
1050 unpack_fix_install_path 1100 unpack_fix_install_path
1051 1101
1059 # unpack_2_6 should now be 2.6.17 safe anyways 1109 # unpack_2_6 should now be 2.6.17 safe anyways
1060 if [[ ${ETYPE} == headers ]]; then 1110 if [[ ${ETYPE} == headers ]]; then
1061 kernel_is 2 4 && unpack_2_4 1111 kernel_is 2 4 && unpack_2_4
1062 kernel_is 2 6 && unpack_2_6 1112 kernel_is 2 6 && unpack_2_6
1063 fi 1113 fi
1114
1115 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1116 cp "${DISTDIR}/${DEBLOB_A}" "${T}"
1117 chmod +x "${T}/${DEBLOB_A}"
1118 fi
1064} 1119}
1065 1120
1066kernel-2_src_compile() { 1121kernel-2_src_compile() {
1067 cd "${S}" 1122 cd "${S}"
1068 [[ ${ETYPE} == headers ]] && compile_headers 1123 [[ ${ETYPE} == headers ]] && compile_headers
1124
1125 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1126 echo ">>> Running deblob script ..."
1127 sh "${T}/${DEBLOB_A}" --force || \
1128 die "Deblob script failed to run!!!"
1129 fi
1069} 1130}
1070 1131
1071kernel-2_pkg_preinst() { 1132kernel-2_pkg_preinst() {
1072 [[ ${ETYPE} == headers ]] && preinst_headers 1133 [[ ${ETYPE} == headers ]] && preinst_headers
1073} 1134}

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

  ViewVC Help
Powered by ViewVC 1.1.20