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

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

  ViewVC Help
Powered by ViewVC 1.1.20