/[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.207 Revision 1.221
1# Copyright 1999-2005 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.207 2007/12/17 16:05:13 dsd Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.221 2009/10/20 19:17:59 zmedico 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>
31# the patchset version for 31# the patchset version for
32# and not use it as a true package revision 32# and not use it as a true package revision
33# K_EXTRAEINFO - this is a new-line seperated list of einfo displays in 33# K_EXTRAEINFO - this is a new-line seperated list of einfo displays in
34# postinst and can be used to carry additional postinst 34# postinst and can be used to carry additional postinst
35# messages 35# messages
36# K_EXTRAELOG - same as K_EXTRAEINFO except using elog instead of einfo
36# K_EXTRAEWARN - same as K_EXTRAEINFO except ewarn's instead of einfo's 37# K_EXTRAEWARN - same as K_EXTRAEINFO except using ewarn instead of einfo
37# K_SYMLINK - if this is set, then forcably create symlink anyway 38# K_SYMLINK - if this is set, then forcably create symlink anyway
38# 39#
39# K_DEFCONFIG - Allow specifying a different defconfig target. 40# K_DEFCONFIG - Allow specifying a different defconfig target.
40# If length zero, defaults to "defconfig". 41# If length zero, defaults to "defconfig".
41# K_WANT_GENPATCHES - Apply genpatches to kernel source. Provide any 42# K_WANT_GENPATCHES - Apply genpatches to kernel source. Provide any
104 105
105#Eclass functions only from here onwards ... 106#Eclass functions only from here onwards ...
106#============================================================== 107#==============================================================
107handle_genpatches() { 108handle_genpatches() {
108 local tarball 109 local tarball
109 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return -1 110 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return 1
110 111
111 for i in ${K_WANT_GENPATCHES} ; do 112 for i in ${K_WANT_GENPATCHES} ; do
112 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.bz2" 113 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.bz2"
113 GENPATCHES_URI="${GENPATCHES_URI} mirror://gentoo/${tarball}" 114 GENPATCHES_URI="${GENPATCHES_URI} mirror://gentoo/${tarball}"
114 UNIPATCH_LIST_GENPATCHES="${UNIPATCH_LIST_GENPATCHES} ${DISTDIR}/${tarball}" 115 UNIPATCH_LIST_GENPATCHES="${UNIPATCH_LIST_GENPATCHES} ${DISTDIR}/${tarball}"
286# Capture the sources type and set DEPENDs 287# Capture the sources type and set DEPENDs
287if [[ ${ETYPE} == sources ]]; then 288if [[ ${ETYPE} == sources ]]; then
288 DEPEND="!build? ( sys-apps/sed 289 DEPEND="!build? ( sys-apps/sed
289 >=sys-devel/binutils-2.11.90.0.31 )" 290 >=sys-devel/binutils-2.11.90.0.31 )"
290 RDEPEND="!build? ( >=sys-libs/ncurses-5.2 291 RDEPEND="!build? ( >=sys-libs/ncurses-5.2
291 sys-devel/make ) 292 sys-devel/make )"
292 virtual/dev-manager" 293 PDEPEND="virtual/dev-manager"
293 294
294 PROVIDE="virtual/linux-sources" 295 PROVIDE="virtual/linux-sources"
295 kernel_is gt 2 4 && PROVIDE="${PROVIDE} virtual/alsa" 296 kernel_is gt 2 4 && PROVIDE="${PROVIDE} virtual/alsa"
296 297
297 SLOT="${PVR}" 298 SLOT="${PVR}"
389 390
390 # remove all backup files 391 # remove all backup files
391 find . -iname "*~" -exec rm {} \; 2> /dev/null 392 find . -iname "*~" -exec rm {} \; 2> /dev/null
392 393
393 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox 394 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox
395 # only do this for kernel < 2.6.27 since this file does not exist in later
396 # kernels
397 if [[ ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]]
398 then
394 sed -i \ 399 sed -i \
395 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \ 400 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
396 "${S}"/arch/ppc/Makefile 401 "${S}"/arch/ppc/Makefile
402 else
403 sed -i \
404 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
405 "${S}"/arch/powerpc/Makefile
406 fi
397} 407}
398 408
399unpack_set_extraversion() { 409unpack_set_extraversion() {
400 cd "${S}" 410 cd "${S}"
401 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile 411 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile
480# install functions 490# install functions
481#============================================================== 491#==============================================================
482install_universal() { 492install_universal() {
483 #fix silly permissions in tarball 493 #fix silly permissions in tarball
484 cd ${WORKDIR} 494 cd ${WORKDIR}
485 chown -R root:0 * 495 chown -R root:0 * >& /dev/null
486 chmod -R a+r-w+X,u+w * 496 chmod -R a+r-w+X,u+w *
487 cd ${OLDPWD} 497 cd ${OLDPWD}
488} 498}
489 499
490install_headers() { 500install_headers() {
631 641
632 # Don't forget to make directory for sysfs 642 # Don't forget to make directory for sysfs
633 [[ ! -d ${ROOT}sys ]] && kernel_is 2 6 && mkdir ${ROOT}sys 643 [[ ! -d ${ROOT}sys ]] && kernel_is 2 6 && mkdir ${ROOT}sys
634 644
635 echo 645 echo
636 einfo "If you are upgrading from a previous kernel, you may be interested" 646 elog "If you are upgrading from a previous kernel, you may be interested"
637 einfo "in the following documents:" 647 elog "in the following document:"
638 einfo " - General upgrade guide: http://www.gentoo.org/doc/en/kernel-upgrade.xml" 648 elog " - General upgrade guide: http://www.gentoo.org/doc/en/kernel-upgrade.xml"
639 kernel_is_2_6 && einfo " - 2.4 to 2.6 migration guide: http://www.gentoo.org/doc/en/migration-to-2.6.xml"
640 echo 649 echo
641 650
642 # if K_EXTRAEINFO is set then lets display it now 651 # if K_EXTRAEINFO is set then lets display it now
643 if [[ -n ${K_EXTRAEINFO} ]]; then 652 if [[ -n ${K_EXTRAEINFO} ]]; then
644 echo ${K_EXTRAEINFO} | fmt | 653 echo ${K_EXTRAEINFO} | fmt |
645 while read -s ELINE; do einfo "${ELINE}"; done 654 while read -s ELINE; do einfo "${ELINE}"; done
655 fi
656
657 # if K_EXTRAELOG is set then lets display it now
658 if [[ -n ${K_EXTRAELOG} ]]; then
659 echo ${K_EXTRAELOG} | fmt |
660 while read -s ELINE; do elog "${ELINE}"; done
646 fi 661 fi
647 662
648 # if K_EXTRAEWARN is set then lets display it now 663 # if K_EXTRAEWARN is set then lets display it now
649 if [[ -n ${K_EXTRAEWARN} ]]; then 664 if [[ -n ${K_EXTRAEWARN} ]]; then
650 echo ${K_EXTRAEWARN} | fmt | 665 echo ${K_EXTRAEWARN} | fmt |
657 ewarn "${PN} is UNSUPPORTED by Gentoo Security." 672 ewarn "${PN} is UNSUPPORTED by Gentoo Security."
658 ewarn "This means that it is likely to be vulnerable to recent security issues." 673 ewarn "This means that it is likely to be vulnerable to recent security issues."
659 ewarn "For specific information on why this kernel is unsupported, please read:" 674 ewarn "For specific information on why this kernel is unsupported, please read:"
660 ewarn "http://www.gentoo.org/proj/en/security/kernel.xml" 675 ewarn "http://www.gentoo.org/proj/en/security/kernel.xml"
661 fi 676 fi
677
678 # warn sparc users that they need to do cross-compiling with >= 2.6.25(bug #214765)
679 KV_MAJOR=$(get_version_component_range 1 ${OKV})
680 KV_MINOR=$(get_version_component_range 2 ${OKV})
681 KV_PATCH=$(get_version_component_range 3 ${OKV})
682 if [[ "$(tc-arch)" = "sparc" ]] \
683 && [[ ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.24 ]]
684 then
685 echo
686 elog "NOTE: Since 2.6.25 the kernel Makefile has changed in a way that"
687 elog "you now need to do"
688 elog " make CROSS_COMPILE=sparc64-unknown-linux-gnu-"
689 elog "instead of just"
690 elog " make"
691 elog "to compile the kernel. For more information please browse to"
692 elog "https://bugs.gentoo.org/show_bug.cgi?id=214765"
693 echo
694 fi
662} 695}
663 696
664postinst_headers() { 697postinst_headers() {
665 einfo "Kernel headers are usually only used when recompiling your system libc, as" 698 elog "Kernel headers are usually only used when recompiling your system libc, as"
666 einfo "such, following the installation of newer headers, it is advised that you" 699 elog "such, following the installation of newer headers, it is advised that you"
667 einfo "re-merge your system libc." 700 elog "re-merge your system libc."
668 einfo "Failure to do so will cause your system libc to not make use of newer" 701 elog "Failure to do so will cause your system libc to not make use of newer"
669 einfo "features present in the updated kernel headers." 702 elog "features present in the updated kernel headers."
670} 703}
671 704
672# pkg_setup functions 705# pkg_setup functions
673#============================================================== 706#==============================================================
674setup_headers() { 707setup_headers() {
712 # -z "${UNIPATCH_LIST}" ] && UNIPATCH_LIST="${@}" 745 # -z "${UNIPATCH_LIST}" ] && UNIPATCH_LIST="${@}"
713 UNIPATCH_LIST="${@}" 746 UNIPATCH_LIST="${@}"
714 747
715 #unpack any passed tarballs 748 #unpack any passed tarballs
716 for i in ${UNIPATCH_LIST}; do 749 for i in ${UNIPATCH_LIST}; do
717 if [ -n "$(echo ${i} | grep -e "\.tar" -e "\.tbz" -e "\.tgz")" ]; then 750 if echo ${i} | grep -qs -e "\.tar" -e "\.tbz" -e "\.tgz" ; then
718 extention=${i/*./}
719 extention=${extention/:*/}
720 case ${extention} in
721 tbz2) PIPE_CMD="tar -xvjf";;
722 bz2) PIPE_CMD="tar -xvjf";;
723 tgz) PIPE_CMD="tar -xvzf";;
724 gz) PIPE_CMD="tar -xvzf";;
725 *) eerror "Unrecognized tarball compression"
726 die "Unrecognized tarball compression";;
727 esac
728
729 if [ -n "${UNIPATCH_STRICTORDER}" ]; then 751 if [ -n "${UNIPATCH_STRICTORDER}" ]; then
730 unset z 752 unset z
731 STRICT_COUNT=$((10#${STRICT_COUNT} + 1)) 753 STRICT_COUNT=$((10#${STRICT_COUNT} + 1))
732 for((y=0; y<$((6 - ${#STRICT_COUNT})); y++)); 754 for((y=0; y<$((6 - ${#STRICT_COUNT})); y++));
733 do z="${z}0"; 755 do z="${z}0";
734 done 756 done
735 PATCH_ORDER="${z}${STRICT_COUNT}" 757 PATCH_ORDER="${z}${STRICT_COUNT}"
736 758
737 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/ 759 mkdir -p "${KPATCH_DIR}/${PATCH_ORDER}"
738 ${PIPE_CMD} ${i/:*/} -C ${KPATCH_DIR}/${PATCH_ORDER}/ 1>/dev/null 760 pushd "${KPATCH_DIR}/${PATCH_ORDER}" >/dev/null
761 unpack ${i##*/}
762 popd >/dev/null
739 else 763 else
740 ${PIPE_CMD} ${i/:*/} -C ${KPATCH_DIR} 1>/dev/null 764 pushd "${KPATCH_DIR}" >/dev/null
765 unpack ${i##*/}
766 popd >/dev/null
741 fi 767 fi
742 768
743 if [ $? == 0 ]; then
744 einfo "${i/*\//} unpacked"
745 [ -n "$(echo ${i} | grep ':')" ] && echo ">>> Strict patch levels not currently supported for tarballed patchsets" 769 [[ ${i} == *:* ]] && echo ">>> Strict patch levels not currently supported for tarballed patchsets"
746 else
747 eerror "Failed to unpack ${i/:*/}"
748 die "unable to unpack patch tarball"
749 fi
750 else 770 else
751 extention=${i/*./} 771 extention=${i/*./}
752 extention=${extention/:*/} 772 extention=${extention/:*/}
753 PIPE_CMD="" 773 PIPE_CMD=""
754 case ${extention} in 774 case ${extention} in
796 x=${KPATCH_DIR} 816 x=${KPATCH_DIR}
797 KPATCH_DIR="" 817 KPATCH_DIR=""
798 for i in $(find ${x} -type d | sort -n); do 818 for i in $(find ${x} -type d | sort -n); do
799 KPATCH_DIR="${KPATCH_DIR} ${i}" 819 KPATCH_DIR="${KPATCH_DIR} ${i}"
800 done 820 done
821
822 # do not apply fbcondecor patch to sparc/sparc64 as it breaks boot
823 # bug #272676
824 if [[ "$(tc-arch)" = "sparc" || "$(tc-arch)" = "sparc64" ]]; then
825 if [[ ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.28 ]]; then
826 UNIPATCH_DROP="${UNIPATCH_DROP} *_fbcondecor-0.9.6.patch"
827 echo
828 ewarn "fbcondecor currently prevents sparc/sparc64 from booting"
829 ewarn "for kernel versions >= 2.6.29. Removing fbcondecor patch."
830 ewarn "See https://bugs.gentoo.org/show_bug.cgi?id=272676 for details"
831 echo
832 fi
833 fi
801 834
802 #so now lets get rid of the patchno's we want to exclude 835 #so now lets get rid of the patchno's we want to exclude
803 UNIPATCH_DROP="${UNIPATCH_EXCLUDE} ${UNIPATCH_DROP}" 836 UNIPATCH_DROP="${UNIPATCH_EXCLUDE} ${UNIPATCH_DROP}"
804 for i in ${UNIPATCH_DROP}; do 837 for i in ${UNIPATCH_DROP}; do
805 ebegin "Excluding Patch #${i}" 838 ebegin "Excluding Patch #${i}"

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

  ViewVC Help
Powered by ViewVC 1.1.20