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

Legend:
Removed from v.1.216  
changed lines
  Added in v.1.308

  ViewVC Help
Powered by ViewVC 1.1.20