/[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.282 Revision 1.294
1# Copyright 1999-2013 Gentoo Foundation 1# Copyright 1999-2014 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.282 2013/04/17 13:52:17 tomwij Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.294 2014/01/18 14:53:07 floppym 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>
38# K_SYMLINK - if this is set, then forcably create symlink anyway 38# K_SYMLINK - if this is set, then forcably create symlink anyway
39# 39#
40# K_DEFCONFIG - Allow specifying a different defconfig target. 40# K_DEFCONFIG - Allow specifying a different defconfig target.
41# If length zero, defaults to "defconfig". 41# If length zero, defaults to "defconfig".
42# K_WANT_GENPATCHES - Apply genpatches to kernel source. Provide any 42# K_WANT_GENPATCHES - Apply genpatches to kernel source. Provide any
43# combination of "base" and "extras" 43# combination of "base", "extras" or "experimental".
44# K_EXP_GENPATCHES_PULL - If set, we pull "experimental" regardless of the USE FLAG
45# but expect the ebuild maintainer to use K_EXP_GENPATCHES_LIST.
46# K_EXP_GENPATCHES_NOUSE - If set, no USE flag will be provided for "experimental";
47# as a result the user cannot choose to apply those patches.
48# K_EXP_GENPATCHES_LIST - A list of patches to pick from "experimental" to apply when
49# the USE flag is unset and K_EXP_GENPATCHES_PULL is set.
44# K_GENPATCHES_VER - The version of the genpatches tarball(s) to apply. 50# 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 51# A value of "5" would apply genpatches-2.6.12-5 to
46# my-sources-2.6.12.ebuild 52# my-sources-2.6.12.ebuild
47# K_SECURITY_UNSUPPORTED- If set, this kernel is unsupported by Gentoo Security 53# 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 54# K_DEBLOB_AVAILABLE - A value of "0" will disable all of the optional deblob
72# Changing any other variable in this eclass is not supported; you can request 78# Changing any other variable in this eclass is not supported; you can request
73# for additional variables to be added by contacting the current maintainer. 79# for additional variables to be added by contacting the current maintainer.
74# If you do change them, there is a chance that we will not fix resulting bugs; 80# If you do change them, there is a chance that we will not fix resulting bugs;
75# that of course does not mean we're not willing to help. 81# that of course does not mean we're not willing to help.
76 82
83PYTHON_COMPAT=( python{2_6,2_7} )
84
77inherit eutils toolchain-funcs versionator multilib 85inherit eutils toolchain-funcs versionator multilib python-any-r1
78EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_test src_install pkg_preinst pkg_postinst pkg_postrm 86EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_test src_install pkg_preinst pkg_postinst pkg_postrm
79 87
80# Added by Daniel Ostrow <dostrow@gentoo.org> 88# Added by Daniel Ostrow <dostrow@gentoo.org>
81# This is an ugly hack to get around an issue with a 32-bit userland on ppc64. 89# This is an ugly hack to get around an issue with a 32-bit userland on ppc64.
82# I will remove it when I come up with something more reasonable. 90# I will remove it when I come up with something more reasonable.
128 # genpatches for 3.0 and 3.0.1 might be named 136 # genpatches for 3.0 and 3.0.1 might be named
129 # genpatches-3.0-1.base.tar.xz and genpatches-3.0-2.base.tar.xz 137 # genpatches-3.0-1.base.tar.xz and genpatches-3.0-2.base.tar.xz
130 # respectively. Handle this. 138 # respectively. Handle this.
131 139
132 for i in ${K_WANT_GENPATCHES} ; do 140 for i in ${K_WANT_GENPATCHES} ; do
133 if [[ ${KV_MAJOR} -ge 3 ]]; then 141 if [[ ${KV_MAJOR} -ge 3 ]]; then
134 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then 142 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
135 tarball="genpatches-${KV_MAJOR}.${KV_MINOR}-${K_GENPATCHES_VER}.${i}.tar.xz" 143 tarball="genpatches-${KV_MAJOR}.${KV_MINOR}-${K_GENPATCHES_VER}.${i}.tar.xz"
144 else
145 tarball="genpatches-${KV_MAJOR}.${KV_PATCH}-${K_GENPATCHES_VER}.${i}.tar.xz"
146 fi
136 else 147 else
137 tarball="genpatches-${KV_MAJOR}.${KV_PATCH}-${K_GENPATCHES_VER}.${i}.tar.xz"
138 fi
139 else
140 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.xz" 148 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.xz"
141 fi 149 fi
150
151 local use_cond_start="" use_cond_end=""
152
153 if [[ "${i}" == "experimental" && -z ${K_EXP_GENPATCHES_PULL} && -z ${K_EXP_GENPATCHES_NOUSE} ]] ; then
154 use_cond_start="experimental? ( "
155 use_cond_end=" )"
156
157 if use experimental ; then
158 UNIPATCH_LIST_GENPATCHES+=" ${DISTDIR}/${tarball}"
159 debug-print "genpatches tarball: $tarball"
160 fi
161 else
162 UNIPATCH_LIST_GENPATCHES+=" ${DISTDIR}/${tarball}"
142 debug-print "genpatches tarball: $tarball" 163 debug-print "genpatches tarball: $tarball"
143 GENPATCHES_URI="${GENPATCHES_URI} mirror://gentoo/${tarball}" 164 fi
144 UNIPATCH_LIST_GENPATCHES="${UNIPATCH_LIST_GENPATCHES} ${DISTDIR}/${tarball}" 165
166 GENPATCHES_URI+=" ${use_cond_start}mirror://gentoo/${tarball}${use_cond_end}"
145 done 167 done
146} 168}
147 169
148detect_version() { 170detect_version() {
149 # this function will detect and set 171 # this function will detect and set
210 232
211# if [[ ${KV_MAJOR} -ge 3 ]]; then 233# if [[ ${KV_MAJOR} -ge 3 ]]; then
212 if [[ ${#OKV_ARRAY[@]} -lt 3 ]]; then 234 if [[ ${#OKV_ARRAY[@]} -lt 3 ]]; then
213 KV_PATCH_ARR=(${KV_PATCH//\./ }) 235 KV_PATCH_ARR=(${KV_PATCH//\./ })
214 236
215 # at this point 031412, Linus is putting all 3.x kernels in a 237 # at this point 031412, Linus is putting all 3.x kernels in a
216 # 3.x directory, may need to revisit when 4.x is released 238 # 3.x directory, may need to revisit when 4.x is released
217 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.x" 239 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.x"
218 240
219 [[ -n "${K_LONGTERM}" ]] && 241 [[ -n "${K_LONGTERM}" ]] &&
220 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_PATCH_ARR}" 242 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_PATCH_ARR}"
415 kernel_is 2 6 || kernel_is 2 5 437 kernel_is 2 6 || kernel_is 2 5
416} 438}
417 439
418# Capture the sources type and set DEPENDs 440# Capture the sources type and set DEPENDs
419if [[ ${ETYPE} == sources ]]; then 441if [[ ${ETYPE} == sources ]]; then
420 DEPEND="!build? ( sys-apps/sed 442 DEPEND="!build? (
443 sys-apps/sed
421 >=sys-devel/binutils-2.11.90.0.31 )" 444 >=sys-devel/binutils-2.11.90.0.31
422 RDEPEND="!build? ( >=sys-libs/ncurses-5.2 445 )"
446 RDEPEND="!build? (
447 >=sys-libs/ncurses-5.2
423 sys-devel/make 448 sys-devel/make
424 dev-lang/perl 449 dev-lang/perl
425 sys-devel/bc )" 450 sys-devel/bc
451 )"
426 PDEPEND="!build? ( virtual/dev-manager )" 452 PDEPEND="!build? ( virtual/dev-manager )"
427 453
428 SLOT="${PVR}" 454 SLOT="${PVR}"
429 DESCRIPTION="Sources based on the Linux Kernel." 455 DESCRIPTION="Sources based on the Linux Kernel."
430 IUSE="symlink build" 456 IUSE="symlink build"
436 [[ -z "${K_DEBLOB_AVAILABLE}" ]] && \ 462 [[ -z "${K_DEBLOB_AVAILABLE}" ]] && \
437 kernel_is le 2 6 ${DEBLOB_MAX_VERSION} && \ 463 kernel_is le 2 6 ${DEBLOB_MAX_VERSION} && \
438 K_DEBLOB_AVAILABLE=1 464 K_DEBLOB_AVAILABLE=1
439 if [[ ${K_DEBLOB_AVAILABLE} == "1" ]] ; then 465 if [[ ${K_DEBLOB_AVAILABLE} == "1" ]] ; then
440 IUSE="${IUSE} deblob" 466 IUSE="${IUSE} deblob"
467
441 # Reflect that kernels contain firmware blobs unless otherwise 468 # Reflect that kernels contain firmware blobs unless otherwise
442 # stripped 469 # stripped
443 LICENSE="${LICENSE} !deblob? ( freedist )" 470 LICENSE="${LICENSE} !deblob? ( freedist )"
471
472 DEPEND+=" deblob? ( ${PYTHON_DEPS} )"
444 473
445 if [[ -n KV_MINOR ]]; then 474 if [[ -n KV_MINOR ]]; then
446 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}" 475 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
447 else 476 else
448 DEBLOB_PV="${KV_MAJOR}.${KV_PATCH}" 477 DEBLOB_PV="${KV_MAJOR}.${KV_PATCH}"
462 DEBLOB_CHECK_URI="mirror://gentoo/${DEBLOB_CHECK_A}" 491 DEBLOB_CHECK_URI="mirror://gentoo/${DEBLOB_CHECK_A}"
463 fi 492 fi
464 DEBLOB_URI="${DEBLOB_HOMEPAGE}/${DEBLOB_URI_PATH}/${DEBLOB_A}" 493 DEBLOB_URI="${DEBLOB_HOMEPAGE}/${DEBLOB_URI_PATH}/${DEBLOB_A}"
465 HOMEPAGE="${HOMEPAGE} ${DEBLOB_HOMEPAGE}" 494 HOMEPAGE="${HOMEPAGE} ${DEBLOB_HOMEPAGE}"
466 495
467 DEPEND+=" deblob? ( =dev-lang/python-2* )"
468 KERNEL_URI="${KERNEL_URI} 496 KERNEL_URI="${KERNEL_URI}
469 deblob? ( 497 deblob? (
470 ${DEBLOB_URI} 498 ${DEBLOB_URI}
471 ${DEBLOB_CHECK_URI} 499 ${DEBLOB_CHECK_URI}
472 )" 500 )"
687 if kernel_is ge 2 6 18 ; then 715 if kernel_is ge 2 6 18 ; then
688 env_setup_xmakeopts 716 env_setup_xmakeopts
689 emake headers_install INSTALL_HDR_PATH="${D}"/${ddir}/.. ${xmakeopts} || die 717 emake headers_install INSTALL_HDR_PATH="${D}"/${ddir}/.. ${xmakeopts} || die
690 718
691 # let other packages install some of these headers 719 # let other packages install some of these headers
692 rm -rf "${D}"/${ddir}/sound #alsa-headers
693 rm -rf "${D}"/${ddir}/scsi #glibc/uclibc/etc... 720 rm -rf "${D}"/${ddir}/scsi #glibc/uclibc/etc...
694 return 0 721 return 0
695 fi 722 fi
696 723
697 # Do not use "linux/*" as that can cause problems with very long 724 # Do not use "linux/*" as that can cause problems with very long
740 > "${S}"/patches.txt 767 > "${S}"/patches.txt
741 fi 768 fi
742 769
743 mv ${WORKDIR}/linux* "${D}"/usr/src 770 mv ${WORKDIR}/linux* "${D}"/usr/src
744 771
745 if [[ -z ${UNIPATCH_DOCS} ]] ; then 772 if [[ -n "${UNIPATCH_DOCS}" ]] ; then
746 dodoc ${UNIPATCH_DOCS} 773 for i in ${UNIPATCH_DOCS}; do
774 dodoc "${T}"/${i}
775 done
747 fi 776 fi
748} 777}
749 778
750# pkg_preinst functions 779# pkg_preinst functions
751#============================================================== 780#==============================================================
811 fi 840 fi
812 841
813 # optionally display security unsupported message 842 # optionally display security unsupported message
814 # Start with why 843 # Start with why
815 if [[ ${K_SECURITY_UNSUPPORTED} = deblob ]]; then 844 if [[ ${K_SECURITY_UNSUPPORTED} = deblob ]]; then
816 ewarn "Deblobbed kernels are UNSUPPORTED by Gentoo Security." 845 ewarn "Deblobbed kernels may not be up-to-date security-wise"
846 ewarn "as they depend on external scripts."
817 elif [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then 847 elif [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
818 ewarn "${PN} is UNSUPPORTED by Gentoo Security." 848 ewarn "${PN} is UNSUPPORTED by Gentoo Security."
819 fi 849 fi
820 # And now the general message. 850 # And now the general message.
821 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then 851 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
827 # warn sparc users that they need to do cross-compiling with >= 2.6.25(bug #214765) 857 # warn sparc users that they need to do cross-compiling with >= 2.6.25(bug #214765)
828 KV_MAJOR=$(get_version_component_range 1 ${OKV}) 858 KV_MAJOR=$(get_version_component_range 1 ${OKV})
829 KV_MINOR=$(get_version_component_range 2 ${OKV}) 859 KV_MINOR=$(get_version_component_range 2 ${OKV})
830 KV_PATCH=$(get_version_component_range 3 ${OKV}) 860 KV_PATCH=$(get_version_component_range 3 ${OKV})
831 if [[ "$(tc-arch)" = "sparc" ]]; then 861 if [[ "$(tc-arch)" = "sparc" ]]; then
832 if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.24 ]] 862 if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.24 ]] ; then
833 then
834 echo 863 echo
835 elog "NOTE: Since 2.6.25 the kernel Makefile has changed in a way that" 864 elog "NOTE: Since 2.6.25 the kernel Makefile has changed in a way that"
836 elog "you now need to do" 865 elog "you now need to do"
837 elog " make CROSS_COMPILE=sparc64-unknown-linux-gnu-" 866 elog " make CROSS_COMPILE=sparc64-unknown-linux-gnu-"
838 elog "instead of just" 867 elog "instead of just"
914 PIPE_CMD="" 943 PIPE_CMD=""
915 case ${extention} in 944 case ${extention} in
916 xz) PIPE_CMD="xz -dc";; 945 xz) PIPE_CMD="xz -dc";;
917 lzma) PIPE_CMD="lzma -dc";; 946 lzma) PIPE_CMD="lzma -dc";;
918 bz2) PIPE_CMD="bzip2 -dc";; 947 bz2) PIPE_CMD="bzip2 -dc";;
919 patch) PIPE_CMD="cat";; 948 patch*) PIPE_CMD="cat";;
920 diff) PIPE_CMD="cat";; 949 diff) PIPE_CMD="cat";;
921 gz|Z|z) PIPE_CMD="gzip -dc";; 950 gz|Z|z) PIPE_CMD="gzip -dc";;
922 ZIP|zip) PIPE_CMD="unzip -p";; 951 ZIP|zip) PIPE_CMD="unzip -p";;
923 *) UNIPATCH_DROP="${UNIPATCH_DROP} ${i/:*/}";; 952 *) UNIPATCH_DROP="${UNIPATCH_DROP} ${i/:*/}";;
924 esac 953 esac
950 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed" 979 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
951 else 980 else
952 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed" 981 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
953 fi 982 fi
954 fi 983 fi
984 fi
985
986 # If experimental was not chosen by the user, drop experimental patches not in K_EXP_GENPATCHES_LIST.
987 if [[ "${i}" == *"genpatches-"*".experimental."* && -n ${K_EXP_GENPATCHES_PULL} ]] ; then
988 if [[ -z ${K_EXP_GENPATCHES_NOUSE} ]] && use experimental; then
989 continue
990 fi
991
992 local j
993 for j in ${KPATCH_DIR}/*/50*_*.patch*; do
994 for k in ${K_EXP_GENPATCHES_LIST} ; do
995 [[ "$(basename ${j})" == ${k}* ]] && continue 2
996 done
997 UNIPATCH_DROP+=" $(basename ${j})"
998 done
955 fi 999 fi
956 done 1000 done
957 1001
958 #populate KPATCH_DIRS so we know where to look to remove the excludes 1002 #populate KPATCH_DIRS so we know where to look to remove the excludes
959 x=${KPATCH_DIR} 1003 x=${KPATCH_DIR}
1038 # them during the install phase. 1082 # them during the install phase.
1039 local tmp 1083 local tmp
1040 for x in ${KPATCH_DIR}; do 1084 for x in ${KPATCH_DIR}; do
1041 for i in ${UNIPATCH_DOCS}; do 1085 for i in ${UNIPATCH_DOCS}; do
1042 if [[ -f "${x}/${i}" ]] ; then 1086 if [[ -f "${x}/${i}" ]] ; then
1043 tmp="${tmp} \"${T}/${i}\"" 1087 tmp="${tmp} ${i}"
1044 cp -f "${x}/${i}" "${T}"/ 1088 cp -f "${x}/${i}" "${T}"/
1045 fi 1089 fi
1046 done 1090 done
1047 done 1091 done
1048 UNIPATCH_DOCS="${tmp}" 1092 UNIPATCH_DOCS="${tmp}"
1166 fi 1210 fi
1167 1211
1168 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox 1212 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox
1169 # only do this for kernel < 2.6.27 since this file does not exist in later 1213 # only do this for kernel < 2.6.27 since this file does not exist in later
1170 # kernels 1214 # kernels
1171 if [[ -n ${KV_MINOR} && ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]] 1215 if [[ -n ${KV_MINOR} && ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]] ; then
1172 then
1173 sed -i \ 1216 sed -i \
1174 -e "s|TOUT := .tmp_gas_check|TOUT := \"${T}\"/.tmp_gas_check|" \ 1217 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
1175 "${S}"/arch/ppc/Makefile 1218 "${S}"/arch/ppc/Makefile
1176 else 1219 else
1177 sed -i \ 1220 sed -i \
1178 -e "s|TOUT := .tmp_gas_check|TOUT := \"${T}\"/.tmp_gas_check|" \ 1221 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
1179 "${S}"/arch/powerpc/Makefile 1222 "${S}"/arch/powerpc/Makefile
1180 fi 1223 fi
1181} 1224}
1182 1225
1183kernel-2_src_compile() { 1226kernel-2_src_compile() {
1184 cd "${S}" 1227 cd "${S}"
1185 [[ ${ETYPE} == headers ]] && compile_headers 1228 [[ ${ETYPE} == headers ]] && compile_headers
1186 1229
1187 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then 1230 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1188 echo ">>> Running deblob script ..." 1231 echo ">>> Running deblob script ..."
1232 python_setup
1189 EPYTHON="python2" sh "${T}/${DEBLOB_A}" --force || die "Deblob script failed to run!!!" 1233 sh "${T}/${DEBLOB_A}" --force || die "Deblob script failed to run!!!"
1190 fi 1234 fi
1191} 1235}
1192 1236
1193# if you leave it to the default src_test, it will run make to 1237# if you leave it to the default src_test, it will run make to
1194# find whether test/check targets are present; since "make test" 1238# find whether test/check targets are present; since "make test"

Legend:
Removed from v.1.282  
changed lines
  Added in v.1.294

  ViewVC Help
Powered by ViewVC 1.1.20