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

Contents of /eclass/kernel-2.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.134 - (hide annotations) (download)
Wed Jul 6 20:23:20 2005 UTC (13 years, 11 months ago) by agriffis
Branch: MAIN
Changes since 1.133: +1 -2 lines
Remove ECLASS= and INHERITED= which haven't been necessary for a long time now

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

  ViewVC Help
Powered by ViewVC 1.1.20