/[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.258 Revision 1.297
1# Copyright 1999-2011 Gentoo Foundation 1# Copyright 1999-2014 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.258 2011/08/18 14:58:57 vapier Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.297 2014/11/28 17:40:20 mpagano 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
83PYTHON_COMPAT=( python{2_6,2_7} )
84
72inherit eutils toolchain-funcs versionator multilib 85inherit eutils toolchain-funcs versionator multilib python-any-r1
73EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_test src_install pkg_preinst pkg_postinst pkg_postrm 86EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_test src_install pkg_preinst pkg_postinst pkg_postrm
74 87
75# Added by Daniel Ostrow <dostrow@gentoo.org> 88# 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. 89# This is an ugly hack to get around an issue with a 32-bit userland on ppc64.
77# I will remove it when I come up with something more reasonable. 90# I will remove it when I come up with something more reasonable.
81if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then 94if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then
82 export CTARGET=${CATEGORY/cross-} 95 export CTARGET=${CATEGORY/cross-}
83fi 96fi
84 97
85HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}" 98HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}"
86[[ -z ${LICENSE} ]] && \
87 LICENSE="GPL-2" 99: ${LICENSE:="GPL-2"}
88 100
89# This is the latest KV_PATCH of the deblob tool available from the 101# 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 102# libre-sources upstream. If you bump this, you MUST regenerate the Manifests
91# for ALL kernel-2 consumer packages where deblob is available. 103# for ALL kernel-2 consumer packages where deblob is available.
92[[ -z ${DEBLOB_MAX_VERSION} ]] && DEBLOB_MAX_VERSION=38 104: ${DEBLOB_MAX_VERSION:=38}
93 105
94# No need to run scanelf/strip on kernel sources/headers (bug #134453). 106# No need to run scanelf/strip on kernel sources/headers (bug #134453).
95RESTRICT="binchecks strip" 107RESTRICT="binchecks strip"
96 108
97# set LINUX_HOSTCFLAGS if not already set 109# set LINUX_HOSTCFLAGS if not already set
98[[ -z ${LINUX_HOSTCFLAGS} ]] && \
99 LINUX_HOSTCFLAGS="-Wall -Wstrict-prototypes -Os -fomit-frame-pointer -I${S}/include" 110: ${LINUX_HOSTCFLAGS:="-Wall -Wstrict-prototypes -Os -fomit-frame-pointer -I${S}/include"}
100 111
101# debugging functions 112# debugging functions
102#============================================================== 113#==============================================================
103# this function exists only to help debug kernel-2.eclass 114# this function exists only to help debug kernel-2.eclass
104# if you are adding new functionality in, put a call to it 115# if you are adding new functionality in, put a call to it
105# at the start of src_unpack, or during SRC_URI/dep generation. 116# at the start of src_unpack, or during SRC_URI/dep generation.
106debug-print-kernel2-variables() { 117debug-print-kernel2-variables() {
107 for v in PVR CKV OKV KV KV_FULL KV_MAJOR KV_MINOR KV_PATCH RELEASETYPE \ 118 for v in PVR CKV OKV KV KV_FULL KV_MAJOR KV_MINOR KV_PATCH RELEASETYPE \
108 RELEASE UNIPATCH_LIST_DEFAULT UNIPATCH_LIST_GENPATCHES \ 119 RELEASE UNIPATCH_LIST_DEFAULT UNIPATCH_LIST_GENPATCHES \
109 UNIPATCH_LIST S KERNEL_URI ; do 120 UNIPATCH_LIST S KERNEL_URI K_WANT_GENPATCHES ; do
110 debug-print "${v}: ${!v}" 121 debug-print "${v}: ${!v}"
111 done 122 done
112} 123}
113 124
114#Eclass functions only from here onwards ... 125#Eclass functions only from here onwards ...
116handle_genpatches() { 127handle_genpatches() {
117 local tarball 128 local tarball
118 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return 1 129 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return 1
119 130
120 debug-print "Inside handle_genpatches" 131 debug-print "Inside handle_genpatches"
121 local oldifs=${IFS}
122 export IFS="."
123 local OKV_ARRAY=( $OKV ) 132 local OKV_ARRAY
124 export IFS=${oldifs} 133 IFS="." read -r -a OKV_ARRAY <<<"${OKV}"
125 134
126 # for > 3.0 kernels, handle genpatches tarball name 135 # for > 3.0 kernels, handle genpatches tarball name
127 # genpatches for 3.0 and 3.0.1 might be named 136 # 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 137 # genpatches-3.0-1.base.tar.xz and genpatches-3.0-2.base.tar.xz
129 # respectively. Handle this. 138 # respectively. Handle this.
130 139
131 for i in ${K_WANT_GENPATCHES} ; do 140 for i in ${K_WANT_GENPATCHES} ; do
132 if [[ ${KV_MAJOR} -ge 3 ]]; then 141 if [[ ${KV_MAJOR} -ge 3 ]]; then
133 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then 142 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
134 tarball="genpatches-${KV_MAJOR}.${KV_MINOR}-${K_GENPATCHES_VER}.${i}.tar.bz2" 143 tarball="genpatches-${KV_MAJOR}.${KV_MINOR}-${K_GENPATCHES_VER}.${i}.tar.xz"
144 else
145 tarball="genpatches-${KV_MAJOR}.${KV_PATCH}-${K_GENPATCHES_VER}.${i}.tar.xz"
146 fi
135 else 147 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" 148 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.xz"
140 fi 149 fi
150
151 local use_cond_start="" use_cond_end=""
152
153 if [[ "${i}" == "experimental" && -z ${K_EXP_GENPATCHES_PULL} && -z ${K_EXP_GENPATCHES_NOUSE} ]] ; then
154 use_cond_start="experimental? ( "
155 use_cond_end=" )"
156
157 if use experimental ; then
158 UNIPATCH_LIST_GENPATCHES+=" ${DISTDIR}/${tarball}"
159 debug-print "genpatches tarball: $tarball"
160 fi
161 else
162 UNIPATCH_LIST_GENPATCHES+=" ${DISTDIR}/${tarball}"
141 debug-print "genpatches tarball: $tarball" 163 debug-print "genpatches tarball: $tarball"
142 GENPATCHES_URI="${GENPATCHES_URI} mirror://gentoo/${tarball}" 164 fi
143 UNIPATCH_LIST_GENPATCHES="${UNIPATCH_LIST_GENPATCHES} ${DISTDIR}/${tarball}" 165
166 GENPATCHES_URI+=" ${use_cond_start}mirror://gentoo/${tarball}${use_cond_end}"
144 done 167 done
145} 168}
146 169
147detect_version() { 170detect_version() {
148 # this function will detect and set 171 # this function will detect and set
149 # - OKV: Original Kernel Version (2.6.0/2.6.0-test11) 172 # - 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) 173 # - KV: Kernel Version (2.6.0-gentoo/2.6.0-test11-gentoo-r1)
151 # - EXTRAVERSION: The additional version appended to OKV (-gentoo/-gentoo-r1) 174 # - EXTRAVERSION: The additional version appended to OKV (-gentoo/-gentoo-r1)
152 175
153 if [[ -n ${KV_FULL} ]]; then 176 # We've already run, so nothing to do here.
154 # we will set this for backwards compatibility. 177 [[ -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 178
162 # CKV is used as a comparison kernel version, which is used when 179 # CKV is used as a comparison kernel version, which is used when
163 # PV doesnt reflect the genuine kernel version. 180 # PV doesnt reflect the genuine kernel version.
164 # this gets set to the portage style versioning. ie: 181 # this gets set to the portage style versioning. ie:
165 # CKV=2.6.11_rc4 182 # CKV=2.6.11_rc4
170 OKV=${OKV/-r*} 187 OKV=${OKV/-r*}
171 OKV=${OKV/_p*} 188 OKV=${OKV/_p*}
172 189
173 KV_MAJOR=$(get_version_component_range 1 ${OKV}) 190 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) 191 # 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 ) 192 local OKV_ARRAY
178 export IFS=${oldifs} 193 IFS="." read -r -a OKV_ARRAY <<<"${OKV}"
179 194
180 # if KV_MAJOR >= 3, then we have no more KV_MINOR 195 # if KV_MAJOR >= 3, then we have no more KV_MINOR
181 #if [[ ${KV_MAJOR} -lt 3 ]]; then 196 #if [[ ${KV_MAJOR} -lt 3 ]]; then
182 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then 197 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
183 KV_MINOR=$(get_version_component_range 2 ${OKV}) 198 KV_MINOR=$(get_version_component_range 2 ${OKV})
217 232
218# if [[ ${KV_MAJOR} -ge 3 ]]; then 233# if [[ ${KV_MAJOR} -ge 3 ]]; then
219 if [[ ${#OKV_ARRAY[@]} -lt 3 ]]; then 234 if [[ ${#OKV_ARRAY[@]} -lt 3 ]]; then
220 KV_PATCH_ARR=(${KV_PATCH//\./ }) 235 KV_PATCH_ARR=(${KV_PATCH//\./ })
221 236
222 # at this point 080811, Linus is putting 3.1 kernels in 3.0 directory 237 # at this point 031412, Linus is putting all 3.x kernels in a
223 # revisit when 3.1 is released 238 # 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}" 239 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.x"
228 fi 240
229 # KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_PATCH_ARR}"
230 [[ -n "${K_LONGTERM}" ]] && 241 [[ -n "${K_LONGTERM}" ]] &&
231 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_PATCH_ARR}" 242 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_PATCH_ARR}"
232 else 243 else
233 #KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.0" 244 #KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.0"
234 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}" 245 #KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}"
246 if [[ ${KV_MAJOR} -ge 3 ]]; then
247 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.x"
248 else
249 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}"
250 fi
251
235 [[ -n "${K_LONGTERM}" ]] && 252 [[ -n "${K_LONGTERM}" ]] &&
253 #KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm"
236 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}" 254 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
237 fi 255 fi
238 256
239 debug-print "KERNEL_BASE_URI is ${KERNEL_BASE_URI}" 257 debug-print "KERNEL_BASE_URI is ${KERNEL_BASE_URI}"
240 258
241 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then 259 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then
242 # handle vanilla-sources-3.x.y correctly 260 # handle non genpatch using sources correctly
243 if [[ ${PN/-*} == "vanilla" && ${KV_PATCH} -gt 0 ]]; then 261 if [[ -z ${K_WANT_GENPATCHES} && -z ${K_GENPATCHES_VER} && ${KV_PATCH} -gt 0 ]]; then
244 KERNEL_URI="${KERNEL_BASE_URI}/patch-${OKV}.bz2" 262 KERNEL_URI="${KERNEL_BASE_URI}/patch-${OKV}.xz"
245 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.bz2" 263 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.xz"
246 fi 264 fi
247 KERNEL_URI="${KERNEL_URI} ${KERNEL_BASE_URI}/linux-${KV_MAJOR}.${KV_MINOR}.tar.bz2" 265 KERNEL_URI="${KERNEL_URI} ${KERNEL_BASE_URI}/linux-${KV_MAJOR}.${KV_MINOR}.tar.xz"
248 else 266 else
249 KERNEL_URI="${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 267 KERNEL_URI="${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
250 fi 268 fi
251 269
252 RELEASE=${CKV/${OKV}} 270 RELEASE=${CKV/${OKV}}
253 RELEASE=${RELEASE/_beta} 271 RELEASE=${RELEASE/_beta}
254 RELEASE=${RELEASE/_rc/-rc} 272 RELEASE=${RELEASE/_rc/-rc}
298 if [[ -n ${KV_MINOR} ]]; then 316 if [[ -n ${KV_MINOR} ]]; then
299 OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}" 317 OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
300 else 318 else
301 OKV="${KV_MAJOR}.${KV_PATCH}" 319 OKV="${KV_MAJOR}.${KV_PATCH}"
302 fi 320 fi
303 KERNEL_URI="${KERNEL_BASE_URI}/patch-${CKV}.bz2 321 KERNEL_URI="${KERNEL_BASE_URI}/patch-${CKV}.xz
304 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 322 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
305 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.bz2" 323 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.xz"
306 fi 324 fi
307 325
308 # We need to set this using OKV, but we need to set it before we do any 326 # 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 327 # messing around with OKV based on RELEASETYPE
310 KV_FULL=${OKV}${EXTRAVERSION} 328 KV_FULL=${OKV}${EXTRAVERSION}
315 333
316 # -rc-git pulls can be achieved by specifying CKV 334 # -rc-git pulls can be achieved by specifying CKV
317 # for example: 335 # for example:
318 # CKV="2.6.11_rc3_pre2" 336 # CKV="2.6.11_rc3_pre2"
319 # will pull: 337 # will pull:
320 # linux-2.6.10.tar.bz2 & patch-2.6.11-rc3.bz2 & patch-2.6.11-rc3-git2.bz2 338 # linux-2.6.10.tar.xz & patch-2.6.11-rc3.xz & patch-2.6.11-rc3-git2.xz
321 339
322 if [[ ${KV_MAJOR}${KV_MINOR} -eq 26 ]]; then 340 if [[ ${KV_MAJOR}${KV_MINOR} -eq 26 ]]; then
323 341
324 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then 342 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
325 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))" 343 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
326 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.bz2 344 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.xz
327 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 345 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
328 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2" 346 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.xz"
329 fi 347 fi
330 348
331 if [[ ${RELEASETYPE} == -git ]]; then 349 if [[ ${RELEASETYPE} == -git ]]; then
332 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.bz2 350 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.xz
333 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 351 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
334 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2" 352 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.xz"
335 fi 353 fi
336 354
337 if [[ ${RELEASETYPE} == -rc-git ]]; then 355 if [[ ${RELEASETYPE} == -rc-git ]]; then
338 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))" 356 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
339 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2 357 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 358 ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.xz
341 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 359 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
342 360
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" 361 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 362 fi
345 else 363 else
346 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then 364 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
347 if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then 365 if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then
348 OKV="2.6.39" 366 OKV="2.6.39"
349 else 367 else
350 KV_PATCH_ARR=(${KV_PATCH//\./ }) 368 KV_PATCH_ARR=(${KV_PATCH//\./ })
351 OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))" 369 OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))"
352 fi 370 fi
353 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.bz2 371 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.xz
354 ${KERNEL_BASE_URI}/testing/linux-${OKV}.tar.bz2" 372 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
355 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2" 373 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.xz"
356 fi 374 fi
357 375
358 if [[ ${RELEASETYPE} == -git ]]; then 376 if [[ ${RELEASETYPE} == -git ]]; then
359 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.bz2 377 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.xz
360 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 378 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
361 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2" 379 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.xz"
362 fi 380 fi
363 381
364 if [[ ${RELEASETYPE} == -rc-git ]]; then 382 if [[ ${RELEASETYPE} == -rc-git ]]; then
365 if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then 383 if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then
366 OKV="2.6.39" 384 OKV="2.6.39"
367 else 385 else
368 KV_PATCH_ARR=(${KV_PATCH//\./ }) 386 KV_PATCH_ARR=(${KV_PATCH//\./ })
369 OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))" 387 OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))"
370 fi 388 fi
371 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.bz2 389 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 390 ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.xz
373 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2" 391 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
374 392
375 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.bz2" 393 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.xz ${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.xz"
376 fi 394 fi
377 395
378 396
379 fi 397 fi
380 398
382 debug-print-kernel2-variables 400 debug-print-kernel2-variables
383 401
384 handle_genpatches 402 handle_genpatches
385} 403}
386 404
405# Note: duplicated in linux-info.eclass
387kernel_is() { 406kernel_is() {
388 # ALL of these should be set before we can safely continue this function. 407 # 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. 408 # some of the sources have in the past had only one set.
390 local v n=0 409 local v n=0
391 for v in OKV KV_{MAJOR,MINOR,PATCH} ; do [[ -z ${!v} ]] && n=1 ; done 410 for v in OKV KV_{MAJOR,MINOR,PATCH} ; do [[ -z ${!v} ]] && n=1 ; done
392 [[ $n -eq 1 ]] && detect_version 411 [[ $n -eq 1 ]] && detect_version
393 unset v n 412 unset v n
394 413
395 # Now we can continue 414 # Now we can continue
396 local operator test value x=0 y=0 z=0 415 local operator test value
397 416
398 case ${1} in 417 case ${1#-} in
399 lt) operator="-lt"; shift;; 418 lt) operator="-lt"; shift;;
400 gt) operator="-gt"; shift;; 419 gt) operator="-gt"; shift;;
401 le) operator="-le"; shift;; 420 le) operator="-le"; shift;;
402 ge) operator="-ge"; shift;; 421 ge) operator="-ge"; shift;;
403 eq) operator="-eq"; shift;; 422 eq) operator="-eq"; shift;;
404 *) operator="-eq";; 423 *) operator="-eq";;
405 esac 424 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.";; 425 [[ $# -gt 3 ]] && die "Error in kernel-2_kernel_is(): too many parameters"
420 esac
421 done
422 426
423 [ ${test} ${operator} ${value} ] && return 0 || return 1 427 : $(( test = (KV_MAJOR << 16) + (KV_MINOR << 8) + KV_PATCH ))
428 : $(( value = (${1:-${KV_MAJOR}} << 16) + (${2:-${KV_MINOR}} << 8) + ${3:-${KV_PATCH}} ))
429 [ ${test} ${operator} ${value} ]
424} 430}
425 431
426kernel_is_2_4() { 432kernel_is_2_4() {
427 kernel_is 2 4 433 kernel_is 2 4
428} 434}
431 kernel_is 2 6 || kernel_is 2 5 437 kernel_is 2 6 || kernel_is 2 5
432} 438}
433 439
434# Capture the sources type and set DEPENDs 440# Capture the sources type and set DEPENDs
435if [[ ${ETYPE} == sources ]]; then 441if [[ ${ETYPE} == sources ]]; then
436 DEPEND="!build? ( sys-apps/sed 442 DEPEND="!build? (
443 sys-apps/sed
437 >=sys-devel/binutils-2.11.90.0.31 )" 444 >=sys-devel/binutils-2.11.90.0.31
438 RDEPEND="!build? ( >=sys-libs/ncurses-5.2 445 )"
446 RDEPEND="!build? (
447 >=sys-libs/ncurses-5.2
439 sys-devel/make )" 448 sys-devel/make
449 dev-lang/perl
450 sys-devel/bc
451 )"
440 PDEPEND="!build? ( virtual/dev-manager )" 452 PDEPEND="!build? ( virtual/dev-manager )"
441 453
442 SLOT="${PVR}" 454 SLOT="${PVR}"
443 DESCRIPTION="Sources for the ${KV_MAJOR}.${KV_MINOR:-$KV_PATCH} linux kernel" 455 DESCRIPTION="Sources based on the Linux Kernel."
444 IUSE="symlink build" 456 IUSE="symlink build"
445 457
446 # Bug #266157, deblob for libre support 458 # Bug #266157, deblob for libre support
447 if [[ -z ${K_PREDEBLOBBED} ]] ; then 459 if [[ -z ${K_PREDEBLOBBED} ]] ; then
448 # Bug #359865, force a call to detect_version if needed 460 # Bug #359865, force a call to detect_version if needed
450 [[ -z "${K_DEBLOB_AVAILABLE}" ]] && \ 462 [[ -z "${K_DEBLOB_AVAILABLE}" ]] && \
451 kernel_is le 2 6 ${DEBLOB_MAX_VERSION} && \ 463 kernel_is le 2 6 ${DEBLOB_MAX_VERSION} && \
452 K_DEBLOB_AVAILABLE=1 464 K_DEBLOB_AVAILABLE=1
453 if [[ ${K_DEBLOB_AVAILABLE} == "1" ]] ; then 465 if [[ ${K_DEBLOB_AVAILABLE} == "1" ]] ; then
454 IUSE="${IUSE} deblob" 466 IUSE="${IUSE} deblob"
467
455 # Reflect that kernels contain firmware blobs unless otherwise 468 # Reflect that kernels contain firmware blobs unless otherwise
456 # stripped 469 # stripped
457 LICENSE="${LICENSE} !deblob? ( freedist )" 470 LICENSE="${LICENSE} !deblob? ( freedist )"
471
472 DEPEND+=" deblob? ( ${PYTHON_DEPS} )"
458 473
459 if [[ -n KV_MINOR ]]; then 474 if [[ -n KV_MINOR ]]; then
460 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}" 475 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
461 else 476 else
462 DEBLOB_PV="${KV_MAJOR}.${KV_PATCH}" 477 DEBLOB_PV="${KV_MAJOR}.${KV_PATCH}"
495 510
496 # Since we should NOT honour KBUILD_OUTPUT in headers 511 # Since we should NOT honour KBUILD_OUTPUT in headers
497 # lets unset it here. 512 # lets unset it here.
498 unset KBUILD_OUTPUT 513 unset KBUILD_OUTPUT
499 514
500 if [[ ${CTARGET} = ${CHOST} ]]; then
501 SLOT="0" 515 SLOT="0"
502 else
503 SLOT="${CTARGET}"
504 fi
505else 516else
506 eerror "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\"" 517 eerror "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\""
507 die "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\"" 518 die "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\""
508fi 519fi
509 520
567} 578}
568 579
569universal_unpack() { 580universal_unpack() {
570 debug-print "Inside universal_unpack" 581 debug-print "Inside universal_unpack"
571 582
572 local oldifs=${IFS}
573 export IFS="."
574 local OKV_ARRAY=( $OKV ) 583 local OKV_ARRAY
575 export IFS=${oldifs} 584 IFS="." read -r -a OKV_ARRAY <<<"${OKV}"
576 585
577 cd "${WORKDIR}" 586 cd "${WORKDIR}"
578 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then 587 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then
579 unpack linux-${KV_MAJOR}.${KV_MINOR}.tar.bz2 588 unpack linux-${KV_MAJOR}.${KV_MINOR}.tar.xz
580 else 589 else
581 unpack linux-${OKV}.tar.bz2 590 unpack linux-${OKV}.tar.xz
582 fi 591 fi
583 592
584 if [[ -d "linux" ]]; then 593 if [[ -d "linux" ]]; then
585 debug-print "Moving linux to linux-${KV_FULL}" 594 debug-print "Moving linux to linux-${KV_FULL}"
586 mv linux linux-${KV_FULL} \ 595 mv linux linux-${KV_FULL} \
603 cd "${S}" 612 cd "${S}"
604 613
605 # remove all backup files 614 # remove all backup files
606 find . -iname "*~" -exec rm {} \; 2> /dev/null 615 find . -iname "*~" -exec rm {} \; 2> /dev/null
607 616
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} 617}
622 618
623unpack_set_extraversion() { 619unpack_set_extraversion() {
624 cd "${S}" 620 cd "${S}"
625 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile 621 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile
702} 698}
703 699
704# install functions 700# install functions
705#============================================================== 701#==============================================================
706install_universal() { 702install_universal() {
707 #fix silly permissions in tarball 703 # Fix silly permissions in tarball
708 cd "${WORKDIR}" 704 cd "${WORKDIR}"
709 chown -R root:0 * >& /dev/null 705 chown -R 0:0 * >& /dev/null
710 chmod -R a+r-w+X,u+w * 706 chmod -R a+r-w+X,u+w *
711 cd ${OLDPWD} 707 cd ${OLDPWD}
712} 708}
713 709
714install_headers() { 710install_headers() {
719 if kernel_is ge 2 6 18 ; then 715 if kernel_is ge 2 6 18 ; then
720 env_setup_xmakeopts 716 env_setup_xmakeopts
721 emake headers_install INSTALL_HDR_PATH="${D}"/${ddir}/.. ${xmakeopts} || die 717 emake headers_install INSTALL_HDR_PATH="${D}"/${ddir}/.. ${xmakeopts} || die
722 718
723 # let other packages install some of these headers 719 # 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... 720 rm -rf "${D}"/${ddir}/scsi #glibc/uclibc/etc...
726 return 0 721 return 0
727 fi 722 fi
728 723
729 # Do not use "linux/*" as that can cause problems with very long 724 # Do not use "linux/*" as that can cause problems with very long
771 echo "Please check the ebuild ChangeLog for more details." \ 766 echo "Please check the ebuild ChangeLog for more details." \
772 > "${S}"/patches.txt 767 > "${S}"/patches.txt
773 fi 768 fi
774 769
775 mv ${WORKDIR}/linux* "${D}"/usr/src 770 mv ${WORKDIR}/linux* "${D}"/usr/src
771
772 if [[ -n "${UNIPATCH_DOCS}" ]] ; then
773 for i in ${UNIPATCH_DOCS}; do
774 dodoc "${T}"/${i}
775 done
776 fi
776} 777}
777 778
778# pkg_preinst functions 779# pkg_preinst functions
779#============================================================== 780#==============================================================
780preinst_headers() { 781preinst_headers() {
839 fi 840 fi
840 841
841 # optionally display security unsupported message 842 # optionally display security unsupported message
842 # Start with why 843 # Start with why
843 if [[ ${K_SECURITY_UNSUPPORTED} = deblob ]]; then 844 if [[ ${K_SECURITY_UNSUPPORTED} = deblob ]]; then
844 ewarn "Deblobbed kernels are UNSUPPORTED by Gentoo Security." 845 ewarn "Deblobbed kernels may not be up-to-date security-wise"
846 ewarn "as they depend on external scripts."
845 elif [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then 847 elif [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
846 ewarn "${PN} is UNSUPPORTED by Gentoo Security." 848 ewarn "${PN} is UNSUPPORTED by Gentoo Security."
847 fi 849 fi
848 # And now the general message. 850 # And now the general message.
849 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then 851 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
855 # warn sparc users that they need to do cross-compiling with >= 2.6.25(bug #214765) 857 # warn sparc users that they need to do cross-compiling with >= 2.6.25(bug #214765)
856 KV_MAJOR=$(get_version_component_range 1 ${OKV}) 858 KV_MAJOR=$(get_version_component_range 1 ${OKV})
857 KV_MINOR=$(get_version_component_range 2 ${OKV}) 859 KV_MINOR=$(get_version_component_range 2 ${OKV})
858 KV_PATCH=$(get_version_component_range 3 ${OKV}) 860 KV_PATCH=$(get_version_component_range 3 ${OKV})
859 if [[ "$(tc-arch)" = "sparc" ]]; then 861 if [[ "$(tc-arch)" = "sparc" ]]; then
862 if [[ $(gcc-major-version) -lt 4 && $(gcc-minor-version) -lt 4 ]]; then
860 if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.24 ]] 863 if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.24 ]] ; then
861 then
862 echo 864 echo
863 elog "NOTE: Since 2.6.25 the kernel Makefile has changed in a way that" 865 elog "NOTE: Since 2.6.25 the kernel Makefile has changed in a way that"
864 elog "you now need to do" 866 elog "you now need to do"
865 elog " make CROSS_COMPILE=sparc64-unknown-linux-gnu-" 867 elog " make CROSS_COMPILE=sparc64-unknown-linux-gnu-"
866 elog "instead of just" 868 elog "instead of just"
867 elog " make" 869 elog " make"
868 elog "to compile the kernel. For more information please browse to" 870 elog "to compile the kernel. For more information please browse to"
869 elog "https://bugs.gentoo.org/show_bug.cgi?id=214765" 871 elog "https://bugs.gentoo.org/show_bug.cgi?id=214765"
870 echo 872 echo
873 fi
871 fi 874 fi
872 fi 875 fi
873} 876}
874 877
875# pkg_setup functions 878# pkg_setup functions
942 PIPE_CMD="" 945 PIPE_CMD=""
943 case ${extention} in 946 case ${extention} in
944 xz) PIPE_CMD="xz -dc";; 947 xz) PIPE_CMD="xz -dc";;
945 lzma) PIPE_CMD="lzma -dc";; 948 lzma) PIPE_CMD="lzma -dc";;
946 bz2) PIPE_CMD="bzip2 -dc";; 949 bz2) PIPE_CMD="bzip2 -dc";;
947 patch) PIPE_CMD="cat";; 950 patch*) PIPE_CMD="cat";;
948 diff) PIPE_CMD="cat";; 951 diff) PIPE_CMD="cat";;
949 gz|Z|z) PIPE_CMD="gzip -dc";; 952 gz|Z|z) PIPE_CMD="gzip -dc";;
950 ZIP|zip) PIPE_CMD="unzip -p";; 953 ZIP|zip) PIPE_CMD="unzip -p";;
951 *) UNIPATCH_DROP="${UNIPATCH_DROP} ${i/:*/}";; 954 *) UNIPATCH_DROP="${UNIPATCH_DROP} ${i/:*/}";;
952 esac 955 esac
978 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed" 981 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
979 else 982 else
980 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed" 983 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
981 fi 984 fi
982 fi 985 fi
986 fi
987
988 # If experimental was not chosen by the user, drop experimental patches not in K_EXP_GENPATCHES_LIST.
989 if [[ "${i}" == *"genpatches-"*".experimental."* && -n ${K_EXP_GENPATCHES_PULL} ]] ; then
990 if [[ -z ${K_EXP_GENPATCHES_NOUSE} ]] && use experimental; then
991 continue
992 fi
993
994 local j
995 for j in ${KPATCH_DIR}/*/50*_*.patch*; do
996 for k in ${K_EXP_GENPATCHES_LIST} ; do
997 [[ "$(basename ${j})" == ${k}* ]] && continue 2
998 done
999 UNIPATCH_DROP+=" $(basename ${j})"
1000 done
983 fi 1001 fi
984 done 1002 done
985 1003
986 #populate KPATCH_DIRS so we know where to look to remove the excludes 1004 #populate KPATCH_DIRS so we know where to look to remove the excludes
987 x=${KPATCH_DIR} 1005 x=${KPATCH_DIR}
1020 [ -z ${i/*.patch*/} ] && PATCH_DEPTH=${i/*.patch/} 1038 [ -z ${i/*.patch*/} ] && PATCH_DEPTH=${i/*.patch/}
1021 #[ -z ${i/*.diff*/} ] && PATCH_DEPTH=${i/*.diff/} 1039 #[ -z ${i/*.diff*/} ] && PATCH_DEPTH=${i/*.diff/}
1022 1040
1023 if [ -z "${PATCH_DEPTH}" ]; then PATCH_DEPTH=0; fi 1041 if [ -z "${PATCH_DEPTH}" ]; then PATCH_DEPTH=0; fi
1024 1042
1043 ####################################################################
1044 # IMPORTANT: This is temporary code to support Linux git 3.15_rc1! #
1045 # #
1046 # The patch contains a removal of a symlink, followed by addition #
1047 # of a file with the same name as the symlink in the same #
1048 # location; this causes the dry-run to fail, filed bug #507656. #
1049 # #
1050 # https://bugs.gentoo.org/show_bug.cgi?id=507656 #
1051 ####################################################################
1052 if [[ ${PN} == "git-sources" ]] ; then
1053 if [[ ${KV_MAJOR}${KV_PATCH} -ge 315 && ${RELEASETYPE} == -rc ]] ; then
1025 ebegin "Applying ${i/*\//} (-p${PATCH_DEPTH}+)" 1054 ebegin "Applying ${i/*\//} (-p1)"
1055 if [ $(patch -p1 --no-backup-if-mismatch -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then
1056 eend 0
1057 rm ${STDERR_T}
1058 break
1059 else
1060 eend 1
1061 eerror "Failed to apply patch ${i/*\//}"
1062 eerror "Please attach ${STDERR_T} to any bug you may post."
1063 eshopts_pop
1064 die "Failed to apply ${i/*\//} on patch depth 1."
1065 fi
1066 fi
1067 fi
1068 ####################################################################
1069
1026 while [ ${PATCH_DEPTH} -lt 5 ]; do 1070 while [ ${PATCH_DEPTH} -lt 5 ]; do
1027 echo "Attempting Dry-run:" >> ${STDERR_T} 1071 echo "Attempting Dry-run:" >> ${STDERR_T}
1028 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i}" >> ${STDERR_T} 1072 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i}" >> ${STDERR_T}
1029 echo "=======================================================" >> ${STDERR_T} 1073 echo "=======================================================" >> ${STDERR_T}
1030 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i} >> ${STDERR_T}) $? -eq 0 ]; then 1074 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i} >> ${STDERR_T}) $? -eq 0 ]; then
1075 ebegin "Applying ${i/*\//} (-p${PATCH_DEPTH})"
1031 echo "Attempting patch:" > ${STDERR_T} 1076 echo "Attempting patch:" > ${STDERR_T}
1032 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i}" >> ${STDERR_T} 1077 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i}" >> ${STDERR_T}
1033 echo "=======================================================" >> ${STDERR_T} 1078 echo "=======================================================" >> ${STDERR_T}
1034 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then 1079 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then
1035 eend 0 1080 eend 0
1038 else 1083 else
1039 eend 1 1084 eend 1
1040 eerror "Failed to apply patch ${i/*\//}" 1085 eerror "Failed to apply patch ${i/*\//}"
1041 eerror "Please attach ${STDERR_T} to any bug you may post." 1086 eerror "Please attach ${STDERR_T} to any bug you may post."
1042 eshopts_pop 1087 eshopts_pop
1043 die "Failed to apply ${i/*\//}" 1088 die "Failed to apply ${i/*\//} on patch depth ${PATCH_DEPTH}."
1044 fi 1089 fi
1045 else 1090 else
1046 PATCH_DEPTH=$((${PATCH_DEPTH} + 1)) 1091 PATCH_DEPTH=$((${PATCH_DEPTH} + 1))
1047 fi 1092 fi
1048 done 1093 done
1049 if [ ${PATCH_DEPTH} -eq 5 ]; then 1094 if [ ${PATCH_DEPTH} -eq 5 ]; then
1050 eend 1 1095 eerror "Failed to dry-run patch ${i/*\//}"
1051 eerror "Please attach ${STDERR_T} to any bug you may post." 1096 eerror "Please attach ${STDERR_T} to any bug you may post."
1052 eshopts_pop 1097 eshopts_pop
1053 die "Unable to dry-run patch." 1098 die "Unable to dry-run patch on any patch depth lower than 5."
1054 fi 1099 fi
1055 done 1100 done
1056 done 1101 done
1057 1102
1058 # This is a quick, and kind of nasty hack to deal with UNIPATCH_DOCS which 1103 # 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, 1104 # 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. 1105 if [[ ! -z ${K_WANT_GENPATCHES} ]] ; then
1106 UNIPATCH_DOCS="${UNIPATCH_DOCS} 0000_README"
1107 fi
1108
1109 # When files listed in UNIPATCH_DOCS are found in KPATCH_DIR's, we copy it
1110 # to the temporary directory and remember them in UNIPATCH_DOCS to install
1111 # them during the install phase.
1061 local tmp 1112 local tmp
1113 for x in ${KPATCH_DIR}; do
1062 for i in ${UNIPATCH_DOCS}; do 1114 for i in ${UNIPATCH_DOCS}; do
1115 if [[ -f "${x}/${i}" ]] ; then
1063 tmp="${tmp} ${i//*\/}" 1116 tmp="${tmp} ${i}"
1064 cp -f ${i} "${T}"/ 1117 cp -f "${x}/${i}" "${T}"/
1118 fi
1119 done
1065 done 1120 done
1066 UNIPATCH_DOCS="${tmp}" 1121 UNIPATCH_DOCS="${tmp}"
1067 1122
1068 # clean up KPATCH_DIR's - fixes bug #53610 1123 # clean up KPATCH_DIR's - fixes bug #53610
1069 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done 1124 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done
1125 for i in ${COMPAT_URI}; do 1180 for i in ${COMPAT_URI}; do
1126 ARCH_PATCH="${ARCH_PATCH} ${DISTDIR}/${i/*\//}" 1181 ARCH_PATCH="${ARCH_PATCH} ${DISTDIR}/${i/*\//}"
1127 done 1182 done
1128 fi 1183 fi
1129 done 1184 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} 1185}
1192 1186
1193headers___fix() { 1187headers___fix() {
1194 # Voodoo to partially fix broken upstream headers. 1188 # Voodoo to partially fix broken upstream headers.
1195 # note: do not put inline/asm/volatile together (breaks "inline asm volatile") 1189 # note: do not put inline/asm/volatile together (breaks "inline asm volatile")
1241 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then 1235 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1242 cp "${DISTDIR}/${DEBLOB_A}" "${T}" || die "cp ${DEBLOB_A} failed" 1236 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" 1237 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" 1238 chmod +x "${T}/${DEBLOB_A}" "${T}/deblob-check" || die "chmod deblob scripts failed"
1245 fi 1239 fi
1240
1241 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox
1242 # only do this for kernel < 2.6.27 since this file does not exist in later
1243 # kernels
1244 if [[ -n ${KV_MINOR} && ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]] ; then
1245 sed -i \
1246 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
1247 "${S}"/arch/ppc/Makefile
1248 else
1249 sed -i \
1250 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
1251 "${S}"/arch/powerpc/Makefile
1252 fi
1246} 1253}
1247 1254
1248kernel-2_src_compile() { 1255kernel-2_src_compile() {
1249 cd "${S}" 1256 cd "${S}"
1250 [[ ${ETYPE} == headers ]] && compile_headers 1257 [[ ${ETYPE} == headers ]] && compile_headers
1251 1258
1252 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then 1259 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1253 echo ">>> Running deblob script ..." 1260 echo ">>> Running deblob script ..."
1254 sh "${T}/${DEBLOB_A}" --force || \ 1261 python_setup
1255 die "Deblob script failed to run!!!" 1262 sh "${T}/${DEBLOB_A}" --force || die "Deblob script failed to run!!!"
1256 fi 1263 fi
1257} 1264}
1258 1265
1259# if you leave it to the default src_test, it will run make to 1266# 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" 1267# find whether test/check targets are present; since "make test"
1278 [[ ${ETYPE} == sources ]] && postinst_sources 1285 [[ ${ETYPE} == sources ]] && postinst_sources
1279} 1286}
1280 1287
1281kernel-2_pkg_setup() { 1288kernel-2_pkg_setup() {
1282 if kernel_is 2 4; then 1289 if kernel_is 2 4; then
1283 if [ "$( gcc-major-version )" -eq "4" ] ; then 1290 if [[ $(gcc-major-version) -ge 4 ]] ; then
1284 echo 1291 echo
1285 ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with linux-2.4!" 1292 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" 1293 ewarn "Either switch to another gcc-version (via gcc-config) or use a"
1287 ewarn "newer kernel that supports gcc-4." 1294 ewarn "newer kernel that supports gcc-4."
1288 echo 1295 echo
1297 [[ ${ETYPE} == headers ]] && setup_headers 1304 [[ ${ETYPE} == headers ]] && setup_headers
1298 [[ ${ETYPE} == sources ]] && echo ">>> Preparing to unpack ..." 1305 [[ ${ETYPE} == sources ]] && echo ">>> Preparing to unpack ..."
1299} 1306}
1300 1307
1301kernel-2_pkg_postrm() { 1308kernel-2_pkg_postrm() {
1309 # This warning only makes sense for kernel sources.
1310 [[ ${ETYPE} == headers ]] && return 0
1311
1312 # If there isn't anything left behind, then don't complain.
1313 [[ -e ${ROOT}usr/src/linux-${KV_FULL} ]] || return 0
1302 echo 1314 echo
1303 ewarn "Note: Even though you have successfully unmerged " 1315 ewarn "Note: Even though you have successfully unmerged "
1304 ewarn "your kernel package, directories in kernel source location: " 1316 ewarn "your kernel package, directories in kernel source location: "
1305 ewarn "${ROOT}usr/src/linux-${KV_FULL}" 1317 ewarn "${ROOT}usr/src/linux-${KV_FULL}"
1306 ewarn "with modified files will remain behind. By design, package managers" 1318 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." 1319 ewarn "will not remove these modified files and the directories they reside in."
1308 echo 1320 echo
1309} 1321}
1310

Legend:
Removed from v.1.258  
changed lines
  Added in v.1.297

  ViewVC Help
Powered by ViewVC 1.1.20