/[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.209 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.209 2008/04/05 12:29:26 mpagano 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>
105 105
106#Eclass functions only from here onwards ... 106#Eclass functions only from here onwards ...
107#============================================================== 107#==============================================================
108handle_genpatches() { 108handle_genpatches() {
109 local tarball 109 local tarball
110 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return -1 110 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return 1
111 111
112 for i in ${K_WANT_GENPATCHES} ; do 112 for i in ${K_WANT_GENPATCHES} ; do
113 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.bz2" 113 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.bz2"
114 GENPATCHES_URI="${GENPATCHES_URI} mirror://gentoo/${tarball}" 114 GENPATCHES_URI="${GENPATCHES_URI} mirror://gentoo/${tarball}"
115 UNIPATCH_LIST_GENPATCHES="${UNIPATCH_LIST_GENPATCHES} ${DISTDIR}/${tarball}" 115 UNIPATCH_LIST_GENPATCHES="${UNIPATCH_LIST_GENPATCHES} ${DISTDIR}/${tarball}"
287# Capture the sources type and set DEPENDs 287# Capture the sources type and set DEPENDs
288if [[ ${ETYPE} == sources ]]; then 288if [[ ${ETYPE} == sources ]]; then
289 DEPEND="!build? ( sys-apps/sed 289 DEPEND="!build? ( sys-apps/sed
290 >=sys-devel/binutils-2.11.90.0.31 )" 290 >=sys-devel/binutils-2.11.90.0.31 )"
291 RDEPEND="!build? ( >=sys-libs/ncurses-5.2 291 RDEPEND="!build? ( >=sys-libs/ncurses-5.2
292 sys-devel/make ) 292 sys-devel/make )"
293 virtual/dev-manager" 293 PDEPEND="virtual/dev-manager"
294 294
295 PROVIDE="virtual/linux-sources" 295 PROVIDE="virtual/linux-sources"
296 kernel_is gt 2 4 && PROVIDE="${PROVIDE} virtual/alsa" 296 kernel_is gt 2 4 && PROVIDE="${PROVIDE} virtual/alsa"
297 297
298 SLOT="${PVR}" 298 SLOT="${PVR}"
390 390
391 # remove all backup files 391 # remove all backup files
392 find . -iname "*~" -exec rm {} \; 2> /dev/null 392 find . -iname "*~" -exec rm {} \; 2> /dev/null
393 393
394 # 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
395 sed -i \ 399 sed -i \
396 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \ 400 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
397 "${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
398} 407}
399 408
400unpack_set_extraversion() { 409unpack_set_extraversion() {
401 cd "${S}" 410 cd "${S}"
402 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile 411 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile
481# install functions 490# install functions
482#============================================================== 491#==============================================================
483install_universal() { 492install_universal() {
484 #fix silly permissions in tarball 493 #fix silly permissions in tarball
485 cd ${WORKDIR} 494 cd ${WORKDIR}
486 chown -R root:0 * 495 chown -R root:0 * >& /dev/null
487 chmod -R a+r-w+X,u+w * 496 chmod -R a+r-w+X,u+w *
488 cd ${OLDPWD} 497 cd ${OLDPWD}
489} 498}
490 499
491install_headers() { 500install_headers() {
631 fi 640 fi
632 641
633 # Don't forget to make directory for sysfs 642 # Don't forget to make directory for sysfs
634 [[ ! -d ${ROOT}sys ]] && kernel_is 2 6 && mkdir ${ROOT}sys 643 [[ ! -d ${ROOT}sys ]] && kernel_is 2 6 && mkdir ${ROOT}sys
635 644
636 # fix for bug #215442 due to the change for x86 to use a
637 # different file name for the default configuration
638 if kernel_is ge 2 6 24 && [[ ! -e ${D}/usr/src/linux-${KV_FULL}/.config ]] ; then
639 case $(tc-arch-kernel) in
640 x86|x86_64)
641 einfo "Running make defconfig as a temporary workaround for bug #215442"
642 cd ${D}/usr/src/linux-${KV_FULL}
643 make -s defconfig ${xmakeopts} &>/dev/null 2>&1
644 ;;
645 esac
646 fi
647
648 echo 645 echo
649 elog "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"
650 elog "in the following documents:" 647 elog "in the following document:"
651 elog " - 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"
652 kernel_is_2_6 && elog " - 2.4 to 2.6 migration guide: http://www.gentoo.org/doc/en/migration-to-2.6.xml"
653 echo 649 echo
654 650
655 # if K_EXTRAEINFO is set then lets display it now 651 # if K_EXTRAEINFO is set then lets display it now
656 if [[ -n ${K_EXTRAEINFO} ]]; then 652 if [[ -n ${K_EXTRAEINFO} ]]; then
657 echo ${K_EXTRAEINFO} | fmt | 653 echo ${K_EXTRAEINFO} | fmt |
676 ewarn "${PN} is UNSUPPORTED by Gentoo Security." 672 ewarn "${PN} is UNSUPPORTED by Gentoo Security."
677 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."
678 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:"
679 ewarn "http://www.gentoo.org/proj/en/security/kernel.xml" 675 ewarn "http://www.gentoo.org/proj/en/security/kernel.xml"
680 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
681} 695}
682 696
683postinst_headers() { 697postinst_headers() {
684 elog "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"
685 elog "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"
731 # -z "${UNIPATCH_LIST}" ] && UNIPATCH_LIST="${@}" 745 # -z "${UNIPATCH_LIST}" ] && UNIPATCH_LIST="${@}"
732 UNIPATCH_LIST="${@}" 746 UNIPATCH_LIST="${@}"
733 747
734 #unpack any passed tarballs 748 #unpack any passed tarballs
735 for i in ${UNIPATCH_LIST}; do 749 for i in ${UNIPATCH_LIST}; do
736 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
737 extention=${i/*./}
738 extention=${extention/:*/}
739 case ${extention} in
740 tbz2) PIPE_CMD="tar -xvjf";;
741 bz2) PIPE_CMD="tar -xvjf";;
742 tgz) PIPE_CMD="tar -xvzf";;
743 gz) PIPE_CMD="tar -xvzf";;
744 *) eerror "Unrecognized tarball compression"
745 die "Unrecognized tarball compression";;
746 esac
747
748 if [ -n "${UNIPATCH_STRICTORDER}" ]; then 751 if [ -n "${UNIPATCH_STRICTORDER}" ]; then
749 unset z 752 unset z
750 STRICT_COUNT=$((10#${STRICT_COUNT} + 1)) 753 STRICT_COUNT=$((10#${STRICT_COUNT} + 1))
751 for((y=0; y<$((6 - ${#STRICT_COUNT})); y++)); 754 for((y=0; y<$((6 - ${#STRICT_COUNT})); y++));
752 do z="${z}0"; 755 do z="${z}0";
753 done 756 done
754 PATCH_ORDER="${z}${STRICT_COUNT}" 757 PATCH_ORDER="${z}${STRICT_COUNT}"
755 758
756 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/ 759 mkdir -p "${KPATCH_DIR}/${PATCH_ORDER}"
757 ${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
758 else 763 else
759 ${PIPE_CMD} ${i/:*/} -C ${KPATCH_DIR} 1>/dev/null 764 pushd "${KPATCH_DIR}" >/dev/null
765 unpack ${i##*/}
766 popd >/dev/null
760 fi 767 fi
761 768
762 if [ $? == 0 ]; then
763 einfo "${i/*\//} unpacked"
764 [ -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"
765 else
766 eerror "Failed to unpack ${i/:*/}"
767 die "unable to unpack patch tarball"
768 fi
769 else 770 else
770 extention=${i/*./} 771 extention=${i/*./}
771 extention=${extention/:*/} 772 extention=${extention/:*/}
772 PIPE_CMD="" 773 PIPE_CMD=""
773 case ${extention} in 774 case ${extention} in
815 x=${KPATCH_DIR} 816 x=${KPATCH_DIR}
816 KPATCH_DIR="" 817 KPATCH_DIR=""
817 for i in $(find ${x} -type d | sort -n); do 818 for i in $(find ${x} -type d | sort -n); do
818 KPATCH_DIR="${KPATCH_DIR} ${i}" 819 KPATCH_DIR="${KPATCH_DIR} ${i}"
819 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
820 834
821 #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
822 UNIPATCH_DROP="${UNIPATCH_EXCLUDE} ${UNIPATCH_DROP}" 836 UNIPATCH_DROP="${UNIPATCH_EXCLUDE} ${UNIPATCH_DROP}"
823 for i in ${UNIPATCH_DROP}; do 837 for i in ${UNIPATCH_DROP}; do
824 ebegin "Excluding Patch #${i}" 838 ebegin "Excluding Patch #${i}"

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

  ViewVC Help
Powered by ViewVC 1.1.20