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

Contents of /eclass/kernel-2.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.154 - (hide annotations) (download)
Wed Dec 21 00:17:54 2005 UTC (13 years, 6 months ago) by plasmaroo
Branch: MAIN
Changes since 1.153: +2 -1 lines
Add "inline" -> "__inline__" conversion in headers___fix to satisfy ANSI compliance.

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

  ViewVC Help
Powered by ViewVC 1.1.20