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

Contents of /eclass/kernel-2.eclass

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20