/[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.238 Revision 1.260
1# Copyright 1999-2009 Gentoo Foundation 1# Copyright 1999-2011 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.238 2010/07/30 00:44:59 mpagano Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.260 2011/08/29 01:28:10 vapier 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>
50# possible. Test ONLY for "1". 50# possible. Test ONLY for "1".
51# K_PREDEBLOBBED - This kernel was already deblobbed elsewhere. 51# K_PREDEBLOBBED - This kernel was already deblobbed elsewhere.
52# If false, either optional deblobbing will be available 52# If false, either optional deblobbing will be available
53# or the license will note the inclusion of freedist 53# or the license will note the inclusion of freedist
54# code. 54# code.
55 55# K_LONGTERM - If set, the eclass will search for the kernel source
56# in the long term directories on the upstream servers
57# as the location has been changed by upstream
56# H_SUPPORTEDARCH - this should be a space separated list of ARCH's which 58# H_SUPPORTEDARCH - this should be a space separated list of ARCH's which
57# can be supported by the headers ebuild 59# can be supported by the headers ebuild
58 60
59# UNIPATCH_LIST - space delimetered list of patches to be applied to the 61# UNIPATCH_LIST - space delimetered list of patches to be applied to the
60# kernel 62# kernel
66# the doc dir 68# the doc dir
67# UNIPATCH_STRICTORDER - if this is set places patches into directories of 69# UNIPATCH_STRICTORDER - if this is set places patches into directories of
68# order, so they are applied in the order passed 70# order, so they are applied in the order passed
69 71
70inherit eutils toolchain-funcs versionator multilib 72inherit eutils toolchain-funcs versionator multilib
71EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst pkg_postinst 73EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_test src_install pkg_preinst pkg_postinst pkg_postrm
72 74
73# Added by Daniel Ostrow <dostrow@gentoo.org> 75# 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. 76# 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. 77# I will remove it when I come up with something more reasonable.
76[[ ${PROFILE_ARCH} == "ppc64" ]] && CHOST="powerpc64-${CHOST#*-}" 78[[ ${PROFILE_ARCH} == "ppc64" ]] && CHOST="powerpc64-${CHOST#*-}"
83HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}" 85HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}"
84[[ -z ${LICENSE} ]] && \ 86[[ -z ${LICENSE} ]] && \
85 LICENSE="GPL-2" 87 LICENSE="GPL-2"
86 88
87# This is the latest KV_PATCH of the deblob tool available from the 89# This is the latest KV_PATCH of the deblob tool available from the
88# libre-sources upstream. 90# libre-sources upstream. If you bump this, you MUST regenerate the Manifests
91# for ALL kernel-2 consumer packages where deblob is available.
89[[ -z ${DEBLOB_MAX_VERSION} ]] && DEBLOB_MAX_VERSION=34 92[[ -z ${DEBLOB_MAX_VERSION} ]] && DEBLOB_MAX_VERSION=38
90 93
91# No need to run scanelf/strip on kernel sources/headers (bug #134453). 94# No need to run scanelf/strip on kernel sources/headers (bug #134453).
92RESTRICT="binchecks strip" 95RESTRICT="binchecks strip"
93 96
94# set LINUX_HOSTCFLAGS if not already set 97# set LINUX_HOSTCFLAGS if not already set
101# if you are adding new functionality in, put a call to it 104# 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. 105# at the start of src_unpack, or during SRC_URI/dep generation.
103debug-print-kernel2-variables() { 106debug-print-kernel2-variables() {
104 for v in PVR CKV OKV KV KV_FULL KV_MAJOR KV_MINOR KV_PATCH RELEASETYPE \ 107 for v in PVR CKV OKV KV KV_FULL KV_MAJOR KV_MINOR KV_PATCH RELEASETYPE \
105 RELEASE UNIPATCH_LIST_DEFAULT UNIPATCH_LIST_GENPATCHES \ 108 RELEASE UNIPATCH_LIST_DEFAULT UNIPATCH_LIST_GENPATCHES \
106 UNIPATCH_LIST S KERNEL_URI ; do 109 UNIPATCH_LIST S KERNEL_URI K_WANT_GENPATCHES ; do
107 debug-print "${v}: ${!v}" 110 debug-print "${v}: ${!v}"
108 done 111 done
109} 112}
110 113
111#Eclass functions only from here onwards ... 114#Eclass functions only from here onwards ...
112#============================================================== 115#==============================================================
113handle_genpatches() { 116handle_genpatches() {
114 local tarball 117 local tarball
115 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return 1 118 [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return 1
116 119
120 debug-print "Inside handle_genpatches"
121 local oldifs=${IFS}
122 export IFS="."
123 local OKV_ARRAY=( $OKV )
124 export IFS=${oldifs}
125
126 # for > 3.0 kernels, handle genpatches tarball name
127 # genpatches for 3.0 and 3.0.1 might be named
128 # genpatches-3.0-1.base.tar.bz2 and genpatches-3.0-2.base.tar.bz2
129 # respectively. Handle this.
130
117 for i in ${K_WANT_GENPATCHES} ; do 131 for i in ${K_WANT_GENPATCHES} ; do
132 if [[ ${KV_MAJOR} -ge 3 ]]; then
133 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
134 tarball="genpatches-${KV_MAJOR}.${KV_MINOR}-${K_GENPATCHES_VER}.${i}.tar.bz2"
135 else
136 tarball="genpatches-${KV_MAJOR}.${KV_PATCH}-${K_GENPATCHES_VER}.${i}.tar.bz2"
137 fi
138 else
118 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.bz2" 139 tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.bz2"
140 fi
141 debug-print "genpatches tarball: $tarball"
119 GENPATCHES_URI="${GENPATCHES_URI} mirror://gentoo/${tarball}" 142 GENPATCHES_URI="${GENPATCHES_URI} mirror://gentoo/${tarball}"
120 UNIPATCH_LIST_GENPATCHES="${UNIPATCH_LIST_GENPATCHES} ${DISTDIR}/${tarball}" 143 UNIPATCH_LIST_GENPATCHES="${UNIPATCH_LIST_GENPATCHES} ${DISTDIR}/${tarball}"
121 done 144 done
122} 145}
123 146
124detect_version() { 147detect_version() {
125 # this function will detect and set 148 # this function will detect and set
146 OKV=${OKV/_rc/-rc} 169 OKV=${OKV/_rc/-rc}
147 OKV=${OKV/-r*} 170 OKV=${OKV/-r*}
148 OKV=${OKV/_p*} 171 OKV=${OKV/_p*}
149 172
150 KV_MAJOR=$(get_version_component_range 1 ${OKV}) 173 KV_MAJOR=$(get_version_component_range 1 ${OKV})
174 # handle if OKV is X.Y or X.Y.Z (e.g. 3.0 or 3.0.1)
175 local oldifs=${IFS}
176 export IFS="."
177 local OKV_ARRAY=( $OKV )
178 export IFS=${oldifs}
179
180 # if KV_MAJOR >= 3, then we have no more KV_MINOR
181 #if [[ ${KV_MAJOR} -lt 3 ]]; then
182 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
151 KV_MINOR=$(get_version_component_range 2 ${OKV}) 183 KV_MINOR=$(get_version_component_range 2 ${OKV})
152 KV_PATCH=$(get_version_component_range 3 ${OKV}) 184 KV_PATCH=$(get_version_component_range 3 ${OKV})
153
154 if [[ ${KV_MAJOR}${KV_MINOR}${KV_PATCH} -ge 269 ]]; then 185 if [[ ${KV_MAJOR}${KV_MINOR}${KV_PATCH} -ge 269 ]]; then
186 KV_EXTRA=$(get_version_component_range 4- ${OKV})
187 KV_EXTRA=${KV_EXTRA/[-_]*}
188 else
189 KV_PATCH=$(get_version_component_range 3- ${OKV})
190 fi
191 else
192 KV_PATCH=$(get_version_component_range 2 ${OKV})
155 KV_EXTRA=$(get_version_component_range 4- ${OKV}) 193 KV_EXTRA=$(get_version_component_range 3- ${OKV})
156 KV_EXTRA=${KV_EXTRA/[-_]*} 194 KV_EXTRA=${KV_EXTRA/[-_]*}
195 fi
196
197 debug-print "KV_EXTRA is ${KV_EXTRA}"
198
199 KV_PATCH=${KV_PATCH/[-_]*}
200
201 local v n=0 missing
202 #if [[ ${KV_MAJOR} -lt 3 ]]; then
203 if [[ ${#OKV_ARRAY[@]} -ge 3 ]]; then
204 for v in CKV OKV KV_{MAJOR,MINOR,PATCH} ; do
205 [[ -z ${!v} ]] && n=1 && missing="${missing}${v} ";
206 done
157 else 207 else
158 KV_PATCH=$(get_version_component_range 3- ${OKV})
159 fi
160 KV_PATCH=${KV_PATCH/[-_]*}
161
162 local v n=0 missing
163 for v in CKV OKV KV_{MAJOR,MINOR,PATCH} ; do 208 for v in CKV OKV KV_{MAJOR,PATCH} ; do
164 [[ -z ${!v} ]] && n=1 && missing="${missing}${v} "; 209 [[ -z ${!v} ]] && n=1 && missing="${missing}${v} ";
165 done 210 done
211 fi
212
166 [[ $n -eq 1 ]] && \ 213 [[ $n -eq 1 ]] && \
167 eerror "Missing variables: ${missing}" && \ 214 eerror "Missing variables: ${missing}" && \
168 die "Failed to extract kernel version (try explicit CKV in ebuild)!" 215 die "Failed to extract kernel version (try explicit CKV in ebuild)!"
169 unset v n missing 216 unset v n missing
170 217
218# if [[ ${KV_MAJOR} -ge 3 ]]; then
219 if [[ ${#OKV_ARRAY[@]} -lt 3 ]]; then
220 KV_PATCH_ARR=(${KV_PATCH//\./ })
221
222 # at this point 080811, Linus is putting 3.1 kernels in 3.0 directory
223 # revisit when 3.1 is released
224 if [[ ${KV_PATCH} -gt 0 ]]; then
225 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))"
226 else
227 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_PATCH_ARR}"
228 fi
229 # KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_PATCH_ARR}"
230 [[ -n "${K_LONGTERM}" ]] &&
231 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_PATCH_ARR}"
232 else
233 #KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.0"
171 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 234 KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}"
235 [[ -n "${K_LONGTERM}" ]] &&
236 KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
237 fi
238
239 debug-print "KERNEL_BASE_URI is ${KERNEL_BASE_URI}"
240
241 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then
242 # handle non genpatch using sources correctly
243 if [[ -z ${K_WANT_GENPATCHES} && -z ${K_GENPATCHES_VER} && ${KV_PATCH} -gt 0 ]]; then
244 KERNEL_URI="${KERNEL_BASE_URI}/patch-${OKV}.bz2"
245 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.bz2"
246 fi
247 KERNEL_URI="${KERNEL_URI} ${KERNEL_BASE_URI}/linux-${KV_MAJOR}.${KV_MINOR}.tar.bz2"
248 else
249 KERNEL_URI="${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
250 fi
172 251
173 RELEASE=${CKV/${OKV}} 252 RELEASE=${CKV/${OKV}}
174 RELEASE=${RELEASE/_beta} 253 RELEASE=${RELEASE/_beta}
175 RELEASE=${RELEASE/_rc/-rc} 254 RELEASE=${RELEASE/_rc/-rc}
176 RELEASE=${RELEASE/_pre/-pre} 255 RELEASE=${RELEASE/_pre/-pre}
177 # We cannot trivally call kernel_is here, because it calls us to detect the 256 # We cannot trivally call kernel_is here, because it calls us to detect the
178 # version 257 # version
179 #kernel_is ge 2 6 && RELEASE=${RELEASE/-pre/-git} 258 #kernel_is ge 2 6 && RELEASE=${RELEASE/-pre/-git}
180 [ $(($KV_MAJOR * 1000 + $KV_MINOR)) -ge 2006 ] && RELEASE=${RELEASE/-pre/-git} 259 [ $(($KV_MAJOR * 1000 + ${KV_MINOR:-0})) -ge 2006 ] && RELEASE=${RELEASE/-pre/-git}
181 RELEASETYPE=${RELEASE//[0-9]} 260 RELEASETYPE=${RELEASE//[0-9]}
182 261
183 # Now we know that RELEASE is the -rc/-git 262 # Now we know that RELEASE is the -rc/-git
184 # and RELEASETYPE is the same but with its numerics stripped 263 # and RELEASETYPE is the same but with its numerics stripped
185 # we can work on better sorting EXTRAVERSION. 264 # we can work on better sorting EXTRAVERSION.
186 # first of all, we add the release 265 # first of all, we add the release
187 EXTRAVERSION="${RELEASE}" 266 EXTRAVERSION="${RELEASE}"
188 debug-print "0 EXTRAVERSION:${EXTRAVERSION}" 267 debug-print "0 EXTRAVERSION:${EXTRAVERSION}"
189 [[ -n ${KV_EXTRA} ]] && EXTRAVERSION=".${KV_EXTRA}${EXTRAVERSION}" 268 [[ -n ${KV_EXTRA} ]] && [[ ${KV_MAJOR} -lt 3 ]] && EXTRAVERSION=".${KV_EXTRA}${EXTRAVERSION}"
190 269
191 debug-print "1 EXTRAVERSION:${EXTRAVERSION}" 270 debug-print "1 EXTRAVERSION:${EXTRAVERSION}"
192 if [[ -n "${K_NOUSEPR}" ]]; then 271 if [[ -n "${K_NOUSEPR}" ]]; then
193 # Don't add anything based on PR to EXTRAVERSION 272 # Don't add anything based on PR to EXTRAVERSION
194 debug-print "1.0 EXTRAVERSION:${EXTRAVERSION}" 273 debug-print "1.0 EXTRAVERSION:${EXTRAVERSION}"
212 debug-print "2 EXTRAVERSION:${EXTRAVERSION}" 291 debug-print "2 EXTRAVERSION:${EXTRAVERSION}"
213 292
214 # The only messing around which should actually effect this is for KV_EXTRA 293 # The only messing around which should actually effect this is for KV_EXTRA
215 # since this has to limit OKV to MAJ.MIN.PAT and strip EXTRA off else 294 # since this has to limit OKV to MAJ.MIN.PAT and strip EXTRA off else
216 # KV_FULL evaluates to MAJ.MIN.PAT.EXT.EXT after EXTRAVERSION 295 # KV_FULL evaluates to MAJ.MIN.PAT.EXT.EXT after EXTRAVERSION
296
217 if [[ -n ${KV_EXTRA} ]]; then 297 if [[ -n ${KV_EXTRA} ]]; then
298 if [[ -n ${KV_MINOR} ]]; then
218 OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}" 299 OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
219 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/patch-${CKV}.bz2 300 else
220 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}.tar.bz2" 301 OKV="${KV_MAJOR}.${KV_PATCH}"
302 fi
303 KERNEL_URI="${KERNEL_BASE_URI}/patch-${CKV}.bz2
304 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
221 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.bz2" 305 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.bz2"
222 fi 306 fi
223 307
224 # We need to set this using OKV, but we need to set it before we do any 308 # We need to set this using OKV, but we need to set it before we do any
225 # messing around with OKV based on RELEASETYPE 309 # messing around with OKV based on RELEASETYPE
233 # for example: 317 # for example:
234 # CKV="2.6.11_rc3_pre2" 318 # CKV="2.6.11_rc3_pre2"
235 # will pull: 319 # will pull:
236 # linux-2.6.10.tar.bz2 & patch-2.6.11-rc3.bz2 & patch-2.6.11-rc3-git2.bz2 320 # linux-2.6.10.tar.bz2 & patch-2.6.11-rc3.bz2 & patch-2.6.11-rc3-git2.bz2
237 321
322 if [[ ${KV_MAJOR}${KV_MINOR} -eq 26 ]]; then
323
238 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then 324 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
239 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))" 325 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
240 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/testing/patch-${CKV//_/-}.bz2 326 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.bz2
241 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 327 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
242 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2" 328 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2"
243 fi 329 fi
244 330
245 if [[ ${RELEASETYPE} == -git ]]; then 331 if [[ ${RELEASETYPE} == -git ]]; then
246 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/snapshots/patch-${OKV}${RELEASE}.bz2 332 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.bz2
247 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 333 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
248 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2" 334 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2"
249 fi 335 fi
250 336
251 if [[ ${RELEASETYPE} == -rc-git ]]; then 337 if [[ ${RELEASETYPE} == -rc-git ]]; then
252 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))" 338 OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
253 KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2 339 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2
254 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 340 ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2
255 mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2" 341 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
342
256 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2" 343 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2"
257 fi 344 fi
345 else
346 if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
347 if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then
348 OKV="2.6.39"
349 else
350 KV_PATCH_ARR=(${KV_PATCH//\./ })
351 OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))"
352 fi
353 KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.bz2
354 ${KERNEL_BASE_URI}/testing/linux-${OKV}.tar.bz2"
355 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2"
356 fi
357
358 if [[ ${RELEASETYPE} == -git ]]; then
359 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.bz2
360 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
361 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2"
362 fi
363
364 if [[ ${RELEASETYPE} == -rc-git ]]; then
365 if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then
366 OKV="2.6.39"
367 else
368 KV_PATCH_ARR=(${KV_PATCH//\./ })
369 OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))"
370 fi
371 KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.bz2
372 ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.bz2
373 ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
374
375 UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.bz2"
376 fi
377
378
379 fi
380
258 381
259 debug-print-kernel2-variables 382 debug-print-kernel2-variables
260 383
261 handle_genpatches 384 handle_genpatches
262} 385}
311# Capture the sources type and set DEPENDs 434# Capture the sources type and set DEPENDs
312if [[ ${ETYPE} == sources ]]; then 435if [[ ${ETYPE} == sources ]]; then
313 DEPEND="!build? ( sys-apps/sed 436 DEPEND="!build? ( sys-apps/sed
314 >=sys-devel/binutils-2.11.90.0.31 )" 437 >=sys-devel/binutils-2.11.90.0.31 )"
315 RDEPEND="!build? ( >=sys-libs/ncurses-5.2 438 RDEPEND="!build? ( >=sys-libs/ncurses-5.2
316 sys-devel/make )" 439 sys-devel/make )"
317 PDEPEND="!build? ( virtual/dev-manager )" 440 PDEPEND="!build? ( virtual/dev-manager )"
318 441
319 PROVIDE="virtual/linux-sources"
320 kernel_is gt 2 4 && PROVIDE="${PROVIDE} virtual/alsa"
321
322 SLOT="${PVR}" 442 SLOT="${PVR}"
323 DESCRIPTION="Sources for the ${KV_MAJOR}.${KV_MINOR} linux kernel" 443 DESCRIPTION="Sources for the ${KV_MAJOR}.${KV_MINOR:-$KV_PATCH} linux kernel"
324 IUSE="symlink build" 444 IUSE="symlink build"
325 445
326 # Bug #266157, deblob for libre support 446 # Bug #266157, deblob for libre support
327 if [[ -z ${K_PREDEBLOBBED} ]] ; then 447 if [[ -z ${K_PREDEBLOBBED} ]] ; then
328 if [[ -z ${K_DEBLOB_AVAILABLE} ]] ; then 448 # Bug #359865, force a call to detect_version if needed
329 kernel_is ge 2 6 27 && \ 449 kernel_is ge 2 6 27 && \
450 [[ -z "${K_DEBLOB_AVAILABLE}" ]] && \
330 kernel_is le 2 6 ${DEBLOB_MAX_VERSION} && \ 451 kernel_is le 2 6 ${DEBLOB_MAX_VERSION} && \
331 K_DEBLOB_AVAILABLE=1 452 K_DEBLOB_AVAILABLE=1
332 fi
333 if [[ ${K_DEBLOB_AVAILABLE} == "1" ]] ; then 453 if [[ ${K_DEBLOB_AVAILABLE} == "1" ]] ; then
334 IUSE="${IUSE} deblob" 454 IUSE="${IUSE} deblob"
335 # Reflect that kernels contain firmware blobs unless otherwise 455 # Reflect that kernels contain firmware blobs unless otherwise
336 # stripped 456 # stripped
337 LICENSE="${LICENSE} !deblob? ( freedist )" 457 LICENSE="${LICENSE} !deblob? ( freedist )"
338 458
459 if [[ -n KV_MINOR ]]; then
339 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}" 460 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
461 else
462 DEBLOB_PV="${KV_MAJOR}.${KV_PATCH}"
463 fi
464
465 if [[ ${KV_MAJOR} -ge 3 ]]; then
466 DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}"
467 fi
468
340 DEBLOB_A="deblob-${DEBLOB_PV}" 469 DEBLOB_A="deblob-${DEBLOB_PV}"
470 DEBLOB_CHECK_A="deblob-check-${DEBLOB_PV}"
341 DEBLOB_HOMEPAGE="http://www.fsfla.org/svnwiki/selibre/linux-libre/" 471 DEBLOB_HOMEPAGE="http://www.fsfla.org/svnwiki/selibre/linux-libre/"
472 DEBLOB_URI_PATH="download/releases/LATEST-${DEBLOB_PV}.N"
473 if ! has "${EAPI:-0}" 0 1 ; then
474 DEBLOB_CHECK_URI="${DEBLOB_HOMEPAGE}/${DEBLOB_URI_PATH}/deblob-check -> ${DEBLOB_CHECK_A}"
475 else
476 DEBLOB_CHECK_URI="mirror://gentoo/${DEBLOB_CHECK_A}"
477 fi
478 DEBLOB_URI="${DEBLOB_HOMEPAGE}/${DEBLOB_URI_PATH}/${DEBLOB_A}"
342 HOMEPAGE="${HOMEPAGE} ${DEBLOB_HOMEPAGE}" 479 HOMEPAGE="${HOMEPAGE} ${DEBLOB_HOMEPAGE}"
343 480
344 KERNEL_URI="${KERNEL_URI} 481 KERNEL_URI="${KERNEL_URI}
345 deblob? ( 482 deblob? (
346 ${DEBLOB_HOMEPAGE}/download/releases/LATEST-${DEBLOB_PV}.N/${DEBLOB_A} 483 ${DEBLOB_URI}
484 ${DEBLOB_CHECK_URI}
347 )" 485 )"
348 else 486 else
349 # We have no way to deblob older kernels, so just mark them as 487 # We have no way to deblob older kernels, so just mark them as
350 # tainted with non-libre materials. 488 # tainted with non-libre materials.
351 LICENSE="${LICENSE} freedist" 489 LICENSE="${LICENSE} freedist"
358 # Since we should NOT honour KBUILD_OUTPUT in headers 496 # Since we should NOT honour KBUILD_OUTPUT in headers
359 # lets unset it here. 497 # lets unset it here.
360 unset KBUILD_OUTPUT 498 unset KBUILD_OUTPUT
361 499
362 if [[ ${CTARGET} = ${CHOST} ]]; then 500 if [[ ${CTARGET} = ${CHOST} ]]; then
363 DEPEND="!virtual/os-headers"
364 PROVIDE="virtual/os-headers"
365 SLOT="0" 501 SLOT="0"
366 else 502 else
367 SLOT="${CTARGET}" 503 SLOT="${CTARGET}"
368 fi 504 fi
369else 505else
429 || die "make include/linux/version.h failed" 565 || die "make include/linux/version.h failed"
430 rm -f .config >/dev/null 566 rm -f .config >/dev/null
431} 567}
432 568
433universal_unpack() { 569universal_unpack() {
570 debug-print "Inside universal_unpack"
571
572 local oldifs=${IFS}
573 export IFS="."
574 local OKV_ARRAY=( $OKV )
575 export IFS=${oldifs}
576
434 cd "${WORKDIR}" 577 cd "${WORKDIR}"
578 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then
579 unpack linux-${KV_MAJOR}.${KV_MINOR}.tar.bz2
580 else
435 unpack linux-${OKV}.tar.bz2 581 unpack linux-${OKV}.tar.bz2
582 fi
583
436 if [[ -d "linux" ]]; then 584 if [[ -d "linux" ]]; then
585 debug-print "Moving linux to linux-${KV_FULL}"
437 mv linux linux-${KV_FULL} \ 586 mv linux linux-${KV_FULL} \
438 || die "Unable to move source tree to ${KV_FULL}." 587 || die "Unable to move source tree to ${KV_FULL}."
439 elif [[ "${OKV}" != "${KV_FULL}" ]]; then 588 elif [[ "${OKV}" != "${KV_FULL}" ]]; then
589 if [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]] &&
590 [[ "${ETYPE}" = "sources" ]]; then
591 debug-print "moving linux-${KV_MAJOR}.${KV_MINOR} to linux-${KV_FULL} "
592 mv linux-${KV_MAJOR}.${KV_MINOR} linux-${KV_FULL} \
593 || die "Unable to move source tree to ${KV_FULL}."
594 else
595 debug-print "moving linux-${OKV} to linux-${KV_FULL} "
440 mv linux-${OKV} linux-${KV_FULL} \ 596 mv linux-${OKV} linux-${KV_FULL} \
597 || die "Unable to move source tree to ${KV_FULL}."
598 fi
599 elif [[ ${#OKV_ARRAY[@]} -ge 3 ]] && [[ ${KV_MAJOR} -ge 3 ]]; then
600 mv linux-${KV_MAJOR}.${KV_MINOR} linux-${KV_FULL} \
441 || die "Unable to move source tree to ${KV_FULL}." 601 || die "Unable to move source tree to ${KV_FULL}."
442 fi 602 fi
443 cd "${S}" 603 cd "${S}"
444 604
445 # remove all backup files 605 # remove all backup files
446 find . -iname "*~" -exec rm {} \; 2> /dev/null 606 find . -iname "*~" -exec rm {} \; 2> /dev/null
447 607
448 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox 608 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox
449 # only do this for kernel < 2.6.27 since this file does not exist in later 609 # only do this for kernel < 2.6.27 since this file does not exist in later
450 # kernels 610 # kernels
451 if [[ ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]] 611 if [[ -n ${KV_MINOR} && ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]]
452 then 612 then
453 sed -i \ 613 sed -i \
454 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \ 614 -e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
455 "${S}"/arch/ppc/Makefile 615 "${S}"/arch/ppc/Makefile
456 else 616 else
566 return 0 726 return 0
567 fi 727 fi
568 728
569 # Do not use "linux/*" as that can cause problems with very long 729 # Do not use "linux/*" as that can cause problems with very long
570 # $S values where the cmdline to cp is too long 730 # $S values where the cmdline to cp is too long
571 cd "${S}" 731 pushd "${S}" >/dev/null
572 dodir ${ddir}/linux 732 dodir ${ddir}/linux
573 cp -pPR "${S}"/include/linux "${D}"/${ddir}/ || die 733 cp -pPR "${S}"/include/linux "${D}"/${ddir}/ || die
574 rm -rf "${D}"/${ddir}/linux/modules 734 rm -rf "${D}"/${ddir}/linux/modules
575 735
576 # Handle multilib headers and crap
577 local multi_dirs="" multi_defs=""
578 case $(tc-arch-kernel) in
579 sparc64)
580 multi_dirs="sparc sparc64"
581 multi_defs="!__arch64__ __arch64__"
582 ;;
583 x86_64)
584 multi_dirs="i386 x86_64"
585 multi_defs="__i386__ __x86_64__"
586 ;;
587 ppc64)
588 multi_dirs="ppc ppc64"
589 multi_defs="!__powerpc64__ __powerpc64__"
590 ;;
591 s390x)
592 multi_dirs="s390 s390x"
593 multi_defs="!__s390x__ __s390x__"
594 ;;
595 arm)
596 dodir ${ddir}/asm 736 dodir ${ddir}/asm
597 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm 737 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm
598 [[ ! -e ${D}/${ddir}/asm/arch ]] && ln -sf arch-ebsa285 "${D}"/${ddir}/asm/arch
599 [[ ! -e ${D}/${ddir}/asm/proc ]] && ln -sf proc-armv "${D}"/${ddir}/asm/proc
600 ;;
601 powerpc)
602 dodir ${ddir}/asm
603 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm
604 if [[ -e "${S}"/include/asm-ppc ]] ; then
605 dodir ${ddir}/asm-ppc
606 cp -pPR "${S}"/include/asm-ppc/* "${D}"/${ddir}/asm-ppc
607 fi
608 ;;
609 *)
610 dodir ${ddir}/asm
611 cp -pPR "${S}"/include/asm/* "${D}"/${ddir}/asm
612 ;;
613 esac
614 if [[ -n ${multi_dirs} ]] ; then
615 local d ml_inc=""
616 for d in ${multi_dirs} ; do
617 dodir ${ddir}/asm-${d}
618 cp -pPR "${S}"/include/asm-${d}/* "${D}"/${ddir}/asm-${d}/ || die "cp asm-${d} failed"
619 738
620 ml_inc="${ml_inc} ${multi_defs%% *}:${ddir}/asm-${d}"
621 multi_defs=${multi_defs#* }
622 done
623 create_ml_includes ${ddir}/asm ${ml_inc}
624 fi
625
626 if kernel_is 2 6; then 739 if kernel_is 2 6 ; then
627 dodir ${ddir}/asm-generic 740 dodir ${ddir}/asm-generic
628 cp -pPR "${S}"/include/asm-generic/* "${D}"/${ddir}/asm-generic 741 cp -pPR "${S}"/include/asm-generic/* "${D}"/${ddir}/asm-generic
629 fi 742 fi
630 743
631 # clean up 744 # clean up
632 find "${D}" -name '*.orig' -exec rm -f {} \; 745 find "${D}" -name '*.orig' -exec rm -f {} \;
633 746
634 cd ${OLDPWD} 747 popd >/dev/null
635} 748}
636 749
637install_sources() { 750install_sources() {
638 local file 751 local file
639 752
741 854
742 # warn sparc users that they need to do cross-compiling with >= 2.6.25(bug #214765) 855 # warn sparc users that they need to do cross-compiling with >= 2.6.25(bug #214765)
743 KV_MAJOR=$(get_version_component_range 1 ${OKV}) 856 KV_MAJOR=$(get_version_component_range 1 ${OKV})
744 KV_MINOR=$(get_version_component_range 2 ${OKV}) 857 KV_MINOR=$(get_version_component_range 2 ${OKV})
745 KV_PATCH=$(get_version_component_range 3 ${OKV}) 858 KV_PATCH=$(get_version_component_range 3 ${OKV})
746 if [[ "$(tc-arch)" = "sparc" ]] \ 859 if [[ "$(tc-arch)" = "sparc" ]]; then
747 && [[ ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.24 ]] 860 if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.24 ]]
748 then 861 then
749 echo 862 echo
750 elog "NOTE: Since 2.6.25 the kernel Makefile has changed in a way that" 863 elog "NOTE: Since 2.6.25 the kernel Makefile has changed in a way that"
751 elog "you now need to do" 864 elog "you now need to do"
752 elog " make CROSS_COMPILE=sparc64-unknown-linux-gnu-" 865 elog " make CROSS_COMPILE=sparc64-unknown-linux-gnu-"
753 elog "instead of just" 866 elog "instead of just"
754 elog " make" 867 elog " make"
755 elog "to compile the kernel. For more information please browse to" 868 elog "to compile the kernel. For more information please browse to"
756 elog "https://bugs.gentoo.org/show_bug.cgi?id=214765" 869 elog "https://bugs.gentoo.org/show_bug.cgi?id=214765"
757 echo 870 echo
871 fi
758 fi 872 fi
759} 873}
760 874
761# pkg_setup functions 875# pkg_setup functions
762#============================================================== 876#==============================================================
859 do z="${z}0"; 973 do z="${z}0";
860 done 974 done
861 PATCH_ORDER="${z}${STRICT_COUNT}" 975 PATCH_ORDER="${z}${STRICT_COUNT}"
862 976
863 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/ 977 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/
864 $(${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"
865 else 979 else
866 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) 980 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL}) || die "uncompressing patch failed"
867 fi 981 fi
868 fi 982 fi
869 fi 983 fi
870 done 984 done
871 985
877 done 991 done
878 992
879 # do not apply fbcondecor patch to sparc/sparc64 as it breaks boot 993 # do not apply fbcondecor patch to sparc/sparc64 as it breaks boot
880 # bug #272676 994 # bug #272676
881 if [[ "$(tc-arch)" = "sparc" || "$(tc-arch)" = "sparc64" ]]; then 995 if [[ "$(tc-arch)" = "sparc" || "$(tc-arch)" = "sparc64" ]]; then
882 if [[ ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.28 ]]; then 996 if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.28 ]]; then
883 UNIPATCH_DROP="${UNIPATCH_DROP} *_fbcondecor-0.9.6.patch" 997 UNIPATCH_DROP="${UNIPATCH_DROP} *_fbcondecor-0.9.6.patch"
884 echo 998 echo
885 ewarn "fbcondecor currently prevents sparc/sparc64 from booting" 999 ewarn "fbcondecor currently prevents sparc/sparc64 from booting"
886 ewarn "for kernel versions >= 2.6.29. Removing fbcondecor patch." 1000 ewarn "for kernel versions >= 2.6.29. Removing fbcondecor patch."
887 ewarn "See https://bugs.gentoo.org/show_bug.cgi?id=272676 for details" 1001 ewarn "See https://bugs.gentoo.org/show_bug.cgi?id=272676 for details"
1123 kernel_is 2 4 && unpack_2_4 1237 kernel_is 2 4 && unpack_2_4
1124 kernel_is 2 6 && unpack_2_6 1238 kernel_is 2 6 && unpack_2_6
1125 fi 1239 fi
1126 1240
1127 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then 1241 if [[ $K_DEBLOB_AVAILABLE == 1 ]] && use deblob ; then
1128 cp "${DISTDIR}/${DEBLOB_A}" "${T}" 1242 cp "${DISTDIR}/${DEBLOB_A}" "${T}" || die "cp ${DEBLOB_A} failed"
1129 chmod +x "${T}/${DEBLOB_A}" 1243 cp "${DISTDIR}/${DEBLOB_CHECK_A}" "${T}/deblob-check" || die "cp ${DEBLOB_CHECK_A} failed"
1244 chmod +x "${T}/${DEBLOB_A}" "${T}/deblob-check" || die "chmod deblob scripts failed"
1130 fi 1245 fi
1131} 1246}
1132 1247
1133kernel-2_src_compile() { 1248kernel-2_src_compile() {
1134 cd "${S}" 1249 cd "${S}"
1138 echo ">>> Running deblob script ..." 1253 echo ">>> Running deblob script ..."
1139 sh "${T}/${DEBLOB_A}" --force || \ 1254 sh "${T}/${DEBLOB_A}" --force || \
1140 die "Deblob script failed to run!!!" 1255 die "Deblob script failed to run!!!"
1141 fi 1256 fi
1142} 1257}
1258
1259# if you leave it to the default src_test, it will run make to
1260# find whether test/check targets are present; since "make test"
1261# actually produces a few support files, they are installed even
1262# though the package is binchecks-restricted.
1263#
1264# Avoid this altogether by making the function moot.
1265kernel-2_src_test() { :; }
1143 1266
1144kernel-2_pkg_preinst() { 1267kernel-2_pkg_preinst() {
1145 [[ ${ETYPE} == headers ]] && preinst_headers 1268 [[ ${ETYPE} == headers ]] && preinst_headers
1146} 1269}
1147 1270
1172 1295
1173 ABI="${KERNEL_ABI}" 1296 ABI="${KERNEL_ABI}"
1174 [[ ${ETYPE} == headers ]] && setup_headers 1297 [[ ${ETYPE} == headers ]] && setup_headers
1175 [[ ${ETYPE} == sources ]] && echo ">>> Preparing to unpack ..." 1298 [[ ${ETYPE} == sources ]] && echo ">>> Preparing to unpack ..."
1176} 1299}
1300
1301kernel-2_pkg_postrm() {
1302 echo
1303 ewarn "Note: Even though you have successfully unmerged "
1304 ewarn "your kernel package, directories in kernel source location: "
1305 ewarn "${ROOT}usr/src/linux-${KV_FULL}"
1306 ewarn "with modified files will remain behind. By design, package managers"
1307 ewarn "will not remove these modified files and the directories they reside in."
1308 echo
1309}
1310

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

  ViewVC Help
Powered by ViewVC 1.1.20