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

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

  ViewVC Help
Powered by ViewVC 1.1.20