/[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.232 Revision 1.311
1# Copyright 1999-2009 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.232 2010/05/02 08:48:16 robbat2 Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.311 2015/07/19 15:46:03 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
49# code. If empty, will be set to "1" if deblobbing is 57# code. If empty, will be set to "1" if deblobbing is
50# possible. Test ONLY for "1". 58# possible. Test ONLY for "1".
59# K_DEBLOB_TAG - This will be the version of deblob script. It's a upstream SVN tag
60# such asw -gnu or -gnu1.
51# K_PREDEBLOBBED - This kernel was already deblobbed elsewhere. 61# K_PREDEBLOBBED - This kernel was already deblobbed elsewhere.
52# If false, either optional deblobbing will be available 62# If false, either optional deblobbing will be available
53# or the license will note the inclusion of freedist 63# or the license will note the inclusion of freedist
54# code. 64# code.
55 65# K_LONGTERM - If set, the eclass will search for the kernel source
66# in the long term directories on the upstream servers
67# as the location has been changed by upstream
68# K_KDBUS_AVAILABLE - If set, the ebuild contains the option of installing the
69# kdbus patch. This patch is not installed without the 'kdbus'
70# and 'experimental' use flags.
56# H_SUPPORTEDARCH - this should be a space separated list of ARCH's which 71# H_SUPPORTEDARCH - this should be a space separated list of ARCH's which
57# can be supported by the headers ebuild 72# can be supported by the headers ebuild
58 73
59# UNIPATCH_LIST - space delimetered list of patches to be applied to the 74# UNIPATCH_LIST - space delimetered list of patches to be applied to the
60# kernel 75# kernel
65# UNIPATCH_DOCS - space delimemeted list of docs to be installed to 80# UNIPATCH_DOCS - space delimemeted list of docs to be installed to
66# the doc dir 81# the doc dir
67# UNIPATCH_STRICTORDER - if this is set places patches into directories of 82# UNIPATCH_STRICTORDER - if this is set places patches into directories of
68# order, so they are applied in the order passed 83# order, so they are applied in the order passed
69 84
85# Changing any other variable in this eclass is not supported; you can request
86# for additional variables to be added by contacting the current maintainer.
87# If you do change them, there is a chance that we will not fix resulting bugs;
88# that of course does not mean we're not willing to help.
89
90PYTHON_COMPAT=( python{2_6,2_7} )
91
70inherit eutils toolchain-funcs versionator multilib 92inherit eutils toolchain-funcs versionator multilib python-any-r1
71EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst pkg_postinst 93EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_test src_install pkg_preinst pkg_postinst pkg_postrm
72 94
73# Added by Daniel Ostrow <dostrow@gentoo.org> 95# Added by Daniel Ostrow <dostrow@gentoo.org>
74# This is an ugly hack to get around an issue with a 32-bit userland on ppc64. 96# This is an ugly hack to get around an issue with a 32-bit userland on ppc64.
75# I will remove it when I come up with something more reasonable. 97# I will remove it when I come up with something more reasonable.
76[[ ${PROFILE_ARCH} == "ppc64" ]] && CHOST="powerpc64-${CHOST#*-}" 98[[ ${PROFILE_ARCH} == "ppc64" ]] && CHOST="powerpc64-${CHOST#*-}"
79if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then 101if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then
80 export CTARGET=${CATEGORY/cross-} 102 export CTARGET=${CATEGORY/cross-}
81fi 103fi
82 104
83HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}" 105HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}"
84[[ -z ${LICENSE} ]] && \
85 LICENSE="GPL-2" 106: ${LICENSE:="GPL-2"}
86 107
87# This is the latest KV_PATCH of the deblob tool available from the 108# This is the latest KV_PATCH of the deblob tool available from the
88# libre-sources upstream. 109# libre-sources upstream. If you bump this, you MUST regenerate the Manifests
89[[ -z ${DEBLOB_MAX_VERSION} ]] && DEBLOB_MAX_VERSION=33 110# for ALL kernel-2 consumer packages where deblob is available.
111: ${DEBLOB_MAX_VERSION:=38}
90 112
91# No need to run scanelf/strip on kernel sources/headers (bug #134453). 113# No need to run scanelf/strip on kernel sources/headers (bug #134453).
92RESTRICT="binchecks strip" 114RESTRICT="binchecks strip"
93 115
94# set LINUX_HOSTCFLAGS if not already set 116# set LINUX_HOSTCFLAGS if not already set
95[[ -z ${LINUX_HOSTCFLAGS} ]] && \
96 LINUX_HOSTCFLAGS="-Wall -Wstrict-prototypes -Os -fomit-frame-pointer -I${S}/include" 117: ${LINUX_HOSTCFLAGS:="-Wall -Wstrict-prototypes -Os -fomit-frame-pointer -I${S}/include"}
97 118
98# debugging functions 119# debugging functions
99#============================================================== 120#==============================================================
100# this function exists only to help debug kernel-2.eclass 121# this function exists only to help debug kernel-2.eclass
101# if you are adding new functionality in, put a call to it 122# if you are adding new functionality in, put a call to it
102# at the start of src_unpack, or during SRC_URI/dep generation. 123# at the start of src_unpack, or during SRC_URI/dep generation.
103debug-print-kernel2-variables() { 124debug-print-kernel2-variables() {
104 for v in PVR CKV OKV KV KV_FULL KV_MAJOR KV_MINOR KV_PATCH RELEASETYPE \ 125 for v in PVR CKV OKV KV KV_FULL KV_MAJOR KV_MINOR KV_PATCH RELEASETYPE \
105 RELEASE UNIPATCH_LIST_DEFAULT UNIPATCH_LIST_GENPATCHES \ 126 RELEASE UNIPATCH_LIST_DEFAULT UNIPATCH_LIST_GENPATCHES \
106 UNIPATCH_LIST S KERNEL_URI ; do 127 UNIPATCH_LIST S KERNEL_URI K_WANT_GENPATCHES ; do
107 debug-print "${v}: ${!v}" 128 debug-print "${v}: ${!v}"
108 done 129 done
109} 130}
110 131
111#Eclass functions only from here onwards ... 132#Eclass functions only from here onwards ...
112#============================================================== 133#==============================================================
113handle_genpatches() { 134handle_genpatches() {
114 local tarball 135 local tarball
115 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return 1 136 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return 1
116 137
138 debug-print "Inside handle_genpatches"
139 local OKV_ARRAY
140 IFS="." read -r -a OKV_ARRAY <<<"${OKV}"
141
142 # for > 3.0 kernels, handle genpatches tarball name
143 # genpatches for 3.0 and 3.0.1 might be named
144 # genpatches-3.0-1.base.tar.xz and genpatches-3.0-2.base.tar.xz
145 # respectively. Handle this.
146
117 for i in ${K_WANT_GENPATCHES} ; do 147 for i in ${K_WANT_GENPATCHES} ; do
148 if [[ ${KV_MAJOR} -ge 3 ]]; then
149 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
150 tarball="genpatches-${KV_MAJOR}.${KV_MINOR}-${K_GENPATCHES_VER}.${i}.tar.xz"
151 else
152 tarball="genpatches-${KV_MAJOR}.${KV_PATCH}-${K_GENPATCHES_VER}.${i}.tar.xz"
153 fi
154 else
118 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.bz2" 155 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.xz"
119 GENPATCHES_URI="${GENPATCHES_URI} mirror://gentoo/${tarball}" 156 fi
157
158 local use_cond_start="" use_cond_end=""
159
160 if [[ "${i}" == "experimental" && -z ${K_EXP_GENPATCHES_PULL} && -z ${K_EXP_GENPATCHES_NOUSE} ]] ; then
161 use_cond_start="experimental? ( "
162 use_cond_end=" )"
163
164 if use experimental ; then
165 UNIPATCH_LIST_GENPATCHES+=" ${DISTDIR}/${tarball}"
166 debug-print "genpatches tarball: $tarball"
167 fi
168 else
120 UNIPATCH_LIST_GENPATCHES="${UNIPATCH_LIST_GENPATCHES} ${DISTDIR}/${tarball}" 169 UNIPATCH_LIST_GENPATCHES+=" ${DISTDIR}/${tarball}"
170 debug-print "genpatches tarball: $tarball"
171 fi
172 GENPATCHES_URI+=" ${use_cond_start}mirror://gentoo/${tarball}${use_cond_end}"
121 done 173 done
122} 174}
123 175
124detect_version() { 176detect_version() {
125 # this function will detect and set 177 # this function will detect and set
126 # - OKV: Original Kernel Version (2.6.0/2.6.0-test11) 178 # - OKV: Original Kernel Version (2.6.0/2.6.0-test11)
127 # - KV: Kernel Version (2.6.0-gentoo/2.6.0-test11-gentoo-r1) 179 # - KV: Kernel Version (2.6.0-gentoo/2.6.0-test11-gentoo-r1)
128 # - EXTRAVERSION: The additional version appended to OKV (-gentoo/-gentoo-r1) 180 # - EXTRAVERSION: The additional version appended to OKV (-gentoo/-gentoo-r1)
129 181
130 if [[ -n ${KV_FULL} ]]; then 182 # We've already run, so nothing to do here.
131 # we will set this for backwards compatibility. 183 [[ -n ${KV_FULL} ]] && return 0
132 KV=${KV_FULL}
133
134 # we know KV_FULL so lets stop here. but not without resetting S
135 S=${WORKDIR}/linux-${KV_FULL}
136 return
137 fi
138 184
139 # CKV is used as a comparison kernel version, which is used when 185 # CKV is used as a comparison kernel version, which is used when
140 # PV doesnt reflect the genuine kernel version. 186 # PV doesnt reflect the genuine kernel version.
141 # this gets set to the portage style versioning. ie: 187 # this gets set to the portage style versioning. ie:
142 # CKV=2.6.11_rc4 188 # CKV=2.6.11_rc4
146 OKV=${OKV/_rc/-rc} 192 OKV=${OKV/_rc/-rc}
147 OKV=${OKV/-r*} 193 OKV=${OKV/-r*}
148 OKV=${OKV/_p*} 194 OKV=${OKV/_p*}
149 195
150 KV_MAJOR=$(get_version_component_range 1 ${OKV}) 196 KV_MAJOR=$(get_version_component_range 1 ${OKV})
197 # handle if OKV is X.Y or X.Y.Z (e.g. 3.0 or 3.0.1)
198 local OKV_ARRAY
199 IFS="." read -r -a OKV_ARRAY <<<"${OKV}"
200
201 # if KV_MAJOR >= 3, then we have no more KV_MINOR
202 #if [[ ${KV_MAJOR} -lt 3 ]]; then
203 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
151 KV_MINOR=$(get_version_component_range 2 ${OKV}) 204 KV_MINOR=$(get_version_component_range 2 ${OKV})
152 KV_PATCH=$(get_version_component_range 3 ${OKV}) 205 KV_PATCH=$(get_version_component_range 3 ${OKV})
153
154 if [[ ${KV_MAJOR}${KV_MINOR}${KV_PATCH} -ge 269 ]]; then 206 if [[ ${KV_MAJOR}${KV_MINOR}${KV_PATCH} -ge 269 ]]; then
207 KV_EXTRA=$(get_version_component_range 4- ${OKV})
208 KV_EXTRA=${KV_EXTRA/[-_]*}
209 else
210 KV_PATCH=$(get_version_component_range 3- ${OKV})
211 fi
212 else
213 KV_PATCH=$(get_version_component_range 2 ${OKV})
155 KV_EXTRA=$(get_version_component_range 4- ${OKV}) 214 KV_EXTRA=$(get_version_component_range 3- ${OKV})
156 KV_EXTRA=${KV_EXTRA/[-_]*} 215 KV_EXTRA=${KV_EXTRA/[-_]*}
216 fi
217
218 debug-print "KV_EXTRA is ${KV_EXTRA}"
219
220 KV_PATCH=${KV_PATCH/[-_]*}
221
222 local v n=0 missing
223 #if [[ ${KV_MAJOR} -lt 3 ]]; then
224 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
225 for v in CKV OKV KV_{MAJOR,MINOR,PATCH} ; do
226 [[ -z ${!v} ]] && n=1 && missing="${missing}${v} ";
227 done
157 else 228 else
158 KV_PATCH=$(get_version_component_range 3- ${OKV}) 229 for v in CKV OKV KV_{MAJOR,PATCH} ; do
230 [[ -z ${!v} ]] && n=1 && missing="${missing}${v} ";
231 done
232 fi
233
234 [[ $n -eq 1 ]] && \
235 eerror "Missing variables: ${missing}" && \
236 die "Failed to extract kernel version (try explicit CKV in ebuild)!"
237 unset v n missing
238
239# if [[ ${KV_MAJOR} -ge 3 ]]; then
240 if [[ ${#OKV_ARRAY[@]} -lt 3 ]]; then
241 KV_PATCH_ARR=(${KV_PATCH//\./ })
242
243 # at this point 031412, Linus is putting all 3.x kernels in a
244 # 3.x directory, may need to revisit when 4.x is released
245 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.x"
246
247 [[ -n "${K_LONGTERM}" ]] &&
248 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_PATCH_ARR}"
249 else
250 #KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.0"
251 #KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}"
252 if [[ ${KV_MAJOR} -ge 3 ]]; then
253 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.x"
254 else
255 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}"
159 fi 256 fi
160 KV_PATCH=${KV_PATCH/[-_]*}
161 257
162 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 258 [[ -n "${K_LONGTERM}" ]] &&
259 #KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm"
260 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
261 fi
262
263 debug-print "KERNEL_BASE_URI is ${KERNEL_BASE_URI}"
264
265 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then
266 # handle non genpatch using sources correctly
267 if [[ -z ${K_WANT_GENPATCHES} && -z ${K_GENPATCHES_VER} && ${KV_PATCH} -gt 0 ]]; then
268 KERNEL_URI="${KERNEL_BASE_URI}/patch-${OKV}.xz"
269 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.xz"
270 fi
271 KERNEL_URI="${KERNEL_URI} ${KERNEL_BASE_URI}/linux-${KV_MAJOR}.${KV_MINOR}.tar.xz"
272 else
273 KERNEL_URI="${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
274 fi
163 275
164 RELEASE=${CKV/${OKV}} 276 RELEASE=${CKV/${OKV}}
165 RELEASE=${RELEASE/_beta} 277 RELEASE=${RELEASE/_beta}
166 RELEASE=${RELEASE/_rc/-rc} 278 RELEASE=${RELEASE/_rc/-rc}
167 RELEASE=${RELEASE/_pre/-pre} 279 RELEASE=${RELEASE/_pre/-pre}
280 # We cannot trivally call kernel_is here, because it calls us to detect the
281 # version
168 kernel_is ge 2 6 && RELEASE=${RELEASE/-pre/-git} 282 #kernel_is ge 2 6 && RELEASE=${RELEASE/-pre/-git}
283 [ $(($KV_MAJOR * 1000 + ${KV_MINOR:-0})) -ge 2006 ] && RELEASE=${RELEASE/-pre/-git}
169 RELEASETYPE=${RELEASE//[0-9]} 284 RELEASETYPE=${RELEASE//[0-9]}
170 285
171 # Now we know that RELEASE is the -rc/-git 286 # Now we know that RELEASE is the -rc/-git
172 # and RELEASETYPE is the same but with its numerics stripped 287 # and RELEASETYPE is the same but with its numerics stripped
173 # we can work on better sorting EXTRAVERSION. 288 # we can work on better sorting EXTRAVERSION.
174 # first of all, we add the release 289 # first of all, we add the release
175 EXTRAVERSION="${RELEASE}" 290 EXTRAVERSION="${RELEASE}"
176 debug-print "0 EXTRAVERSION:${EXTRAVERSION}" 291 debug-print "0 EXTRAVERSION:${EXTRAVERSION}"
177 [[ -n ${KV_EXTRA} ]] && EXTRAVERSION=".${KV_EXTRA}${EXTRAVERSION}" 292 [[ -n ${KV_EXTRA} ]] && [[ ${KV_MAJOR} -lt 3 ]] && EXTRAVERSION=".${KV_EXTRA}${EXTRAVERSION}"
178 293
179 debug-print "1 EXTRAVERSION:${EXTRAVERSION}" 294 debug-print "1 EXTRAVERSION:${EXTRAVERSION}"
180 if [[ -n "${K_NOUSEPR}" ]]; then 295 if [[ -n "${K_NOUSEPR}" ]]; then
181 # Don't add anything based on PR to EXTRAVERSION 296 # Don't add anything based on PR to EXTRAVERSION
182 debug-print "1.0 EXTRAVERSION:${EXTRAVERSION}" 297 debug-print "1.0 EXTRAVERSION:${EXTRAVERSION}"
200 debug-print "2 EXTRAVERSION:${EXTRAVERSION}" 315 debug-print "2 EXTRAVERSION:${EXTRAVERSION}"
201 316
202 # The only messing around which should actually effect this is for KV_EXTRA 317 # The only messing around which should actually effect this is for KV_EXTRA
203 # since this has to limit OKV to MAJ.MIN.PAT and strip EXTRA off else 318 # since this has to limit OKV to MAJ.MIN.PAT and strip EXTRA off else
204 # KV_FULL evaluates to MAJ.MIN.PAT.EXT.EXT after EXTRAVERSION 319 # KV_FULL evaluates to MAJ.MIN.PAT.EXT.EXT after EXTRAVERSION
320
205 if [[ -n ${KV_EXTRA} ]]; then 321 if [[ -n ${KV_EXTRA} ]]; then
322 if [[ -n ${KV_MINOR} ]]; then
206 OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}" 323 OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
207 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/patch-${CKV}.bz2 324 else
208 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}.tar.bz2" 325 OKV="${KV_MAJOR}.${KV_PATCH}"
326 fi
327 KERNEL_URI="${KERNEL_BASE_URI}/patch-${CKV}.xz
328 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
209 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.bz2" 329 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.xz"
210 fi 330 fi
211 331
212 # We need to set this using OKV, but we need to set it before we do any 332 # We need to set this using OKV, but we need to set it before we do any
213 # messing around with OKV based on RELEASETYPE 333 # messing around with OKV based on RELEASETYPE
214 KV_FULL=${OKV}${EXTRAVERSION} 334 KV_FULL=${OKV}${EXTRAVERSION}
219 339
220 # -rc-git pulls can be achieved by specifying CKV 340 # -rc-git pulls can be achieved by specifying CKV
221 # for example: 341 # for example:
222 # CKV="2.6.11_rc3_pre2" 342 # CKV="2.6.11_rc3_pre2"
223 # will pull: 343 # will pull:
224 # linux-2.6.10.tar.bz2 & patch-2.6.11-rc3.bz2 & patch-2.6.11-rc3-git2.bz2 344 # linux-2.6.10.tar.xz & patch-2.6.11-rc3.xz & patch-2.6.11-rc3-git2.xz
225 345
346 if [[ ${KV_MAJOR}${KV_MINOR} -eq 26 ]]; then
347
226 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then 348 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
227 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))" 349 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
228 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/testing/patch-${CKV//_/-}.bz2 350 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.xz
229 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 351 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
230 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2" 352 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.xz"
231 fi 353 fi
232 354
233 if [[ ${RELEASETYPE} == -git ]]; then 355 if [[ ${RELEASETYPE} == -git ]]; then
234 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/snapshots/patch-${OKV}${RELEASE}.bz2 356 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.xz
235 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 357 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
236 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2" 358 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.xz"
237 fi 359 fi
238 360
239 if [[ ${RELEASETYPE} == -rc-git ]]; then 361 if [[ ${RELEASETYPE} == -rc-git ]]; then
240 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))" 362 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
241 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2 363 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.xz
242 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 364 ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.xz
243 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 365 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
366
244 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2" 367 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.xz ${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.xz"
245 fi 368 fi
369 else
370 KV_PATCH_ARR=(${KV_PATCH//\./ })
246 371
372 # the different majorminor versions have different patch start versions
373 OKV_DICT=(["2"]="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))" ["3"]="2.6.39" ["4"]="3.19")
374
375 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
376 OKV=${K_BASE_VER:-$OKV_DICT["${KV_MAJOR}"]}
377 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.xz
378 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
379 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.xz"
380 fi
381
382 if [[ ${RELEASETYPE} == -git ]]; then
383 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.xz
384 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
385 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.xz"
386 fi
387
388 if [[ ${RELEASETYPE} == -rc-git ]]; then
389 OKV=${K_BASE_VER:-$OKV_DICT["${KV_MAJOR}"]}
390 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.xz
391 ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.xz
392 ${KERNEL_BASE_URI}/linux-${OKV}.tar.xz"
393
394 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.xz ${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.xz"
395 fi
396
397
398 fi
399
247 debug-print-kernel2-variables 400 debug-print-kernel2-variables
248 401
249 handle_genpatches 402 handle_genpatches
250} 403}
251 404
405# Note: duplicated in linux-info.eclass
252kernel_is() { 406kernel_is() {
253 # 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.
254 # 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.
255 local v n=0 409 local v n=0
256 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
257 [[ $n -eq 1 ]] && detect_version 411 [[ $n -eq 1 ]] && detect_version
258 unset v n 412 unset v n
259 413
260 # Now we can continue 414 # Now we can continue
261 local operator test value x=0 y=0 z=0 415 local operator test value
262 416
263 case ${1} in 417 case ${1#-} in
264 lt) operator="-lt"; shift;; 418 lt) operator="-lt"; shift;;
265 gt) operator="-gt"; shift;; 419 gt) operator="-gt"; shift;;
266 le) operator="-le"; shift;; 420 le) operator="-le"; shift;;
267 ge) operator="-ge"; shift;; 421 ge) operator="-ge"; shift;;
268 eq) operator="-eq"; shift;; 422 eq) operator="-eq"; shift;;
269 *) operator="-eq";; 423 *) operator="-eq";;
270 esac 424 esac
271
272 for x in ${@}; do
273 for((y=0; y<$((3 - ${#x})); y++)); do value="${value}0"; done
274 value="${value}${x}"
275 z=$((${z} + 1))
276
277 case ${z} in
278 1) for((y=0; y<$((3 - ${#KV_MAJOR})); y++)); do test="${test}0"; done;
279 test="${test}${KV_MAJOR}";;
280 2) for((y=0; y<$((3 - ${#KV_MINOR})); y++)); do test="${test}0"; done;
281 test="${test}${KV_MINOR}";;
282 3) for((y=0; y<$((3 - ${#KV_PATCH})); y++)); do test="${test}0"; done;
283 test="${test}${KV_PATCH}";;
284 *) die "Error in kernel-2_kernel_is(): Too many parameters.";; 425 [[ $# -gt 3 ]] && die "Error in kernel-2_kernel_is(): too many parameters"
285 esac
286 done
287 426
288 [ ${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} ]
289} 430}
290 431
291kernel_is_2_4() { 432kernel_is_2_4() {
292 kernel_is 2 4 433 kernel_is 2 4
293} 434}
296 kernel_is 2 6 || kernel_is 2 5 437 kernel_is 2 6 || kernel_is 2 5
297} 438}
298 439
299# Capture the sources type and set DEPENDs 440# Capture the sources type and set DEPENDs
300if [[ ${ETYPE} == sources ]]; then 441if [[ ${ETYPE} == sources ]]; then
301 DEPEND="!build? ( sys-apps/sed 442 DEPEND="!build? (
443 sys-apps/sed
302 >=sys-devel/binutils-2.11.90.0.31 )" 444 >=sys-devel/binutils-2.11.90.0.31
303 RDEPEND="!build? ( >=sys-libs/ncurses-5.2 445 )"
304 sys-devel/make )" 446 RDEPEND="!build? (
305 PDEPEND="!build? ( virtual/dev-manager )" 447 >=sys-libs/ncurses-5.2
306 448 sys-devel/make
307 PROVIDE="virtual/linux-sources" 449 dev-lang/perl
308 kernel_is gt 2 4 && PROVIDE="${PROVIDE} virtual/alsa" 450 sys-devel/bc
451 )"
309 452
310 SLOT="${PVR}" 453 SLOT="${PVR}"
311 DESCRIPTION="Sources for the ${KV_MAJOR}.${KV_MINOR} linux kernel" 454 DESCRIPTION="Sources based on the Linux Kernel."
312 IUSE="symlink build" 455 IUSE="symlink build"
456
457 if [[ -n ${K_KDBUS_AVAILABLE} ]]; then
458 IUSE="${IUSE} kdbus"
459 fi
313 460
314 # Bug #266157, deblob for libre support 461 # Bug #266157, deblob for libre support
315 if [[ -z ${K_PREDEBLOBBED} ]] ; then 462 if [[ -z ${K_PREDEBLOBBED} ]] ; then
316 if [[ -z ${K_DEBLOB_AVAILABLE} ]] ; then 463 # Bug #359865, force a call to detect_version if needed
317 kernel_is ge 2 6 27 && \ 464 kernel_is ge 2 6 27 && \
465 [[ -z "${K_DEBLOB_AVAILABLE}" ]] && \
318 kernel_is le 2 6 ${DEBLOB_MAX_VERSION} && \ 466 kernel_is le 2 6 ${DEBLOB_MAX_VERSION} && \
319 K_DEBLOB_AVAILABLE=1 467 K_DEBLOB_AVAILABLE=1
320 fi
321 if [[ ${K_DEBLOB_AVAILABLE} == "1" ]] ; then 468 if [[ ${K_DEBLOB_AVAILABLE} == "1" ]] ; then
322 IUSE="${IUSE} deblob" 469 IUSE="${IUSE} deblob"
470
323 # Reflect that kernels contain firmware blobs unless otherwise 471 # Reflect that kernels contain firmware blobs unless otherwise
324 # stripped 472 # stripped
325 LICENSE="${LICENSE} !deblob? ( freedist )" 473 LICENSE="${LICENSE} !deblob? ( freedist )"
326 474
475 DEPEND+=" deblob? ( ${PYTHON_DEPS} )"
476
477 if [[ -n KV_MINOR ]]; then
327 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}" 478 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
479 else
480 DEBLOB_PV="${KV_MAJOR}.${KV_PATCH}"
481 fi
482
483 if [[ ${KV_MAJOR} -ge 3 ]]; then
484 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}"
485 fi
486
487 # deblob svn tag, default is -gnu, to change, use K_DEBLOB_TAG in ebuild
488 K_DEBLOB_TAG=${K_DEBLOB_TAG:--gnu}
328 DEBLOB_A="deblob-${DEBLOB_PV}" 489 DEBLOB_A="deblob-${DEBLOB_PV}"
490 DEBLOB_CHECK_A="deblob-check-${DEBLOB_PV}"
329 DEBLOB_HOMEPAGE="http://www.fsfla.org/svnwiki/selibre/linux-libre/" 491 DEBLOB_HOMEPAGE="http://www.fsfla.org/svn/fsfla/software/linux-libre/releases/tags"
492 DEBLOB_URI_PATH="${DEBLOB_PV}${K_DEBLOB_TAG}"
493 if ! has "${EAPI:-0}" 0 1 ; then
494 DEBLOB_CHECK_URI="${DEBLOB_HOMEPAGE}/${DEBLOB_URI_PATH}/deblob-check -> ${DEBLOB_CHECK_A}"
495 else
496 DEBLOB_CHECK_URI="mirror://gentoo/${DEBLOB_CHECK_A}"
497 fi
498
499 DEBLOB_URI="${DEBLOB_HOMEPAGE}/${DEBLOB_URI_PATH}/${DEBLOB_A}"
330 HOMEPAGE="${HOMEPAGE} ${DEBLOB_HOMEPAGE}" 500 HOMEPAGE="${HOMEPAGE} ${DEBLOB_HOMEPAGE}"
331 501
332 KERNEL_URI="${KERNEL_URI} 502 KERNEL_URI="${KERNEL_URI}
333 deblob? ( 503 deblob? (
334 ${DEBLOB_HOMEPAGE}/download/releases/LATEST-${DEBLOB_PV}.N/${DEBLOB_A} 504 ${DEBLOB_URI}
505 ${DEBLOB_CHECK_URI}
335 )" 506 )"
336 else 507 else
337 # We have no way to deblob older kernels, so just mark them as 508 # We have no way to deblob older kernels, so just mark them as
338 # tainted with non-libre materials. 509 # tainted with non-libre materials.
339 LICENSE="${LICENSE} freedist" 510 LICENSE="${LICENSE} freedist"
345 516
346 # Since we should NOT honour KBUILD_OUTPUT in headers 517 # Since we should NOT honour KBUILD_OUTPUT in headers
347 # lets unset it here. 518 # lets unset it here.
348 unset KBUILD_OUTPUT 519 unset KBUILD_OUTPUT
349 520
350 if [[ ${CTARGET} = ${CHOST} ]]; then
351 DEPEND="!virtual/os-headers"
352 PROVIDE="virtual/os-headers"
353 SLOT="0" 521 SLOT="0"
354 else
355 SLOT="${CTARGET}"
356 fi
357else 522else
358 eerror "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\"" 523 eerror "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\""
359 die "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\"" 524 die "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\""
360fi 525fi
361 526
417 || die "make include/linux/version.h failed" 582 || die "make include/linux/version.h failed"
418 rm -f .config >/dev/null 583 rm -f .config >/dev/null
419} 584}
420 585
421universal_unpack() { 586universal_unpack() {
587 debug-print "Inside universal_unpack"
588
589 local OKV_ARRAY
590 IFS="." read -r -a OKV_ARRAY <<<"${OKV}"
591
422 cd "${WORKDIR}" 592 cd "${WORKDIR}"
593 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then
594 unpack linux-${KV_MAJOR}.${KV_MINOR}.tar.xz
595 else
423 unpack linux-${OKV}.tar.bz2 596 unpack linux-${OKV}.tar.xz
597 fi
598
424 if [[ -d "linux" ]]; then 599 if [[ -d "linux" ]]; then
600 debug-print "Moving linux to linux-${KV_FULL}"
425 mv linux linux-${KV_FULL} \ 601 mv linux linux-${KV_FULL} \
426 || die "Unable to move source tree to ${KV_FULL}." 602 || die "Unable to move source tree to ${KV_FULL}."
427 elif [[ "${OKV}" != "${KV_FULL}" ]]; then 603 elif [[ "${OKV}" != "${KV_FULL}" ]]; then
604 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]] &&
605 [[ "${ETYPE}" = "sources" ]]; then
606 debug-print "moving linux-${KV_MAJOR}.${KV_MINOR} to linux-${KV_FULL} "
607 mv linux-${KV_MAJOR}.${KV_MINOR} linux-${KV_FULL} \
608 || die "Unable to move source tree to ${KV_FULL}."
609 else
610 debug-print "moving linux-${OKV} to linux-${KV_FULL} "
428 mv linux-${OKV} linux-${KV_FULL} \ 611 mv linux-${OKV} linux-${KV_FULL} \
612 || die "Unable to move source tree to ${KV_FULL}."
613 fi
614 elif [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then
615 mv linux-${KV_MAJOR}.${KV_MINOR} linux-${KV_FULL} \
429 || die "Unable to move source tree to ${KV_FULL}." 616 || die "Unable to move source tree to ${KV_FULL}."
430 fi 617 fi
431 cd "${S}" 618 cd "${S}"
432 619
433 # remove all backup files 620 # remove all backup files
434 find . -iname "*~" -exec rm {} \; 2> /dev/null 621 find . -iname "*~" -exec rm {} \; 2> /dev/null
435 622
436 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox
437 # only do this for kernel < 2.6.27 since this file does not exist in later
438 # kernels
439 if [[ ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]]
440 then
441 sed -i \
442 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
443 "${S}"/arch/ppc/Makefile
444 else
445 sed -i \
446 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
447 "${S}"/arch/powerpc/Makefile
448 fi
449} 623}
450 624
451unpack_set_extraversion() { 625unpack_set_extraversion() {
452 cd "${S}" 626 cd "${S}"
453 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile 627 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile
530} 704}
531 705
532# install functions 706# install functions
533#============================================================== 707#==============================================================
534install_universal() { 708install_universal() {
535 #fix silly permissions in tarball 709 # Fix silly permissions in tarball
536 cd "${WORKDIR}" 710 cd "${WORKDIR}"
537 chown -R root:0 * >& /dev/null 711 chown -R 0:0 * >& /dev/null
538 chmod -R a+r-w+X,u+w * 712 chmod -R a+r-w+X,u+w *
539 cd ${OLDPWD} 713 cd ${OLDPWD}
540} 714}
541 715
542install_headers() { 716install_headers() {
547 if kernel_is ge 2 6 18 ; then 721 if kernel_is ge 2 6 18 ; then
548 env_setup_xmakeopts 722 env_setup_xmakeopts
549 emake headers_install INSTALL_HDR_PATH="${D}"/${ddir}/.. ${xmakeopts} || die 723 emake headers_install INSTALL_HDR_PATH="${D}"/${ddir}/.. ${xmakeopts} || die
550 724
551 # let other packages install some of these headers 725 # let other packages install some of these headers
552 rm -rf "${D}"/${ddir}/sound #alsa-headers
553 rm -rf "${D}"/${ddir}/scsi #glibc/uclibc/etc... 726 rm -rf "${D}"/${ddir}/scsi #glibc/uclibc/etc...
554 return 0 727 return 0
555 fi 728 fi
556 729
557 # Do not use "linux/*" as that can cause problems with very long 730 # Do not use "linux/*" as that can cause problems with very long
558 # $S values where the cmdline to cp is too long 731 # $S values where the cmdline to cp is too long
559 cd "${S}" 732 pushd "${S}" >/dev/null
560 dodir ${ddir}/linux 733 dodir ${ddir}/linux
561 cp -pPR "${S}"/include/linux "${D}"/${ddir}/ || die 734 cp -pPR "${S}"/include/linux "${D}"/${ddir}/ || die
562 rm -rf "${D}"/${ddir}/linux/modules 735 rm -rf "${D}"/${ddir}/linux/modules
563 736
564 # Handle multilib headers and crap
565 local multi_dirs="" multi_defs=""
566 case $(tc-arch-kernel) in
567 sparc64)
568 multi_dirs="sparc sparc64"
569 multi_defs="!__arch64__ __arch64__"
570 ;;
571 x86_64)
572 multi_dirs="i386 x86_64"
573 multi_defs="__i386__ __x86_64__"
574 ;;
575 ppc64)
576 multi_dirs="ppc ppc64"
577 multi_defs="!__powerpc64__ __powerpc64__"
578 ;;
579 s390x)
580 multi_dirs="s390 s390x"
581 multi_defs="!__s390x__ __s390x__"
582 ;;
583 arm)
584 dodir ${ddir}/asm 737 dodir ${ddir}/asm
585 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm 738 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm
586 [[ ! -e ${D}/${ddir}/asm/arch ]] && ln -sf arch-ebsa285 "${D}"/${ddir}/asm/arch
587 [[ ! -e ${D}/${ddir}/asm/proc ]] && ln -sf proc-armv "${D}"/${ddir}/asm/proc
588 ;;
589 powerpc)
590 dodir ${ddir}/asm
591 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm
592 if [[ -e "${S}"/include/asm-ppc ]] ; then
593 dodir ${ddir}/asm-ppc
594 cp -pPR "${S}"/include/asm-ppc/* "${D}"/${ddir}/asm-ppc
595 fi
596 ;;
597 *)
598 dodir ${ddir}/asm
599 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm
600 ;;
601 esac
602 if [[ -n ${multi_dirs} ]] ; then
603 local d ml_inc=""
604 for d in ${multi_dirs} ; do
605 dodir ${ddir}/asm-${d}
606 cp -pPR "${S}"/include/asm-${d}/* "${D}"/${ddir}/asm-${d}/ || die "cp asm-${d} failed"
607 739
608 ml_inc="${ml_inc} ${multi_defs%% *}:${ddir}/asm-${d}"
609 multi_defs=${multi_defs#* }
610 done
611 create_ml_includes ${ddir}/asm ${ml_inc}
612 fi
613
614 if kernel_is 2 6; then 740 if kernel_is 2 6 ; then
615 dodir ${ddir}/asm-generic 741 dodir ${ddir}/asm-generic
616 cp -pPR "${S}"/include/asm-generic/* "${D}"/${ddir}/asm-generic 742 cp -pPR "${S}"/include/asm-generic/* "${D}"/${ddir}/asm-generic
617 fi 743 fi
618 744
619 # clean up 745 # clean up
620 find "${D}" -name '*.orig' -exec rm -f {} \; 746 find "${D}" -name '*.orig' -exec rm -f {} \;
621 747
622 cd ${OLDPWD} 748 popd >/dev/null
623} 749}
624 750
625install_sources() { 751install_sources() {
626 local file 752 local file
627 753
646 echo "Please check the ebuild ChangeLog for more details." \ 772 echo "Please check the ebuild ChangeLog for more details." \
647 > "${S}"/patches.txt 773 > "${S}"/patches.txt
648 fi 774 fi
649 775
650 mv ${WORKDIR}/linux* "${D}"/usr/src 776 mv ${WORKDIR}/linux* "${D}"/usr/src
777
778 if [[ -n "${UNIPATCH_DOCS}" ]] ; then
779 for i in ${UNIPATCH_DOCS}; do
780 dodoc "${T}"/${i}
781 done
782 fi
651} 783}
652 784
653# pkg_preinst functions 785# pkg_preinst functions
654#============================================================== 786#==============================================================
655preinst_headers() { 787preinst_headers() {
690 [[ ! -d ${ROOT}sys ]] && kernel_is 2 6 && mkdir ${ROOT}sys 822 [[ ! -d ${ROOT}sys ]] && kernel_is 2 6 && mkdir ${ROOT}sys
691 823
692 echo 824 echo
693 elog "If you are upgrading from a previous kernel, you may be interested" 825 elog "If you are upgrading from a previous kernel, you may be interested"
694 elog "in the following document:" 826 elog "in the following document:"
695 elog " - General upgrade guide: http://www.gentoo.org/doc/en/kernel-upgrade.xml" 827 elog " - General upgrade guide: https://wiki.gentoo.org/wiki/Kernel/Upgrade"
696 echo 828 echo
697 829
698 # if K_EXTRAEINFO is set then lets display it now 830 # if K_EXTRAEINFO is set then lets display it now
699 if [[ -n ${K_EXTRAEINFO} ]]; then 831 if [[ -n ${K_EXTRAEINFO} ]]; then
700 echo ${K_EXTRAEINFO} | fmt | 832 echo ${K_EXTRAEINFO} | fmt |
713 while read -s ELINE; do ewarn "${ELINE}"; done 845 while read -s ELINE; do ewarn "${ELINE}"; done
714 fi 846 fi
715 847
716 # optionally display security unsupported message 848 # optionally display security unsupported message
717 # Start with why 849 # Start with why
718 if [[ ${K_SECURITY_UNSUPPORTED} = deblob ]]; then
719 ewarn "Deblobbed kernels are UNSUPPORTED by Gentoo Security"
720 elif [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then 850 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
721 ewarn "${PN} is UNSUPPORTED by Gentoo Security." 851 ewarn "${PN} is UNSUPPORTED by Gentoo Security."
722 fi 852 fi
723 # And now the general message. 853 # And now the general message.
724 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then 854 if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
725 ewarn "This means that it is likely to be vulnerable to recent security issues." 855 ewarn "This means that it is likely to be vulnerable to recent security issues."
729 859
730 # warn sparc users that they need to do cross-compiling with >= 2.6.25(bug #214765) 860 # warn sparc users that they need to do cross-compiling with >= 2.6.25(bug #214765)
731 KV_MAJOR=$(get_version_component_range 1 ${OKV}) 861 KV_MAJOR=$(get_version_component_range 1 ${OKV})
732 KV_MINOR=$(get_version_component_range 2 ${OKV}) 862 KV_MINOR=$(get_version_component_range 2 ${OKV})
733 KV_PATCH=$(get_version_component_range 3 ${OKV}) 863 KV_PATCH=$(get_version_component_range 3 ${OKV})
734 if [[ "$(tc-arch)" = "sparc" ]] \ 864 if [[ "$(tc-arch)" = "sparc" ]]; then
865 if [[ $(gcc-major-version) -lt 4 && $(gcc-minor-version) -lt 4 ]]; then
735 && [[ ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.24 ]] 866 if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.24 ]] ; then
736 then
737 echo 867 echo
738 elog "NOTE: Since 2.6.25 the kernel Makefile has changed in a way that" 868 elog "NOTE: Since 2.6.25 the kernel Makefile has changed in a way that"
739 elog "you now need to do" 869 elog "you now need to do"
740 elog " make CROSS_COMPILE=sparc64-unknown-linux-gnu-" 870 elog " make CROSS_COMPILE=sparc64-unknown-linux-gnu-"
741 elog "instead of just" 871 elog "instead of just"
742 elog " make" 872 elog " make"
743 elog "to compile the kernel. For more information please browse to" 873 elog "to compile the kernel. For more information please browse to"
744 elog "https://bugs.gentoo.org/show_bug.cgi?id=214765" 874 elog "https://bugs.gentoo.org/show_bug.cgi?id=214765"
745 echo 875 echo
876 fi
746 fi 877 fi
747} 878 fi
748
749postinst_headers() {
750 elog "Kernel headers are usually only used when recompiling your system libc, as"
751 elog "such, following the installation of newer headers, it is advised that you"
752 elog "re-merge your system libc."
753 elog "Failure to do so will cause your system libc to not make use of newer"
754 elog "features present in the updated kernel headers."
755} 879}
756 880
757# pkg_setup functions 881# pkg_setup functions
758#============================================================== 882#==============================================================
759setup_headers() { 883setup_headers() {
773 897
774# unipatch 898# unipatch
775#============================================================== 899#==============================================================
776unipatch() { 900unipatch() {
777 local i x y z extention PIPE_CMD UNIPATCH_DROP KPATCH_DIR PATCH_DEPTH ELINE 901 local i x y z extention PIPE_CMD UNIPATCH_DROP KPATCH_DIR PATCH_DEPTH ELINE
778 local STRICT_COUNT PATCH_LEVEL myLC_ALL myLANG extglob_bak 902 local STRICT_COUNT PATCH_LEVEL myLC_ALL myLANG
779 903
780 # set to a standard locale to ensure sorts are ordered properly. 904 # set to a standard locale to ensure sorts are ordered properly.
781 myLC_ALL="${LC_ALL}" 905 myLC_ALL="${LC_ALL}"
782 myLANG="${LANG}" 906 myLANG="${LANG}"
783 LC_ALL="C" 907 LC_ALL="C"
785 909
786 [ -z "${KPATCH_DIR}" ] && KPATCH_DIR="${WORKDIR}/patches/" 910 [ -z "${KPATCH_DIR}" ] && KPATCH_DIR="${WORKDIR}/patches/"
787 [ ! -d ${KPATCH_DIR} ] && mkdir -p ${KPATCH_DIR} 911 [ ! -d ${KPATCH_DIR} ] && mkdir -p ${KPATCH_DIR}
788 912
789 # We're gonna need it when doing patches with a predefined patchlevel 913 # We're gonna need it when doing patches with a predefined patchlevel
790 extglob_bak=$(shopt -p extglob)
791 shopt -s extglob 914 eshopts_push -s extglob
792 915
793 # This function will unpack all passed tarballs, add any passed patches, and remove any passed patchnumbers 916 # This function will unpack all passed tarballs, add any passed patches, and remove any passed patchnumbers
794 # usage can be either via an env var or by params 917 # usage can be either via an env var or by params
795 # although due to the nature we pass this within this eclass 918 # although due to the nature we pass this within this eclass
796 # it shall be by param only. 919 # it shall be by param only.
822 else 945 else
823 extention=${i/*./} 946 extention=${i/*./}
824 extention=${extention/:*/} 947 extention=${extention/:*/}
825 PIPE_CMD="" 948 PIPE_CMD=""
826 case ${extention} in 949 case ${extention} in
950 xz) PIPE_CMD="xz -dc";;
951 lzma) PIPE_CMD="lzma -dc";;
827 bz2) PIPE_CMD="bzip2 -dc";; 952 bz2) PIPE_CMD="bzip2 -dc";;
828 patch) PIPE_CMD="cat";; 953 patch*) PIPE_CMD="cat";;
829 diff) PIPE_CMD="cat";; 954 diff) PIPE_CMD="cat";;
830 gz|Z|z) PIPE_CMD="gzip -dc";; 955 gz|Z|z) PIPE_CMD="gzip -dc";;
831 ZIP|zip) PIPE_CMD="unzip -p";; 956 ZIP|zip) PIPE_CMD="unzip -p";;
832 *) UNIPATCH_DROP="${UNIPATCH_DROP} ${i/:*/}";; 957 *) UNIPATCH_DROP="${UNIPATCH_DROP} ${i/:*/}";;
833 esac 958 esac
854 do z="${z}0"; 979 do z="${z}0";
855 done 980 done
856 PATCH_ORDER="${z}${STRICT_COUNT}" 981 PATCH_ORDER="${z}${STRICT_COUNT}"
857 982
858 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/ 983 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/
859 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL}) 984 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
860 else 985 else
861 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) 986 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
862 fi 987 fi
863 fi 988 fi
864 fi 989 fi
990
991 # If experimental was not chosen by the user, drop experimental patches not in K_EXP_GENPATCHES_LIST.
992 if [[ "${i}" == *"genpatches-"*".experimental."* && -n ${K_EXP_GENPATCHES_PULL} ]] ; then
993 if [[ -z ${K_EXP_GENPATCHES_NOUSE} ]] && use experimental; then
994 continue
995 fi
996
997 local j
998 for j in ${KPATCH_DIR}/*/50*_*.patch*; do
999 for k in ${K_EXP_GENPATCHES_LIST} ; do
1000 [[ "$(basename ${j})" == ${k}* ]] && continue 2
1001 done
1002 UNIPATCH_DROP+=" $(basename ${j})"
1003 done
1004 else
1005 UNIPATCH_LIST_GENPATCHES+=" ${DISTDIR}/${tarball}"
1006 debug-print "genpatches tarball: $tarball"
1007
1008 # check gcc version < 4.9.X uses patch 5000 and = 4.9.X uses patch 5010
1009 if [[ $(gcc-major-version) -eq 4 ]] && [[ $(gcc-minor-version) -ne 9 ]]; then
1010 # drop 5000_enable-additional-cpu-optimizations-for-gcc-4.9.patch
1011 if [[ $UNIPATCH_DROP != *"5010_enable-additional-cpu-optimizations-for-gcc-4.9.patch"* ]]; then
1012 UNIPATCH_DROP+=" 5010_enable-additional-cpu-optimizations-for-gcc-4.9.patch"
1013 fi
1014 else
1015 if [[ $UNIPATCH_DROP != *"5000_enable-additional-cpu-optimizations-for-gcc.patch"* ]]; then
1016 #drop 5000_enable-additional-cpu-optimizations-for-gcc.patch
1017 UNIPATCH_DROP+=" 5000_enable-additional-cpu-optimizations-for-gcc.patch"
1018 fi
1019 fi
1020
1021 # if kdbus use flag is not set, drop the kdbus patch
1022 if [[ $UNIPATCH_DROP != *"5015_kdbus*.patch"* ]]; then
1023 if ! has kdbus ${IUSE} || ! use kdbus; then
1024 UNIPATCH_DROP="${UNIPATCH_DROP} 5015_kdbus*.patch"
1025 fi
1026 fi
1027 fi
865 done 1028 done
866 1029
867 #populate KPATCH_DIRS so we know where to look to remove the excludes 1030 #populate KPATCH_DIRS so we know where to look to remove the excludes
868 x=${KPATCH_DIR} 1031 x=${KPATCH_DIR}
869 KPATCH_DIR="" 1032 KPATCH_DIR=""
872 done 1035 done
873 1036
874 # do not apply fbcondecor patch to sparc/sparc64 as it breaks boot 1037 # do not apply fbcondecor patch to sparc/sparc64 as it breaks boot
875 # bug #272676 1038 # bug #272676
876 if [[ "$(tc-arch)" = "sparc" || "$(tc-arch)" = "sparc64" ]]; then 1039 if [[ "$(tc-arch)" = "sparc" || "$(tc-arch)" = "sparc64" ]]; then
877 if [[ ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.28 ]]; then 1040 if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.28 ]]; then
878 UNIPATCH_DROP="${UNIPATCH_DROP} *_fbcondecor-0.9.6.patch" 1041 UNIPATCH_DROP="${UNIPATCH_DROP} *_fbcondecor-0.9.6.patch"
879 echo 1042 echo
880 ewarn "fbcondecor currently prevents sparc/sparc64 from booting" 1043 ewarn "fbcondecor currently prevents sparc/sparc64 from booting"
881 ewarn "for kernel versions >= 2.6.29. Removing fbcondecor patch." 1044 ewarn "for kernel versions >= 2.6.29. Removing fbcondecor patch."
882 ewarn "See https://bugs.gentoo.org/show_bug.cgi?id=272676 for details" 1045 ewarn "See https://bugs.gentoo.org/show_bug.cgi?id=272676 for details"
901 [ -z ${i/*.patch*/} ] && PATCH_DEPTH=${i/*.patch/} 1064 [ -z ${i/*.patch*/} ] && PATCH_DEPTH=${i/*.patch/}
902 #[ -z ${i/*.diff*/} ] && PATCH_DEPTH=${i/*.diff/} 1065 #[ -z ${i/*.diff*/} ] && PATCH_DEPTH=${i/*.diff/}
903 1066
904 if [ -z "${PATCH_DEPTH}" ]; then PATCH_DEPTH=0; fi 1067 if [ -z "${PATCH_DEPTH}" ]; then PATCH_DEPTH=0; fi
905 1068
1069 ####################################################################
1070 # IMPORTANT: This is temporary code to support Linux git 3.15_rc1! #
1071 # #
1072 # The patch contains a removal of a symlink, followed by addition #
1073 # of a file with the same name as the symlink in the same #
1074 # location; this causes the dry-run to fail, filed bug #507656. #
1075 # #
1076 # https://bugs.gentoo.org/show_bug.cgi?id=507656 #
1077 ####################################################################
1078 if [[ ${PN} == "git-sources" ]] ; then
1079 if [[ ${KV_MAJOR}${KV_PATCH} -ge 315 && ${RELEASETYPE} == -rc ]] ; then
906 ebegin "Applying ${i/*\//} (-p${PATCH_DEPTH}+)" 1080 ebegin "Applying ${i/*\//} (-p1)"
1081 if [ $(patch -p1 --no-backup-if-mismatch -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then
1082 eend 0
1083 rm ${STDERR_T}
1084 break
1085 else
1086 eend 1
1087 eerror "Failed to apply patch ${i/*\//}"
1088 eerror "Please attach ${STDERR_T} to any bug you may post."
1089 eshopts_pop
1090 die "Failed to apply ${i/*\//} on patch depth 1."
1091 fi
1092 fi
1093 fi
1094 ####################################################################
1095
907 while [ ${PATCH_DEPTH} -lt 5 ]; do 1096 while [ ${PATCH_DEPTH} -lt 5 ]; do
908 echo "Attempting Dry-run:" >> ${STDERR_T} 1097 echo "Attempting Dry-run:" >> ${STDERR_T}
909 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i}" >> ${STDERR_T} 1098 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i}" >> ${STDERR_T}
910 echo "=======================================================" >> ${STDERR_T} 1099 echo "=======================================================" >> ${STDERR_T}
911 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i} >> ${STDERR_T}) $? -eq 0 ]; then 1100 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch --dry-run -f < ${i} >> ${STDERR_T}) $? -eq 0 ]; then
1101 ebegin "Applying ${i/*\//} (-p${PATCH_DEPTH})"
912 echo "Attempting patch:" > ${STDERR_T} 1102 echo "Attempting patch:" > ${STDERR_T}
913 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i}" >> ${STDERR_T} 1103 echo "cmd: patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i}" >> ${STDERR_T}
914 echo "=======================================================" >> ${STDERR_T} 1104 echo "=======================================================" >> ${STDERR_T}
915 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then 1105 if [ $(patch -p${PATCH_DEPTH} --no-backup-if-mismatch -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then
916 eend 0 1106 eend 0
918 break 1108 break
919 else 1109 else
920 eend 1 1110 eend 1
921 eerror "Failed to apply patch ${i/*\//}" 1111 eerror "Failed to apply patch ${i/*\//}"
922 eerror "Please attach ${STDERR_T} to any bug you may post." 1112 eerror "Please attach ${STDERR_T} to any bug you may post."
923 die "Failed to apply ${i/*\//}" 1113 eshopts_pop
1114 die "Failed to apply ${i/*\//} on patch depth ${PATCH_DEPTH}."
924 fi 1115 fi
925 else 1116 else
926 PATCH_DEPTH=$((${PATCH_DEPTH} + 1)) 1117 PATCH_DEPTH=$((${PATCH_DEPTH} + 1))
927 fi 1118 fi
928 done 1119 done
929 if [ ${PATCH_DEPTH} -eq 5 ]; then 1120 if [ ${PATCH_DEPTH} -eq 5 ]; then
930 eend 1 1121 eerror "Failed to dry-run patch ${i/*\//}"
931 eerror "Please attach ${STDERR_T} to any bug you may post." 1122 eerror "Please attach ${STDERR_T} to any bug you may post."
932 die "Unable to dry-run patch." 1123 eshopts_pop
1124 die "Unable to dry-run patch on any patch depth lower than 5."
933 fi 1125 fi
934 done 1126 done
935 done 1127 done
936 1128
937 # This is a quick, and kind of nasty hack to deal with UNIPATCH_DOCS which 1129 # When genpatches is used, we want to install 0000_README which documents
938 # sit in KPATCH_DIR's. This is handled properly in the unipatch rewrite, 1130 # the patches that were used; such that the user can see them, bug #301478.
939 # which is why I'm not taking too much time over this. 1131 if [[ ! -z ${K_WANT_GENPATCHES} ]] ; then
1132 UNIPATCH_DOCS="${UNIPATCH_DOCS} 0000_README"
1133 fi
1134
1135 # When files listed in UNIPATCH_DOCS are found in KPATCH_DIR's, we copy it
1136 # to the temporary directory and remember them in UNIPATCH_DOCS to install
1137 # them during the install phase.
940 local tmp 1138 local tmp
1139 for x in ${KPATCH_DIR}; do
941 for i in ${UNIPATCH_DOCS}; do 1140 for i in ${UNIPATCH_DOCS}; do
1141 if [[ -f "${x}/${i}" ]] ; then
942 tmp="${tmp} ${i//*\/}" 1142 tmp="${tmp} ${i}"
943 cp -f ${i} "${T}"/ 1143 cp -f "${x}/${i}" "${T}"/
1144 fi
1145 done
944 done 1146 done
945 UNIPATCH_DOCS="${tmp}" 1147 UNIPATCH_DOCS="${tmp}"
946 1148
947 # clean up KPATCH_DIR's - fixes bug #53610 1149 # clean up KPATCH_DIR's - fixes bug #53610
948 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done 1150 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done
949 1151
950 LC_ALL="${myLC_ALL}" 1152 LC_ALL="${myLC_ALL}"
951 LANG="${myLANG}" 1153 LANG="${myLANG}"
952 eval ${extglob_bak} 1154 eshopts_pop
953} 1155}
954 1156
955# getfilevar accepts 2 vars as follows: 1157# getfilevar accepts 2 vars as follows:
956# getfilevar <VARIABLE> <CONFIGFILE> 1158# getfilevar <VARIABLE> <CONFIGFILE>
957# pulled from linux-info 1159# pulled from linux-info
1004 for i in ${COMPAT_URI}; do 1206 for i in ${COMPAT_URI}; do
1005 ARCH_PATCH="${ARCH_PATCH} ${DISTDIR}/${i/*\//}" 1207 ARCH_PATCH="${ARCH_PATCH} ${DISTDIR}/${i/*\//}"
1006 done 1208 done
1007 fi 1209 fi
1008 done 1210 done
1009}
1010
1011# sparc nastiness
1012#==============================================================
1013# This script generates the files in /usr/include/asm for sparc systems
1014# during installation of sys-kernel/linux-headers.
1015# Will no longer be needed when full 64 bit support is used on sparc64
1016# systems.
1017#
1018# Shamefully ripped from Debian
1019# ----------------------------------------------------------------------
1020
1021# Idea borrowed from RedHat's kernel package
1022
1023# This is gonna get replaced by something in multilib.eclass soon...
1024# --eradicator
1025generate_sparc_asm() {
1026 local name
1027
1028 cd $1 || die
1029 mkdir asm
1030
1031 for h in `( ls asm-sparc; ls asm-sparc64 ) | grep '\.h$' | sort -u`; do
1032 name="$(echo $h | tr a-z. A-Z_)"
1033 # common header
1034 echo "/* All asm/ files are generated and point to the corresponding
1035 * file in asm-sparc or asm-sparc64.
1036 */
1037
1038#ifndef __SPARCSTUB__${name}__
1039#define __SPARCSTUB__${name}__
1040" > asm/${h}
1041
1042 # common for sparc and sparc64
1043 if [ -f asm-sparc/$h -a -f asm-sparc64/$h ]; then
1044 echo "#ifdef __arch64__
1045#include <asm-sparc64/$h>
1046#else
1047#include <asm-sparc/$h>
1048#endif
1049" >> asm/${h}
1050
1051 # sparc only
1052 elif [ -f asm-sparc/$h ]; then
1053echo "#ifndef __arch64__
1054#include <asm-sparc/$h>
1055#endif
1056" >> asm/${h}
1057
1058 # sparc64 only
1059 else
1060echo "#ifdef __arch64__
1061#include <asm-sparc64/$h>
1062#endif
1063" >> asm/${h}
1064 fi
1065
1066 # common footer
1067 echo "#endif /* !__SPARCSTUB__${name}__ */" >> asm/${h}
1068 done
1069 return 0
1070} 1211}
1071 1212
1072headers___fix() { 1213headers___fix() {
1073 # Voodoo to partially fix broken upstream headers. 1214 # Voodoo to partially fix broken upstream headers.
1074 # note: do not put inline/asm/volatile together (breaks "inline asm volatile") 1215 # note: do not put inline/asm/volatile together (breaks "inline asm volatile")
1116 kernel_is 2 4 && unpack_2_4 1257 kernel_is 2 4 && unpack_2_4
1117 kernel_is 2 6 && unpack_2_6 1258 kernel_is 2 6 && unpack_2_6
1118 fi 1259 fi
1119 1260
1120 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then 1261 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1121 cp "${DISTDIR}/${DEBLOB_A}" "${T}" 1262 cp "${DISTDIR}/${DEBLOB_A}" "${T}" || die "cp ${DEBLOB_A} failed"
1122 chmod +x "${T}/${DEBLOB_A}" 1263 cp "${DISTDIR}/${DEBLOB_CHECK_A}" "${T}/deblob-check" || die "cp ${DEBLOB_CHECK_A} failed"
1264 chmod +x "${T}/${DEBLOB_A}" "${T}/deblob-check" || die "chmod deblob scripts failed"
1265 fi
1266
1267 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox
1268 # only do this for kernel < 2.6.27 since this file does not exist in later
1269 # kernels
1270 if [[ -n ${KV_MINOR} && ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]] ; then
1271 sed -i \
1272 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
1273 "${S}"/arch/ppc/Makefile
1274 else
1275 sed -i \
1276 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
1277 "${S}"/arch/powerpc/Makefile
1123 fi 1278 fi
1124} 1279}
1125 1280
1126kernel-2_src_compile() { 1281kernel-2_src_compile() {
1127 cd "${S}" 1282 cd "${S}"
1128 [[ ${ETYPE} == headers ]] && compile_headers 1283 [[ ${ETYPE} == headers ]] && compile_headers
1129 1284
1130 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then 1285 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1131 echo ">>> Running deblob script ..." 1286 echo ">>> Running deblob script ..."
1132 sh "${T}/${DEBLOB_A}" --force || \ 1287 python_setup
1133 die "Deblob script failed to run!!!" 1288 sh "${T}/${DEBLOB_A}" --force || die "Deblob script failed to run!!!"
1134 fi 1289 fi
1135} 1290}
1291
1292# if you leave it to the default src_test, it will run make to
1293# find whether test/check targets are present; since "make test"
1294# actually produces a few support files, they are installed even
1295# though the package is binchecks-restricted.
1296#
1297# Avoid this altogether by making the function moot.
1298kernel-2_src_test() { :; }
1136 1299
1137kernel-2_pkg_preinst() { 1300kernel-2_pkg_preinst() {
1138 [[ ${ETYPE} == headers ]] && preinst_headers 1301 [[ ${ETYPE} == headers ]] && preinst_headers
1139} 1302}
1140 1303
1143 [[ ${ETYPE} == headers ]] && install_headers 1306 [[ ${ETYPE} == headers ]] && install_headers
1144 [[ ${ETYPE} == sources ]] && install_sources 1307 [[ ${ETYPE} == sources ]] && install_sources
1145} 1308}
1146 1309
1147kernel-2_pkg_postinst() { 1310kernel-2_pkg_postinst() {
1148 [[ ${ETYPE} == headers ]] && postinst_headers
1149 [[ ${ETYPE} == sources ]] && postinst_sources 1311 [[ ${ETYPE} == sources ]] && postinst_sources
1150} 1312}
1151 1313
1152kernel-2_pkg_setup() { 1314kernel-2_pkg_setup() {
1153 if kernel_is 2 4; then 1315 if kernel_is 2 4; then
1154 if [ "$( gcc-major-version )" -eq "4" ] ; then 1316 if [[ $(gcc-major-version) -ge 4 ]] ; then
1155 echo 1317 echo
1156 ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with linux-2.4!" 1318 ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with linux-2.4!"
1157 ewarn "Either switch to another gcc-version (via gcc-config) or use a" 1319 ewarn "Either switch to another gcc-version (via gcc-config) or use a"
1158 ewarn "newer kernel that supports gcc-4." 1320 ewarn "newer kernel that supports gcc-4."
1159 echo 1321 echo
1166 1328
1167 ABI="${KERNEL_ABI}" 1329 ABI="${KERNEL_ABI}"
1168 [[ ${ETYPE} == headers ]] && setup_headers 1330 [[ ${ETYPE} == headers ]] && setup_headers
1169 [[ ${ETYPE} == sources ]] && echo ">>> Preparing to unpack ..." 1331 [[ ${ETYPE} == sources ]] && echo ">>> Preparing to unpack ..."
1170} 1332}
1333
1334kernel-2_pkg_postrm() {
1335 # This warning only makes sense for kernel sources.
1336 [[ ${ETYPE} == headers ]] && return 0
1337
1338 # If there isn't anything left behind, then don't complain.
1339 [[ -e ${ROOT}usr/src/linux-${KV_FULL} ]] || return 0
1340 echo
1341 ewarn "Note: Even though you have successfully unmerged "
1342 ewarn "your kernel package, directories in kernel source location: "
1343 ewarn "${ROOT}usr/src/linux-${KV_FULL}"
1344 ewarn "with modified files will remain behind. By design, package managers"
1345 ewarn "will not remove these modified files and the directories they reside in."
1346 echo
1347}

Legend:
Removed from v.1.232  
changed lines
  Added in v.1.311

  ViewVC Help
Powered by ViewVC 1.1.20