/[gentoo-x86]/eclass/kernel-2.eclass
Gentoo

Contents of /eclass/kernel-2.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.128 - (hide annotations) (download)
Thu Jun 23 20:39:44 2005 UTC (13 years, 11 months ago) by johnm
Branch: MAIN
Changes since 1.127: +8 -5 lines
Fixes bug #96620, Thanks to Martin von Gagern. Also fixes #96658

1 vapier 1.75 # Copyright 1999-2005 Gentoo Foundation
2 johnm 1.13 # Distributed under the terms of the GNU General Public License v2
3 johnm 1.128 # $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.127 2005/06/23 20:23:00 johnm Exp $
4 johnm 1.13
5 johnm 1.54 # Description: kernel.eclass rewrite for a clean base regarding the 2.6
6     # series of kernel with back-compatibility for 2.4
7 johnm 1.3 #
8 johnm 1.54 # Maintainer: John Mylchreest <johnm@gentoo.org>
9 johnm 1.93 # Copyright 2005 Gentoo Linux
10 johnm 1.3 #
11     # Please direct your bugs to the current eclass maintainer :)
12 johnm 1.1
13     # added functionality:
14     # unipatch - a flexible, singular method to extract, add and remove patches.
15    
16 johnm 1.54 # A Couple of env vars are available to effect usage of this eclass
17 johnm 1.1 # These are as follows:
18     #
19 johnm 1.93 # K_USEPV - When setting the EXTRAVERSION variable, it should
20     # add PV to the end.
21     # this is useful for thigns like wolk. IE:
22     # EXTRAVERSION would be something like : -wolk-4.19-r1
23 johnm 1.55 # K_NOSETEXTRAVERSION - if this is set then EXTRAVERSION will not be
24     # automatically set within the kernel Makefile
25     # K_NOUSENAME - if this is set then EXTRAVERSION will not include the
26     # first part of ${PN} in EXTRAVERSION
27 lu_zero 1.62 # K_PREPATCHED - if the patchset is prepatched (ie: mm-sources,
28     # ck-sources, ac-sources) it will use PR (ie: -r5) as
29     # the patchset version for
30 johnm 1.93 # and not use it as a true package revision
31 johnm 1.55 # K_EXTRAEINFO - this is a new-line seperated list of einfo displays in
32 lu_zero 1.62 # postinst and can be used to carry additional postinst
33 johnm 1.55 # messages
34     # K_EXTRAEWARN - same as K_EXTRAEINFO except ewarn's instead of einfo's
35 johnm 1.107 # K_SYMLINK - if this is set, then forcably create symlink anyway
36 plasmaroo 1.105 #
37 johnm 1.108 # K_DEFCONFIG - Allow specifying a different defconfig target.
38     # If length zero, defaults to "defconfig".
39 dsd 1.126 # K_WANT_GENPATCHES - Apply genpatches to kernel source. Provide any
40     # combination of "base" and "extras"
41     # K_GENPATCHES_VER - The version of the genpatches tarball(s) to apply.
42     # A value of "5" would apply genpatches-2.6.12-5 to
43     # my-sources-2.6.12.ebuild
44 johnm 1.55
45     # H_SUPPORTEDARCH - this should be a space separated list of ARCH's which
46     # can be supported by the headers ebuild
47    
48     # UNIPATCH_LIST - space delimetered list of patches to be applied to the
49     # kernel
50     # UNIPATCH_EXCLUDE - an addition var to support exlusion based completely
51     # on "<passedstring>*" and not "<passedno#>_*"
52 lu_zero 1.62 # - this should _NOT_ be used from the ebuild as this is
53 johnm 1.55 # reserved for end users passing excludes from the cli
54 lu_zero 1.62 # UNIPATCH_DOCS - space delimemeted list of docs to be installed to
55 johnm 1.55 # the doc dir
56 lu_zero 1.62 # UNIPATCH_STRICTORDER - if this is set places patches into directories of
57 johnm 1.55 # order, so they are applied in the order passed
58 johnm 1.1
59 eradicator 1.79 inherit toolchain-funcs versionator multilib
60 johnm 1.1 ECLASS="kernel-2"
61 plasmaroo 1.33 INHERITED="$INHERITED $ECLASS"
62 johnm 1.93 EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install \
63 johnm 1.127 pkg_preinst pkg_postinst pkg_prerm
64 johnm 1.1
65 vapier 1.75 export CTARGET=${CTARGET:-${CHOST}}
66 hollow 1.96 if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then
67 hollow 1.95 export CTARGET=${CATEGORY/cross-}
68 vapier 1.75 fi
69 vapier 1.60
70 lu_zero 1.62 HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/"
71 johnm 1.1 LICENSE="GPL-2"
72    
73 johnm 1.18 # set LINUX_HOSTCFLAGS if not already set
74 johnm 1.93 [ -z "$LINUX_HOSTCFLAGS" ] && \
75     LINUX_HOSTCFLAGS="-Wall -Wstrict-prototypes -Os -fomit-frame-pointer -I${S}/include"
76 johnm 1.18
77 johnm 1.54 #Eclass functions only from here onwards ...
78 plasmaroo 1.33 #==============================================================
79 dsd 1.126 handle_genpatches() {
80     local tarball
81     [[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return -1
82    
83     for i in ${K_WANT_GENPATCHES} ; do
84     tarball="genpatches-${OKV}-${K_GENPATCHES_VER}.${i}.tar.bz2"
85     GENPATCHES_URI="${GENPATCHES_URI} mirror://gentoo/${tarball}"
86     UNIPATCH_LIST_GENPATCHES="${UNIPATCH_LIST_GENPATCHES} ${DISTDIR}/${tarball}"
87     done
88     }
89    
90 johnm 1.117 detect_version() {
91     # this function will detect and set
92     # - OKV: Original Kernel Version (2.6.0/2.6.0-test11)
93     # - KV: Kernel Version (2.6.0-gentoo/2.6.0-test11-gentoo-r1)
94     # - EXTRAVERSION: The additional version appended to OKV (-gentoo/-gentoo-r1)
95    
96     if [[ -n ${KV_FULL} ]]; then
97     # we will set this for backwards compatibility.
98     KV=${KV_FULL}
99    
100     # we know KV_FULL so lets stop here. but not without resetting S
101     S=${WORKDIR}/linux-${KV_FULL}
102     return
103     fi
104    
105     # CKV is used as a comparison kernel version, which is used when
106     # PV doesnt reflect the genuine kernel version.
107     # this gets set to the portage style versioning. ie:
108     # CKV=2.6.11_rc4
109     CKV=${CKV:-${PV}}
110     OKV=${OKV:-${CKV}}
111     OKV=${OKV/_beta/-test}
112     OKV=${OKV/_rc/-rc}
113     OKV=${OKV/-r*}
114     OKV=${OKV/_p*}
115    
116     KV_MAJOR=$(get_version_component_range 1 ${OKV})
117     KV_MINOR=$(get_version_component_range 2 ${OKV})
118     KV_PATCH=$(get_version_component_range 3 ${OKV})
119    
120     if [[ ${KV_MAJOR}${KV_MINOR}${KV_PATCH} -ge 269 ]]; then
121     KV_EXTRA=$(get_version_component_range 4- ${OKV})
122     KV_EXTRA=${KV_EXTRA/[-_]*}
123     else
124     KV_PATCH=$(get_version_component_range 3- ${OKV})
125     fi
126     KV_PATCH=${KV_PATCH/[-_]*}
127    
128     KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2"
129    
130     RELEASE=${CKV/${OKV}}
131     RELEASE=${RELEASE/_beta}
132     RELEASE=${RELEASE/_rc/-rc}
133     RELEASE=${RELEASE/_pre/-pre}
134 johnm 1.118 kernel_is ge 2 6 && RELEASE=${RELEASE/-pre/-bk}
135 johnm 1.117 RELEASETYPE=${RELEASE//[0-9]}
136    
137     # Now we know that RELEASE is the -rc/-bk
138     # and RELEASETYPE is the same but with its numerics stripped
139     # we can work on better sorting EXTRAVERSION.
140     # first of all, we add the release
141     EXTRAVERSION="${RELEASE}"
142     [[ -n ${KV_EXTRA} ]] && EXTRAVERSION=".${KV_EXTRA}${EXTRAVERSION}"
143    
144     if [[ -n ${K_PREPATCHED} ]]; then
145     EXTRAVERSION="${EXTRAVERSION}-${PN/-*}${PR/r}"
146     elif [[ "${ETYPE}" = "sources" ]]; then
147     # For some sources we want to use the PV in the extra version
148     # This is because upstream releases with a completely different
149     # versioning scheme.
150     case ${PN/-*} in
151     wolk) K_USEPV=1;;
152     vserver) K_USEPV=1;;
153     esac
154    
155     [[ -z ${K_NOUSENAME} ]] && EXTRAVERSION="${EXTRAVERSION}-${PN/-*}"
156     [[ -n ${K_USEPV} ]] && EXTRAVERSION="${EXTRAVERSION}-${PV//_/-}"
157     [[ -n ${PR//r0} ]] && EXTRAVERSION="${EXTRAVERSION}-${PR}"
158     fi
159    
160 johnm 1.120 # The only messing around which should actually effect this is for KV_EXTRA
161     # since this has to limit OKV to MAJ.MIN.PAT and strip EXTRA off else
162     # KV_FULL evaluates to MAJ.MIN.PAT.EXT.EXT after EXTRAVERSION
163     if [[ -n ${KV_EXTRA} ]]; then
164     OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
165     KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/patch-${CKV}.bz2
166     mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}.tar.bz2"
167     UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.bz2"
168     fi
169    
170 johnm 1.118 # We need to set this using OKV, but we need to set it before we do any
171     # messing around with OKV based on RELEASETYPE
172     KV_FULL=${OKV}${EXTRAVERSION}
173    
174     # we will set this for backwards compatibility.
175     S=${WORKDIR}/linux-${KV_FULL}
176     KV=${KV_FULL}
177    
178 johnm 1.117 # -rc-bk pulls can be achieved by specifying CKV
179     # for example:
180     # CKV="2.6.11_rc3_pre2"
181     # will pull:
182     # linux-2.6.10.tar.bz2 & patch-2.6.11-rc3.bz2 & patch-2.6.11-rc3-bk2.bz2
183    
184     if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
185     OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
186     KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/testing/patch-${CKV//_/-}.bz2
187     mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2"
188     UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2"
189     fi
190    
191     if [[ ${RELEASETYPE} == -bk ]]; then
192     KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/snapshots/patch-${OKV}${RELEASE}.bz2
193     mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2"
194     UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2"
195     fi
196    
197     if [[ ${RELEASETYPE} == -rc-bk ]]; then
198     OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
199     KERNEL_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2
200     mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-bk*}.bz2
201     mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}/linux-${OKV}.tar.bz2"
202     UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-bk*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2"
203     fi
204 dsd 1.126
205     handle_genpatches
206 johnm 1.117 }
207    
208 plasmaroo 1.33 kernel_is() {
209 johnm 1.117 [[ -z ${OKV} ]] && detect_version
210 johnm 1.93 local operator test value x=0 y=0 z=0
211 johnm 1.67
212 johnm 1.93 case ${1} in
213     lt) operator="-lt"; shift;;
214     gt) operator="-gt"; shift;;
215     le) operator="-le"; shift;;
216     ge) operator="-ge"; shift;;
217     eq) operator="-eq"; shift;;
218     *) operator="-eq";;
219     esac
220    
221     for x in ${@}; do
222     for((y=0; y<$((3 - ${#x})); y++)); do value="${value}0"; done
223     value="${value}${x}"
224     z=$((${z} + 1))
225    
226     case ${z} in
227     1) for((y=0; y<$((3 - ${#KV_MAJOR})); y++)); do test="${test}0"; done;
228     test="${test}${KV_MAJOR}";;
229     2) for((y=0; y<$((3 - ${#KV_MINOR})); y++)); do test="${test}0"; done;
230     test="${test}${KV_MINOR}";;
231     3) for((y=0; y<$((3 - ${#KV_PATCH})); y++)); do test="${test}0"; done;
232     test="${test}${KV_PATCH}";;
233     *) die "Error in kernel-2_kernel_is(): Too many parameters.";;
234     esac
235     done
236 johnm 1.69
237 johnm 1.93 [ ${test} ${operator} ${value} ] && return 0 || return 1
238 plasmaroo 1.33 }
239 johnm 1.18
240     kernel_is_2_4() {
241 johnm 1.56 kernel_is 2 4
242 johnm 1.18 }
243    
244     kernel_is_2_6() {
245 johnm 1.78 kernel_is 2 6 || kernel_is 2 5
246 johnm 1.18 }
247    
248 vapier 1.60 kernel_header_destdir() {
249 vapier 1.75 [[ ${CTARGET} == ${CHOST} ]] \
250 vapier 1.60 && echo /usr/include \
251     || echo /usr/${CTARGET}/include
252     }
253    
254 plasmaroo 1.33 # Capture the sources type and set DEPENDs
255 hollow 1.95 if [[ ${ETYPE} == sources ]]; then
256 johnm 1.1 DEPEND="!build? ( sys-apps/sed
257 johnm 1.93 >=sys-devel/binutils-2.11.90.0.31 )
258 johnm 1.128 doc? ( app-text/docbook-sgml-utils
259     app-text/xmlto)"
260 johnm 1.1 RDEPEND="${DEPEND}
261 johnm 1.93 !build? ( >=sys-libs/ncurses-5.2
262     sys-devel/make )"
263 lu_zero 1.62
264 johnm 1.78 PROVIDE="virtual/linux-sources"
265     kernel_is gt 2 4 && PROVIDE="${PROVIDE} virtual/alsa"
266 johnm 1.72 SLOT="${PVR}"
267     DESCRIPTION="Sources for the Linux kernel"
268 johnm 1.84 IUSE="${IUSE} symlink build doc"
269 hollow 1.95 elif [[ ${ETYPE} == headers ]]; then
270 johnm 1.72 DESCRIPTION="Linux system headers"
271     IUSE="${IUSE}"
272    
273 hollow 1.95 if [[ ${CTARGET} = ${CHOST} ]]; then
274 johnm 1.72 DEPEND="!virtual/os-headers"
275     PROVIDE="virtual/kernel virtual/os-headers"
276     SLOT="0"
277     else
278     SLOT="${CTARGET}"
279     fi
280 johnm 1.1 else
281 johnm 1.55 eerror "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\""
282 johnm 1.93 die "Unknown ETYPE=\"${ETYPE}\", must be \"sources\" or \"headers\""
283 johnm 1.1 fi
284    
285     # Unpack functions
286     #==============================================================
287     unpack_2_4() {
288 johnm 1.117 # Kernel ARCH != portage ARCH
289     local ARCH=$(tc-arch-kernel)
290    
291 johnm 1.1 cd ${S}
292 lu_zero 1.62 # this file is required for other things to build properly,
293 johnm 1.1 # so we autogenerate it
294     make mrproper || die "make mrproper died"
295     make include/linux/version.h || die "make include/linux/version.h failed"
296     echo ">>> version.h compiled successfully."
297 johnm 1.117
298     ARCH=$(tc-arch)
299 johnm 1.1 }
300    
301     universal_unpack() {
302 plasmaroo 1.33 cd ${WORKDIR}
303     unpack linux-${OKV}.tar.bz2
304 hollow 1.98 if [[ "${OKV}" != "${KV_FULL}" ]]; then
305     mv linux-${OKV} linux-${KV_FULL} \
306 johnm 1.55 || die "Unable to move source tree to ${KV_FULL}."
307 hollow 1.98 fi
308 plasmaroo 1.33 cd ${S}
309 lu_zero 1.62
310 johnm 1.1 # remove all backup files
311     find . -iname "*~" -exec rm {} \; 2> /dev/null
312    
313 johnm 1.78 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox
314 lu_zero 1.62 use ppc && \
315 johnm 1.93 sed -ie 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
316     ${S}/arch/ppc/Makefile
317 johnm 1.1 }
318    
319     unpack_set_extraversion() {
320     cd ${S}
321 dsd 1.104 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile
322 johnm 1.93 cd ${OLDPWD}
323 johnm 1.1 }
324    
325 dsd 1.104 # Should be done after patches have been applied
326     # Otherwise patches that modify the same area of Makefile will fail
327     unpack_fix_install_path() {
328     cd ${S}
329     sed -i -e 's:#export\tINSTALL_PATH:export\tINSTALL_PATH:' Makefile
330     }
331    
332 johnm 1.107 unpack_fix_docbook() {
333     if [[ -d ${S}/Documentation/DocBook ]]; then
334     cd ${S}/Documentation/DocBook
335     sed -ie "s:db2:docbook2:g" Makefile
336     cd ${OLDPWD}
337     fi
338     }
339    
340 johnm 1.1 # Compile Functions
341     #==============================================================
342     compile_headers() {
343 johnm 1.125 # Since KBUILD_OUTPUT shouldnt be used when compiling headers, lets unset it
344     # if it exists.
345     [[ -n ${KBUILD_OUTPUT} ]] && unset KBUILD_OUTPUT
346    
347 vapier 1.75 # if we couldnt obtain HOSTCFLAGS from the Makefile,
348     # then set it to something sane
349 johnm 1.74 local HOSTCFLAGS=$(getfilevar HOSTCFLAGS ${S}/Makefile)
350 vapier 1.75 HOSTCFLAGS=${HOSTCFLAGS:--Wall -Wstrict-prototypes -O2 -fomit-frame-pointer}
351    
352     # Kernel ARCH != portage ARCH
353 vapier 1.86 local KARCH=$(tc-arch-kernel)
354 vapier 1.75
355     # When cross-compiling, we need to set the ARCH/CROSS_COMPILE
356     # variables properly or bad things happen !
357     local xmakeopts="ARCH=${KARCH}"
358 johnm 1.93 if [[ ${CTARGET} != ${CHOST} ]]; then
359 vapier 1.75 xmakeopts="${xmakeopts} CROSS_COMPILE=${CTARGET}-"
360 hollow 1.95 elif type -p ${CHOST}-ar; then
361 vapier 1.75 xmakeopts="${xmakeopts} CROSS_COMPILE=${CHOST}-"
362     fi
363    
364 johnm 1.93 if kernel_is 2 4; then
365 vapier 1.75 yes "" | make oldconfig ${xmakeopts}
366 johnm 1.72 echo ">>> make oldconfig complete"
367 vapier 1.75 use sparc && make dep ${xmakeopts}
368 hollow 1.95 elif kernel_is 2 6; then
369 johnm 1.72 # autoconf.h isnt generated unless it already exists. plus, we have
370     # no guarantee that any headers are installed on the system...
371 vapier 1.75 [[ -f ${ROOT}/usr/include/linux/autoconf.h ]] \
372 johnm 1.72 || touch include/linux/autoconf.h
373    
374 plasmaroo 1.105 # if K_DEFCONFIG isn't set, force to "defconfig"
375     # needed by mips
376     if [[ -z ${K_DEFCONFIG} ]]; then
377     K_DEFCONFIG="defconfig"
378     fi
379    
380 johnm 1.72 # if there arent any installed headers, then there also isnt an asm
381     # symlink in /usr/include/, and make defconfig will fail, so we have
382     # to force an include path with $S.
383 vapier 1.75 HOSTCFLAGS="${HOSTCFLAGS} -I${S}/include/"
384     ln -sf asm-${KARCH} "${S}"/include/asm
385 plasmaroo 1.105 make ${K_DEFCONFIG} HOSTCFLAGS="${HOSTCFLAGS}" ${xmakeopts} || die "defconfig failed"
386 vapier 1.75 make prepare HOSTCFLAGS="${HOSTCFLAGS}" ${xmakeopts} || die "prepare failed"
387 eradicator 1.100 make prepare-all HOSTCFLAGS="${HOSTCFLAGS}" ${xmakeopts} || die "prepare failed"
388 johnm 1.72 fi
389 johnm 1.1 }
390    
391 spock 1.37 compile_manpages() {
392 johnm 1.54 einfo "Making manpages ..."
393 vapier 1.75 env -u ARCH make mandocs
394 spock 1.37 }
395    
396 johnm 1.1 # install functions
397     #==============================================================
398     install_universal() {
399     #fix silly permissions in tarball
400     cd ${WORKDIR}
401     chown -R root:root *
402     chmod -R a+r-w+X,u+w *
403 johnm 1.93 cd ${OLDPWD}
404 johnm 1.1 }
405    
406     install_headers() {
407 johnm 1.72 local ddir=$(kernel_header_destdir)
408 vapier 1.60
409 johnm 1.1 cd ${S}
410 vapier 1.60 dodir ${ddir}/linux
411     cp -ax ${S}/include/linux/* ${D}/${ddir}/linux
412     rm -rf ${D}/${ddir}/linux/modules
413 lu_zero 1.62
414 eradicator 1.99 # Handle multilib headers
415     case $(tc-arch-kernel) in
416     sparc64)
417     dodir ${ddir}/asm-sparc
418     cp -ax ${S}/include/asm-sparc/* ${D}/${ddir}/asm-sparc
419    
420     dodir ${ddir}/asm-sparc64
421     cp -ax ${S}/include/asm-sparc64/* ${D}/${ddir}/asm-sparc64
422    
423 eradicator 1.102 create_ml_includes ${ddir}/asm !__arch64__:${ddir}/asm-sparc __arch64__:${ddir}/asm-sparc64
424 eradicator 1.99 ;;
425     x86_64)
426     dodir ${ddir}/asm-i386
427     cp -ax ${S}/include/asm-i386/* ${D}/${ddir}/asm-i386
428    
429     dodir ${ddir}/asm-x86_64
430     cp -ax ${S}/include/asm-x86_64/* ${D}/${ddir}/asm-x86_64
431    
432     create_ml_includes ${ddir}/asm __i386__:${ddir}/asm-i386 __x86_64__:${ddir}/asm-x86_64
433     ;;
434 vapier 1.114 arm)
435     dodir ${ddir}/asm
436     cp -ax ${S}/include/asm/* ${D}/${ddir}/asm
437     [[ ! -e ${D}/${ddir}/asm/arch ]] && ln -s arch-ebsa285 ${D}/${ddir}/asm/arch
438     [[ ! -e ${D}/${ddir}/asm/proc ]] && ln -s proc-armv ${D}/${ddir}/asm/proc
439     ;;
440 eradicator 1.99 *)
441     dodir ${ddir}/asm
442     cp -ax ${S}/include/asm/* ${D}/${ddir}/asm
443     ;;
444     esac
445 eradicator 1.76
446 johnm 1.93 if kernel_is 2 6; then
447 vapier 1.60 dodir ${ddir}/asm-generic
448     cp -ax ${S}/include/asm-generic/* ${D}/${ddir}/asm-generic
449 johnm 1.12 fi
450 eradicator 1.99
451 vapier 1.103 # clean up
452     find "${D}" -name '*.orig' -exec rm -f {} \;
453    
454 johnm 1.93 cd ${OLDPWD}
455 johnm 1.1 }
456    
457     install_sources() {
458 johnm 1.93 local doc docs file
459 johnm 1.1
460 johnm 1.12 cd ${S}
461     dodir /usr/src
462 johnm 1.54 echo ">>> Copying sources ..."
463 johnm 1.93
464 johnm 1.27 file="$(find ${WORKDIR} -iname "docs" -type d)"
465 johnm 1.93 if [[ -n ${file} ]]; then
466     for file in $(find ${file} -type f); do
467     echo "${file//*docs\/}" >> ${S}/patches.txt
468 johnm 1.54 echo "===================================================" >> ${S}/patches.txt
469 johnm 1.27 cat ${file} >> ${S}/patches.txt
470 johnm 1.54 echo "===================================================" >> ${S}/patches.txt
471 johnm 1.12 echo "" >> ${S}/patches.txt
472 johnm 1.1 done
473 johnm 1.12 fi
474 johnm 1.1
475 johnm 1.93 if [[ ! -f ${S}/patches.txt ]]; then
476 johnm 1.12 # patches.txt is empty so lets use our ChangeLog
477 johnm 1.93 [[ -f ${FILESDIR}/../ChangeLog ]] && \
478     echo "Please check the ebuild ChangeLog for more details." \
479     > ${S}/patches.txt
480 johnm 1.12 fi
481    
482 hollow 1.95 for doc in ${UNIPATCH_DOCS}; do [[ -f ${doc} ]] && docs="${docs} ${doc}"; done
483     if [[ -f ${S}/patches.txt ]]; then docs="${docs} ${S}/patches.txt"; fi
484     use doc && ! use arm && ! use s390 && install_manpages
485     dodoc ${docs}
486 johnm 1.12
487     mv ${WORKDIR}/linux* ${D}/usr/src
488 johnm 1.1 }
489    
490 spock 1.37 install_manpages() {
491 dsd 1.123 kernel_is lt 2 5 && return
492 johnm 1.128 sed -ie "s#/usr/local/man#${D}/usr/man#g" \
493     scripts/makeman Documentation/DocBook/Makefile
494 spock 1.39 ebegin "Installing manpages"
495 johnm 1.78 env -u ARCH make installmandocs
496 spock 1.37 eend $?
497 johnm 1.128 sed -ie "s#${D}/usr/man#/usr/local/man#g" \
498     scripts/makeman Documentation/DocBook/Makefile
499 spock 1.37 }
500    
501 johnm 1.1 # pkg_preinst functions
502     #==============================================================
503     preinst_headers() {
504 vapier 1.60 local ddir=$(kernel_header_destdir)
505 johnm 1.72 [[ -L ${ddir}/linux ]] && rm ${ddir}/linux
506     [[ -L ${ddir}/asm ]] && rm ${ddir}/asm
507 johnm 1.1 }
508    
509     # pkg_postinst functions
510     #==============================================================
511     postinst_sources() {
512 vapier 1.80 local MAKELINK=0
513 johnm 1.78
514 johnm 1.84 # if we have USE=symlink, then force K_SYMLINK=1
515     use symlink && K_SYMLINK=1
516    
517 johnm 1.78 # if we are to forcably symlink, delete it if it already exists first.
518 johnm 1.93 if [[ -n ${K_SYMLINK} ]]; then
519 vapier 1.80 [[ -h ${ROOT}usr/src/linux ]] && rm ${ROOT}usr/src/linux
520 johnm 1.78 MAKELINK=1
521     fi
522    
523     # if the link doesnt exist, lets create it
524 vapier 1.80 [[ ! -h ${ROOT}usr/src/linux ]] && MAKELINK=1
525 johnm 1.78
526 johnm 1.93 if [[ ${MAKELINK} == 1 ]]; then
527 johnm 1.89 cd ${ROOT}usr/src
528     ln -sf linux-${KV_FULL} linux
529     cd ${OLDPWD}
530     fi
531 johnm 1.1
532     # Don't forget to make directory for sysfs
533 johnm 1.111 [[ ! -d ${ROOT}sys ]] && kernel_is 2 6 && mkdir ${ROOT}sys
534 johnm 1.1
535     echo
536     einfo "After installing a new kernel of any version, it is important"
537     einfo "that you have the appropriate /etc/modules.autoload.d/kernel-X.Y"
538     einfo "created (X.Y is the first 2 parts of your new kernel version)"
539     echo
540     einfo "For example, this kernel will require:"
541     einfo "/etc/modules.autoload.d/kernel-${KV_MAJOR}.${KV_MINOR}"
542     echo
543 r3pek 1.113 einfo "If you are upgrading from a previous kernel, you may be interested"
544     einfo "in the following documents:"
545     einfo " - General upgrade guide: http://www.gentoo.org/doc/en/kernel-upgrade.xml"
546     kernel_is_2_6 && einfo " - 2.4 to 2.6 migration guide: http://www.gentoo.org/doc/en/migration-to-2.6.xml"
547     echo
548 lu_zero 1.62
549 johnm 1.2 # if K_EXTRAEINFO is set then lets display it now
550 hollow 1.95 if [[ -n ${K_EXTRAEINFO} ]]; then
551 johnm 1.2 echo ${K_EXTRAEINFO} | fmt |
552 hollow 1.95 while read -s ELINE; do einfo "${ELINE}"; done
553 plasmaroo 1.33 fi
554    
555 iggy 1.7 # if K_EXTRAEWARN is set then lets display it now
556 hollow 1.95 if [[ -n ${K_EXTRAEWARN} ]]; then
557 iggy 1.7 echo ${K_EXTRAEWARN} | fmt |
558 hollow 1.95 while read -s ELINE; do ewarn "${ELINE}"; done
559 iggy 1.7 fi
560 johnm 1.1 }
561    
562 johnm 1.12 postinst_headers() {
563 johnm 1.72 einfo "Kernel headers are usually only used when recompiling glibc, as such, following the installation"
564     einfo "of newer headers, it is advised that you re-merge glibc as follows:"
565     einfo "emerge glibc"
566     einfo "Failure to do so will cause glibc to not make use of newer features present in the updated kernel"
567     einfo "headers."
568 johnm 1.12 }
569    
570     # pkg_setup functions
571     #==============================================================
572     setup_headers() {
573 vapier 1.86 [[ -z ${H_SUPPORTEDARCH} ]] && H_SUPPORTEDARCH=${PN/-*/}
574 hollow 1.95 for i in ${H_SUPPORTEDARCH}; do
575 vapier 1.87 [[ $(tc-arch) == "${i}" ]] && H_ACCEPT_ARCH="yes"
576 johnm 1.12 done
577 lu_zero 1.62
578 johnm 1.93 if [[ ${H_ACCEPT_ARCH} != "yes" ]]; then
579 johnm 1.12 echo
580 vapier 1.106 eerror "This version of ${PN} does not support $(tc-arch)."
581 johnm 1.12 eerror "Please merge the appropriate sources, in most cases"
582 vapier 1.106 eerror "(but not all) this will be called $(tc-arch)-headers."
583     die "Package unsupported for $(tc-arch)"
584 johnm 1.12 fi
585     }
586    
587 johnm 1.1 # unipatch
588     #==============================================================
589     unipatch() {
590 johnm 1.108 local i x y z extention PIPE_CMD UNIPATCH_DROP KPATCH_DIR PATCH_DEPTH ELINE
591 johnm 1.122 local STRICT_COUNT PATCH_LEVEL myLC_ALL myLANG
592 johnm 1.78
593     # set to a standard locale to ensure sorts are ordered properly.
594     myLC_ALL="${LC_ALL}"
595 johnm 1.122 myLANG="${LANG}"
596 johnm 1.78 LC_ALL="C"
597 johnm 1.122 LANG=""
598 johnm 1.1
599     [ -z "${KPATCH_DIR}" ] && KPATCH_DIR="${WORKDIR}/patches/"
600     [ ! -d ${KPATCH_DIR} ] && mkdir -p ${KPATCH_DIR}
601    
602 johnm 1.41 # We're gonna need it when doing patches with a predefined patchlevel
603     shopt -s extglob
604    
605 johnm 1.54 # This function will unpack all passed tarballs, add any passed patches, and remove any passed patchnumbers
606 johnm 1.1 # usage can be either via an env var or by params
607 johnm 1.54 # although due to the nature we pass this within this eclass
608     # it shall be by param only.
609     # -z "${UNIPATCH_LIST}" ] && UNIPATCH_LIST="${@}"
610     UNIPATCH_LIST="${@}"
611 johnm 1.1
612     #unpack any passed tarballs
613 hollow 1.95 for i in ${UNIPATCH_LIST}; do
614     if [ -n "$(echo ${i} | grep -e "\.tar" -e "\.tbz" -e "\.tgz")" ]; then
615 johnm 1.1 extention=${i/*./}
616 johnm 1.41 extention=${extention/:*/}
617 johnm 1.1 case ${extention} in
618     tbz2) PIPE_CMD="tar -xvjf";;
619     bz2) PIPE_CMD="tar -xvjf";;
620     tgz) PIPE_CMD="tar -xvzf";;
621     gz) PIPE_CMD="tar -xvzf";;
622     *) eerror "Unrecognized tarball compression"
623     die "Unrecognized tarball compression";;
624     esac
625    
626 hollow 1.95 if [ -n "${UNIPATCH_STRICTORDER}" ]; then
627 johnm 1.110 unset z
628 johnm 1.121 STRICT_COUNT=$((10#${STRICT_COUNT} + 1))
629 johnm 1.108 for((y=0; y<$((6 - ${#STRICT_COUNT})); y++));
630     do z="${z}0";
631     done
632 r3pek 1.112 PATCH_ORDER="${z}${STRICT_COUNT}"
633 johnm 1.108
634 r3pek 1.112 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/
635     ${PIPE_CMD} ${i/:*/} -C ${KPATCH_DIR}/${PATCH_ORDER}/ 1>/dev/null
636 johnm 1.16 else
637 johnm 1.41 ${PIPE_CMD} ${i/:*/} -C ${KPATCH_DIR} 1>/dev/null
638 johnm 1.16 fi
639    
640 hollow 1.95 if [ $? == 0 ]; then
641 johnm 1.1 einfo "${i/*\//} unpacked"
642 johnm 1.54 [ -n "$(echo ${i} | grep ':')" ] && echo ">>> Strict patch levels not currently supported for tarballed patchsets"
643 johnm 1.1 else
644 johnm 1.41 eerror "Failed to unpack ${i/:*/}"
645 johnm 1.1 die "unable to unpack patch tarball"
646     fi
647 johnm 1.16 else
648 johnm 1.25 extention=${i/*./}
649 johnm 1.41 extention=${extention/:*/}
650 johnm 1.25 PIPE_CMD=""
651     case ${extention} in
652     bz2) PIPE_CMD="bzip2 -dc";;
653     patch) PIPE_CMD="cat";;
654     diff) PIPE_CMD="cat";;
655     gz|Z|z) PIPE_CMD="gzip -dc";;
656     ZIP|zip) PIPE_CMD="unzip -p";;
657 johnm 1.41 *) UNIPATCH_DROP="${UNIPATCH_DROP} ${i/:*/}";;
658 johnm 1.25 esac
659 johnm 1.41
660     PATCH_LEVEL=${i/*([^:])?(:)}
661     i=${i/:*/}
662 johnm 1.25 x=${i/*\//}
663     x=${x/\.${extention}/}
664 lu_zero 1.62
665 hollow 1.95 if [ -n "${PIPE_CMD}" ]; then
666     if [ ! -r "${i}" ]; then
667 johnm 1.29 echo
668     eerror "FATAL: unable to locate:"
669     eerror "${i}"
670 johnm 1.54 eerror "for read-only. The file either has incorrect permissions"
671     eerror "or does not exist."
672 johnm 1.29 die Unable to locate ${i}
673     fi
674 lu_zero 1.62
675 hollow 1.95 if [ -n "${UNIPATCH_STRICTORDER}" ]; then
676 johnm 1.110 unset z
677 johnm 1.121 STRICT_COUNT=$((10#${STRICT_COUNT} + 1))
678 johnm 1.108 for((y=0; y<$((6 - ${#STRICT_COUNT})); y++));
679     do z="${z}0";
680     done
681 r3pek 1.112 PATCH_ORDER="${z}${STRICT_COUNT}"
682 johnm 1.108
683 r3pek 1.112 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/
684     $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL})
685 johnm 1.29 else
686 johnm 1.41 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL})
687 johnm 1.29 fi
688 johnm 1.25 fi
689 johnm 1.16 fi
690 johnm 1.1 done
691    
692     #populate KPATCH_DIRS so we know where to look to remove the excludes
693     x=${KPATCH_DIR}
694     KPATCH_DIR=""
695 hollow 1.95 for i in $(find ${x} -type d | sort -n); do
696 johnm 1.1 KPATCH_DIR="${KPATCH_DIR} ${i}"
697     done
698    
699     #so now lets get rid of the patchno's we want to exclude
700 johnm 1.19 UNIPATCH_DROP="${UNIPATCH_EXCLUDE} ${UNIPATCH_DROP}"
701 hollow 1.95 for i in ${UNIPATCH_DROP}; do
702 johnm 1.55 ebegin "Excluding Patch #${i}"
703 hollow 1.95 for x in ${KPATCH_DIR}; do rm -f ${x}/${i}* 2>/dev/null; done
704 johnm 1.55 eend $?
705 johnm 1.1 done
706    
707     # and now, finally, we patch it :)
708 hollow 1.95 for x in ${KPATCH_DIR}; do
709     for i in $(find ${x} -maxdepth 1 -iname "*.patch*" -or -iname "*.diff*" | sort -n); do
710 johnm 1.25 STDERR_T="${T}/${i/*\//}"
711 johnm 1.41 STDERR_T="${STDERR_T/.patch*/.err}"
712    
713 lu_zero 1.62 [ -z ${i/*.patch*/} ] && PATCH_DEPTH=${i/*.patch/}
714 r3pek 1.112 #[ -z ${i/*.diff*/} ] && PATCH_DEPTH=${i/*.diff/}
715 johnm 1.41
716 hollow 1.96 if [ -z "${PATCH_DEPTH}" ]; then PATCH_DEPTH=0; fi
717 johnm 1.41
718     ebegin "Applying ${i/*\//} (-p${PATCH_DEPTH}+)"
719 hollow 1.95 while [ ${PATCH_DEPTH} -lt 5 ]; do
720 plasmaroo 1.33 echo "Attempting Dry-run:" >> ${STDERR_T}
721 johnm 1.25 echo "cmd: patch -p${PATCH_DEPTH} --dry-run -f < ${i}" >> ${STDERR_T}
722 johnm 1.54 echo "=======================================================" >> ${STDERR_T}
723 hollow 1.95 if [ $(patch -p${PATCH_DEPTH} --dry-run -f < ${i} >> ${STDERR_T}) $? -eq 0 ]; then
724 johnm 1.25 echo "Attempting patch:" > ${STDERR_T}
725     echo "cmd: patch -p${PATCH_DEPTH} -f < ${i}" >> ${STDERR_T}
726 johnm 1.54 echo "=======================================================" >> ${STDERR_T}
727 hollow 1.95 if [ $(patch -p${PATCH_DEPTH} -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then
728 johnm 1.1 eend 0
729 johnm 1.25 rm ${STDERR_T}
730 johnm 1.1 break
731     else
732     eend 1
733     eerror "Failed to apply patch ${i/*\//}"
734 johnm 1.54 eerror "Please attach ${STDERR_T} to any bug you may post."
735 johnm 1.1 die "Failed to apply ${i/*\//}"
736     fi
737     else
738     PATCH_DEPTH=$((${PATCH_DEPTH} + 1))
739     fi
740     done
741 hollow 1.95 if [ ${PATCH_DEPTH} -eq 5 ]; then
742 johnm 1.1 eend 1
743 johnm 1.54 eerror "Please attach ${STDERR_T} to any bug you may post."
744 johnm 1.1 die "Unable to dry-run patch."
745     fi
746     done
747     done
748 johnm 1.43
749     # clean up KPATCH_DIR's - fixes bug #53610
750 hollow 1.95 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done
751 johnm 1.78
752     LC_ALL="${myLC_ALL}"
753 johnm 1.122 LANG="${myLANG}"
754 johnm 1.1 }
755    
756 johnm 1.74 # getfilevar accepts 2 vars as follows:
757     # getfilevar <VARIABLE> <CONFIGFILE>
758     # pulled from linux-info
759    
760     getfilevar() {
761 johnm 1.93 local workingdir basefname basedname xarch=$(tc-arch-kernel)
762 johnm 1.74
763 johnm 1.93 if [[ -z ${1} ]] && [[ ! -f ${2} ]]; then
764 johnm 1.74 echo -e "\n"
765     eerror "getfilevar requires 2 variables, with the second a valid file."
766     eerror " getfilevar <VARIABLE> <CONFIGFILE>"
767     else
768     workingdir=${PWD}
769     basefname=$(basename ${2})
770     basedname=$(dirname ${2})
771     unset ARCH
772    
773     cd ${basedname}
774     echo -e "include ${basefname}\ne:\n\t@echo \$(${1})" | \
775 johnm 1.119 make ${BUILD_FIXES} -s -f - e 2>/dev/null
776 johnm 1.74 cd ${workingdir}
777    
778     ARCH=${xarch}
779     fi
780     }
781    
782 johnm 1.28 detect_arch() {
783     # This function sets ARCH_URI and ARCH_PATCH
784     # with the neccessary info for the arch sepecific compatibility
785     # patchsets.
786 lu_zero 1.62
787 johnm 1.93 local ALL_ARCH LOOP_ARCH COMPAT_URI i
788 plasmaroo 1.33
789     # COMPAT_URI is the contents of ${ARCH}_URI
790     # ARCH_URI is the URI for all the ${ARCH}_URI patches
791     # ARCH_PATCH is ARCH_URI broken into files for UNIPATCH
792    
793     ARCH_URI=""
794     ARCH_PATCH=""
795 johnm 1.85 ALL_ARCH="X86 PPC PPC64 SPARC MIPS ALPHA ARM HPPA AMD64 IA64 X86OBSD S390 SH"
796 johnm 1.31
797 hollow 1.95 for LOOP_ARCH in ${ALL_ARCH}; do
798 johnm 1.31 COMPAT_URI="${LOOP_ARCH}_URI"
799     COMPAT_URI="${!COMPAT_URI}"
800 lu_zero 1.62
801 vapier 1.86 [[ -n ${COMPAT_URI} ]] && \
802 johnm 1.55 ARCH_URI="${ARCH_URI} $(echo ${LOOP_ARCH} | tr '[:upper:]' '[:lower:]')? ( ${COMPAT_URI} )"
803 lu_zero 1.62
804 johnm 1.93 if [[ ${LOOP_ARCH} == "$(echo $(tc-arch-kernel) | tr '[:lower:]' '[:upper:]')" ]]; then
805     for i in ${COMPAT_URI}; do
806 plasmaroo 1.33 ARCH_PATCH="${ARCH_PATCH} ${DISTDIR}/${i/*\//}"
807     done
808     fi
809 johnm 1.31 done
810 johnm 1.28 }
811    
812 johnm 1.72 # sparc nastiness
813     #==============================================================
814     # This script generates the files in /usr/include/asm for sparc systems
815     # during installation of sys-kernel/linux-headers.
816     # Will no longer be needed when full 64 bit support is used on sparc64
817     # systems.
818     #
819     # Shamefully ripped from Debian
820     # ----------------------------------------------------------------------
821    
822     # Idea borrowed from RedHat's kernel package
823    
824 eradicator 1.76 # This is gonna get replaced by something in multilib.eclass soon...
825     # --eradicator
826 johnm 1.72 generate_sparc_asm() {
827     local name
828    
829     cd $1 || die
830     mkdir asm
831    
832     for h in `( ls asm-sparc; ls asm-sparc64 ) | grep '\.h$' | sort -u`; do
833     name="$(echo $h | tr a-z. A-Z_)"
834     # common header
835     echo "/* All asm/ files are generated and point to the corresponding
836     * file in asm-sparc or asm-sparc64.
837     */
838    
839     #ifndef __SPARCSTUB__${name}__
840     #define __SPARCSTUB__${name}__
841     " > asm/${h}
842    
843     # common for sparc and sparc64
844     if [ -f asm-sparc/$h -a -f asm-sparc64/$h ]; then
845     echo "#ifdef __arch64__
846     #include <asm-sparc64/$h>
847     #else
848     #include <asm-sparc/$h>
849     #endif
850     " >> asm/${h}
851    
852     # sparc only
853     elif [ -f asm-sparc/$h ]; then
854     echo "#ifndef __arch64__
855     #include <asm-sparc/$h>
856     #endif
857     " >> asm/${h}
858    
859     # sparc64 only
860     else
861     echo "#ifdef __arch64__
862     #include <asm-sparc64/$h>
863     #endif
864     " >> asm/${h}
865     fi
866    
867     # common footer
868     echo "#endif /* !__SPARCSTUB__${name}__ */" >> asm/${h}
869     done
870     return 0
871     }
872    
873 johnm 1.89 headers___fix() {
874 plasmaroo 1.88 # Voodoo to partially fix broken upstream headers.
875     # Issues with this function should go to plasmaroo.
876 johnm 1.72 sed -i \
877 plasmaroo 1.124 -e "s/\([ "$'\t'"]\)\(u\|s\)\(8\|16\|32\|64\)\([ "$'\t'"]\)/\1__\2\3\4/g;" \
878 plasmaroo 1.88 -e 's/ \(u\|s\)\(8\|16\|32\|64\)$/ __\1\2/g' \
879     -e 's/\([(, ]\)\(u\|s\)64\([, )]\)/\1__\264\3/g' \
880 plasmaroo 1.124 -e "s/^\(u\|s\)\(8\|16\|32\|64\)\([ "$'\t'"]\)/__\1\2\3/g;" \
881 johnm 1.72 "$@"
882     }
883 johnm 1.28
884 johnm 1.1 # common functions
885     #==============================================================
886 plasmaroo 1.33 kernel-2_src_unpack() {
887 johnm 1.1 universal_unpack
888 lu_zero 1.62
889 dsd 1.126 [[ -n ${UNIPATCH_LIST} || -n ${UNIPATCH_LIST_DEFAULT} || -n ${UNIPATCH_LIST_GENPATCHES} ]] && \
890     unipatch "${UNIPATCH_LIST_DEFAULT} ${UNIPATCH_LIST_GENPATCHES} ${UNIPATCH_LIST}"
891 lu_zero 1.62
892 johnm 1.107 [[ -z ${K_NOSETEXTRAVERSION} ]] && unpack_set_extraversion
893     unpack_fix_docbook
894 dsd 1.104 unpack_fix_install_path
895    
896 johnm 1.56 kernel_is 2 4 && unpack_2_4
897 johnm 1.1 }
898    
899 plasmaroo 1.33 kernel-2_src_compile() {
900 johnm 1.72 cd ${S}
901 johnm 1.93 [[ ${ETYPE} == headers ]] && compile_headers
902     [[ ${ETYPE} == sources ]] && \
903 johnm 1.55 use doc && ! use arm && ! use s390 && compile_manpages
904 johnm 1.1 }
905    
906 plasmaroo 1.33 kernel-2_pkg_preinst() {
907 johnm 1.93 [[ ${ETYPE} == headers ]] && preinst_headers
908 johnm 1.1 }
909    
910 plasmaroo 1.33 kernel-2_src_install() {
911 johnm 1.1 install_universal
912 johnm 1.93 [[ ${ETYPE} == headers ]] && install_headers
913     [[ ${ETYPE} == sources ]] && install_sources
914 johnm 1.1 }
915    
916 plasmaroo 1.33 kernel-2_pkg_postinst() {
917 johnm 1.93 [[ ${ETYPE} == headers ]] && postinst_headers
918     [[ ${ETYPE} == sources ]] && postinst_sources
919 johnm 1.1 }
920 johnm 1.12
921 plasmaroo 1.33 kernel-2_pkg_setup() {
922 johnm 1.93 [[ ${ETYPE} == headers ]] && setup_headers
923     [[ ${ETYPE} == sources ]] && echo ">>> Preparing to unpack ..."
924 johnm 1.12 }
925 johnm 1.127
926     kernel-2_pkg_prerm() {
927     local KV_DIR=${ROOT}/usr/src/linux-${KV_FULL}
928    
929     if [[ ${ETYPE} == sources ]]; then
930     # if we have a config for it then we should act on it.
931     if [[ -f ${KV_DIR}/.config ]]; then
932 johnm 1.128 gzip -c ${KV_DIR}/.config > ${KV_DIR}.config.gz
933 johnm 1.127 fi
934    
935     # have kbuild clean up for us.
936     if [[ -f ${KV_DIR}/include/linux/version.h ]]; then
937     ARCH=$(tc-arch-kernel)
938     make -C ${KV_DIR} mrproper
939     fi
940     fi
941     }

  ViewVC Help
Powered by ViewVC 1.1.20