/[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.282
1# Copyright 1999-2005 Gentoo Foundation 1# Copyright 1999-2013 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.282 2013/04/17 13:52:17 tomwij 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
42# combination of "base" and "extras" 43# combination of "base" and "extras"
43# 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.
44# 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
45# my-sources-2.6.12.ebuild 46# my-sources-2.6.12.ebuild
46# 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
47 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
48# 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
49# can be supported by the headers ebuild 59# can be supported by the headers ebuild
50 60
51# 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
52# kernel 62# kernel
57# UNIPATCH_DOCS - space delimemeted list of docs to be installed to 67# UNIPATCH_DOCS - space delimemeted list of docs to be installed to
58# the doc dir 68# the doc dir
59# UNIPATCH_STRICTORDER - if this is set places patches into directories of 69# UNIPATCH_STRICTORDER - if this is set places patches into directories of
60# order, so they are applied in the order passed 70# order, so they are applied in the order passed
61 71
72# 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.
74# 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.
76
62inherit eutils toolchain-funcs versionator multilib 77inherit eutils toolchain-funcs versionator multilib
63EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst pkg_postinst 78EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_test src_install pkg_preinst pkg_postinst pkg_postrm
64 79
65# Added by Daniel Ostrow <dostrow@gentoo.org> 80# Added by Daniel Ostrow <dostrow@gentoo.org>
66# This is an ugly hack to get around an issue with a 32-bit userland on ppc64. 81# This is an ugly hack to get around an issue with a 32-bit userland on ppc64.
67# I will remove it when I come up with something more reasonable. 82# I will remove it when I come up with something more reasonable.
68[[ ${PROFILE_ARCH} == "ppc64" ]] && CHOST="powerpc64-${CHOST#*-}" 83[[ ${PROFILE_ARCH} == "ppc64" ]] && CHOST="powerpc64-${CHOST#*-}"
71if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then 86if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then
72 export CTARGET=${CATEGORY/cross-} 87 export CTARGET=${CATEGORY/cross-}
73fi 88fi
74 89
75HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}" 90HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}"
76LICENSE="GPL-2" 91: ${LICENSE:="GPL-2"}
92
93# This is the latest KV_PATCH of the deblob tool available from the
94# libre-sources upstream. If you bump this, you MUST regenerate the Manifests
95# for ALL kernel-2 consumer packages where deblob is available.
96: ${DEBLOB_MAX_VERSION:=38}
77 97
78# No need to run scanelf/strip on kernel sources/headers (bug #134453). 98# No need to run scanelf/strip on kernel sources/headers (bug #134453).
79RESTRICT="binchecks strip" 99RESTRICT="binchecks strip"
80 100
81# set LINUX_HOSTCFLAGS if not already set 101# set LINUX_HOSTCFLAGS if not already set
82[[ -z ${LINUX_HOSTCFLAGS} ]] && \
83 LINUX_HOSTCFLAGS="-Wall -Wstrict-prototypes -Os -fomit-frame-pointer -I${S}/include" 102: ${LINUX_HOSTCFLAGS:="-Wall -Wstrict-prototypes -Os -fomit-frame-pointer -I${S}/include"}
84 103
85# debugging functions 104# debugging functions
86#============================================================== 105#==============================================================
87# this function exists only to help debug kernel-2.eclass 106# this function exists only to help debug kernel-2.eclass
88# if you are adding new functionality in, put a call to it 107# if you are adding new functionality in, put a call to it
89# at the start of src_unpack, or during SRC_URI/dep generation. 108# at the start of src_unpack, or during SRC_URI/dep generation.
90debug-print-kernel2-variables() { 109debug-print-kernel2-variables() {
91 debug-print "PVR: ${PVR}" 110 for v in PVR CKV OKV KV KV_FULL KV_MAJOR KV_MINOR KV_PATCH RELEASETYPE \
92 debug-print "CKV: ${CKV}" 111 RELEASE UNIPATCH_LIST_DEFAULT UNIPATCH_LIST_GENPATCHES \
93 debug-print "OKV: ${OKV}" 112 UNIPATCH_LIST S KERNEL_URI K_WANT_GENPATCHES ; do
94 debug-print "KV: ${KV}" 113 debug-print "${v}: ${!v}"
95 debug-print "KV_FULL: ${KV_FULL}" 114 done
96 debug-print "RELEASETYPE: ${RELEASETYPE}"
97 debug-print "RELEASE: ${RELEASE}"
98 debug-print "UNIPATCH_LIST_DEFAULT: ${UNIPATCH_LIST_DEFAULT} "
99 debug-print "UNIPATCH_LIST_GENPATCHES: ${UNIPATCH_LIST_GENPATCHES} "
100 debug-print "UNIPATCH_LIST: ${UNIPATCH_LIST}"
101 debug-print "S: ${S}"
102 debug-print "KERNEL_URI: ${KERNEL_URI}"
103} 115}
104 116
105#Eclass functions only from here onwards ... 117#Eclass functions only from here onwards ...
106#============================================================== 118#==============================================================
107handle_genpatches() { 119handle_genpatches() {
108 local tarball 120 local tarball
109 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return -1 121 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return 1
122
123 debug-print "Inside handle_genpatches"
124 local OKV_ARRAY
125 IFS="." read -r -a OKV_ARRAY <<<"${OKV}"
126
127 # for > 3.0 kernels, handle genpatches tarball name
128 # 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
130 # respectively. Handle this.
110 131
111 for i in ${K_WANT_GENPATCHES} ; do 132 for i in ${K_WANT_GENPATCHES} ; do
133 if [[ ${KV_MAJOR} -ge 3 ]]; then
134 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
135 tarball="genpatches-${KV_MAJOR}.${KV_MINOR}-${K_GENPATCHES_VER}.${i}.tar.xz"
136 else
137 tarball="genpatches-${KV_MAJOR}.${KV_PATCH}-${K_GENPATCHES_VER}.${i}.tar.xz"
138 fi
139 else
112 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.bz2" 140 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.xz"
141 fi
142 debug-print "genpatches tarball: $tarball"
113 GENPATCHES_URI="${GENPATCHES_URI} mirror://gentoo/${tarball}" 143 GENPATCHES_URI="${GENPATCHES_URI} mirror://gentoo/${tarball}"
114 UNIPATCH_LIST_GENPATCHES="${UNIPATCH_LIST_GENPATCHES} ${DISTDIR}/${tarball}" 144 UNIPATCH_LIST_GENPATCHES="${UNIPATCH_LIST_GENPATCHES} ${DISTDIR}/${tarball}"
115 done 145 done
116} 146}
117 147
118detect_version() { 148detect_version() {
119 # this function will detect and set 149 # this function will detect and set
120 # - OKV: Original Kernel Version (2.6.0/2.6.0-test11) 150 # - OKV: Original Kernel Version (2.6.0/2.6.0-test11)
121 # - KV: Kernel Version (2.6.0-gentoo/2.6.0-test11-gentoo-r1) 151 # - KV: Kernel Version (2.6.0-gentoo/2.6.0-test11-gentoo-r1)
122 # - EXTRAVERSION: The additional version appended to OKV (-gentoo/-gentoo-r1) 152 # - EXTRAVERSION: The additional version appended to OKV (-gentoo/-gentoo-r1)
123 153
124 if [[ -n ${KV_FULL} ]]; then 154 # We've already run, so nothing to do here.
125 # we will set this for backwards compatibility. 155 [[ -n ${KV_FULL} ]] && return 0
126 KV=${KV_FULL}
127
128 # we know KV_FULL so lets stop here. but not without resetting S
129 S=${WORKDIR}/linux-${KV_FULL}
130 return
131 fi
132 156
133 # CKV is used as a comparison kernel version, which is used when 157 # CKV is used as a comparison kernel version, which is used when
134 # PV doesnt reflect the genuine kernel version. 158 # PV doesnt reflect the genuine kernel version.
135 # this gets set to the portage style versioning. ie: 159 # this gets set to the portage style versioning. ie:
136 # CKV=2.6.11_rc4 160 # CKV=2.6.11_rc4
140 OKV=${OKV/_rc/-rc} 164 OKV=${OKV/_rc/-rc}
141 OKV=${OKV/-r*} 165 OKV=${OKV/-r*}
142 OKV=${OKV/_p*} 166 OKV=${OKV/_p*}
143 167
144 KV_MAJOR=$(get_version_component_range 1 ${OKV}) 168 KV_MAJOR=$(get_version_component_range 1 ${OKV})
169 # handle if OKV is X.Y or X.Y.Z (e.g. 3.0 or 3.0.1)
170 local OKV_ARRAY
171 IFS="." read -r -a OKV_ARRAY <<<"${OKV}"
172
173 # if KV_MAJOR >= 3, then we have no more KV_MINOR
174 #if [[ ${KV_MAJOR} -lt 3 ]]; then
175 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
145 KV_MINOR=$(get_version_component_range 2 ${OKV}) 176 KV_MINOR=$(get_version_component_range 2 ${OKV})
146 KV_PATCH=$(get_version_component_range 3 ${OKV}) 177 KV_PATCH=$(get_version_component_range 3 ${OKV})
147
148 if [[ ${KV_MAJOR}${KV_MINOR}${KV_PATCH} -ge 269 ]]; then 178 if [[ ${KV_MAJOR}${KV_MINOR}${KV_PATCH} -ge 269 ]]; then
179 KV_EXTRA=$(get_version_component_range 4- ${OKV})
180 KV_EXTRA=${KV_EXTRA/[-_]*}
181 else
182 KV_PATCH=$(get_version_component_range 3- ${OKV})
183 fi
184 else
185 KV_PATCH=$(get_version_component_range 2 ${OKV})
149 KV_EXTRA=$(get_version_component_range 4- ${OKV}) 186 KV_EXTRA=$(get_version_component_range 3- ${OKV})
150 KV_EXTRA=${KV_EXTRA/[-_]*} 187 KV_EXTRA=${KV_EXTRA/[-_]*}
188 fi
189
190 debug-print "KV_EXTRA is ${KV_EXTRA}"
191
192 KV_PATCH=${KV_PATCH/[-_]*}
193
194 local v n=0 missing
195 #if [[ ${KV_MAJOR} -lt 3 ]]; then
196 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
197 for v in CKV OKV KV_{MAJOR,MINOR,PATCH} ; do
198 [[ -z ${!v} ]] && n=1 && missing="${missing}${v} ";
199 done
151 else 200 else
152 KV_PATCH=$(get_version_component_range 3- ${OKV}) 201 for v in CKV OKV KV_{MAJOR,PATCH} ; do
202 [[ -z ${!v} ]] && n=1 && missing="${missing}${v} ";
203 done
204 fi
205
206 [[ $n -eq 1 ]] && \
207 eerror "Missing variables: ${missing}" && \
208 die "Failed to extract kernel version (try explicit CKV in ebuild)!"
209 unset v n missing
210
211# if [[ ${KV_MAJOR} -ge 3 ]]; then
212 if [[ ${#OKV_ARRAY[@]} -lt 3 ]]; then
213 KV_PATCH_ARR=(${KV_PATCH//\./ })
214
215 # 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
217 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.x"
218
219 [[ -n "${K_LONGTERM}" ]] &&
220 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_PATCH_ARR}"
221 else
222 #KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.0"
223 #KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}"
224 if [[ ${KV_MAJOR} -ge 3 ]]; then
225 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.x"
226 else
227 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}"
153 fi 228 fi
154 KV_PATCH=${KV_PATCH/[-_]*}
155 229
156 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 230 [[ -n "${K_LONGTERM}" ]] &&
231 #KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm"
232 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
233 fi
234
235 debug-print "KERNEL_BASE_URI is ${KERNEL_BASE_URI}"
236
237 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then
238 # handle non genpatch using sources correctly
239 if [[ -z ${K_WANT_GENPATCHES} && -z ${K_GENPATCHES_VER} && ${KV_PATCH} -gt 0 ]]; then
240 KERNEL_URI="${KERNEL_BASE_URI}/patch-${OKV}.xz"
241 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.xz"
242 fi
243 KERNEL_URI="${KERNEL_URI} ${KERNEL_BASE_URI}/linux-${KV_MAJOR}.${KV_MINOR}.tar.xz"
244 else
245 KERNEL_URI="${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
246 fi
157 247
158 RELEASE=${CKV/${OKV}} 248 RELEASE=${CKV/${OKV}}
159 RELEASE=${RELEASE/_beta} 249 RELEASE=${RELEASE/_beta}
160 RELEASE=${RELEASE/_rc/-rc} 250 RELEASE=${RELEASE/_rc/-rc}
161 RELEASE=${RELEASE/_pre/-pre} 251 RELEASE=${RELEASE/_pre/-pre}
252 # We cannot trivally call kernel_is here, because it calls us to detect the
253 # version
162 kernel_is ge 2 6 && RELEASE=${RELEASE/-pre/-git} 254 #kernel_is ge 2 6 && RELEASE=${RELEASE/-pre/-git}
255 [ $(($KV_MAJOR * 1000 + ${KV_MINOR:-0})) -ge 2006 ] && RELEASE=${RELEASE/-pre/-git}
163 RELEASETYPE=${RELEASE//[0-9]} 256 RELEASETYPE=${RELEASE//[0-9]}
164 257
165 # Now we know that RELEASE is the -rc/-git 258 # Now we know that RELEASE is the -rc/-git
166 # and RELEASETYPE is the same but with its numerics stripped 259 # and RELEASETYPE is the same but with its numerics stripped
167 # we can work on better sorting EXTRAVERSION. 260 # we can work on better sorting EXTRAVERSION.
168 # first of all, we add the release 261 # first of all, we add the release
169 EXTRAVERSION="${RELEASE}" 262 EXTRAVERSION="${RELEASE}"
170 debug-print "0 EXTRAVERSION:${EXTRAVERSION}" 263 debug-print "0 EXTRAVERSION:${EXTRAVERSION}"
171 [[ -n ${KV_EXTRA} ]] && EXTRAVERSION=".${KV_EXTRA}${EXTRAVERSION}" 264 [[ -n ${KV_EXTRA} ]] && [[ ${KV_MAJOR} -lt 3 ]] && EXTRAVERSION=".${KV_EXTRA}${EXTRAVERSION}"
172 265
173 debug-print "1 EXTRAVERSION:${EXTRAVERSION}" 266 debug-print "1 EXTRAVERSION:${EXTRAVERSION}"
174 if [[ -n "${K_NOUSEPR}" ]]; then 267 if [[ -n "${K_NOUSEPR}" ]]; then
175 # Don't add anything based on PR to EXTRAVERSION 268 # Don't add anything based on PR to EXTRAVERSION
176 debug-print "1.0 EXTRAVERSION:${EXTRAVERSION}" 269 debug-print "1.0 EXTRAVERSION:${EXTRAVERSION}"
194 debug-print "2 EXTRAVERSION:${EXTRAVERSION}" 287 debug-print "2 EXTRAVERSION:${EXTRAVERSION}"
195 288
196 # The only messing around which should actually effect this is for KV_EXTRA 289 # The only messing around which should actually effect this is for KV_EXTRA
197 # since this has to limit OKV to MAJ.MIN.PAT and strip EXTRA off else 290 # since this has to limit OKV to MAJ.MIN.PAT and strip EXTRA off else
198 # KV_FULL evaluates to MAJ.MIN.PAT.EXT.EXT after EXTRAVERSION 291 # KV_FULL evaluates to MAJ.MIN.PAT.EXT.EXT after EXTRAVERSION
292
199 if [[ -n ${KV_EXTRA} ]]; then 293 if [[ -n ${KV_EXTRA} ]]; then
294 if [[ -n ${KV_MINOR} ]]; then
200 OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}" 295 OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
201 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/patch-${CKV}.bz2 296 else
202 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}.tar.bz2" 297 OKV="${KV_MAJOR}.${KV_PATCH}"
298 fi
299 KERNEL_URI="${KERNEL_BASE_URI}/patch-${CKV}.xz
300 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
203 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.bz2" 301 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.xz"
204 fi 302 fi
205 303
206 # We need to set this using OKV, but we need to set it before we do any 304 # We need to set this using OKV, but we need to set it before we do any
207 # messing around with OKV based on RELEASETYPE 305 # messing around with OKV based on RELEASETYPE
208 KV_FULL=${OKV}${EXTRAVERSION} 306 KV_FULL=${OKV}${EXTRAVERSION}
213 311
214 # -rc-git pulls can be achieved by specifying CKV 312 # -rc-git pulls can be achieved by specifying CKV
215 # for example: 313 # for example:
216 # CKV="2.6.11_rc3_pre2" 314 # CKV="2.6.11_rc3_pre2"
217 # will pull: 315 # will pull:
218 # linux-2.6.10.tar.bz2 & patch-2.6.11-rc3.bz2 & patch-2.6.11-rc3-git2.bz2 316 # linux-2.6.10.tar.xz & patch-2.6.11-rc3.xz & patch-2.6.11-rc3-git2.xz
219 317
318 if [[ ${KV_MAJOR}${KV_MINOR} -eq 26 ]]; then
319
220 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then 320 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
221 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))" 321 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
222 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/testing/patch-${CKV//_/-}.bz2 322 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.xz
223 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 323 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
224 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2" 324 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.xz"
225 fi 325 fi
226 326
227 if [[ ${RELEASETYPE} == -git ]]; then 327 if [[ ${RELEASETYPE} == -git ]]; then
228 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/snapshots/patch-${OKV}${RELEASE}.bz2 328 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.xz
229 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 329 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
230 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2" 330 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.xz"
231 fi 331 fi
232 332
233 if [[ ${RELEASETYPE} == -rc-git ]]; then 333 if [[ ${RELEASETYPE} == -rc-git ]]; then
234 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))" 334 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
235 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2 335 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.xz
236 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 336 ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.xz
237 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 337 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
338
238 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2" 339 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.xz ${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.xz"
239 fi 340 fi
341 else
342 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
343 if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then
344 OKV="2.6.39"
345 else
346 KV_PATCH_ARR=(${KV_PATCH//\./ })
347 OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))"
348 fi
349 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.xz
350 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
351 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.xz"
352 fi
353
354 if [[ ${RELEASETYPE} == -git ]]; then
355 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.xz
356 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
357 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.xz"
358 fi
359
360 if [[ ${RELEASETYPE} == -rc-git ]]; then
361 if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then
362 OKV="2.6.39"
363 else
364 KV_PATCH_ARR=(${KV_PATCH//\./ })
365 OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))"
366 fi
367 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.xz
368 ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.xz
369 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
370
371 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.xz ${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.xz"
372 fi
373
374
375 fi
376
240 377
241 debug-print-kernel2-variables 378 debug-print-kernel2-variables
242 379
243 handle_genpatches 380 handle_genpatches
244} 381}
245 382
383# Note: duplicated in linux-info.eclass
246kernel_is() { 384kernel_is() {
385 # ALL of these should be set before we can safely continue this function.
386 # some of the sources have in the past had only one set.
387 local v n=0
388 for v in OKV KV_{MAJOR,MINOR,PATCH} ; do [[ -z ${!v} ]] && n=1 ; done
247 [[ -z ${OKV} ]] && detect_version 389 [[ $n -eq 1 ]] && detect_version
390 unset v n
391
392 # Now we can continue
248 local operator test value x=0 y=0 z=0 393 local operator test value
249 394
250 case ${1} in 395 case ${1#-} in
251 lt) operator="-lt"; shift;; 396 lt) operator="-lt"; shift;;
252 gt) operator="-gt"; shift;; 397 gt) operator="-gt"; shift;;
253 le) operator="-le"; shift;; 398 le) operator="-le"; shift;;
254 ge) operator="-ge"; shift;; 399 ge) operator="-ge"; shift;;
255 eq) operator="-eq"; shift;; 400 eq) operator="-eq"; shift;;
256 *) operator="-eq";; 401 *) operator="-eq";;
257 esac 402 esac
258
259 for x in ${@}; do
260 for((y=0; y<$((3 - ${#x})); y++)); do value="${value}0"; done
261 value="${value}${x}"
262 z=$((${z} + 1))
263
264 case ${z} in
265 1) for((y=0; y<$((3 - ${#KV_MAJOR})); y++)); do test="${test}0"; done;
266 test="${test}${KV_MAJOR}";;
267 2) for((y=0; y<$((3 - ${#KV_MINOR})); y++)); do test="${test}0"; done;
268 test="${test}${KV_MINOR}";;
269 3) for((y=0; y<$((3 - ${#KV_PATCH})); y++)); do test="${test}0"; done;
270 test="${test}${KV_PATCH}";;
271 *) die "Error in kernel-2_kernel_is(): Too many parameters.";; 403 [[ $# -gt 3 ]] && die "Error in kernel-2_kernel_is(): too many parameters"
272 esac
273 done
274 404
275 [ ${test} ${operator} ${value} ] && return 0 || return 1 405 : $(( test = (KV_MAJOR << 16) + (KV_MINOR << 8) + KV_PATCH ))
406 : $(( value = (${1:-${KV_MAJOR}} << 16) + (${2:-${KV_MINOR}} << 8) + ${3:-${KV_PATCH}} ))
407 [ ${test} ${operator} ${value} ]
276} 408}
277 409
278kernel_is_2_4() { 410kernel_is_2_4() {
279 kernel_is 2 4 411 kernel_is 2 4
280} 412}
286# Capture the sources type and set DEPENDs 418# Capture the sources type and set DEPENDs
287if [[ ${ETYPE} == sources ]]; then 419if [[ ${ETYPE} == sources ]]; then
288 DEPEND="!build? ( sys-apps/sed 420 DEPEND="!build? ( sys-apps/sed
289 >=sys-devel/binutils-2.11.90.0.31 )" 421 >=sys-devel/binutils-2.11.90.0.31 )"
290 RDEPEND="!build? ( >=sys-libs/ncurses-5.2 422 RDEPEND="!build? ( >=sys-libs/ncurses-5.2
291 sys-devel/make ) 423 sys-devel/make
292 virtual/dev-manager" 424 dev-lang/perl
293 425 sys-devel/bc )"
294 PROVIDE="virtual/linux-sources" 426 PDEPEND="!build? ( virtual/dev-manager )"
295 kernel_is gt 2 4 && PROVIDE="${PROVIDE} virtual/alsa"
296 427
297 SLOT="${PVR}" 428 SLOT="${PVR}"
298 DESCRIPTION="Sources for the ${KV_MAJOR}.${KV_MINOR} linux kernel" 429 DESCRIPTION="Sources based on the Linux Kernel."
299 IUSE="symlink build" 430 IUSE="symlink build"
431
432 # Bug #266157, deblob for libre support
433 if [[ -z ${K_PREDEBLOBBED} ]] ; then
434 # Bug #359865, force a call to detect_version if needed
435 kernel_is ge 2 6 27 && \
436 [[ -z "${K_DEBLOB_AVAILABLE}" ]] && \
437 kernel_is le 2 6 ${DEBLOB_MAX_VERSION} && \
438 K_DEBLOB_AVAILABLE=1
439 if [[ ${K_DEBLOB_AVAILABLE} == "1" ]] ; then
440 IUSE="${IUSE} deblob"
441 # Reflect that kernels contain firmware blobs unless otherwise
442 # stripped
443 LICENSE="${LICENSE} !deblob? ( freedist )"
444
445 if [[ -n KV_MINOR ]]; then
446 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
447 else
448 DEBLOB_PV="${KV_MAJOR}.${KV_PATCH}"
449 fi
450
451 if [[ ${KV_MAJOR} -ge 3 ]]; then
452 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}"
453 fi
454
455 DEBLOB_A="deblob-${DEBLOB_PV}"
456 DEBLOB_CHECK_A="deblob-check-${DEBLOB_PV}"
457 DEBLOB_HOMEPAGE="http://www.fsfla.org/svnwiki/selibre/linux-libre/"
458 DEBLOB_URI_PATH="download/releases/LATEST-${DEBLOB_PV}.N"
459 if ! has "${EAPI:-0}" 0 1 ; then
460 DEBLOB_CHECK_URI="${DEBLOB_HOMEPAGE}/${DEBLOB_URI_PATH}/deblob-check -> ${DEBLOB_CHECK_A}"
461 else
462 DEBLOB_CHECK_URI="mirror://gentoo/${DEBLOB_CHECK_A}"
463 fi
464 DEBLOB_URI="${DEBLOB_HOMEPAGE}/${DEBLOB_URI_PATH}/${DEBLOB_A}"
465 HOMEPAGE="${HOMEPAGE} ${DEBLOB_HOMEPAGE}"
466
467 DEPEND+=" deblob? ( =dev-lang/python-2* )"
468 KERNEL_URI="${KERNEL_URI}
469 deblob? (
470 ${DEBLOB_URI}
471 ${DEBLOB_CHECK_URI}
472 )"
473 else
474 # We have no way to deblob older kernels, so just mark them as
475 # tainted with non-libre materials.
476 LICENSE="${LICENSE} freedist"
477 fi
478 fi
479
300elif [[ ${ETYPE} == headers ]]; then 480elif [[ ${ETYPE} == headers ]]; then
301 DESCRIPTION="Linux system headers" 481 DESCRIPTION="Linux system headers"
302 482
303 # Since we should NOT honour KBUILD_OUTPUT in headers 483 # Since we should NOT honour KBUILD_OUTPUT in headers
304 # lets unset it here. 484 # lets unset it here.
305 unset KBUILD_OUTPUT 485 unset KBUILD_OUTPUT
306 486
307 if [[ ${CTARGET} = ${CHOST} ]]; then
308 DEPEND="!virtual/os-headers"
309 PROVIDE="virtual/os-headers"
310 SLOT="0" 487 SLOT="0"
311 else
312 SLOT="${CTARGET}"
313 fi
314else 488else
315 eerror "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\"" 489 eerror "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\""
316 die "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\"" 490 die "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\""
317fi 491fi
318 492
374 || die "make include/linux/version.h failed" 548 || die "make include/linux/version.h failed"
375 rm -f .config >/dev/null 549 rm -f .config >/dev/null
376} 550}
377 551
378universal_unpack() { 552universal_unpack() {
553 debug-print "Inside universal_unpack"
554
555 local OKV_ARRAY
556 IFS="." read -r -a OKV_ARRAY <<<"${OKV}"
557
379 cd ${WORKDIR} 558 cd "${WORKDIR}"
559 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then
560 unpack linux-${KV_MAJOR}.${KV_MINOR}.tar.xz
561 else
380 unpack linux-${OKV}.tar.bz2 562 unpack linux-${OKV}.tar.xz
563 fi
564
381 if [[ -d "linux" ]]; then 565 if [[ -d "linux" ]]; then
566 debug-print "Moving linux to linux-${KV_FULL}"
382 mv linux linux-${KV_FULL} \ 567 mv linux linux-${KV_FULL} \
383 || die "Unable to move source tree to ${KV_FULL}." 568 || die "Unable to move source tree to ${KV_FULL}."
384 elif [[ "${OKV}" != "${KV_FULL}" ]]; then 569 elif [[ "${OKV}" != "${KV_FULL}" ]]; then
570 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]] &&
571 [[ "${ETYPE}" = "sources" ]]; then
572 debug-print "moving linux-${KV_MAJOR}.${KV_MINOR} to linux-${KV_FULL} "
573 mv linux-${KV_MAJOR}.${KV_MINOR} linux-${KV_FULL} \
574 || die "Unable to move source tree to ${KV_FULL}."
575 else
576 debug-print "moving linux-${OKV} to linux-${KV_FULL} "
385 mv linux-${OKV} linux-${KV_FULL} \ 577 mv linux-${OKV} linux-${KV_FULL} \
578 || die "Unable to move source tree to ${KV_FULL}."
579 fi
580 elif [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then
581 mv linux-${KV_MAJOR}.${KV_MINOR} linux-${KV_FULL} \
386 || die "Unable to move source tree to ${KV_FULL}." 582 || die "Unable to move source tree to ${KV_FULL}."
387 fi 583 fi
388 cd "${S}" 584 cd "${S}"
389 585
390 # remove all backup files 586 # remove all backup files
391 find . -iname "*~" -exec rm {} \; 2> /dev/null 587 find . -iname "*~" -exec rm {} \; 2> /dev/null
392 588
393 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox
394 sed -i \
395 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
396 "${S}"/arch/ppc/Makefile
397} 589}
398 590
399unpack_set_extraversion() { 591unpack_set_extraversion() {
400 cd "${S}" 592 cd "${S}"
401 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile 593 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile
478} 670}
479 671
480# install functions 672# install functions
481#============================================================== 673#==============================================================
482install_universal() { 674install_universal() {
483 #fix silly permissions in tarball 675 # Fix silly permissions in tarball
484 cd ${WORKDIR} 676 cd "${WORKDIR}"
485 chown -R root:0 * 677 chown -R 0:0 * >& /dev/null
486 chmod -R a+r-w+X,u+w * 678 chmod -R a+r-w+X,u+w *
487 cd ${OLDPWD} 679 cd ${OLDPWD}
488} 680}
489 681
490install_headers() { 682install_headers() {
502 return 0 694 return 0
503 fi 695 fi
504 696
505 # Do not use "linux/*" as that can cause problems with very long 697 # Do not use "linux/*" as that can cause problems with very long
506 # $S values where the cmdline to cp is too long 698 # $S values where the cmdline to cp is too long
507 cd "${S}" 699 pushd "${S}" >/dev/null
508 dodir ${ddir}/linux 700 dodir ${ddir}/linux
509 cp -pPR "${S}"/include/linux "${D}"/${ddir}/ || die 701 cp -pPR "${S}"/include/linux "${D}"/${ddir}/ || die
510 rm -rf "${D}"/${ddir}/linux/modules 702 rm -rf "${D}"/${ddir}/linux/modules
511 703
512 # Handle multilib headers and crap
513 local multi_dirs="" multi_defs=""
514 case $(tc-arch-kernel) in
515 sparc64)
516 multi_dirs="sparc sparc64"
517 multi_defs="!__arch64__ __arch64__"
518 ;;
519 x86_64)
520 multi_dirs="i386 x86_64"
521 multi_defs="__i386__ __x86_64__"
522 ;;
523 ppc64)
524 multi_dirs="ppc ppc64"
525 multi_defs="!__powerpc64__ __powerpc64__"
526 ;;
527 s390x)
528 multi_dirs="s390 s390x"
529 multi_defs="!__s390x__ __s390x__"
530 ;;
531 arm)
532 dodir ${ddir}/asm 704 dodir ${ddir}/asm
533 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm 705 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm
534 [[ ! -e ${D}/${ddir}/asm/arch ]] && ln -sf arch-ebsa285 "${D}"/${ddir}/asm/arch
535 [[ ! -e ${D}/${ddir}/asm/proc ]] && ln -sf proc-armv "${D}"/${ddir}/asm/proc
536 ;;
537 powerpc)
538 dodir ${ddir}/asm
539 cp -pPR "${S}"/include/asm/* ${D}/${ddir}/asm
540 if [[ -e "${S}"/include/asm-ppc ]] ; then
541 dodir ${ddir}/asm-ppc
542 cp -pPR "${S}"/include/asm-ppc/* ${D}/${ddir}/asm-ppc
543 fi
544 ;;
545 *)
546 dodir ${ddir}/asm
547 cp -pPR "${S}"/include/asm/* ${D}/${ddir}/asm
548 ;;
549 esac
550 if [[ -n ${multi_dirs} ]] ; then
551 local d ml_inc=""
552 for d in ${multi_dirs} ; do
553 dodir ${ddir}/asm-${d}
554 cp -pPR "${S}"/include/asm-${d}/* ${D}/${ddir}/asm-${d}/ || die "cp asm-${d} failed"
555 706
556 ml_inc="${ml_inc} ${multi_defs%% *}:${ddir}/asm-${d}"
557 multi_defs=${multi_defs#* }
558 done
559 create_ml_includes ${ddir}/asm ${ml_inc}
560 fi
561
562 if kernel_is 2 6; then 707 if kernel_is 2 6 ; then
563 dodir ${ddir}/asm-generic 708 dodir ${ddir}/asm-generic
564 cp -pPR "${S}"/include/asm-generic/* ${D}/${ddir}/asm-generic 709 cp -pPR "${S}"/include/asm-generic/* "${D}"/${ddir}/asm-generic
565 fi 710 fi
566 711
567 # clean up 712 # clean up
568 find "${D}" -name '*.orig' -exec rm -f {} \; 713 find "${D}" -name '*.orig' -exec rm -f {} \;
569 714
570 cd ${OLDPWD} 715 popd >/dev/null
571} 716}
572 717
573install_sources() { 718install_sources() {
574 local file 719 local file
575 720
593 [[ -f ${FILESDIR}/../ChangeLog ]] && \ 738 [[ -f ${FILESDIR}/../ChangeLog ]] && \
594 echo "Please check the ebuild ChangeLog for more details." \ 739 echo "Please check the ebuild ChangeLog for more details." \
595 > "${S}"/patches.txt 740 > "${S}"/patches.txt
596 fi 741 fi
597 742
598 mv ${WORKDIR}/linux* ${D}/usr/src 743 mv ${WORKDIR}/linux* "${D}"/usr/src
744
745 if [[ -z ${UNIPATCH_DOCS} ]] ; then
746 dodoc ${UNIPATCH_DOCS}
747 fi
599} 748}
600 749
601# pkg_preinst functions 750# pkg_preinst functions
602#============================================================== 751#==============================================================
603preinst_headers() { 752preinst_headers() {
612 local MAKELINK=0 761 local MAKELINK=0
613 762
614 # if we have USE=symlink, then force K_SYMLINK=1 763 # if we have USE=symlink, then force K_SYMLINK=1
615 use symlink && K_SYMLINK=1 764 use symlink && K_SYMLINK=1
616 765
766 # if we're using a deblobbed kernel, it's not supported
767 [[ $K_DEBLOB_AVAILABLE == 1 ]] && \
768 use deblob && \
769 K_SECURITY_UNSUPPORTED=deblob
770
617 # if we are to forcably symlink, delete it if it already exists first. 771 # if we are to forcably symlink, delete it if it already exists first.
618 if [[ ${K_SYMLINK} > 0 ]]; then 772 if [[ ${K_SYMLINK} > 0 ]]; then
619 [[ -h ${ROOT}usr/src/linux ]] && rm ${ROOT}usr/src/linux 773 [[ -h ${ROOT}usr/src/linux ]] && rm ${ROOT}usr/src/linux
620 MAKELINK=1 774 MAKELINK=1
621 fi 775 fi
622 776
623 # if the link doesnt exist, lets create it 777 # if the link doesnt exist, lets create it
624 [[ ! -h ${ROOT}usr/src/linux ]] && MAKELINK=1 778 [[ ! -h ${ROOT}usr/src/linux ]] && MAKELINK=1
625 779
626 if [[ ${MAKELINK} == 1 ]]; then 780 if [[ ${MAKELINK} == 1 ]]; then
627 cd ${ROOT}usr/src 781 cd "${ROOT}"usr/src
628 ln -sf linux-${KV_FULL} linux 782 ln -sf linux-${KV_FULL} linux
629 cd ${OLDPWD} 783 cd ${OLDPWD}
630 fi 784 fi
631 785
632 # Don't forget to make directory for sysfs 786 # Don't forget to make directory for sysfs
633 [[ ! -d ${ROOT}sys ]] && kernel_is 2 6 && mkdir ${ROOT}sys 787 [[ ! -d ${ROOT}sys ]] && kernel_is 2 6 && mkdir ${ROOT}sys
634 788
635 echo 789 echo
636 einfo "If you are upgrading from a previous kernel, you may be interested" 790 elog "If you are upgrading from a previous kernel, you may be interested"
637 einfo "in the following documents:" 791 elog "in the following document:"
638 einfo " - General upgrade guide: http://www.gentoo.org/doc/en/kernel-upgrade.xml" 792 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 793 echo
641 794
642 # if K_EXTRAEINFO is set then lets display it now 795 # if K_EXTRAEINFO is set then lets display it now
643 if [[ -n ${K_EXTRAEINFO} ]]; then 796 if [[ -n ${K_EXTRAEINFO} ]]; then
644 echo ${K_EXTRAEINFO} | fmt | 797 echo ${K_EXTRAEINFO} | fmt |
645 while read -s ELINE; do einfo "${ELINE}"; done 798 while read -s ELINE; do einfo "${ELINE}"; done
646 fi 799 fi
647 800
801 # if K_EXTRAELOG is set then lets display it now
802 if [[ -n ${K_EXTRAELOG} ]]; then
803 echo ${K_EXTRAELOG} | fmt |
804 while read -s ELINE; do elog "${ELINE}"; done
805 fi
806
648 # if K_EXTRAEWARN is set then lets display it now 807 # if K_EXTRAEWARN is set then lets display it now
649 if [[ -n ${K_EXTRAEWARN} ]]; then 808 if [[ -n ${K_EXTRAEWARN} ]]; then
650 echo ${K_EXTRAEWARN} | fmt | 809 echo ${K_EXTRAEWARN} | fmt |
651 while read -s ELINE; do ewarn "${ELINE}"; done 810 while read -s ELINE; do ewarn "${ELINE}"; done
652 fi 811 fi
653 812
654 # optionally display security unsupported message 813 # optionally display security unsupported message
814 # Start with why
815 if [[ ${K_SECURITY_UNSUPPORTED} = deblob ]]; then
816 ewarn "Deblobbed kernels are UNSUPPORTED by Gentoo Security."
817 elif [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
818 ewarn "${PN} is UNSUPPORTED by Gentoo Security."
819 fi
820 # And now the general message.
655 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then 821 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
656 echo
657 ewarn "${PN} is UNSUPPORTED by Gentoo Security."
658 ewarn "This means that it is likely to be vulnerable to recent security issues." 822 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:" 823 ewarn "For specific information on why this kernel is unsupported, please read:"
660 ewarn "http://www.gentoo.org/proj/en/security/kernel.xml" 824 ewarn "http://www.gentoo.org/proj/en/security/kernel.xml"
661 fi 825 fi
662}
663 826
664postinst_headers() { 827 # warn sparc users that they need to do cross-compiling with >= 2.6.25(bug #214765)
665 einfo "Kernel headers are usually only used when recompiling your system libc, as" 828 KV_MAJOR=$(get_version_component_range 1 ${OKV})
666 einfo "such, following the installation of newer headers, it is advised that you" 829 KV_MINOR=$(get_version_component_range 2 ${OKV})
667 einfo "re-merge your system libc." 830 KV_PATCH=$(get_version_component_range 3 ${OKV})
668 einfo "Failure to do so will cause your system libc to not make use of newer" 831 if [[ "$(tc-arch)" = "sparc" ]]; then
669 einfo "features present in the updated kernel headers." 832 if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.24 ]]
833 then
834 echo
835 elog "NOTE: Since 2.6.25 the kernel Makefile has changed in a way that"
836 elog "you now need to do"
837 elog " make CROSS_COMPILE=sparc64-unknown-linux-gnu-"
838 elog "instead of just"
839 elog " make"
840 elog "to compile the kernel. For more information please browse to"
841 elog "https://bugs.gentoo.org/show_bug.cgi?id=214765"
842 echo
843 fi
844 fi
670} 845}
671 846
672# pkg_setup functions 847# pkg_setup functions
673#============================================================== 848#==============================================================
674setup_headers() { 849setup_headers() {
688 863
689# unipatch 864# unipatch
690#============================================================== 865#==============================================================
691unipatch() { 866unipatch() {
692 local i x y z extention PIPE_CMD UNIPATCH_DROP KPATCH_DIR PATCH_DEPTH ELINE 867 local i x y z extention PIPE_CMD UNIPATCH_DROP KPATCH_DIR PATCH_DEPTH ELINE
693 local STRICT_COUNT PATCH_LEVEL myLC_ALL myLANG extglob_bak 868 local STRICT_COUNT PATCH_LEVEL myLC_ALL myLANG
694 869
695 # set to a standard locale to ensure sorts are ordered properly. 870 # set to a standard locale to ensure sorts are ordered properly.
696 myLC_ALL="${LC_ALL}" 871 myLC_ALL="${LC_ALL}"
697 myLANG="${LANG}" 872 myLANG="${LANG}"
698 LC_ALL="C" 873 LC_ALL="C"
700 875
701 [ -z "${KPATCH_DIR}" ] && KPATCH_DIR="${WORKDIR}/patches/" 876 [ -z "${KPATCH_DIR}" ] && KPATCH_DIR="${WORKDIR}/patches/"
702 [ ! -d ${KPATCH_DIR} ] && mkdir -p ${KPATCH_DIR} 877 [ ! -d ${KPATCH_DIR} ] && mkdir -p ${KPATCH_DIR}
703 878
704 # We're gonna need it when doing patches with a predefined patchlevel 879 # We're gonna need it when doing patches with a predefined patchlevel
705 extglob_bak=$(shopt -p extglob)
706 shopt -s extglob 880 eshopts_push -s extglob
707 881
708 # This function will unpack all passed tarballs, add any passed patches, and remove any passed patchnumbers 882 # This function will unpack all passed tarballs, add any passed patches, and remove any passed patchnumbers
709 # usage can be either via an env var or by params 883 # usage can be either via an env var or by params
710 # although due to the nature we pass this within this eclass 884 # although due to the nature we pass this within this eclass
711 # it shall be by param only. 885 # it shall be by param only.
712 # -z "${UNIPATCH_LIST}" ] && UNIPATCH_LIST="${@}" 886 # -z "${UNIPATCH_LIST}" ] && UNIPATCH_LIST="${@}"
713 UNIPATCH_LIST="${@}" 887 UNIPATCH_LIST="${@}"
714 888
715 #unpack any passed tarballs 889 #unpack any passed tarballs
716 for i in ${UNIPATCH_LIST}; do 890 for i in ${UNIPATCH_LIST}; do
717 if [ -n "$(echo ${i} | grep -e "\.tar" -e "\.tbz" -e "\.tgz")" ]; then 891 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 892 if [ -n "${UNIPATCH_STRICTORDER}" ]; then
730 unset z 893 unset z
731 STRICT_COUNT=$((10#${STRICT_COUNT} + 1)) 894 STRICT_COUNT=$((10#${STRICT_COUNT} + 1))
732 for((y=0; y<$((6 - ${#STRICT_COUNT})); y++)); 895 for((y=0; y<$((6 - ${#STRICT_COUNT})); y++));
733 do z="${z}0"; 896 do z="${z}0";
734 done 897 done
735 PATCH_ORDER="${z}${STRICT_COUNT}" 898 PATCH_ORDER="${z}${STRICT_COUNT}"
736 899
737 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/ 900 mkdir -p "${KPATCH_DIR}/${PATCH_ORDER}"
738 ${PIPE_CMD} ${i/:*/} -C ${KPATCH_DIR}/${PATCH_ORDER}/ 1>/dev/null 901 pushd "${KPATCH_DIR}/${PATCH_ORDER}" >/dev/null
902 unpack ${i##*/}
903 popd >/dev/null
739 else 904 else
740 ${PIPE_CMD} ${i/:*/} -C ${KPATCH_DIR} 1>/dev/null 905 pushd "${KPATCH_DIR}" >/dev/null
906 unpack ${i##*/}
907 popd >/dev/null
741 fi 908 fi
742 909
743 if [ $? == 0 ]; then
744 einfo "${i/*\//} unpacked"
745 [ -n "$(echo ${i} | grep ':')" ] && echo ">>> Strict patch levels not currently supported for tarballed patchsets" 910 [[ ${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 911 else
751 extention=${i/*./} 912 extention=${i/*./}
752 extention=${extention/:*/} 913 extention=${extention/:*/}
753 PIPE_CMD="" 914 PIPE_CMD=""
754 case ${extention} in 915 case ${extention} in
916 xz) PIPE_CMD="xz -dc";;
917 lzma) PIPE_CMD="lzma -dc";;
755 bz2) PIPE_CMD="bzip2 -dc";; 918 bz2) PIPE_CMD="bzip2 -dc";;
756 patch) PIPE_CMD="cat";; 919 patch) PIPE_CMD="cat";;
757 diff) PIPE_CMD="cat";; 920 diff) PIPE_CMD="cat";;
758 gz|Z|z) PIPE_CMD="gzip -dc";; 921 gz|Z|z) PIPE_CMD="gzip -dc";;
759 ZIP|zip) PIPE_CMD="unzip -p";; 922 ZIP|zip) PIPE_CMD="unzip -p";;
782 do z="${z}0"; 945 do z="${z}0";
783 done 946 done
784 PATCH_ORDER="${z}${STRICT_COUNT}" 947 PATCH_ORDER="${z}${STRICT_COUNT}"
785 948
786 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/ 949 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/
787 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL}) 950 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
788 else 951 else
789 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) 952 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
790 fi 953 fi
791 fi 954 fi
792 fi 955 fi
793 done 956 done
794 957
796 x=${KPATCH_DIR} 959 x=${KPATCH_DIR}
797 KPATCH_DIR="" 960 KPATCH_DIR=""
798 for i in $(find ${x} -type d | sort -n); do 961 for i in $(find ${x} -type d | sort -n); do
799 KPATCH_DIR="${KPATCH_DIR} ${i}" 962 KPATCH_DIR="${KPATCH_DIR} ${i}"
800 done 963 done
964
965 # do not apply fbcondecor patch to sparc/sparc64 as it breaks boot
966 # bug #272676
967 if [[ "$(tc-arch)" = "sparc" || "$(tc-arch)" = "sparc64" ]]; then
968 if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.28 ]]; then
969 UNIPATCH_DROP="${UNIPATCH_DROP} *_fbcondecor-0.9.6.patch"
970 echo
971 ewarn "fbcondecor currently prevents sparc/sparc64 from booting"
972 ewarn "for kernel versions >= 2.6.29. Removing fbcondecor patch."
973 ewarn "See https://bugs.gentoo.org/show_bug.cgi?id=272676 for details"
974 echo
975 fi
976 fi
801 977
802 #so now lets get rid of the patchno's we want to exclude 978 #so now lets get rid of the patchno's we want to exclude
803 UNIPATCH_DROP="${UNIPATCH_EXCLUDE} ${UNIPATCH_DROP}" 979 UNIPATCH_DROP="${UNIPATCH_EXCLUDE} ${UNIPATCH_DROP}"
804 for i in ${UNIPATCH_DROP}; do 980 for i in ${UNIPATCH_DROP}; do
805 ebegin "Excluding Patch #${i}" 981 ebegin "Excluding Patch #${i}"
816 [ -z ${i/*.patch*/} ] && PATCH_DEPTH=${i/*.patch/} 992 [ -z ${i/*.patch*/} ] && PATCH_DEPTH=${i/*.patch/}
817 #[ -z ${i/*.diff*/} ] && PATCH_DEPTH=${i/*.diff/} 993 #[ -z ${i/*.diff*/} ] && PATCH_DEPTH=${i/*.diff/}
818 994
819 if [ -z "${PATCH_DEPTH}" ]; then PATCH_DEPTH=0; fi 995 if [ -z "${PATCH_DEPTH}" ]; then PATCH_DEPTH=0; fi
820 996
821 ebegin "Applying ${i/*\//} (-p${PATCH_DEPTH}+)"
822 while [ ${PATCH_DEPTH} -lt 5 ]; do 997 while [ ${PATCH_DEPTH} -lt 5 ]; do
823 echo "Attempting Dry-run:" >> ${STDERR_T} 998 echo "Attempting Dry-run:" >> ${STDERR_T}
824 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i}" >> ${STDERR_T} 999 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i}" >> ${STDERR_T}
825 echo "=======================================================" >> ${STDERR_T} 1000 echo "=======================================================" >> ${STDERR_T}
826 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i} >> ${STDERR_T}) $? -eq 0 ]; then 1001 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i} >> ${STDERR_T}) $? -eq 0 ]; then
1002 ebegin "Applying ${i/*\//} (-p${PATCH_DEPTH})"
827 echo "Attempting patch:" > ${STDERR_T} 1003 echo "Attempting patch:" > ${STDERR_T}
828 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i}" >> ${STDERR_T} 1004 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i}" >> ${STDERR_T}
829 echo "=======================================================" >> ${STDERR_T} 1005 echo "=======================================================" >> ${STDERR_T}
830 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then 1006 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then
831 eend 0 1007 eend 0
833 break 1009 break
834 else 1010 else
835 eend 1 1011 eend 1
836 eerror "Failed to apply patch ${i/*\//}" 1012 eerror "Failed to apply patch ${i/*\//}"
837 eerror "Please attach ${STDERR_T} to any bug you may post." 1013 eerror "Please attach ${STDERR_T} to any bug you may post."
838 die "Failed to apply ${i/*\//}" 1014 eshopts_pop
1015 die "Failed to apply ${i/*\//} on patch depth ${PATCH_DEPTH}."
839 fi 1016 fi
840 else 1017 else
841 PATCH_DEPTH=$((${PATCH_DEPTH} + 1)) 1018 PATCH_DEPTH=$((${PATCH_DEPTH} + 1))
842 fi 1019 fi
843 done 1020 done
844 if [ ${PATCH_DEPTH} -eq 5 ]; then 1021 if [ ${PATCH_DEPTH} -eq 5 ]; then
845 eend 1 1022 eerror "Failed to dry-run patch ${i/*\//}"
846 eerror "Please attach ${STDERR_T} to any bug you may post." 1023 eerror "Please attach ${STDERR_T} to any bug you may post."
847 die "Unable to dry-run patch." 1024 eshopts_pop
1025 die "Unable to dry-run patch on any patch depth lower than 5."
848 fi 1026 fi
849 done 1027 done
850 done 1028 done
851 1029
852 # This is a quick, and kind of nasty hack to deal with UNIPATCH_DOCS which 1030 # When genpatches is used, we want to install 0000_README which documents
853 # sit in KPATCH_DIR's. This is handled properly in the unipatch rewrite, 1031 # the patches that were used; such that the user can see them, bug #301478.
854 # which is why I'm not taking too much time over this. 1032 if [[ ! -z ${K_WANT_GENPATCHES} ]] ; then
1033 UNIPATCH_DOCS="${UNIPATCH_DOCS} 0000_README"
1034 fi
1035
1036 # When files listed in UNIPATCH_DOCS are found in KPATCH_DIR's, we copy it
1037 # to the temporary directory and remember them in UNIPATCH_DOCS to install
1038 # them during the install phase.
855 local tmp 1039 local tmp
1040 for x in ${KPATCH_DIR}; do
856 for i in ${UNIPATCH_DOCS}; do 1041 for i in ${UNIPATCH_DOCS}; do
857 tmp="${tmp} ${i//*\/}" 1042 if [[ -f "${x}/${i}" ]] ; then
858 cp -f ${i} ${T}/ 1043 tmp="${tmp} \"${T}/${i}\""
1044 cp -f "${x}/${i}" "${T}"/
1045 fi
1046 done
859 done 1047 done
860 UNIPATCH_DOCS="${tmp}" 1048 UNIPATCH_DOCS="${tmp}"
861 1049
862 # clean up KPATCH_DIR's - fixes bug #53610 1050 # clean up KPATCH_DIR's - fixes bug #53610
863 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done 1051 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done
864 1052
865 LC_ALL="${myLC_ALL}" 1053 LC_ALL="${myLC_ALL}"
866 LANG="${myLANG}" 1054 LANG="${myLANG}"
867 eval ${extglob_bak} 1055 eshopts_pop
868} 1056}
869 1057
870# getfilevar accepts 2 vars as follows: 1058# getfilevar accepts 2 vars as follows:
871# getfilevar <VARIABLE> <CONFIGFILE> 1059# getfilevar <VARIABLE> <CONFIGFILE>
872# pulled from linux-info 1060# pulled from linux-info
919 for i in ${COMPAT_URI}; do 1107 for i in ${COMPAT_URI}; do
920 ARCH_PATCH="${ARCH_PATCH} ${DISTDIR}/${i/*\//}" 1108 ARCH_PATCH="${ARCH_PATCH} ${DISTDIR}/${i/*\//}"
921 done 1109 done
922 fi 1110 fi
923 done 1111 done
924}
925
926# sparc nastiness
927#==============================================================
928# This script generates the files in /usr/include/asm for sparc systems
929# during installation of sys-kernel/linux-headers.
930# Will no longer be needed when full 64 bit support is used on sparc64
931# systems.
932#
933# Shamefully ripped from Debian
934# ----------------------------------------------------------------------
935
936# Idea borrowed from RedHat's kernel package
937
938# This is gonna get replaced by something in multilib.eclass soon...
939# --eradicator
940generate_sparc_asm() {
941 local name
942
943 cd $1 || die
944 mkdir asm
945
946 for h in `( ls asm-sparc; ls asm-sparc64 ) | grep '\.h$' | sort -u`; do
947 name="$(echo $h | tr a-z. A-Z_)"
948 # common header
949 echo "/* All asm/ files are generated and point to the corresponding
950 * file in asm-sparc or asm-sparc64.
951 */
952
953#ifndef __SPARCSTUB__${name}__
954#define __SPARCSTUB__${name}__
955" > asm/${h}
956
957 # common for sparc and sparc64
958 if [ -f asm-sparc/$h -a -f asm-sparc64/$h ]; then
959 echo "#ifdef __arch64__
960#include <asm-sparc64/$h>
961#else
962#include <asm-sparc/$h>
963#endif
964" >> asm/${h}
965
966 # sparc only
967 elif [ -f asm-sparc/$h ]; then
968echo "#ifndef __arch64__
969#include <asm-sparc/$h>
970#endif
971" >> asm/${h}
972
973 # sparc64 only
974 else
975echo "#ifdef __arch64__
976#include <asm-sparc64/$h>
977#endif
978" >> asm/${h}
979 fi
980
981 # common footer
982 echo "#endif /* !__SPARCSTUB__${name}__ */" >> asm/${h}
983 done
984 return 0
985} 1112}
986 1113
987headers___fix() { 1114headers___fix() {
988 # Voodoo to partially fix broken upstream headers. 1115 # Voodoo to partially fix broken upstream headers.
989 # note: do not put inline/asm/volatile together (breaks "inline asm volatile") 1116 # note: do not put inline/asm/volatile together (breaks "inline asm volatile")
1009 1136
1010 # allow ebuilds to massage the source tree after patching but before 1137 # allow ebuilds to massage the source tree after patching but before
1011 # we run misc `make` functions below 1138 # we run misc `make` functions below
1012 [[ $(type -t kernel-2_hook_premake) == "function" ]] && kernel-2_hook_premake 1139 [[ $(type -t kernel-2_hook_premake) == "function" ]] && kernel-2_hook_premake
1013 1140
1141 debug-print "Doing epatch_user"
1142 epatch_user
1143
1014 debug-print "Doing unpack_set_extraversion" 1144 debug-print "Doing unpack_set_extraversion"
1015 1145
1016 [[ -z ${K_NOSETEXTRAVERSION} ]] && unpack_set_extraversion 1146 [[ -z ${K_NOSETEXTRAVERSION} ]] && unpack_set_extraversion
1017 unpack_fix_install_path 1147 unpack_fix_install_path
1018 1148
1026 # unpack_2_6 should now be 2.6.17 safe anyways 1156 # unpack_2_6 should now be 2.6.17 safe anyways
1027 if [[ ${ETYPE} == headers ]]; then 1157 if [[ ${ETYPE} == headers ]]; then
1028 kernel_is 2 4 && unpack_2_4 1158 kernel_is 2 4 && unpack_2_4
1029 kernel_is 2 6 && unpack_2_6 1159 kernel_is 2 6 && unpack_2_6
1030 fi 1160 fi
1161
1162 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1163 cp "${DISTDIR}/${DEBLOB_A}" "${T}" || die "cp ${DEBLOB_A} failed"
1164 cp "${DISTDIR}/${DEBLOB_CHECK_A}" "${T}/deblob-check" || die "cp ${DEBLOB_CHECK_A} failed"
1165 chmod +x "${T}/${DEBLOB_A}" "${T}/deblob-check" || die "chmod deblob scripts failed"
1166 fi
1167
1168 # 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
1170 # kernels
1171 if [[ -n ${KV_MINOR} && ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]]
1172 then
1173 sed -i \
1174 -e "s|TOUT := .tmp_gas_check|TOUT := \"${T}\"/.tmp_gas_check|" \
1175 "${S}"/arch/ppc/Makefile
1176 else
1177 sed -i \
1178 -e "s|TOUT := .tmp_gas_check|TOUT := \"${T}\"/.tmp_gas_check|" \
1179 "${S}"/arch/powerpc/Makefile
1180 fi
1031} 1181}
1032 1182
1033kernel-2_src_compile() { 1183kernel-2_src_compile() {
1034 cd "${S}" 1184 cd "${S}"
1035 [[ ${ETYPE} == headers ]] && compile_headers 1185 [[ ${ETYPE} == headers ]] && compile_headers
1186
1187 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1188 echo ">>> Running deblob script ..."
1189 EPYTHON="python2" sh "${T}/${DEBLOB_A}" --force || die "Deblob script failed to run!!!"
1190 fi
1036} 1191}
1192
1193# 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"
1195# actually produces a few support files, they are installed even
1196# though the package is binchecks-restricted.
1197#
1198# Avoid this altogether by making the function moot.
1199kernel-2_src_test() { :; }
1037 1200
1038kernel-2_pkg_preinst() { 1201kernel-2_pkg_preinst() {
1039 [[ ${ETYPE} == headers ]] && preinst_headers 1202 [[ ${ETYPE} == headers ]] && preinst_headers
1040} 1203}
1041 1204
1044 [[ ${ETYPE} == headers ]] && install_headers 1207 [[ ${ETYPE} == headers ]] && install_headers
1045 [[ ${ETYPE} == sources ]] && install_sources 1208 [[ ${ETYPE} == sources ]] && install_sources
1046} 1209}
1047 1210
1048kernel-2_pkg_postinst() { 1211kernel-2_pkg_postinst() {
1049 [[ ${ETYPE} == headers ]] && postinst_headers
1050 [[ ${ETYPE} == sources ]] && postinst_sources 1212 [[ ${ETYPE} == sources ]] && postinst_sources
1051} 1213}
1052 1214
1053kernel-2_pkg_setup() { 1215kernel-2_pkg_setup() {
1054 if kernel_is 2 4; then 1216 if kernel_is 2 4; then
1055 if [ "$( gcc-major-version )" -eq "4" ] ; then 1217 if [[ $(gcc-major-version) -ge 4 ]] ; then
1056 echo 1218 echo
1057 ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with linux-2.4!" 1219 ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with linux-2.4!"
1058 ewarn "Either switch to another gcc-version (via gcc-config) or use a" 1220 ewarn "Either switch to another gcc-version (via gcc-config) or use a"
1059 ewarn "newer kernel that supports gcc-4." 1221 ewarn "newer kernel that supports gcc-4."
1060 echo 1222 echo
1067 1229
1068 ABI="${KERNEL_ABI}" 1230 ABI="${KERNEL_ABI}"
1069 [[ ${ETYPE} == headers ]] && setup_headers 1231 [[ ${ETYPE} == headers ]] && setup_headers
1070 [[ ${ETYPE} == sources ]] && echo ">>> Preparing to unpack ..." 1232 [[ ${ETYPE} == sources ]] && echo ">>> Preparing to unpack ..."
1071} 1233}
1234
1235kernel-2_pkg_postrm() {
1236 # This warning only makes sense for kernel sources.
1237 [[ ${ETYPE} == headers ]] && return 0
1238
1239 # If there isn't anything left behind, then don't complain.
1240 [[ -e ${ROOT}usr/src/linux-${KV_FULL} ]] || return 0
1241 echo
1242 ewarn "Note: Even though you have successfully unmerged "
1243 ewarn "your kernel package, directories in kernel source location: "
1244 ewarn "${ROOT}usr/src/linux-${KV_FULL}"
1245 ewarn "with modified files will remain behind. By design, package managers"
1246 ewarn "will not remove these modified files and the directories they reside in."
1247 echo
1248}

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

  ViewVC Help
Powered by ViewVC 1.1.20