/[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.260 Revision 1.288
1# Copyright 1999-2011 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.260 2011/08/29 01:28:10 vapier Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.288 2013/09/05 17:04:26 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>
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
67# UNIPATCH_DOCS - space delimemeted list of docs to be installed to 73# UNIPATCH_DOCS - space delimemeted list of docs to be installed to
68# the doc dir 74# the doc dir
69# UNIPATCH_STRICTORDER - if this is set places patches into directories of 75# UNIPATCH_STRICTORDER - if this is set places patches into directories of
70# order, so they are applied in the order passed 76# order, so they are applied in the order passed
71 77
78# Changing any other variable in this eclass is not supported; you can request
79# for additional variables to be added by contacting the current maintainer.
80# If you do change them, there is a chance that we will not fix resulting bugs;
81# that of course does not mean we're not willing to help.
82
72inherit eutils toolchain-funcs versionator multilib 83inherit eutils toolchain-funcs versionator multilib
73EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_test src_install pkg_preinst pkg_postinst pkg_postrm 84EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_test src_install pkg_preinst pkg_postinst pkg_postrm
74 85
75# Added by Daniel Ostrow <dostrow@gentoo.org> 86# Added by Daniel Ostrow <dostrow@gentoo.org>
76# This is an ugly hack to get around an issue with a 32-bit userland on ppc64. 87# This is an ugly hack to get around an issue with a 32-bit userland on ppc64.
81if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then 92if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then
82 export CTARGET=${CATEGORY/cross-} 93 export CTARGET=${CATEGORY/cross-}
83fi 94fi
84 95
85HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}" 96HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}"
86[[ -z ${LICENSE} ]] && \
87 LICENSE="GPL-2" 97: ${LICENSE:="GPL-2"}
88 98
89# This is the latest KV_PATCH of the deblob tool available from the 99# This is the latest KV_PATCH of the deblob tool available from the
90# libre-sources upstream. If you bump this, you MUST regenerate the Manifests 100# libre-sources upstream. If you bump this, you MUST regenerate the Manifests
91# for ALL kernel-2 consumer packages where deblob is available. 101# for ALL kernel-2 consumer packages where deblob is available.
92[[ -z ${DEBLOB_MAX_VERSION} ]] && DEBLOB_MAX_VERSION=38 102: ${DEBLOB_MAX_VERSION:=38}
93 103
94# No need to run scanelf/strip on kernel sources/headers (bug #134453). 104# No need to run scanelf/strip on kernel sources/headers (bug #134453).
95RESTRICT="binchecks strip" 105RESTRICT="binchecks strip"
96 106
97# set LINUX_HOSTCFLAGS if not already set 107# set LINUX_HOSTCFLAGS if not already set
98[[ -z ${LINUX_HOSTCFLAGS} ]] && \
99 LINUX_HOSTCFLAGS="-Wall -Wstrict-prototypes -Os -fomit-frame-pointer -I${S}/include" 108: ${LINUX_HOSTCFLAGS:="-Wall -Wstrict-prototypes -Os -fomit-frame-pointer -I${S}/include"}
100 109
101# debugging functions 110# debugging functions
102#============================================================== 111#==============================================================
103# this function exists only to help debug kernel-2.eclass 112# this function exists only to help debug kernel-2.eclass
104# if you are adding new functionality in, put a call to it 113# if you are adding new functionality in, put a call to it
116handle_genpatches() { 125handle_genpatches() {
117 local tarball 126 local tarball
118 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return 1 127 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return 1
119 128
120 debug-print "Inside handle_genpatches" 129 debug-print "Inside handle_genpatches"
121 local oldifs=${IFS}
122 export IFS="."
123 local OKV_ARRAY=( $OKV ) 130 local OKV_ARRAY
124 export IFS=${oldifs} 131 IFS="." read -r -a OKV_ARRAY <<<"${OKV}"
125 132
126 # for > 3.0 kernels, handle genpatches tarball name 133 # for > 3.0 kernels, handle genpatches tarball name
127 # genpatches for 3.0 and 3.0.1 might be named 134 # genpatches for 3.0 and 3.0.1 might be named
128 # genpatches-3.0-1.base.tar.bz2 and genpatches-3.0-2.base.tar.bz2 135 # genpatches-3.0-1.base.tar.xz and genpatches-3.0-2.base.tar.xz
129 # respectively. Handle this. 136 # respectively. Handle this.
130 137
131 for i in ${K_WANT_GENPATCHES} ; do 138 for i in ${K_WANT_GENPATCHES} ; do
132 if [[ ${KV_MAJOR} -ge 3 ]]; then 139 if [[ ${KV_MAJOR} -ge 3 ]]; then
133 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then 140 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
134 tarball="genpatches-${KV_MAJOR}.${KV_MINOR}-${K_GENPATCHES_VER}.${i}.tar.bz2" 141 tarball="genpatches-${KV_MAJOR}.${KV_MINOR}-${K_GENPATCHES_VER}.${i}.tar.xz"
142 else
143 tarball="genpatches-${KV_MAJOR}.${KV_PATCH}-${K_GENPATCHES_VER}.${i}.tar.xz"
144 fi
135 else 145 else
136 tarball="genpatches-${KV_MAJOR}.${KV_PATCH}-${K_GENPATCHES_VER}.${i}.tar.bz2"
137 fi
138 else
139 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.bz2" 146 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.xz"
140 fi 147 fi
148
149 local use_cond_start="" use_cond_end=""
150
151 if [[ "${i}" == "experimental" && -z ${K_EXP_GENPATCHES_PULL} && -z ${K_EXP_GENPATCHES_NOUSE} ]] ; then
152 use_cond_start="experimental? ( "
153 use_cond_end=" )"
154
155 if use experimental ; then
156 UNIPATCH_LIST_GENPATCHES+=" ${DISTDIR}/${tarball}"
157 debug-print "genpatches tarball: $tarball"
158 fi
159 else
160 UNIPATCH_LIST_GENPATCHES+=" ${DISTDIR}/${tarball}"
141 debug-print "genpatches tarball: $tarball" 161 debug-print "genpatches tarball: $tarball"
142 GENPATCHES_URI="${GENPATCHES_URI} mirror://gentoo/${tarball}" 162 fi
143 UNIPATCH_LIST_GENPATCHES="${UNIPATCH_LIST_GENPATCHES} ${DISTDIR}/${tarball}" 163
164 GENPATCHES_URI+=" ${use_cond_start}mirror://gentoo/${tarball}${use_cond_end}"
144 done 165 done
145} 166}
146 167
147detect_version() { 168detect_version() {
148 # this function will detect and set 169 # this function will detect and set
149 # - OKV: Original Kernel Version (2.6.0/2.6.0-test11) 170 # - OKV: Original Kernel Version (2.6.0/2.6.0-test11)
150 # - KV: Kernel Version (2.6.0-gentoo/2.6.0-test11-gentoo-r1) 171 # - KV: Kernel Version (2.6.0-gentoo/2.6.0-test11-gentoo-r1)
151 # - EXTRAVERSION: The additional version appended to OKV (-gentoo/-gentoo-r1) 172 # - EXTRAVERSION: The additional version appended to OKV (-gentoo/-gentoo-r1)
152 173
153 if [[ -n ${KV_FULL} ]]; then 174 # We've already run, so nothing to do here.
154 # we will set this for backwards compatibility. 175 [[ -n ${KV_FULL} ]] && return 0
155 KV=${KV_FULL}
156
157 # we know KV_FULL so lets stop here. but not without resetting S
158 S=${WORKDIR}/linux-${KV_FULL}
159 return
160 fi
161 176
162 # CKV is used as a comparison kernel version, which is used when 177 # CKV is used as a comparison kernel version, which is used when
163 # PV doesnt reflect the genuine kernel version. 178 # PV doesnt reflect the genuine kernel version.
164 # this gets set to the portage style versioning. ie: 179 # this gets set to the portage style versioning. ie:
165 # CKV=2.6.11_rc4 180 # CKV=2.6.11_rc4
170 OKV=${OKV/-r*} 185 OKV=${OKV/-r*}
171 OKV=${OKV/_p*} 186 OKV=${OKV/_p*}
172 187
173 KV_MAJOR=$(get_version_component_range 1 ${OKV}) 188 KV_MAJOR=$(get_version_component_range 1 ${OKV})
174 # handle if OKV is X.Y or X.Y.Z (e.g. 3.0 or 3.0.1) 189 # handle if OKV is X.Y or X.Y.Z (e.g. 3.0 or 3.0.1)
175 local oldifs=${IFS}
176 export IFS="."
177 local OKV_ARRAY=( $OKV ) 190 local OKV_ARRAY
178 export IFS=${oldifs} 191 IFS="." read -r -a OKV_ARRAY <<<"${OKV}"
179 192
180 # if KV_MAJOR >= 3, then we have no more KV_MINOR 193 # if KV_MAJOR >= 3, then we have no more KV_MINOR
181 #if [[ ${KV_MAJOR} -lt 3 ]]; then 194 #if [[ ${KV_MAJOR} -lt 3 ]]; then
182 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then 195 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
183 KV_MINOR=$(get_version_component_range 2 ${OKV}) 196 KV_MINOR=$(get_version_component_range 2 ${OKV})
217 230
218# if [[ ${KV_MAJOR} -ge 3 ]]; then 231# if [[ ${KV_MAJOR} -ge 3 ]]; then
219 if [[ ${#OKV_ARRAY[@]} -lt 3 ]]; then 232 if [[ ${#OKV_ARRAY[@]} -lt 3 ]]; then
220 KV_PATCH_ARR=(${KV_PATCH//\./ }) 233 KV_PATCH_ARR=(${KV_PATCH//\./ })
221 234
222 # at this point 080811, Linus is putting 3.1 kernels in 3.0 directory 235 # at this point 031412, Linus is putting all 3.x kernels in a
223 # revisit when 3.1 is released 236 # 3.x directory, may need to revisit when 4.x is released
224 if [[ ${KV_PATCH} -gt 0 ]]; then
225 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))"
226 else
227 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_PATCH_ARR}" 237 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.x"
228 fi 238
229 # KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_PATCH_ARR}"
230 [[ -n "${K_LONGTERM}" ]] && 239 [[ -n "${K_LONGTERM}" ]] &&
231 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_PATCH_ARR}" 240 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_PATCH_ARR}"
232 else 241 else
233 #KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.0" 242 #KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.0"
234 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}" 243 #KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}"
244 if [[ ${KV_MAJOR} -ge 3 ]]; then
245 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.x"
246 else
247 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}"
248 fi
249
235 [[ -n "${K_LONGTERM}" ]] && 250 [[ -n "${K_LONGTERM}" ]] &&
251 #KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm"
236 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}" 252 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
237 fi 253 fi
238 254
239 debug-print "KERNEL_BASE_URI is ${KERNEL_BASE_URI}" 255 debug-print "KERNEL_BASE_URI is ${KERNEL_BASE_URI}"
240 256
241 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then 257 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then
242 # handle non genpatch using sources correctly 258 # handle non genpatch using sources correctly
243 if [[ -z ${K_WANT_GENPATCHES} && -z ${K_GENPATCHES_VER} && ${KV_PATCH} -gt 0 ]]; then 259 if [[ -z ${K_WANT_GENPATCHES} && -z ${K_GENPATCHES_VER} && ${KV_PATCH} -gt 0 ]]; then
244 KERNEL_URI="${KERNEL_BASE_URI}/patch-${OKV}.bz2" 260 KERNEL_URI="${KERNEL_BASE_URI}/patch-${OKV}.xz"
245 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.bz2" 261 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.xz"
246 fi 262 fi
247 KERNEL_URI="${KERNEL_URI} ${KERNEL_BASE_URI}/linux-${KV_MAJOR}.${KV_MINOR}.tar.bz2" 263 KERNEL_URI="${KERNEL_URI} ${KERNEL_BASE_URI}/linux-${KV_MAJOR}.${KV_MINOR}.tar.xz"
248 else 264 else
249 KERNEL_URI="${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 265 KERNEL_URI="${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
250 fi 266 fi
251 267
252 RELEASE=${CKV/${OKV}} 268 RELEASE=${CKV/${OKV}}
253 RELEASE=${RELEASE/_beta} 269 RELEASE=${RELEASE/_beta}
254 RELEASE=${RELEASE/_rc/-rc} 270 RELEASE=${RELEASE/_rc/-rc}
298 if [[ -n ${KV_MINOR} ]]; then 314 if [[ -n ${KV_MINOR} ]]; then
299 OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}" 315 OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
300 else 316 else
301 OKV="${KV_MAJOR}.${KV_PATCH}" 317 OKV="${KV_MAJOR}.${KV_PATCH}"
302 fi 318 fi
303 KERNEL_URI="${KERNEL_BASE_URI}/patch-${CKV}.bz2 319 KERNEL_URI="${KERNEL_BASE_URI}/patch-${CKV}.xz
304 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 320 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
305 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.bz2" 321 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.xz"
306 fi 322 fi
307 323
308 # We need to set this using OKV, but we need to set it before we do any 324 # We need to set this using OKV, but we need to set it before we do any
309 # messing around with OKV based on RELEASETYPE 325 # messing around with OKV based on RELEASETYPE
310 KV_FULL=${OKV}${EXTRAVERSION} 326 KV_FULL=${OKV}${EXTRAVERSION}
315 331
316 # -rc-git pulls can be achieved by specifying CKV 332 # -rc-git pulls can be achieved by specifying CKV
317 # for example: 333 # for example:
318 # CKV="2.6.11_rc3_pre2" 334 # CKV="2.6.11_rc3_pre2"
319 # will pull: 335 # will pull:
320 # linux-2.6.10.tar.bz2 & patch-2.6.11-rc3.bz2 & patch-2.6.11-rc3-git2.bz2 336 # linux-2.6.10.tar.xz & patch-2.6.11-rc3.xz & patch-2.6.11-rc3-git2.xz
321 337
322 if [[ ${KV_MAJOR}${KV_MINOR} -eq 26 ]]; then 338 if [[ ${KV_MAJOR}${KV_MINOR} -eq 26 ]]; then
323 339
324 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then 340 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
325 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))" 341 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
326 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.bz2 342 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.xz
327 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 343 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
328 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2" 344 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.xz"
329 fi 345 fi
330 346
331 if [[ ${RELEASETYPE} == -git ]]; then 347 if [[ ${RELEASETYPE} == -git ]]; then
332 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.bz2 348 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.xz
333 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 349 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
334 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2" 350 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.xz"
335 fi 351 fi
336 352
337 if [[ ${RELEASETYPE} == -rc-git ]]; then 353 if [[ ${RELEASETYPE} == -rc-git ]]; then
338 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))" 354 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
339 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2 355 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.xz
340 ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 356 ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.xz
341 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 357 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
342 358
343 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2" 359 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.xz ${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.xz"
344 fi 360 fi
345 else 361 else
346 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then 362 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
347 if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then 363 if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then
348 OKV="2.6.39" 364 OKV="2.6.39"
349 else 365 else
350 KV_PATCH_ARR=(${KV_PATCH//\./ }) 366 KV_PATCH_ARR=(${KV_PATCH//\./ })
351 OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))" 367 OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))"
352 fi 368 fi
353 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.bz2 369 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.xz
354 ${KERNEL_BASE_URI}/testing/linux-${OKV}.tar.bz2" 370 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
355 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2" 371 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.xz"
356 fi 372 fi
357 373
358 if [[ ${RELEASETYPE} == -git ]]; then 374 if [[ ${RELEASETYPE} == -git ]]; then
359 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.bz2 375 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.xz
360 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 376 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
361 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2" 377 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.xz"
362 fi 378 fi
363 379
364 if [[ ${RELEASETYPE} == -rc-git ]]; then 380 if [[ ${RELEASETYPE} == -rc-git ]]; then
365 if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then 381 if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then
366 OKV="2.6.39" 382 OKV="2.6.39"
367 else 383 else
368 KV_PATCH_ARR=(${KV_PATCH//\./ }) 384 KV_PATCH_ARR=(${KV_PATCH//\./ })
369 OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))" 385 OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))"
370 fi 386 fi
371 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.bz2 387 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.xz
372 ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.bz2 388 ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.xz
373 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 389 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
374 390
375 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.bz2" 391 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.xz ${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.xz"
376 fi 392 fi
377 393
378 394
379 fi 395 fi
380 396
382 debug-print-kernel2-variables 398 debug-print-kernel2-variables
383 399
384 handle_genpatches 400 handle_genpatches
385} 401}
386 402
403# Note: duplicated in linux-info.eclass
387kernel_is() { 404kernel_is() {
388 # ALL of these should be set before we can safely continue this function. 405 # ALL of these should be set before we can safely continue this function.
389 # some of the sources have in the past had only one set. 406 # some of the sources have in the past had only one set.
390 local v n=0 407 local v n=0
391 for v in OKV KV_{MAJOR,MINOR,PATCH} ; do [[ -z ${!v} ]] && n=1 ; done 408 for v in OKV KV_{MAJOR,MINOR,PATCH} ; do [[ -z ${!v} ]] && n=1 ; done
392 [[ $n -eq 1 ]] && detect_version 409 [[ $n -eq 1 ]] && detect_version
393 unset v n 410 unset v n
394 411
395 # Now we can continue 412 # Now we can continue
396 local operator test value x=0 y=0 z=0 413 local operator test value
397 414
398 case ${1} in 415 case ${1#-} in
399 lt) operator="-lt"; shift;; 416 lt) operator="-lt"; shift;;
400 gt) operator="-gt"; shift;; 417 gt) operator="-gt"; shift;;
401 le) operator="-le"; shift;; 418 le) operator="-le"; shift;;
402 ge) operator="-ge"; shift;; 419 ge) operator="-ge"; shift;;
403 eq) operator="-eq"; shift;; 420 eq) operator="-eq"; shift;;
404 *) operator="-eq";; 421 *) operator="-eq";;
405 esac 422 esac
406
407 for x in ${@}; do
408 for((y=0; y<$((3 - ${#x})); y++)); do value="${value}0"; done
409 value="${value}${x}"
410 z=$((${z} + 1))
411
412 case ${z} in
413 1) for((y=0; y<$((3 - ${#KV_MAJOR})); y++)); do test="${test}0"; done;
414 test="${test}${KV_MAJOR}";;
415 2) for((y=0; y<$((3 - ${#KV_MINOR})); y++)); do test="${test}0"; done;
416 test="${test}${KV_MINOR}";;
417 3) for((y=0; y<$((3 - ${#KV_PATCH})); y++)); do test="${test}0"; done;
418 test="${test}${KV_PATCH}";;
419 *) die "Error in kernel-2_kernel_is(): Too many parameters.";; 423 [[ $# -gt 3 ]] && die "Error in kernel-2_kernel_is(): too many parameters"
420 esac
421 done
422 424
423 [ ${test} ${operator} ${value} ] && return 0 || return 1 425 : $(( test = (KV_MAJOR << 16) + (KV_MINOR << 8) + KV_PATCH ))
426 : $(( value = (${1:-${KV_MAJOR}} << 16) + (${2:-${KV_MINOR}} << 8) + ${3:-${KV_PATCH}} ))
427 [ ${test} ${operator} ${value} ]
424} 428}
425 429
426kernel_is_2_4() { 430kernel_is_2_4() {
427 kernel_is 2 4 431 kernel_is 2 4
428} 432}
434# Capture the sources type and set DEPENDs 438# Capture the sources type and set DEPENDs
435if [[ ${ETYPE} == sources ]]; then 439if [[ ${ETYPE} == sources ]]; then
436 DEPEND="!build? ( sys-apps/sed 440 DEPEND="!build? ( sys-apps/sed
437 >=sys-devel/binutils-2.11.90.0.31 )" 441 >=sys-devel/binutils-2.11.90.0.31 )"
438 RDEPEND="!build? ( >=sys-libs/ncurses-5.2 442 RDEPEND="!build? ( >=sys-libs/ncurses-5.2
439 sys-devel/make )" 443 sys-devel/make
444 dev-lang/perl
445 sys-devel/bc )"
440 PDEPEND="!build? ( virtual/dev-manager )" 446 PDEPEND="!build? ( virtual/dev-manager )"
441 447
442 SLOT="${PVR}" 448 SLOT="${PVR}"
443 DESCRIPTION="Sources for the ${KV_MAJOR}.${KV_MINOR:-$KV_PATCH} linux kernel" 449 DESCRIPTION="Sources based on the Linux Kernel."
444 IUSE="symlink build" 450 IUSE="symlink build"
445 451
446 # Bug #266157, deblob for libre support 452 # Bug #266157, deblob for libre support
447 if [[ -z ${K_PREDEBLOBBED} ]] ; then 453 if [[ -z ${K_PREDEBLOBBED} ]] ; then
448 # Bug #359865, force a call to detect_version if needed 454 # Bug #359865, force a call to detect_version if needed
476 DEBLOB_CHECK_URI="mirror://gentoo/${DEBLOB_CHECK_A}" 482 DEBLOB_CHECK_URI="mirror://gentoo/${DEBLOB_CHECK_A}"
477 fi 483 fi
478 DEBLOB_URI="${DEBLOB_HOMEPAGE}/${DEBLOB_URI_PATH}/${DEBLOB_A}" 484 DEBLOB_URI="${DEBLOB_HOMEPAGE}/${DEBLOB_URI_PATH}/${DEBLOB_A}"
479 HOMEPAGE="${HOMEPAGE} ${DEBLOB_HOMEPAGE}" 485 HOMEPAGE="${HOMEPAGE} ${DEBLOB_HOMEPAGE}"
480 486
487 DEPEND+=" deblob? ( =dev-lang/python-2* )"
481 KERNEL_URI="${KERNEL_URI} 488 KERNEL_URI="${KERNEL_URI}
482 deblob? ( 489 deblob? (
483 ${DEBLOB_URI} 490 ${DEBLOB_URI}
484 ${DEBLOB_CHECK_URI} 491 ${DEBLOB_CHECK_URI}
485 )" 492 )"
495 502
496 # Since we should NOT honour KBUILD_OUTPUT in headers 503 # Since we should NOT honour KBUILD_OUTPUT in headers
497 # lets unset it here. 504 # lets unset it here.
498 unset KBUILD_OUTPUT 505 unset KBUILD_OUTPUT
499 506
500 if [[ ${CTARGET} = ${CHOST} ]]; then
501 SLOT="0" 507 SLOT="0"
502 else
503 SLOT="${CTARGET}"
504 fi
505else 508else
506 eerror "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\"" 509 eerror "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\""
507 die "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\"" 510 die "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\""
508fi 511fi
509 512
567} 570}
568 571
569universal_unpack() { 572universal_unpack() {
570 debug-print "Inside universal_unpack" 573 debug-print "Inside universal_unpack"
571 574
572 local oldifs=${IFS}
573 export IFS="."
574 local OKV_ARRAY=( $OKV ) 575 local OKV_ARRAY
575 export IFS=${oldifs} 576 IFS="." read -r -a OKV_ARRAY <<<"${OKV}"
576 577
577 cd "${WORKDIR}" 578 cd "${WORKDIR}"
578 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then 579 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then
579 unpack linux-${KV_MAJOR}.${KV_MINOR}.tar.bz2 580 unpack linux-${KV_MAJOR}.${KV_MINOR}.tar.xz
580 else 581 else
581 unpack linux-${OKV}.tar.bz2 582 unpack linux-${OKV}.tar.xz
582 fi 583 fi
583 584
584 if [[ -d "linux" ]]; then 585 if [[ -d "linux" ]]; then
585 debug-print "Moving linux to linux-${KV_FULL}" 586 debug-print "Moving linux to linux-${KV_FULL}"
586 mv linux linux-${KV_FULL} \ 587 mv linux linux-${KV_FULL} \
603 cd "${S}" 604 cd "${S}"
604 605
605 # remove all backup files 606 # remove all backup files
606 find . -iname "*~" -exec rm {} \; 2> /dev/null 607 find . -iname "*~" -exec rm {} \; 2> /dev/null
607 608
608 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox
609 # only do this for kernel < 2.6.27 since this file does not exist in later
610 # kernels
611 if [[ -n ${KV_MINOR} && ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]]
612 then
613 sed -i \
614 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
615 "${S}"/arch/ppc/Makefile
616 else
617 sed -i \
618 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
619 "${S}"/arch/powerpc/Makefile
620 fi
621} 609}
622 610
623unpack_set_extraversion() { 611unpack_set_extraversion() {
624 cd "${S}" 612 cd "${S}"
625 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile 613 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile
702} 690}
703 691
704# install functions 692# install functions
705#============================================================== 693#==============================================================
706install_universal() { 694install_universal() {
707 #fix silly permissions in tarball 695 # Fix silly permissions in tarball
708 cd "${WORKDIR}" 696 cd "${WORKDIR}"
709 chown -R root:0 * >& /dev/null 697 chown -R 0:0 * >& /dev/null
710 chmod -R a+r-w+X,u+w * 698 chmod -R a+r-w+X,u+w *
711 cd ${OLDPWD} 699 cd ${OLDPWD}
712} 700}
713 701
714install_headers() { 702install_headers() {
719 if kernel_is ge 2 6 18 ; then 707 if kernel_is ge 2 6 18 ; then
720 env_setup_xmakeopts 708 env_setup_xmakeopts
721 emake headers_install INSTALL_HDR_PATH="${D}"/${ddir}/.. ${xmakeopts} || die 709 emake headers_install INSTALL_HDR_PATH="${D}"/${ddir}/.. ${xmakeopts} || die
722 710
723 # let other packages install some of these headers 711 # let other packages install some of these headers
724 rm -rf "${D}"/${ddir}/sound #alsa-headers
725 rm -rf "${D}"/${ddir}/scsi #glibc/uclibc/etc... 712 rm -rf "${D}"/${ddir}/scsi #glibc/uclibc/etc...
726 return 0 713 return 0
727 fi 714 fi
728 715
729 # Do not use "linux/*" as that can cause problems with very long 716 # Do not use "linux/*" as that can cause problems with very long
771 echo "Please check the ebuild ChangeLog for more details." \ 758 echo "Please check the ebuild ChangeLog for more details." \
772 > "${S}"/patches.txt 759 > "${S}"/patches.txt
773 fi 760 fi
774 761
775 mv ${WORKDIR}/linux* "${D}"/usr/src 762 mv ${WORKDIR}/linux* "${D}"/usr/src
763
764 if [[ -n "${UNIPATCH_DOCS}" ]] ; then
765 for i in ${UNIPATCH_DOCS}; do
766 dodoc "${T}"/${i}
767 done
768 fi
776} 769}
777 770
778# pkg_preinst functions 771# pkg_preinst functions
779#============================================================== 772#==============================================================
780preinst_headers() { 773preinst_headers() {
839 fi 832 fi
840 833
841 # optionally display security unsupported message 834 # optionally display security unsupported message
842 # Start with why 835 # Start with why
843 if [[ ${K_SECURITY_UNSUPPORTED} = deblob ]]; then 836 if [[ ${K_SECURITY_UNSUPPORTED} = deblob ]]; then
844 ewarn "Deblobbed kernels are UNSUPPORTED by Gentoo Security." 837 ewarn "Deblobbed kernels may not be up-to-date security-wise"
838 ewarn "as they depend on external scripts."
845 elif [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then 839 elif [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
846 ewarn "${PN} is UNSUPPORTED by Gentoo Security." 840 ewarn "${PN} is UNSUPPORTED by Gentoo Security."
847 fi 841 fi
848 # And now the general message. 842 # And now the general message.
849 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then 843 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
979 else 973 else
980 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed" 974 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
981 fi 975 fi
982 fi 976 fi
983 fi 977 fi
978
979 # If experimental was not chosen by the user, drop experimental patches not in K_EXP_GENPATCHES_LIST.
980 if [[ "${i}" == *"genpatches-"*".experimental."* && -n ${K_EXP_GENPATCHES_PULL} ]] ; then
981 if [[ -z ${K_EXP_GENPATCHES_NOUSE} ]] && use experimental; then
982 continue
983 fi
984
985 local j
986 for j in ${KPATCH_DIR}/*/50*_*.patch*; do
987 if [[ ! "${K_EXP_GENPATCHES_LIST}" == *"$(basename ${j})"* ]] ; then
988 UNIPATCH_DROP+=" $(basename ${j})"
989 fi
990 done
991 fi
984 done 992 done
985 993
986 #populate KPATCH_DIRS so we know where to look to remove the excludes 994 #populate KPATCH_DIRS so we know where to look to remove the excludes
987 x=${KPATCH_DIR} 995 x=${KPATCH_DIR}
988 KPATCH_DIR="" 996 KPATCH_DIR=""
1020 [ -z ${i/*.patch*/} ] && PATCH_DEPTH=${i/*.patch/} 1028 [ -z ${i/*.patch*/} ] && PATCH_DEPTH=${i/*.patch/}
1021 #[ -z ${i/*.diff*/} ] && PATCH_DEPTH=${i/*.diff/} 1029 #[ -z ${i/*.diff*/} ] && PATCH_DEPTH=${i/*.diff/}
1022 1030
1023 if [ -z "${PATCH_DEPTH}" ]; then PATCH_DEPTH=0; fi 1031 if [ -z "${PATCH_DEPTH}" ]; then PATCH_DEPTH=0; fi
1024 1032
1025 ebegin "Applying ${i/*\//} (-p${PATCH_DEPTH}+)"
1026 while [ ${PATCH_DEPTH} -lt 5 ]; do 1033 while [ ${PATCH_DEPTH} -lt 5 ]; do
1027 echo "Attempting Dry-run:" >> ${STDERR_T} 1034 echo "Attempting Dry-run:" >> ${STDERR_T}
1028 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i}" >> ${STDERR_T} 1035 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i}" >> ${STDERR_T}
1029 echo "=======================================================" >> ${STDERR_T} 1036 echo "=======================================================" >> ${STDERR_T}
1030 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i} >> ${STDERR_T}) $? -eq 0 ]; then 1037 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i} >> ${STDERR_T}) $? -eq 0 ]; then
1038 ebegin "Applying ${i/*\//} (-p${PATCH_DEPTH})"
1031 echo "Attempting patch:" > ${STDERR_T} 1039 echo "Attempting patch:" > ${STDERR_T}
1032 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i}" >> ${STDERR_T} 1040 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i}" >> ${STDERR_T}
1033 echo "=======================================================" >> ${STDERR_T} 1041 echo "=======================================================" >> ${STDERR_T}
1034 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then 1042 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then
1035 eend 0 1043 eend 0
1038 else 1046 else
1039 eend 1 1047 eend 1
1040 eerror "Failed to apply patch ${i/*\//}" 1048 eerror "Failed to apply patch ${i/*\//}"
1041 eerror "Please attach ${STDERR_T} to any bug you may post." 1049 eerror "Please attach ${STDERR_T} to any bug you may post."
1042 eshopts_pop 1050 eshopts_pop
1043 die "Failed to apply ${i/*\//}" 1051 die "Failed to apply ${i/*\//} on patch depth ${PATCH_DEPTH}."
1044 fi 1052 fi
1045 else 1053 else
1046 PATCH_DEPTH=$((${PATCH_DEPTH} + 1)) 1054 PATCH_DEPTH=$((${PATCH_DEPTH} + 1))
1047 fi 1055 fi
1048 done 1056 done
1049 if [ ${PATCH_DEPTH} -eq 5 ]; then 1057 if [ ${PATCH_DEPTH} -eq 5 ]; then
1050 eend 1 1058 eerror "Failed to dry-run patch ${i/*\//}"
1051 eerror "Please attach ${STDERR_T} to any bug you may post." 1059 eerror "Please attach ${STDERR_T} to any bug you may post."
1052 eshopts_pop 1060 eshopts_pop
1053 die "Unable to dry-run patch." 1061 die "Unable to dry-run patch on any patch depth lower than 5."
1054 fi 1062 fi
1055 done 1063 done
1056 done 1064 done
1057 1065
1058 # This is a quick, and kind of nasty hack to deal with UNIPATCH_DOCS which 1066 # When genpatches is used, we want to install 0000_README which documents
1059 # sit in KPATCH_DIR's. This is handled properly in the unipatch rewrite, 1067 # the patches that were used; such that the user can see them, bug #301478.
1060 # which is why I'm not taking too much time over this. 1068 if [[ ! -z ${K_WANT_GENPATCHES} ]] ; then
1069 UNIPATCH_DOCS="${UNIPATCH_DOCS} 0000_README"
1070 fi
1071
1072 # When files listed in UNIPATCH_DOCS are found in KPATCH_DIR's, we copy it
1073 # to the temporary directory and remember them in UNIPATCH_DOCS to install
1074 # them during the install phase.
1061 local tmp 1075 local tmp
1076 for x in ${KPATCH_DIR}; do
1062 for i in ${UNIPATCH_DOCS}; do 1077 for i in ${UNIPATCH_DOCS}; do
1078 if [[ -f "${x}/${i}" ]] ; then
1063 tmp="${tmp} ${i//*\/}" 1079 tmp="${tmp} ${i}"
1064 cp -f ${i} "${T}"/ 1080 cp -f "${x}/${i}" "${T}"/
1081 fi
1082 done
1065 done 1083 done
1066 UNIPATCH_DOCS="${tmp}" 1084 UNIPATCH_DOCS="${tmp}"
1067 1085
1068 # clean up KPATCH_DIR's - fixes bug #53610 1086 # clean up KPATCH_DIR's - fixes bug #53610
1069 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done 1087 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done
1125 for i in ${COMPAT_URI}; do 1143 for i in ${COMPAT_URI}; do
1126 ARCH_PATCH="${ARCH_PATCH} ${DISTDIR}/${i/*\//}" 1144 ARCH_PATCH="${ARCH_PATCH} ${DISTDIR}/${i/*\//}"
1127 done 1145 done
1128 fi 1146 fi
1129 done 1147 done
1130}
1131
1132# sparc nastiness
1133#==============================================================
1134# This script generates the files in /usr/include/asm for sparc systems
1135# during installation of sys-kernel/linux-headers.
1136# Will no longer be needed when full 64 bit support is used on sparc64
1137# systems.
1138#
1139# Shamefully ripped from Debian
1140# ----------------------------------------------------------------------
1141
1142# Idea borrowed from RedHat's kernel package
1143
1144# This is gonna get replaced by something in multilib.eclass soon...
1145# --eradicator
1146generate_sparc_asm() {
1147 local name
1148
1149 cd $1 || die
1150 mkdir asm
1151
1152 for h in `( ls asm-sparc; ls asm-sparc64 ) | grep '\.h$' | sort -u`; do
1153 name="$(echo $h | tr a-z. A-Z_)"
1154 # common header
1155 echo "/* All asm/ files are generated and point to the corresponding
1156 * file in asm-sparc or asm-sparc64.
1157 */
1158
1159#ifndef __SPARCSTUB__${name}__
1160#define __SPARCSTUB__${name}__
1161" > asm/${h}
1162
1163 # common for sparc and sparc64
1164 if [ -f asm-sparc/$h -a -f asm-sparc64/$h ]; then
1165 echo "#ifdef __arch64__
1166#include <asm-sparc64/$h>
1167#else
1168#include <asm-sparc/$h>
1169#endif
1170" >> asm/${h}
1171
1172 # sparc only
1173 elif [ -f asm-sparc/$h ]; then
1174echo "#ifndef __arch64__
1175#include <asm-sparc/$h>
1176#endif
1177" >> asm/${h}
1178
1179 # sparc64 only
1180 else
1181echo "#ifdef __arch64__
1182#include <asm-sparc64/$h>
1183#endif
1184" >> asm/${h}
1185 fi
1186
1187 # common footer
1188 echo "#endif /* !__SPARCSTUB__${name}__ */" >> asm/${h}
1189 done
1190 return 0
1191} 1148}
1192 1149
1193headers___fix() { 1150headers___fix() {
1194 # Voodoo to partially fix broken upstream headers. 1151 # Voodoo to partially fix broken upstream headers.
1195 # note: do not put inline/asm/volatile together (breaks "inline asm volatile") 1152 # note: do not put inline/asm/volatile together (breaks "inline asm volatile")
1241 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then 1198 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1242 cp "${DISTDIR}/${DEBLOB_A}" "${T}" || die "cp ${DEBLOB_A} failed" 1199 cp "${DISTDIR}/${DEBLOB_A}" "${T}" || die "cp ${DEBLOB_A} failed"
1243 cp "${DISTDIR}/${DEBLOB_CHECK_A}" "${T}/deblob-check" || die "cp ${DEBLOB_CHECK_A} failed" 1200 cp "${DISTDIR}/${DEBLOB_CHECK_A}" "${T}/deblob-check" || die "cp ${DEBLOB_CHECK_A} failed"
1244 chmod +x "${T}/${DEBLOB_A}" "${T}/deblob-check" || die "chmod deblob scripts failed" 1201 chmod +x "${T}/${DEBLOB_A}" "${T}/deblob-check" || die "chmod deblob scripts failed"
1245 fi 1202 fi
1203
1204 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox
1205 # only do this for kernel < 2.6.27 since this file does not exist in later
1206 # kernels
1207 if [[ -n ${KV_MINOR} && ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]]
1208 then
1209 sed -i \
1210 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
1211 "${S}"/arch/ppc/Makefile
1212 else
1213 sed -i \
1214 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
1215 "${S}"/arch/powerpc/Makefile
1216 fi
1246} 1217}
1247 1218
1248kernel-2_src_compile() { 1219kernel-2_src_compile() {
1249 cd "${S}" 1220 cd "${S}"
1250 [[ ${ETYPE} == headers ]] && compile_headers 1221 [[ ${ETYPE} == headers ]] && compile_headers
1251 1222
1252 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then 1223 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1253 echo ">>> Running deblob script ..." 1224 echo ">>> Running deblob script ..."
1254 sh "${T}/${DEBLOB_A}" --force || \ 1225 EPYTHON="python2" sh "${T}/${DEBLOB_A}" --force || die "Deblob script failed to run!!!"
1255 die "Deblob script failed to run!!!"
1256 fi 1226 fi
1257} 1227}
1258 1228
1259# if you leave it to the default src_test, it will run make to 1229# if you leave it to the default src_test, it will run make to
1260# find whether test/check targets are present; since "make test" 1230# find whether test/check targets are present; since "make test"
1278 [[ ${ETYPE} == sources ]] && postinst_sources 1248 [[ ${ETYPE} == sources ]] && postinst_sources
1279} 1249}
1280 1250
1281kernel-2_pkg_setup() { 1251kernel-2_pkg_setup() {
1282 if kernel_is 2 4; then 1252 if kernel_is 2 4; then
1283 if [ "$( gcc-major-version )" -eq "4" ] ; then 1253 if [[ $(gcc-major-version) -ge 4 ]] ; then
1284 echo 1254 echo
1285 ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with linux-2.4!" 1255 ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with linux-2.4!"
1286 ewarn "Either switch to another gcc-version (via gcc-config) or use a" 1256 ewarn "Either switch to another gcc-version (via gcc-config) or use a"
1287 ewarn "newer kernel that supports gcc-4." 1257 ewarn "newer kernel that supports gcc-4."
1288 echo 1258 echo
1297 [[ ${ETYPE} == headers ]] && setup_headers 1267 [[ ${ETYPE} == headers ]] && setup_headers
1298 [[ ${ETYPE} == sources ]] && echo ">>> Preparing to unpack ..." 1268 [[ ${ETYPE} == sources ]] && echo ">>> Preparing to unpack ..."
1299} 1269}
1300 1270
1301kernel-2_pkg_postrm() { 1271kernel-2_pkg_postrm() {
1272 # This warning only makes sense for kernel sources.
1273 [[ ${ETYPE} == headers ]] && return 0
1274
1275 # If there isn't anything left behind, then don't complain.
1276 [[ -e ${ROOT}usr/src/linux-${KV_FULL} ]] || return 0
1302 echo 1277 echo
1303 ewarn "Note: Even though you have successfully unmerged " 1278 ewarn "Note: Even though you have successfully unmerged "
1304 ewarn "your kernel package, directories in kernel source location: " 1279 ewarn "your kernel package, directories in kernel source location: "
1305 ewarn "${ROOT}usr/src/linux-${KV_FULL}" 1280 ewarn "${ROOT}usr/src/linux-${KV_FULL}"
1306 ewarn "with modified files will remain behind. By design, package managers" 1281 ewarn "with modified files will remain behind. By design, package managers"
1307 ewarn "will not remove these modified files and the directories they reside in." 1282 ewarn "will not remove these modified files and the directories they reside in."
1308 echo 1283 echo
1309} 1284}
1310

Legend:
Removed from v.1.260  
changed lines
  Added in v.1.288

  ViewVC Help
Powered by ViewVC 1.1.20