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

Legend:
Removed from v.1.221  
changed lines
  Added in v.1.302

  ViewVC Help
Powered by ViewVC 1.1.20